openapi: 3.0.3 info: title: RentalReady API version: 1.0.0 (api) description: | This API enables you to access and update resources from RentalReady (GuestReady PMS) ### Throttling Our API supports up to 400 requests per minute paths: /api/v3/accounting_invoices/: post: operationId: accounting_invoices_create tags: - accounting_invoices requestBody: content: application/json: schema: $ref: '#/components/schemas/AccountingInvoiceCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AccountingInvoiceCreate' multipart/form-data: schema: $ref: '#/components/schemas/AccountingInvoiceCreate' required: true security: - oauth2: - accounting_invoice:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/AccountingInvoiceCreate' description: '' /api/v3/agents/: get: operationId: agents_list description: Retrieve the agents working for the offices you have access to. Their ids are what the mission agent field takes. An agent can only take a mission of an office they belong to and of a type they are qualified for; assignment does not check whether they are still ACTIVE, so filter on status. summary: List agents parameters: - in: query name: antenne schema: type: integer description: Office - in: query name: first_name schema: type: string description: First name - in: query name: last_name schema: type: string description: Last name - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: status schema: type: string enum: - ACTIVE - INACTIVE description: |- * `ACTIVE` - Active * `INACTIVE` - Inactive - in: query name: type_mission schema: type: integer description: Mission type tags: - missions security: - oauth2: - agents:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAgentList' description: '' /api/v3/agents/{id}/: get: operationId: agents_retrieve description: Retrieve a single agent by ID. summary: Retrieve agent parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this agent. required: true tags: - missions security: - oauth2: - agents:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Agent' description: '' /api/v3/amenities/: get: operationId: amenities_list description: List all available amenity definitions. Each amenity includes a `metadata` array describing the additional fields that can be set on a rental amenity via `metadata_values`. Use `key`, `type`, and `options` to understand what values are accepted when writing to POST/PUT/PATCH /api/v3/rental_amenities/. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - amenities security: - oauth2: - amenities:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBookingsyncAmenityList' description: '' /api/v3/amenities/{id}/: get: operationId: amenities_retrieve description: List all available amenity definitions. Each amenity includes a `metadata` array describing the additional fields that can be set on a rental amenity via `metadata_values`. Use `key`, `type`, and `options` to understand what values are accepted when writing to POST/PUT/PATCH /api/v3/rental_amenities/. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this BookingSync amenity. required: true tags: - amenities security: - oauth2: - amenities:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/BookingsyncAmenity' description: '' /api/v3/bathrooms/: get: operationId: bathrooms_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bathrooms security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBathroomList' description: '' post: operationId: bathrooms_create parameters: - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bathrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/Bathroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Bathroom' multipart/form-data: schema: $ref: '#/components/schemas/Bathroom' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Bathroom' description: '' /api/v3/bathrooms/{id}/: get: operationId: bathrooms_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bathrooms security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bathroom' description: '' put: operationId: bathrooms_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bathrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/Bathroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Bathroom' multipart/form-data: schema: $ref: '#/components/schemas/Bathroom' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bathroom' description: '' patch: operationId: bathrooms_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bathrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBathroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBathroom' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBathroom' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bathroom' description: '' delete: operationId: bathrooms_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bathrooms security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/bed_types/: get: operationId: bed_types_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - bed_types security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBedTypeList' description: '' /api/v3/bed_types/{id}/: get: operationId: bed_types_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom bed type. required: true tags: - bed_types security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/BedType' description: '' /api/v3/bedrooms/: get: operationId: bedrooms_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bedrooms security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBedroomList' description: '' post: operationId: bedrooms_create parameters: - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bedrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/Bedroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Bedroom' multipart/form-data: schema: $ref: '#/components/schemas/Bedroom' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Bedroom' description: '' /api/v3/bedrooms/{id}/: get: operationId: bedrooms_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bedrooms security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bedroom' description: '' put: operationId: bedrooms_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bedrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/Bedroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Bedroom' multipart/form-data: schema: $ref: '#/components/schemas/Bedroom' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bedroom' description: '' patch: operationId: bedrooms_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bedrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBedroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBedroom' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBedroom' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Bedroom' description: '' delete: operationId: bedrooms_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - bedrooms security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/blacklist/: get: operationId: blacklist_list parameters: - in: query name: antenne schema: type: array items: type: integer description: Office explode: true style: form - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - in: query name: emails schema: type: string - in: query name: first_name schema: type: string - in: query name: last_name schema: type: string - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: phones schema: type: string - in: query name: reservations schema: type: array items: type: integer description: Reservation explode: true style: form - in: query name: reservations__appartement__antenne__property_manager schema: type: array items: type: integer description: Property manager explode: true style: form - in: query name: reservations__reservation_platform schema: type: array items: type: integer description: Platform explode: true style: form tags: - blacklist security: - oauth2: - blacklist:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlacklistList' description: '' /api/v3/blacklist/{id}/: get: operationId: blacklist_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this blacklist. required: true tags: - blacklist security: - oauth2: - blacklist:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Blacklist' description: '' /api/v3/calendar/block/: post: operationId: calendar_block_create description: Block a property's calendar for a date range. tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/BlockCalendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlockCalendar' multipart/form-data: schema: $ref: '#/components/schemas/BlockCalendar' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: example: message: Calendar was blocked. id: 123 description: '' /api/v3/calendar/unblock/: post: operationId: calendar_unblock_create description: Unblock a property's calendar for a date range. tags: - calendar requestBody: content: application/json: schema: $ref: '#/components/schemas/UnblockCalendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UnblockCalendar' multipart/form-data: schema: $ref: '#/components/schemas/UnblockCalendar' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: example: message: Calendar was unblocked. description: '' /api/v3/check_in_steps/: get: operationId: check_in_steps_list description: |- Manage check-in guide steps for properties. Steps are instructions shown to guests during check-in. Each step belongs to a check-in guide, which is linked to a property. Create and order actions require a `rental_id` in the request body. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: array items: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value explode: true style: form tags: - check_in_steps security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCheckInStepList' description: '' post: operationId: check_in_steps_create description: Create a check-in step. Requires `rental_id` in the request body. If the property has no check-in guide yet, one is created automatically. tags: - check_in_steps requestBody: content: application/json: schema: $ref: '#/components/schemas/CheckInStep' examples: CreateAStep: value: rental_id: '87520' content_en: Use the lockbox at the entrance. order: 0 show_for_check_in_type: SELF_CHECK_IN summary: Create a step application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CheckInStep' multipart/form-data: schema: $ref: '#/components/schemas/CheckInStep' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/CheckInStep' description: '' /api/v3/check_in_steps/{id}/: get: operationId: check_in_steps_retrieve description: |- Manage check-in guide steps for properties. Steps are instructions shown to guests during check-in. Each step belongs to a check-in guide, which is linked to a property. Create and order actions require a `rental_id` in the request body. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this check-in step. required: true tags: - check_in_steps security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/CheckInStep' description: '' put: operationId: check_in_steps_update description: |- Manage check-in guide steps for properties. Steps are instructions shown to guests during check-in. Each step belongs to a check-in guide, which is linked to a property. Create and order actions require a `rental_id` in the request body. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this check-in step. required: true tags: - check_in_steps requestBody: content: application/json: schema: $ref: '#/components/schemas/CheckInStep' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CheckInStep' multipart/form-data: schema: $ref: '#/components/schemas/CheckInStep' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/CheckInStep' description: '' patch: operationId: check_in_steps_partial_update description: |- Manage check-in guide steps for properties. Steps are instructions shown to guests during check-in. Each step belongs to a check-in guide, which is linked to a property. Create and order actions require a `rental_id` in the request body. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this check-in step. required: true tags: - check_in_steps requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCheckInStep' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCheckInStep' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCheckInStep' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/CheckInStep' description: '' delete: operationId: check_in_steps_destroy description: Soft-delete a check-in step. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this check-in step. required: true tags: - check_in_steps security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/check_in_steps/order/: post: operationId: check_in_steps_order_create description: Reorder check-in steps for a property. Requires `rental_id` and `step_ids` (ordered list of step IDs). parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: array items: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value explode: true style: form tags: - check_in_steps requestBody: content: application/json: schema: $ref: '#/components/schemas/OrderCheckInSteps' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OrderCheckInSteps' multipart/form-data: schema: $ref: '#/components/schemas/OrderCheckInSteps' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCheckInStepList' description: '' /api/v3/cities/: get: operationId: cities_list parameters: - in: query name: country_id schema: type: number - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - cities security: - cookieAuth: [] - basicAuth: [] - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCityList' description: '' /api/v3/cities/{id}/: get: operationId: cities_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this city. required: true tags: - cities security: - cookieAuth: [] - basicAuth: [] - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/City' description: '' /api/v3/city_tax_rules/: get: operationId: city_tax_rules_list parameters: - in: query name: charge_type schema: type: string enum: - PER_ADULT - PER_NIGHT - PER_ROOM description: |- * `PER_ADULT` - Per adult / per night * `PER_ROOM` - Per room / per night * `PER_NIGHT` - Per night - in: query name: charge_with schema: type: string enum: - FIXED - PERCENTAGE description: |- * `FIXED` - Fixed * `PERCENTAGE` - Percentage - in: query name: city schema: type: integer - in: query name: is_default schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: array items: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value explode: true style: form tags: - city_tax_rules security: - oauth2: - city_tax_rules:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCityRuleList' description: '' /api/v3/city_tax_rules/{id}/: get: operationId: city_tax_rules_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this city rule. required: true tags: - city_tax_rules security: - oauth2: - city_tax_rules:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/CityRule' description: '' /api/v3/conversation_flags/: get: operationId: conversation_flags_list description: Retrieve the triage flags a conversation can carry. The name is the one this property manager uses; class_name is the underlying colour. summary: List conversation flags parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - Conversations security: - oauth2: - conversations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedConversationFlagList' description: '' /api/v3/conversation_flags/{id}/: get: operationId: conversation_flags_retrieve description: Retrieve a single conversation flag by ID. summary: Retrieve conversation flag parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this conversation flag. required: true tags: - Conversations security: - oauth2: - conversations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/ConversationFlag' description: '' /api/v3/conversations/: get: operationId: conversations_list description: Retrieve a list of conversations accessible to the current user. summary: List conversations parameters: - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - in: query name: flag_id schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value - in: query name: reservation_id schema: type: number - in: query name: status schema: type: string tags: - Conversations security: - oauth2: - conversations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedConversationList' description: '' post: operationId: conversations_create description: Create a new conversation. summary: Create conversation tags: - Conversations requestBody: content: application/json: schema: $ref: '#/components/schemas/ConversationCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ConversationCreate' multipart/form-data: schema: $ref: '#/components/schemas/ConversationCreate' security: - oauth2: - conversations:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/ConversationCreate' description: '' /api/v3/conversations/{id}/: get: operationId: conversations_retrieve description: Retrieve a specific conversation by ID. summary: Retrieve conversation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this conversation. required: true tags: - Conversations security: - oauth2: - conversations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Conversation' description: '' /api/v3/conversations/{id}/set_flag/: patch: operationId: conversations_set_flag_partial_update description: 'Put a triage flag on a conversation, or remove it. Flags are the mailbox''s triage queues; list the ids with the conversation_flags endpoint. `flag_id` is required and nullable: null removes the flag, while omitting the field is a 400, never a silent no-op. The change is recorded on the conversation''s event trail and noted on every ticket raised from the conversation, exactly as the mailbox does it.' summary: Set conversation flag parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this conversation. required: true tags: - Conversations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedSetConversationFlag' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedSetConversationFlag' multipart/form-data: schema: $ref: '#/components/schemas/PatchedSetConversationFlag' security: - oauth2: - conversations:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Conversation' description: '' '400': content: application/json: schema: example: flag_id: - This field is required. description: '' '403': content: application/json: schema: example: detail: Guest messaging write not allowed, permission missing. description: '' /api/v3/countries/: get: operationId: countries_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: name schema: type: string - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - countries security: - cookieAuth: [] - basicAuth: [] - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCountryList' description: '' /api/v3/countries/{id}/: get: operationId: countries_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this country. required: true tags: - countries security: - cookieAuth: [] - basicAuth: [] - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Country' description: '' /api/v3/custom_fields/: get: operationId: custom_fields_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - custom_fields security: - oauth2: - custom_fields:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCustomFieldDefinitionList' description: '' post: operationId: custom_fields_create tags: - custom_fields requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CustomFieldDefinition' multipart/form-data: schema: $ref: '#/components/schemas/CustomFieldDefinition' required: true security: - oauth2: - custom_fields:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' /api/v3/custom_fields/{id}/: get: operationId: custom_fields_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true tags: - custom_fields security: - oauth2: - custom_fields:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' put: operationId: custom_fields_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true tags: - custom_fields requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CustomFieldDefinition' multipart/form-data: schema: $ref: '#/components/schemas/CustomFieldDefinition' required: true security: - oauth2: - custom_fields:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' patch: operationId: custom_fields_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true tags: - custom_fields requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCustomFieldDefinition' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCustomFieldDefinition' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCustomFieldDefinition' security: - oauth2: - custom_fields:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldDefinition' description: '' delete: operationId: custom_fields_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true tags: - custom_fields security: - oauth2: - custom_fields:write responses: '204': description: No response body /api/v3/custom_fields/{id}/search/: get: operationId: custom_fields_search_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this custom field definition. required: true - in: query name: lookup schema: type: string enum: - exact - gt - gte - like - lt - lte default: exact description: 'Comparison operator. Allowed lookups depend on the field type: text (exact, like), number (exact, gt, gte, lt, lte), boolean (exact), date (exact, gt, gte, lt, lte), select (exact).' - in: query name: value schema: type: string description: The value to search for. If omitted, returns all objects that have any value set for this custom field. tags: - custom_fields security: - oauth2: - custom_fields:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomFieldSearchResponse' description: '' /api/v3/daily_prices/: get: operationId: daily_prices_list parameters: - in: query name: date_end schema: type: string format: date - in: query name: date_start schema: type: string format: date - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental schema: type: array items: type: string title: Contract number description: Property explode: true style: form tags: - daily_prices security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDailyPriceList' description: '' post: operationId: daily_prices_create tags: - daily_prices requestBody: content: application/json: schema: $ref: '#/components/schemas/DailyPrice' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DailyPrice' multipart/form-data: schema: $ref: '#/components/schemas/DailyPrice' required: true security: - oauth2: - pricing:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/DailyPrice' description: '' /api/v3/daily_prices/{id}/: get: operationId: daily_prices_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this daily price. required: true tags: - daily_prices security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/DailyPrice' description: '' /api/v3/daily_prices/bulk_update/: post: operationId: daily_prices_bulk_update_create tags: - daily_prices requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/DailyPrice' application/x-www-form-urlencoded: schema: type: array items: $ref: '#/components/schemas/DailyPrice' multipart/form-data: schema: type: array items: $ref: '#/components/schemas/DailyPrice' required: true security: - oauth2: - pricing:write responses: '201': description: No response body /api/v3/descriptions/: get: operationId: descriptions_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: array items: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value explode: true style: form tags: - descriptions security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDescriptionList' description: '' post: operationId: descriptions_create tags: - descriptions requestBody: content: application/json: schema: $ref: '#/components/schemas/Description' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Description' multipart/form-data: schema: $ref: '#/components/schemas/Description' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Description' description: '' /api/v3/descriptions/{id}/: get: operationId: descriptions_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this description appartement. required: true tags: - descriptions security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Description' description: '' put: operationId: descriptions_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this description appartement. required: true tags: - descriptions requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateDescription' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UpdateDescription' multipart/form-data: schema: $ref: '#/components/schemas/UpdateDescription' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdateDescription' description: '' patch: operationId: descriptions_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this description appartement. required: true tags: - descriptions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateDescription' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateDescription' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateDescription' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdateDescription' description: '' delete: operationId: descriptions_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this description appartement. required: true tags: - descriptions security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/guest_registration/{id}/: get: operationId: guest_registration_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true tags: - guest_registration security: - oauth2: - guest_registration:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PortugalRegisteredGuestData' description: '' /api/v3/icals/: get: operationId: icals_list parameters: - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - in: query name: is_active schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: platform_id schema: type: integer - in: query name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value tags: - icals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIcalSyncList' description: '' post: operationId: icals_create tags: - icals requestBody: content: application/json: schema: $ref: '#/components/schemas/IcalSync' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/IcalSync' multipart/form-data: schema: $ref: '#/components/schemas/IcalSync' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/IcalSync' description: '' /api/v3/icals/{id}/: get: operationId: icals_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this iCal Sync. required: true tags: - icals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/IcalSync' description: '' put: operationId: icals_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this iCal Sync. required: true tags: - icals requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateIcalSync' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UpdateIcalSync' multipart/form-data: schema: $ref: '#/components/schemas/UpdateIcalSync' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdateIcalSync' description: '' patch: operationId: icals_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this iCal Sync. required: true tags: - icals requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateIcalSync' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateIcalSync' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateIcalSync' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdateIcalSync' description: '' delete: operationId: icals_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this iCal Sync. required: true tags: - icals security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/incidents/: get: operationId: incidents_list description: Retrieve a list of mission incidents. summary: List Incidents parameters: - in: query name: category schema: type: array items: type: string enum: - CHECK_IN - CLEANING - MAINTENANCE - QUALITY description: |- * `CLEANING` - Cleaning * `MAINTENANCE` - Maintenance * `CHECK_IN` - Check-in * `QUALITY` - Quality explode: true style: form - in: query name: created_at_after schema: type: string format: date-time - in: query name: created_at_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: mission_id schema: type: array items: type: integer explode: true style: form - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: status schema: type: array items: type: string enum: - CLOSED - IGNORED - ISSUE_CREATED - NEW description: |- * `NEW` - New * `ISSUE_CREATED` - Ticket * `IGNORED` - Archived * `CLOSED` - Closed explode: true style: form tags: - incidents security: - oauth2: - incidents:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIncidentList' description: '' /api/v3/incidents/{id}/: get: operationId: incidents_retrieve description: Retrieve a specific mission incident by ID. summary: Retrieve Incident parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission incident. required: true tags: - incidents security: - oauth2: - incidents:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Incident' description: '' /api/v3/incidents/{id}/archive/: patch: operationId: incidents_archive_partial_update description: Archive a mission incident, optionally recording why. Archiving never records a closing user. Only a non-empty comment overwrites the existing status comment. Archived is terminal, so an already archived incident cannot be archived again (400). summary: Archive Incident parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission incident. required: true tags: - incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedArchiveIncident' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedArchiveIncident' multipart/form-data: schema: $ref: '#/components/schemas/PatchedArchiveIncident' security: - oauth2: - incidents:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Incident' description: '' '400': content: application/json: schema: example: non_field_errors: - An archived incident cannot change status. description: '' '403': content: application/json: schema: example: detail: Permission to manage the incident dashboard is required. description: '' /api/v3/incidents/{id}/close/: patch: operationId: incidents_close_partial_update description: Close a mission incident, optionally recording why. The calling user is saved as the closing user. Archived is terminal, so an archived incident cannot be closed (400). Re-closing an already closed incident is allowed and only overwrites the status comment when a non-empty comment is given. summary: Close Incident parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission incident. required: true tags: - incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCloseIncident' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCloseIncident' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCloseIncident' security: - oauth2: - incidents:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Incident' description: '' '400': content: application/json: schema: example: non_field_errors: - An archived incident cannot change status. description: '' '403': content: application/json: schema: example: detail: Permission to manage the incident dashboard is required. description: '' /api/v3/inquiries/: get: operationId: inquiries_list description: Retrieve a list of inquiries accessible to the current user. summary: List inquiries parameters: - in: query name: conversation_id schema: type: integer - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value - in: query name: status schema: type: string tags: - Inquiries security: - oauth2: - inquiries:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedInquiryList' description: '' /api/v3/inquiries/{id}/: get: operationId: inquiries_retrieve description: Retrieve a specific inquiry by ID. summary: Retrieve inquiry parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this inquiry. required: true tags: - Inquiries security: - oauth2: - inquiries:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Inquiry' description: '' /api/v3/invoicing/: get: operationId: invoicing_list parameters: - in: query name: blocked_reason schema: type: array items: type: string nullable: true explode: true style: form - in: query name: checkin_date_after schema: type: string format: date - in: query name: checkin_date_before schema: type: string format: date - in: query name: checkout_date_after schema: type: string format: date - in: query name: checkout_date_before schema: type: string format: date - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: rental_id schema: type: array items: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value explode: true style: form - in: query name: reservation_type schema: type: string tags: - invoicing security: - oauth2: - reservations:read - guest_registration:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedInvoicingReservationList' description: '' /api/v3/invoicing/{id}/: get: operationId: invoicing_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true tags: - invoicing security: - oauth2: - reservations:read - guest_registration:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/InvoicingReservation' description: '' /api/v3/issue_categories/: get: operationId: issue_categories_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - issue_categories security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIssueCategoryList' description: '' /api/v3/issue_categories/{id}/: get: operationId: issue_categories_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket category. required: true tags: - issue_categories security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/IssueCategory' description: '' /api/v3/issue_files/: get: operationId: issue_files_list description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - issue_files security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIssueFileList' description: '' post: operationId: issue_files_create description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. tags: - issue_files requestBody: content: application/json: schema: $ref: '#/components/schemas/IssueFile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/IssueFile' multipart/form-data: schema: $ref: '#/components/schemas/IssueFile' required: true security: - oauth2: - issues:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/IssueFile' description: '' /api/v3/issue_files/{id}/: get: operationId: issue_files_retrieve description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket file. required: true tags: - issue_files security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/IssueFile' description: '' patch: operationId: issue_files_partial_update description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket file. required: true tags: - issue_files requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedIssueFile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedIssueFile' multipart/form-data: schema: $ref: '#/components/schemas/PatchedIssueFile' security: - oauth2: - issues:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/IssueFile' description: '' delete: operationId: issue_files_destroy description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket file. required: true tags: - issue_files security: - oauth2: - issues:write responses: '204': description: No response body /api/v3/issue_notes/: get: operationId: issue_notes_list description: List the notes on tickets you have access to. Filter by ticket with ?issue=. Notes are the ticket's internal activity log and are separate from its description (creation_comment). summary: List ticket notes parameters: - name: cursor required: false in: query description: 'Opt-in cursor pagination: pass an empty value to get the first page, then follow the `next` links. While paginating with a cursor, `offset` is ignored, the response contains no `count`, and only primary-key orderings are supported.' schema: type: string - in: query name: issue schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - issues security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIssueNoteList' description: '' post: operationId: issue_notes_create description: Add a note to a ticket. Notes are append-only and never touch the ticket's own description (creation_comment); the new note is attributed to the calling user. summary: Add a ticket note tags: - issues requestBody: content: application/json: schema: $ref: '#/components/schemas/IssueNote' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/IssueNote' multipart/form-data: schema: $ref: '#/components/schemas/IssueNote' required: true security: - oauth2: - issues:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/IssueNote' description: '' /api/v3/issues/: get: operationId: issues_list description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: query name: assignee_id schema: type: number - in: query name: category schema: type: array items: type: integer explode: true style: form - in: query name: created_at_after schema: type: string format: date-time - in: query name: created_at_before schema: type: string format: date-time - in: query name: due_date_after schema: type: string format: date - in: query name: due_date_before schema: type: string format: date - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: origin schema: type: array items: type: string enum: - AGENT_REPORTED - CLEANING_TEAM_REPORTED - COURTESY_CALL - GUEST_DAMAGES - GUEST_REPORTED - HOST_REPORTED - INBOX_THREAD_CREATED - MISSION_INCIDENT_REPORTED - OVERUSE - PROPERTY_CHECK - REVIEW - UNKNOWN description: |- * `GUEST_DAMAGES` - Guest damages * `GUEST_REPORTED` - Reported by guest * `HOST_REPORTED` - Reported by owner * `AGENT_REPORTED` - Reported by agent * `PROPERTY_CHECK` - Property check * `OVERUSE` - Overuse * `UNKNOWN` - Unknown * `CLEANING_TEAM_REPORTED` - Reported by cleaning team * `REVIEW` - Guest review * `INBOX_THREAD_CREATED` - Created from inbox thread * `MISSION_INCIDENT_REPORTED` - Reported by agent through mission incident * `COURTESY_CALL` - Courtesy call explode: true style: form - in: query name: priority_level schema: type: array items: type: string enum: - LV1_EMERGENCY - LV2_HIGH - LV3_MEDIUM - LV4_LOW description: |- * `LV1_EMERGENCY` - Urgent * `LV2_HIGH` - High * `LV3_MEDIUM` - Mid * `LV4_LOW` - Low explode: true style: form - in: query name: rental_id schema: type: array items: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value explode: true style: form - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form - in: query name: status schema: type: array items: type: string enum: - CLOSED - FINANCIAL_REVIEW - ONGOING_RESOLUTION - ON_HOLD - OPEN description: |- * `OPEN` - Open * `ONGOING_RESOLUTION` - Ongoing resolution * `CLOSED` - Closed * `ON_HOLD` - On hold * `FINANCIAL_REVIEW` - Under financial review explode: true style: form tags: - issues security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedIssueList' description: '' post: operationId: issues_create description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. tags: - issues requestBody: content: application/json: schema: $ref: '#/components/schemas/Issue' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Issue' multipart/form-data: schema: $ref: '#/components/schemas/Issue' required: true security: - oauth2: - issues:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Issue' description: '' /api/v3/issues/{id}/: get: operationId: issues_retrieve description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket. required: true tags: - issues security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Issue' description: '' patch: operationId: issues_partial_update description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket. required: true tags: - issues requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedIssue' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedIssue' multipart/form-data: schema: $ref: '#/components/schemas/PatchedIssue' security: - oauth2: - issues:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Issue' description: '' /api/v3/issues/{id}/close/: patch: operationId: issues_close_partial_update description: |- Deny a field-agent application the WHOLE resource, reads included. Used by the issues / issue-files viewsets, where a field-agent application has no business reading the ticket backlog at all. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this ticket. required: true tags: - issues requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedIssue' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedIssue' multipart/form-data: schema: $ref: '#/components/schemas/PatchedIssue' security: - oauth2: - issues:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Issue' description: '' /api/v3/listing_requests/: get: operationId: listing_requests_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - listing_requests security: - oauth2: - listing_requests:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedListingRequestList' description: '' /api/v3/listing_requests/{id}/: get: operationId: listing_requests_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this listing request. required: true tags: - listing_requests security: - oauth2: - listing_requests:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/ListingRequest' description: '' /api/v3/listings/: get: operationId: listings_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - listings security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedListingList' description: '' post: operationId: listings_create tags: - listings requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateListing' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateListing' multipart/form-data: schema: $ref: '#/components/schemas/CreateListing' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/CreateListing' description: '' /api/v3/listings/{id}/: get: operationId: listings_retrieve parameters: - in: path name: id schema: type: string required: true tags: - listings security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Listing' description: '' /api/v3/listings/{id}/disable/: post: operationId: listings_disable_create parameters: - in: path name: id schema: type: string required: true tags: - listings requestBody: content: application/json: schema: $ref: '#/components/schemas/Listing' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Listing' multipart/form-data: schema: $ref: '#/components/schemas/Listing' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Listing' description: '' /api/v3/listings/{id}/enable/: post: operationId: listings_enable_create parameters: - in: path name: id schema: type: string required: true tags: - listings requestBody: content: application/json: schema: $ref: '#/components/schemas/Listing' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Listing' multipart/form-data: schema: $ref: '#/components/schemas/Listing' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Listing' description: '' /api/v3/los/: get: operationId: los_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - los security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedLOSRentalList' description: '' /api/v3/los/{numero_contrat}/: get: operationId: los_retrieve parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - los security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/LOSRental' description: '' /api/v3/messages/: get: operationId: messages_list description: Retrieve a list of messages accessible to the current user. summary: List messages parameters: - in: query name: channel schema: type: string nullable: true enum: - airbnb - booking - booking-com - booking-qa - email - guestspace - homeaway - internal - sms - support - vrbo - vrbo_qa - whatsapp description: |- * `airbnb` - Airbnb * `homeaway` - HomeAway * `vrbo` - VRBO * `vrbo_qa` - VRBO (QA) * `email` - Email * `sms` - SMS * `booking` - Booking.com (Channel-Manager) * `booking-com` - Booking.com * `booking-qa` - Booking.com QA * `internal` - Internal * `whatsapp` - WhatsApp * `guestspace` - Guest space * `support` - Support - in: query name: conversation_id schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: sender schema: type: string - in: query name: sent_after schema: type: string format: date-time - in: query name: sent_before schema: type: string format: date-time tags: - Messages security: - oauth2: - messages:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMessageList' description: '' post: operationId: messages_create description: |- Create a new message in a conversation. **Accepted `channel` values:** - `internal` (default): Internal note, not visible to the guest. - `guestspace`: Sent via the guest portal. - `airbnb`: Sent via the Airbnb messaging thread. Requires a channel manager link. Note: Airbnb enforces a 72-hour reply window. - `booking-com`: Sent via the Booking.com messaging thread. Requires a channel manager link. Note: no HTML, limited length. - `homeaway`: Sent via the HomeAway messaging thread. Requires a channel manager link. - `vrbo`: Sent via the VRBO messaging thread. Requires a channel manager link. - `email`: Sent via email to the guest. - `sms`: Sent by SMS. Requires the guest to have a phone number, and the caller to hold the `can_send_twilio_sms` permission (`403` otherwise). - `whatsapp`: Sent via WhatsApp. Requires a WhatsApp number on the property manager and an open Meta customer-service window, i.e. the guest sent a WhatsApp message within the last 24 hours. A `400` error is returned when an OTA channel (`airbnb`, `booking-com`, `homeaway`, `vrbo`) is requested but the conversation has no active channel manager connection, and when `sms` or `whatsapp` is requested but the conversation cannot reach the guest that way. The error lists the channels the conversation can actually use. summary: Create message tags: - Messages requestBody: content: application/json: schema: $ref: '#/components/schemas/MessageCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MessageCreate' multipart/form-data: schema: $ref: '#/components/schemas/MessageCreate' required: true security: - oauth2: - messages:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/MessageCreate' description: '' /api/v3/messages/{id}/: get: operationId: messages_retrieve description: Retrieve a specific message by ID. summary: Retrieve message parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this message. required: true tags: - Messages security: - oauth2: - messages:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Message' description: '' /api/v3/midterm_contract_files/: get: operationId: midterm_contract_files_list description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form tags: - midterm_contract_files security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMidtermContractFileList' description: '' post: operationId: midterm_contract_files_create description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. tags: - midterm_contract_files requestBody: content: application/json: schema: $ref: '#/components/schemas/MidtermContractFile' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MidtermContractFile' multipart/form-data: schema: $ref: '#/components/schemas/MidtermContractFile' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/MidtermContractFile' description: '' /api/v3/midterm_contract_files/{id}/: get: operationId: midterm_contract_files_retrieve description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this midterm contract file. required: true tags: - midterm_contract_files security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/MidtermContractFile' description: '' delete: operationId: midterm_contract_files_destroy description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this midterm contract file. required: true tags: - midterm_contract_files security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/missions/: get: operationId: missions_list parameters: - name: cursor required: false in: query description: 'Opt-in cursor pagination: pass an empty value to get the first page, then follow the `next` links. While paginating with a cursor, `offset` is ignored, the response contains no `count`, and only primary-key orderings are supported.' schema: type: string - in: query name: end_after schema: type: string format: date description: Start date - in: query name: end_before schema: type: string format: date description: Start date - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: start_after schema: type: string format: date description: Start date - in: query name: start_before schema: type: string format: date description: Start date - in: query name: updated_at_after schema: type: string format: date description: Updated at - in: query name: updated_at_before schema: type: string format: date description: Updated at tags: - missions security: - oauth2: - missions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMissionList' description: '' post: operationId: missions_create tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/Mission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Mission' multipart/form-data: schema: $ref: '#/components/schemas/Mission' required: true security: - oauth2: - missions:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/: get: operationId: missions_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions security: - oauth2: - missions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' patch: operationId: missions_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMission' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMission' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/cancel/: patch: operationId: missions_cancel_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMission' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMission' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/mark_mission_as_done/: patch: operationId: missions_mark_mission_as_done_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMission' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMission' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/update_agent/: patch: operationId: missions_update_agent_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMission' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMission' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/update_end_time/: patch: operationId: missions_update_end_time_partial_update description: Update the mission end time. Both end and edit_comment are required, and the new end cannot precede the mission start. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateMissionEndTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateMissionEndTime' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateMissionEndTime' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/update_external_comment/: patch: operationId: missions_update_external_comment_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedMission' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedMission' multipart/form-data: schema: $ref: '#/components/schemas/PatchedMission' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/missions/{id}/update_start_time/: patch: operationId: missions_update_start_time_partial_update description: Update the mission start time, keeping its duration. Both start and edit_comment are required. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission. required: true tags: - missions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateMissionStartTime' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateMissionStartTime' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateMissionStartTime' security: - oauth2: - missions:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Mission' description: '' /api/v3/multi_units/: get: operationId: multi_units_list parameters: - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - in: query name: name schema: type: string - in: query name: office schema: type: integer description: Office - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: status schema: type: string - in: query name: type schema: type: string tags: - multi_units security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedMultiUnitList' description: '' post: operationId: multi_units_create description: Create a multi-unit of type parent/child tags: - multi_units requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateMultiUnit' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateMultiUnit' multipart/form-data: schema: $ref: '#/components/schemas/CreateMultiUnit' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/MultiUnit' description: '' /api/v3/multi_units/{id}/: get: operationId: multi_units_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Multi-unit. required: true tags: - multi_units security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/MultiUnit' description: '' put: operationId: multi_units_update description: Update a multi-unit parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Multi-unit. required: true tags: - multi_units requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateMultiUnit' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UpdateMultiUnit' multipart/form-data: schema: $ref: '#/components/schemas/UpdateMultiUnit' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/MultiUnit' description: '' patch: operationId: multi_units_partial_update description: Partially update a multi-unit parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Multi-unit. required: true tags: - multi_units requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateMultiUnit' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateMultiUnit' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateMultiUnit' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/MultiUnit' description: '' delete: operationId: multi_units_destroy description: Delete a multi-unit. The deactivation runs asynchronously. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Multi-unit. required: true tags: - multi_units security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/neighbourhoods/: get: operationId: neighbourhoods_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - neighbourhoods security: - oauth2: - neighbourhoods:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedNeighbourhoodList' description: '' /api/v3/neighbourhoods/{id}/: get: operationId: neighbourhoods_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this neighbourhood. required: true tags: - neighbourhoods security: - oauth2: - neighbourhoods:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Neighbourhood' description: '' /api/v3/offices/: get: operationId: offices_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - offices security: - oauth2: - offices:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOfficeList' description: '' /api/v3/offices/{id}/: get: operationId: offices_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this office. required: true tags: - offices security: - oauth2: - offices:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Office' description: '' /api/v3/onboarding_requests/: get: operationId: onboarding_requests_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - onboarding_requests security: - oauth2: - onboarding_requests:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOnboardingRequestList' description: '' /api/v3/onboarding_requests/{id}/: get: operationId: onboarding_requests_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this onboarding request. required: true tags: - onboarding_requests security: - oauth2: - onboarding_requests:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/OnboardingRequest' description: '' /api/v3/owners/: get: operationId: owners_list parameters: - in: query name: email schema: type: string - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - owners security: - oauth2: - owners:read - oauth2: - hosts:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOwnerList' description: '' post: operationId: owners_create description: Create an owner tags: - owners requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateOwner' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateOwner' multipart/form-data: schema: $ref: '#/components/schemas/CreateOwner' required: true security: - oauth2: - owners:write - oauth2: - hosts:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/CreateOwner' description: '' /api/v3/owners/{username}/: get: operationId: owners_retrieve parameters: - in: path name: username schema: type: string pattern: ^[^/]+$ required: true tags: - owners security: - oauth2: - owners:read - oauth2: - hosts:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Owner' description: '' patch: operationId: owners_partial_update parameters: - in: path name: username schema: type: string pattern: ^[^/]+$ required: true tags: - owners requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOwner' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOwner' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOwner' security: - oauth2: - owners:write - oauth2: - hosts:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Owner' description: '' delete: operationId: owners_destroy parameters: - in: path name: username schema: type: string pattern: ^[^/]+$ required: true tags: - owners security: - oauth2: - owners:write - oauth2: - hosts:write responses: '204': description: No response body /api/v3/payment_acceptance_transactions/: get: operationId: payment_acceptance_transactions_list parameters: - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reservation schema: type: array items: type: integer description: Reservation explode: true style: form - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form tags: - payment_acceptance_transactions security: - oauth2: - payment_acceptance_transactions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPaymentAcceptanceTransactionList' description: '' post: operationId: payment_acceptance_transactions_create tags: - payment_acceptance_transactions requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentAcceptanceTransaction' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PaymentAcceptanceTransaction' multipart/form-data: schema: $ref: '#/components/schemas/PaymentAcceptanceTransaction' required: true security: - oauth2: - payment_acceptance_transactions:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/PaymentAcceptanceTransaction' description: '' /api/v3/payment_acceptance_transactions/{id}/: get: operationId: payment_acceptance_transactions_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payment acceptance transaction. required: true tags: - payment_acceptance_transactions security: - oauth2: - payment_acceptance_transactions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaymentAcceptanceTransaction' description: '' /api/v3/payment_acceptance_transactions/{id}/refund/: post: operationId: payment_acceptance_transactions_refund_create parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payment acceptance transaction. required: true tags: - payment_acceptance_transactions requestBody: content: application/json: schema: type: object properties: amount: type: decimal example: '300.00' description: Amount to be refunded. Default is the full amount reason: type: string example: reason description: type: string example: description security: - oauth2: - payment_acceptance_transactions:write responses: '200': content: application/json: schema: example: message: Payment Acceptance transaction refunded description: '' '400': content: application/json: schema: example: message: Refund not allowed for acceptance transaction description: '' '403': content: application/json: schema: example: message: Refund allowed only for stripe payment gateway description: '' /api/v3/payment_links/: get: operationId: payment_links_list parameters: - in: query name: category schema: type: array items: type: string explode: true style: form - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form - in: query name: status schema: type: array items: type: string enum: - AUTHORIZED - FAILED - NOT_PAID - PAID - PROCESSED - VOIDED description: |- * `AUTHORIZED` - Authorized * `NOT_PAID` - Not paid * `PAID` - Paid * `FAILED` - Failed * `VOIDED` - Voided * `PROCESSED` - Processed explode: true style: form tags: - payment_links security: - oauth2: - payment_links:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPaymentLinkList' description: '' /api/v3/payment_links/{id}/: get: operationId: payment_links_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payment link. required: true tags: - payment_links security: - oauth2: - payment_links:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaymentLink' description: '' /api/v3/payment_links/{id}/invoice_request/: get: operationId: payment_links_invoice_request_retrieve description: Get the data for the invoice request parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payment link. required: true tags: - payment_links security: - oauth2: - payment_links:read responses: '200': content: application/json: schema: example: sender: name: string tax_number: string business_name: string phone: string iban: string logo: string address_line_1: string address_line_2: string postal_code: string city: string country: string recipient: name: string tax_number: string business_name: string phone: string iban: string logo: string address_line_1: string address_line_2: string postal_code: string city: string country: string items: - category: string category_description: string amount: number (gross amount) vat_rate: number quantity: number description: '' /api/v3/payout_adjustments/: get: operationId: payout_adjustments_list description: Retrieve a list of payout adjustments. Note that PDFs expire in 24h summary: List Payout Adjustments parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - payout_adjustments security: - oauth2: - payout_adjustments:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPayoutAdjustmentList' description: '' /api/v3/payout_adjustments/{id}/: get: operationId: payout_adjustments_retrieve description: Retrieve a specific payout adjustment by ID. Note that PDFs expire in 24h summary: Retrieve Payout Adjustment parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payout adjustment. required: true tags: - payout_adjustments security: - oauth2: - payout_adjustments:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PayoutAdjustment' description: '' /api/v3/payout_adjustments/{id}/invoice_request/: get: operationId: payout_adjustments_invoice_request_retrieve description: Get the data for the invoice request parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payout adjustment. required: true tags: - payout_adjustments security: - oauth2: - payout_adjustments:read responses: '200': content: application/json: schema: example: sender: name: string tax_number: string business_name: string phone: string iban: string logo: string address_line_1: string address_line_2: string postal_code: string city: string country: string country_code: string recipient: name: string tax_number: string business_name: string phone: string iban: string logo: string address_line_1: string address_line_2: string postal_code: string city: string country: string country_code: string items: - category: string category_description: string amount: number (gross amount) vat_rate: number quantity: number description: '' /api/v3/payout_adjustments/{id}/mark_as_paid/: post: operationId: payout_adjustments_mark_as_paid_create description: Mark a payout adjustment as paid. Requires the 'Can mark payout adjustments as paid' permission. summary: Mark Payout Adjustment As Paid parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this payout adjustment. required: true tags: - payout_adjustments requestBody: content: application/json: schema: $ref: '#/components/schemas/PayoutAdjustment' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PayoutAdjustment' multipart/form-data: schema: $ref: '#/components/schemas/PayoutAdjustment' required: true security: - oauth2: - payout_adjustments:write responses: '200': content: application/json: schema: example: message: Payout adjustment marked as paid description: '' '400': content: application/json: schema: example: message: Payout adjustment is already paid description: '' '403': content: application/json: schema: example: message: Permission to mark payout adjustments as paid is required. description: '' /api/v3/photos/: get: operationId: photos_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: position schema: type: integer - in: query name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value - in: query name: subroom_id schema: type: integer tags: - photos security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPhotoList' description: '' post: operationId: photos_create tags: - photos requestBody: content: application/json: schema: $ref: '#/components/schemas/Photo' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Photo' multipart/form-data: schema: $ref: '#/components/schemas/Photo' required: true security: - oauth2: - photos:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Photo' description: '' /api/v3/photos/{id}/: get: operationId: photos_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this photo. required: true tags: - photos security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Photo' description: '' put: operationId: photos_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this photo. required: true tags: - photos requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdatePhoto' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UpdatePhoto' multipart/form-data: schema: $ref: '#/components/schemas/UpdatePhoto' required: true security: - oauth2: - photos:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdatePhoto' description: '' patch: operationId: photos_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this photo. required: true tags: - photos requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdatePhoto' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdatePhoto' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdatePhoto' security: - oauth2: - photos:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdatePhoto' description: '' delete: operationId: photos_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this photo. required: true tags: - photos security: - oauth2: - photos:write responses: '204': description: No response body /api/v3/pricing/: get: operationId: pricing_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - pricing security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPricingConfigurationList' description: '' post: operationId: pricing_create tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PricingConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PricingConfiguration' required: true security: - oauth2: - pricing:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' description: '' /api/v3/pricing/{rental_id}/: get: operationId: pricing_retrieve parameters: - in: path name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - pricing security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' description: '' put: operationId: pricing_update parameters: - in: path name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PricingConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PricingConfiguration' required: true security: - oauth2: - pricing:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' description: '' patch: operationId: pricing_partial_update parameters: - in: path name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPricingConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPricingConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPricingConfiguration' security: - oauth2: - pricing:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' description: '' /api/v3/pricing/bulk_update/: post: operationId: pricing_bulk_update_create tags: - pricing requestBody: content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PricingConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PricingConfiguration' required: true security: - oauth2: - pricing:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/PricingConfiguration' description: '' /api/v3/property_manager_platform_settings/: get: operationId: property_manager_platform_settings_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: platform schema: type: integer - in: query name: property_manager schema: type: integer tags: - property_manager_platform_settings security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPropertyManagerPlatformSettingsList' description: '' /api/v3/property_manager_platform_settings/{id}/: get: operationId: property_manager_platform_settings_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property manager platform settings. required: true tags: - property_manager_platform_settings security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyManagerPlatformSettings' description: '' put: operationId: property_manager_platform_settings_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property manager platform settings. required: true tags: - property_manager_platform_settings requestBody: content: application/json: schema: $ref: '#/components/schemas/PropertyManagerPlatformSettings' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PropertyManagerPlatformSettings' multipart/form-data: schema: $ref: '#/components/schemas/PropertyManagerPlatformSettings' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyManagerPlatformSettings' description: '' patch: operationId: property_manager_platform_settings_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property manager platform settings. required: true tags: - property_manager_platform_settings requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedPropertyManagerPlatformSettings' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedPropertyManagerPlatformSettings' multipart/form-data: schema: $ref: '#/components/schemas/PatchedPropertyManagerPlatformSettings' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyManagerPlatformSettings' description: '' /api/v3/property_managers/: get: operationId: property_managers_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - property_managers security: - oauth2: - property_managers:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPropertyManagerList' description: '' /api/v3/property_managers/{id}/: get: operationId: property_managers_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property manager. required: true tags: - property_managers security: - oauth2: - property_managers:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PropertyManager' description: '' /api/v3/rate_rules/: get: operationId: rate_rules_list parameters: - in: query name: date_after schema: type: string format: date description: Dates - in: query name: date_before schema: type: string format: date description: Dates - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental schema: type: array items: type: string title: Contract number description: Property explode: true style: form tags: - rate_rules security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRateRuleList' description: '' post: operationId: rate_rules_create tags: - rate_rules requestBody: content: application/json: schema: $ref: '#/components/schemas/RateRule' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RateRule' multipart/form-data: schema: $ref: '#/components/schemas/RateRule' required: true security: - oauth2: - pricing:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/RateRule' description: '' /api/v3/rate_rules/{id}/: get: operationId: rate_rules_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rate rule. required: true tags: - rate_rules security: - oauth2: - pricing:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/RateRule' description: '' put: operationId: rate_rules_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rate rule. required: true tags: - rate_rules requestBody: content: application/json: schema: $ref: '#/components/schemas/RateRule' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RateRule' multipart/form-data: schema: $ref: '#/components/schemas/RateRule' required: true security: - oauth2: - pricing:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RateRule' description: '' patch: operationId: rate_rules_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rate rule. required: true tags: - rate_rules requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRateRule' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRateRule' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRateRule' security: - oauth2: - pricing:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RateRule' description: '' delete: operationId: rate_rules_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rate rule. required: true tags: - rate_rules security: - oauth2: - pricing:write responses: '204': description: No response body /api/v3/rental_agreement_signatures/: get: operationId: rental_agreement_signatures_list description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form tags: - rental_agreement_signatures security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRentalAgreementSignatureList' description: '' post: operationId: rental_agreement_signatures_create description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. tags: - rental_agreement_signatures requestBody: content: application/json: schema: $ref: '#/components/schemas/RentalAgreementSignature' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RentalAgreementSignature' multipart/form-data: schema: $ref: '#/components/schemas/RentalAgreementSignature' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/RentalAgreementSignature' description: '' /api/v3/rental_agreement_signatures/{id}/: get: operationId: rental_agreement_signatures_retrieve description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rental agreement signature. required: true tags: - rental_agreement_signatures security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalAgreementSignature' description: '' patch: operationId: rental_agreement_signatures_partial_update description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rental agreement signature. required: true tags: - rental_agreement_signatures requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRentalAgreementSignature' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRentalAgreementSignature' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRentalAgreementSignature' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalAgreementSignature' description: '' delete: operationId: rental_agreement_signatures_destroy description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Rental agreement signature. required: true tags: - rental_agreement_signatures security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/rental_amenities/: get: operationId: rental_amenities_list parameters: - in: query name: amenity_key schema: type: string - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value tags: - rental_amenities security: - oauth2: - amenities:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBookingsyncRentalAmenityList' description: '' post: operationId: rental_amenities_create description: 'Create a rental amenity. Optionally include `metadata_values` as a `{key: value}` dict. Available keys and their types are defined per amenity and can be discovered via GET /api/v3/amenities/.' tags: - rental_amenities requestBody: content: application/json: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' multipart/form-data: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' required: true security: - oauth2: - amenities:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' description: '' /api/v3/rental_amenities/{id}/: get: operationId: rental_amenities_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this BookingSync rental amenity. required: true tags: - rental_amenities security: - oauth2: - amenities:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' description: '' put: operationId: rental_amenities_update description: 'Update a rental amenity. If `metadata_values` is present, all valid keys for this amenity are replaced (full replace): keys omitted from the dict are deleted. If `metadata_values` is absent, existing values are untouched. Available keys can be discovered via GET /api/v3/amenities/.' parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this BookingSync rental amenity. required: true tags: - rental_amenities requestBody: content: application/json: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' multipart/form-data: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' required: true security: - oauth2: - amenities:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' description: '' patch: operationId: rental_amenities_partial_update description: 'Partially update a rental amenity. If `metadata_values` is present, all valid keys for this amenity are replaced (full replace): keys omitted from the dict are deleted. If `metadata_values` is absent, existing values are untouched. Available keys can be discovered via GET /api/v3/amenities/.' parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this BookingSync rental amenity. required: true tags: - rental_amenities requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBookingsyncRentalAmenity' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBookingsyncRentalAmenity' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBookingsyncRentalAmenity' security: - oauth2: - amenities:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/BookingsyncRentalAmenity' description: '' delete: operationId: rental_amenities_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this BookingSync rental amenity. required: true tags: - rental_amenities security: - oauth2: - amenities:write responses: '204': description: No response body /api/v3/rental_platform_accounts/: get: operationId: rental_platform_accounts_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value tags: - rental_platform_accounts security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRentalAccountList' description: '' /api/v3/rental_platform_accounts/{id}/: get: operationId: rental_platform_accounts_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this rental account. required: true tags: - rental_platform_accounts security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalAccount' description: '' /api/v3/rental_platform_settings/: get: operationId: rental_platform_settings_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: platform schema: type: integer - in: query name: rental schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value tags: - rental_platform_settings security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRentalPlatformSettingsList' description: '' /api/v3/rental_platform_settings/{id}/: get: operationId: rental_platform_settings_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this rental platform settings. required: true tags: - rental_platform_settings security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalPlatformSettings' description: '' put: operationId: rental_platform_settings_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this rental platform settings. required: true tags: - rental_platform_settings requestBody: content: application/json: schema: $ref: '#/components/schemas/RentalPlatformSettings' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RentalPlatformSettings' multipart/form-data: schema: $ref: '#/components/schemas/RentalPlatformSettings' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalPlatformSettings' description: '' patch: operationId: rental_platform_settings_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this rental platform settings. required: true tags: - rental_platform_settings requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRentalPlatformSettings' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRentalPlatformSettings' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRentalPlatformSettings' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalPlatformSettings' description: '' /api/v3/rentals/: get: operationId: rentals_list description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: query name: country schema: type: integer - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - in: query name: date_after schema: type: string format: date description: Dates - in: query name: date_before schema: type: string format: date description: Dates - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - in: query name: multi_unit_id schema: type: integer - in: query name: name schema: type: string - in: query name: numero_contrat schema: type: string - in: query name: office schema: type: integer description: Office - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: owner_user_name schema: type: string - in: query name: rental_category schema: type: string enum: - LONG-TERM - MID-TERM - SHORT-TERM description: |- * `SHORT-TERM` - Short-term * `MID-TERM` - Mid-term * `LONG-TERM` - Long-term - in: query name: sleeps_max schema: type: integer - in: query name: status schema: type: string nullable: true title: Property status enum: - ACTIVE - INACTIVE - PENDING_DEACTIVATION - PRE_ONBOARDING description: |- * `ACTIVE` - Active * `INACTIVE` - Inactive * `PENDING_DEACTIVATION` - Pending deactivation * `PRE_ONBOARDING` - Onboarding in progress - in: query name: tags schema: type: array items: type: integer explode: true style: form - in: query name: travellers_count schema: type: integer - in: query name: with_inactive schema: type: boolean tags: - rentals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRentalList' description: '' post: operationId: rentals_create description: Create a rental in status onboarding, to fill it with all required data tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateRental' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateRental' multipart/form-data: schema: $ref: '#/components/schemas/CreateRental' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/CreateRental' description: '' /api/v3/rentals/{numero_contrat}/: get: operationId: rentals_retrieve description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Rental' description: '' put: operationId: rentals_update description: Update a rental parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/Rental' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Rental' multipart/form-data: schema: $ref: '#/components/schemas/Rental' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Rental' description: '' patch: operationId: rentals_partial_update description: Update a rental parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRental' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRental' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRental' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Rental' description: '' delete: operationId: rentals_destroy description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/rentals/{numero_contrat}/block/: patch: operationId: rentals_block_partial_update description: Block calendar parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBlockRentalCalendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBlockRentalCalendar' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBlockRentalCalendar' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlockRentalCalendar' description: '' /api/v3/rentals/{numero_contrat}/custom_fields/: get: operationId: rentals_custom_fields_retrieve description: Get the custom-field values set on this object, as a mapping of custom field key to value. parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Rental' description: '' post: operationId: rentals_custom_fields_create description: Set custom-field values on this object. Send a mapping of custom field key to value; keys left out keep their current value, and a key with no definition on this account is rejected. parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/Rental' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Rental' multipart/form-data: schema: $ref: '#/components/schemas/Rental' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Rental' description: '' /api/v3/rentals/{numero_contrat}/disable/: post: operationId: rentals_disable_create description: Disable property parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/DisableProperty' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DisableProperty' multipart/form-data: schema: $ref: '#/components/schemas/DisableProperty' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/DisableProperty' description: '' /api/v3/rentals/{numero_contrat}/enable/: post: operationId: rentals_enable_create description: Disable property parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/DisableProperty' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DisableProperty' multipart/form-data: schema: $ref: '#/components/schemas/DisableProperty' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/DisableProperty' description: '' /api/v3/rentals/{numero_contrat}/history/: get: operationId: rentals_history_list description: Get property change history parameters: - in: query name: field schema: type: string description: Filter by field name (matches field key or display name) - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - rentals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRentalHistoryList' description: '' /api/v3/rentals/{numero_contrat}/smart-locks/: post: operationId: rentals_smart_locks_create description: Assign a smart lock to a property parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/SmartLockAssign' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SmartLockAssign' multipart/form-data: schema: $ref: '#/components/schemas/SmartLockAssign' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/RentalSmartLock' description: '' /api/v3/rentals/{numero_contrat}/smart-locks/{smart_lock_id}/: delete: operationId: rentals_smart_locks_destroy description: Remove a smart lock from a property parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true - in: path name: smart_lock_id schema: type: string required: true tags: - rentals security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/rentals/{numero_contrat}/unblock/: patch: operationId: rentals_unblock_partial_update description: Unblock calendar parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUnblockRentalCalendar' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUnblockRentalCalendar' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUnblockRentalCalendar' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: example: message: Calendar was unblocked description: '' /api/v3/rentals/{numero_contrat}/upselling_configuration/: get: operationId: rentals_upselling_configuration_retrieve description: Get the upselling configuration assigned to the property. parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalUpsellingConfiguration' description: '' patch: operationId: rentals_upselling_configuration_partial_update description: Update the upselling configuration assigned to the property. The configuration must be one of those connected to the property's office; pass null to clear the assignment. parameters: - in: path name: numero_contrat schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value required: true tags: - rentals requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRentalUpsellingConfiguration' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRentalUpsellingConfiguration' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRentalUpsellingConfiguration' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalUpsellingConfiguration' description: '' /api/v3/reservation_documents/: get: operationId: reservation_documents_list description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form tags: - reservation_documents security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedReservationDocumentList' description: '' post: operationId: reservation_documents_create description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. tags: - reservation_documents requestBody: content: application/json: schema: $ref: '#/components/schemas/ReservationDocument' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReservationDocument' multipart/form-data: schema: $ref: '#/components/schemas/ReservationDocument' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/ReservationDocument' description: '' /api/v3/reservation_documents/{id}/: get: operationId: reservation_documents_retrieve description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation document. required: true tags: - reservation_documents security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReservationDocument' description: '' delete: operationId: reservation_documents_destroy description: |- Base viewset for records linked to a reservation and scoped to the caller's rentals. Both the queryset and the serializer's ``reservation`` field are scoped to ``user_rentals``, so creating against an unowned or non-existent reservation fails uniformly at field validation. Subclasses set ``unable_to_save_message`` and may override ``get_create_save_kwargs`` to inject server-controlled fields on save. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation document. required: true tags: - reservation_documents security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/reservation_platforms/: get: operationId: reservation_platforms_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - reservation_platforms security: - oauth2: - reservation_platform:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedReservationPlatformList' description: '' /api/v3/reservation_platforms/{id}/: get: operationId: reservation_platforms_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation platform. required: true tags: - reservation_platforms security: - oauth2: - reservation_platform:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReservationPlatform' description: '' /api/v3/reservations/: get: operationId: reservations_list description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: query name: checkin_date_after schema: type: string format: date - in: query name: checkin_date_before schema: type: string format: date - in: query name: checkout_date_after schema: type: string format: date - in: query name: checkout_date_before schema: type: string format: date - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: cursor required: false in: query description: 'Opt-in cursor pagination: pass an empty value to get the first page, then follow the `next` links. While paginating with a cursor, `offset` is ignored, the response contains no `count`, and only primary-key orderings are supported.' schema: type: string - in: query name: is_extension schema: type: boolean - in: query name: is_relocation schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: reservation_type schema: type: string - in: query name: status schema: type: array items: type: string explode: true style: form tags: - reservations security: - oauth2: - reservations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedReservationList' description: '' post: operationId: reservations_create description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations requestBody: content: application/json: schema: $ref: '#/components/schemas/ReservationCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReservationCreate' multipart/form-data: schema: $ref: '#/components/schemas/ReservationCreate' required: true security: - oauth2: - reservations:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/ReservationCreate' description: '' /api/v3/reservations/{id}/: get: operationId: reservations_retrieve description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations security: - oauth2: - reservations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Reservation' description: '' patch: operationId: reservations_partial_update description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedReservationCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedReservationCreate' multipart/form-data: schema: $ref: '#/components/schemas/PatchedReservationCreate' security: - oauth2: - reservations:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReservationCreate' description: '' /api/v3/reservations/{id}/cancel/: patch: operationId: reservations_cancel_partial_update description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations security: - oauth2: - reservations:write responses: '200': content: application/json: schema: example: message: Reservation cancelled description: '' /api/v3/reservations/{id}/custom_fields/: get: operationId: reservations_custom_fields_retrieve description: Get the custom-field values set on this object, as a mapping of custom field key to value. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations security: - oauth2: - reservations:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Reservation' description: '' post: operationId: reservations_custom_fields_create description: Set custom-field values on this object. Send a mapping of custom field key to value; keys left out keep their current value, and a key with no definition on this account is rejected. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations requestBody: content: application/json: schema: $ref: '#/components/schemas/ReservationCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReservationCreate' multipart/form-data: schema: $ref: '#/components/schemas/ReservationCreate' required: true security: - oauth2: - reservations:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReservationCreate' description: '' /api/v3/reservations/{id}/update_arrival_time/: patch: operationId: reservations_update_arrival_time_partial_update description: 'Update the expected guest arrival time. The check-in mission is rescheduled and its assigned agent asked to re-confirm. No guest notification is sent: when late_checkin_payment_pending comes back true, the late check-in fee still has to be collected.' parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedReservationArrivalTimeUpdate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedReservationArrivalTimeUpdate' multipart/form-data: schema: $ref: '#/components/schemas/PatchedReservationArrivalTimeUpdate' security: - oauth2: - reservations:write responses: '200': content: application/json: schema: example: message: reservation updated arrival_time: '23:00:00' late_checkin_payment_pending: true description: '' /api/v3/reservations/{id}/update_key_code/: patch: operationId: reservations_update_key_code_partial_update description: Mixin that adds custom-fields GET/POST actions to entity ViewSets. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this reservation. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' tags: - reservations requestBody: content: application/json: schema: type: object properties: key_code: type: string example: 1234abc description: A string representing the key code. required: - key_code security: - oauth2: - reservations:write responses: '200': content: application/json: schema: example: message: key_code updated description: '' '400': content: application/json: schema: example: message: invalid key_code description: '' /api/v3/reviews/: get: operationId: reviews_list description: Display the reviews linked to a reservation parameters: - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form tags: - reviews security: - oauth2: - reviews:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedGuestReviewList' description: '' /api/v3/reviews/{id}/: get: operationId: reviews_retrieve description: Display the reviews linked to a reservation parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this guest review. required: true tags: - reviews security: - oauth2: - reviews:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/GuestReview' description: '' /api/v3/schema/: get: operationId: schema_retrieve description: |- OpenApi3 schema for this API. Format can be selected via content negotiation. - YAML: application/vnd.oai.openapi - JSON: application/vnd.oai.openapi+json parameters: - in: query name: format schema: type: string enum: - json - yaml - in: query name: lang schema: type: string enum: - ar - de - en - es - fr - it - nl - pl - pt tags: - schema security: - {} responses: '200': content: application/vnd.oai.openapi: schema: type: object additionalProperties: {} application/yaml: schema: type: object additionalProperties: {} application/vnd.oai.openapi+json: schema: type: object additionalProperties: {} application/json: schema: type: object additionalProperties: {} description: '' /api/v3/smart_locks/: get: operationId: smart_locks_list parameters: - in: query name: is_assigned schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: type schema: type: string enum: - akiles - nuki - omnitec - salto_space - ttlock description: |- * `akiles` - Akiles * `nuki` - Nuki * `ttlock` - TTLock * `omnitec` - Omnitec * `salto_space` - Salto Space tags: - smart_locks security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSmartLockListList' description: '' /api/v3/smart_locks/{id}/: get: operationId: smart_locks_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this smart lock. required: true tags: - smart_locks security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/SmartLockList' description: '' /api/v3/smart_schedulers/: get: operationId: smart_schedulers_list description: List smart schedulers (filter by `rental` to scope to a property) parameters: - in: query name: is_active schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: mission_template schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental schema: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value tags: - smart_schedulers security: - oauth2: - smart_schedulers:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSmartSchedulerList' description: '' post: operationId: smart_schedulers_create description: Create a smart scheduler for a property tags: - smart_schedulers requestBody: content: application/json: schema: $ref: '#/components/schemas/SmartScheduler' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SmartScheduler' multipart/form-data: schema: $ref: '#/components/schemas/SmartScheduler' required: true security: - oauth2: - smart_schedulers:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/SmartScheduler' description: '' /api/v3/smart_schedulers/{id}/: get: operationId: smart_schedulers_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this scheduler. required: true tags: - smart_schedulers security: - oauth2: - smart_schedulers:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/SmartScheduler' description: '' put: operationId: smart_schedulers_update description: Update a smart scheduler parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this scheduler. required: true tags: - smart_schedulers requestBody: content: application/json: schema: $ref: '#/components/schemas/SmartScheduler' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SmartScheduler' multipart/form-data: schema: $ref: '#/components/schemas/SmartScheduler' required: true security: - oauth2: - smart_schedulers:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/SmartScheduler' description: '' patch: operationId: smart_schedulers_partial_update description: Partially update a smart scheduler parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this scheduler. required: true tags: - smart_schedulers requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedSmartScheduler' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedSmartScheduler' multipart/form-data: schema: $ref: '#/components/schemas/PatchedSmartScheduler' security: - oauth2: - smart_schedulers:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/SmartScheduler' description: '' delete: operationId: smart_schedulers_destroy description: Delete a smart scheduler parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this scheduler. required: true tags: - smart_schedulers security: - oauth2: - smart_schedulers:write responses: '204': description: No response body /api/v3/sub_type_missions/: get: operationId: sub_type_missions_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - sub_type_missions security: - oauth2: - missions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSubTypeMissionList' description: '' /api/v3/sub_type_missions/{id}/: get: operationId: sub_type_missions_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission subtype. required: true tags: - sub_type_missions security: - oauth2: - missions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/SubTypeMission' description: '' /api/v3/subroom_types/: get: operationId: subroom_types_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - subroom_types security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSubroomTypeList' description: '' /api/v3/subroom_types/{id}/: get: operationId: subroom_types_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom type. required: true tags: - subroom_types security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/SubroomType' description: '' /api/v3/subrooms/: get: operationId: subrooms_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: room_type schema: type: string description: 'Filter by subroom type name. Example: room_type=BEDROOM' tags: - subrooms security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSubroomList' description: '' post: operationId: subrooms_create parameters: - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: room_type schema: type: string description: 'Filter by subroom type name. Example: room_type=BEDROOM' tags: - subrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/Subroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Subroom' multipart/form-data: schema: $ref: '#/components/schemas/Subroom' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/Subroom' description: '' /api/v3/subrooms/{id}/: get: operationId: subrooms_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: room_type schema: type: string description: 'Filter by subroom type name. Example: room_type=BEDROOM' tags: - subrooms security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Subroom' description: '' put: operationId: subrooms_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: room_type schema: type: string description: 'Filter by subroom type name. Example: room_type=BEDROOM' tags: - subrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/Subroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/Subroom' multipart/form-data: schema: $ref: '#/components/schemas/Subroom' required: true security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Subroom' description: '' patch: operationId: subrooms_partial_update parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: room_type schema: type: string description: 'Filter by subroom type name. Example: room_type=BEDROOM' tags: - subrooms requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedSubroom' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedSubroom' multipart/form-data: schema: $ref: '#/components/schemas/PatchedSubroom' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/Subroom' description: '' delete: operationId: subrooms_destroy parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this subroom. required: true - in: query name: rental_id schema: type: string description: 'Multiple rental_id parameters are accepted. Example: rental_id=0000&rental_id=0001' - in: query name: room_type schema: type: string description: 'Filter by subroom type name. Example: room_type=BEDROOM' tags: - subrooms security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/support_user_groups/: get: operationId: support_user_groups_list description: Retrieve the support-user groups covering the offices you have access to. Their ids are what the ticket group_assignees field takes. summary: List support-user groups parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - issues security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSupportUserGroupList' description: '' /api/v3/support_user_groups/{id}/: get: operationId: support_user_groups_retrieve description: Retrieve a single support-user group by ID. summary: Retrieve support-user group parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this staff user group. required: true tags: - issues security: - oauth2: - issues:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/SupportUserGroup' description: '' /api/v3/swikly_deposits/: get: operationId: swikly_deposits_list parameters: - in: query name: created_after schema: type: string format: date-time - in: query name: created_before schema: type: string format: date-time - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: modified_after schema: type: string format: date-time - in: query name: modified_before schema: type: string format: date-time - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: reservation_id schema: type: array items: type: integer explode: true style: form - in: query name: status schema: type: array items: type: string enum: - NOT_PAID - PAID description: |- * `NOT_PAID` - Not paid * `PAID` - Paid explode: true style: form tags: - swikly_deposits security: - oauth2: - swikly_deposits:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedSwiklyDepositList' description: '' /api/v3/swikly_deposits/{id}/: get: operationId: swikly_deposits_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this swikly deposit. required: true tags: - swikly_deposits security: - oauth2: - swikly_deposits:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/SwiklyDeposit' description: '' /api/v3/tags/: get: operationId: tags_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - tags security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedRentalTagList' description: '' post: operationId: tags_create description: Create a new tag for the account. tags: - tags requestBody: content: application/json: schema: $ref: '#/components/schemas/RentalTag' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RentalTag' multipart/form-data: schema: $ref: '#/components/schemas/RentalTag' required: true security: - oauth2: - rentals:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/RentalTag' description: '' /api/v3/tags/{id}/: get: operationId: tags_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property tag. required: true tags: - tags security: - oauth2: - rentals:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalTag' description: '' patch: operationId: tags_partial_update description: Partially update a tag's name or color. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property tag. required: true tags: - tags requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedRentalTag' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedRentalTag' multipart/form-data: schema: $ref: '#/components/schemas/PatchedRentalTag' security: - oauth2: - rentals:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/RentalTag' description: '' delete: operationId: tags_destroy description: Delete a tag. Automatically unassigns it from all rentals. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this property tag. required: true tags: - tags security: - oauth2: - rentals:write responses: '204': description: No response body /api/v3/type_missions/: get: operationId: type_missions_list parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - type_missions security: - oauth2: - missions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTypeMissionList' description: '' /api/v3/type_missions/{id}/: get: operationId: type_missions_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this mission type. required: true tags: - type_missions security: - oauth2: - missions:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/TypeMission' description: '' /api/v3/users/: get: operationId: users_list tags: - users security: - oauth2: - users:read responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/UserSerialzer' description: '' /api/v3/users/{id}/: get: operationId: users_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this user. required: true tags: - users security: - oauth2: - users:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserSerialzer' description: '' /api/v3/users/me/: get: operationId: users_me_retrieve tags: - users security: - oauth2: - users:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserSerialzer' description: '' /api/v3/vouchers/: get: operationId: vouchers_list description: Retrieve a list of discount vouchers accessible to the current user. summary: List vouchers parameters: - in: query name: antennes schema: type: array items: type: integer description: Office explode: true style: form - in: query name: code schema: type: string - in: query name: description schema: type: string - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: rentals schema: type: array items: type: string title: Contract number description: Property explode: true style: form - in: query name: reservation_platform schema: type: array items: type: integer description: Platform explode: true style: form - in: query name: validity_end_after schema: type: string format: date - in: query name: validity_end_before schema: type: string format: date - in: query name: validity_start_after schema: type: string format: date - in: query name: validity_start_before schema: type: string format: date tags: - Vouchers security: - oauth2: - vouchers:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVoucherList' description: '' /api/v3/vouchers/{id}/: get: operationId: vouchers_retrieve description: Retrieve a specific voucher by ID. summary: Retrieve voucher parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this voucher. required: true tags: - Vouchers security: - oauth2: - vouchers:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/Voucher' description: '' components: schemas: AccountingInvoiceCreate: type: object properties: id: type: integer readOnly: true external_id: type: string maxLength: 200 pdf: type: string format: uri type: $ref: '#/components/schemas/AccountingInvoiceCreateTypeEnum' category: $ref: '#/components/schemas/AccountingInvoiceCreateCategoryEnum' original_invoice: type: integer nullable: true serie: type: string nullable: true maxLength: 100 emmission_date: type: string format: date nullable: true description: type: string nullable: true maxLength: 200 total_net: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Price without VAT total_gross: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Price with VAT total_vat: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true currency: $ref: '#/components/schemas/CurrencyD53Enum' reservation: type: integer nullable: true payout_adjustment: type: integer nullable: true payment_link: type: integer nullable: true source_id: type: integer writeOnly: true required: - category - external_id - id - pdf - source_id - type AccountingInvoiceCreateCategoryEnum: enum: - COMMISSION - STAY - SINGLE_DOCUMENT - CLEANING - COMMISSION_AND_PAYMENT_FEE - PLATFORM_FEE - PMS - ADJUSTMENT - PAYMENT_LINK - RESOLUTION - EXTRA_FEE - GUEST_INVOICE type: string description: |- * `COMMISSION` - Commission * `STAY` - Stay * `SINGLE_DOCUMENT` - Single document * `CLEANING` - Cleaning * `COMMISSION_AND_PAYMENT_FEE` - Commission and payment fee * `PLATFORM_FEE` - Platform fee * `PMS` - Property management software invoice * `ADJUSTMENT` - Payout adjustment * `PAYMENT_LINK` - Payment link * `RESOLUTION` - Resolution * `EXTRA_FEE` - Extra fee * `GUEST_INVOICE` - Guest invoice AccountingInvoiceCreateTypeEnum: enum: - INVOICE - STATEMENT - CREDIT_NOTE - RECEIPT type: string description: |- * `INVOICE` - Invoice * `STATEMENT` - Statement * `CREDIT_NOTE` - Credit Note * `RECEIPT` - Receipt ActiveStatusEnum: enum: - PENDING - DOING - DONE type: string description: |- * `PENDING` - PENDING * `DOING` - DOING * `DONE` - DONE Agent: type: object description: |- Read-only lookup: who the caller may put on a mission, and their id. An allowlist, not the model: no phone, address, date of birth or identity document. ``antennes`` renders whatever ``AgentsViewSet`` prefetched, which is where its scoping lives. properties: id: type: integer readOnly: true first_name: type: string readOnly: true last_name: type: string readOnly: true status: allOf: - $ref: '#/components/schemas/AgentStatusEnum' description: |- Whether the agent is still working: ACTIVE or INACTIVE. Assigning a mission does NOT check this, so an INACTIVE agent must be filtered out here rather than relied on to be refused. * `ACTIVE` - Active * `INACTIVE` - Inactive antennes: type: array items: type: integer title: Offices title: Offices description: Ids of the offices the agent works for, restricted to the offices you have access to. A mission can only be assigned to an agent of the mission's own office. type_mission: type: array items: type: integer title: Mission types title: Mission types description: Ids of the mission types the agent is qualified for (list them with the type_missions resource). A mission can only be assigned to an agent qualified for its type. required: - antennes - first_name - id - last_name AgentStatusEnum: enum: - ACTIVE - INACTIVE type: string description: |- * `ACTIVE` - Active * `INACTIVE` - Inactive AmenityMetadata: type: object properties: key: type: string description: Stable identifier for this metadata field. maxLength: 100 type: type: string description: 'Value type. One of: integer, boolean, choice, choices, time, amenity_price, schedule, month_ranges.' maxLength: 100 options: type: string readOnly: true description: Allowed values for choice/choices types. Empty for other types. UNKNOWN_* sentinels are excluded. order: type: integer maximum: 2147483647 minimum: 0 nullable: true description: Display order within the amenity's metadata fields. required: - key - options - type BankAccountCurrencyEnum: enum: - EUR - GBP - USD - AED - SAR - INR - QAR type: string description: |- * `EUR` - EUR * `GBP` - GBP * `USD` - USD * `AED` - AED * `SAR` - SAR * `INR` - INR * `QAR` - QAR BankCountryEnum: enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CK - CR - CI - HR - CU - CW - CY - CZ - CD - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - KP - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - KR - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - UM - US - UY - UZ - VU - VA - VE - VN - VG - VI - WF - EH - YE - ZM - ZW type: string description: |- * `AF` - Afghanistan * `AX` - Åland Islands * `AL` - Albania * `DZ` - Algeria * `AS` - American Samoa * `AD` - Andorra * `AO` - Angola * `AI` - Anguilla * `AQ` - Antarctica * `AG` - Antigua and Barbuda * `AR` - Argentina * `AM` - Armenia * `AW` - Aruba * `AU` - Australia * `AT` - Austria * `AZ` - Azerbaijan * `BS` - Bahamas (The) * `BH` - Bahrain * `BD` - Bangladesh * `BB` - Barbados * `BY` - Belarus * `BE` - Belgium * `BZ` - Belize * `BJ` - Benin * `BM` - Bermuda * `BT` - Bhutan * `BO` - Bolivia * `BQ` - Bonaire, Sint Eustatius and Saba * `BA` - Bosnia and Herzegovina * `BW` - Botswana * `BV` - Bouvet Island * `BR` - Brazil * `IO` - British Indian Ocean Territory * `BN` - Brunei * `BG` - Bulgaria * `BF` - Burkina Faso * `BI` - Burundi * `CV` - Cabo Verde * `KH` - Cambodia * `CM` - Cameroon * `CA` - Canada * `KY` - Cayman Islands * `CF` - Central African Republic * `TD` - Chad * `CL` - Chile * `CN` - China * `CX` - Christmas Island * `CC` - Cocos (Keeling) Islands * `CO` - Colombia * `KM` - Comoros * `CG` - Congo * `CK` - Cook Islands * `CR` - Costa Rica * `CI` - Côte d'Ivoire * `HR` - Croatia * `CU` - Cuba * `CW` - Curaçao * `CY` - Cyprus * `CZ` - Czechia * `CD` - Democratic Republic of the Congo * `DK` - Denmark * `DJ` - Djibouti * `DM` - Dominica * `DO` - Dominican Republic * `EC` - Ecuador * `EG` - Egypt * `SV` - El Salvador * `GQ` - Equatorial Guinea * `ER` - Eritrea * `EE` - Estonia * `SZ` - Eswatini * `ET` - Ethiopia * `FK` - Falkland Islands (Malvinas) * `FO` - Faroe Islands * `FJ` - Fiji * `FI` - Finland * `FR` - France * `GF` - French Guiana * `PF` - French Polynesia * `TF` - French Southern Territories * `GA` - Gabon * `GM` - Gambia * `GE` - Georgia * `DE` - Germany * `GH` - Ghana * `GI` - Gibraltar * `GR` - Greece * `GL` - Greenland * `GD` - Grenada * `GP` - Guadeloupe * `GU` - Guam * `GT` - Guatemala * `GG` - Guernsey * `GN` - Guinea * `GW` - Guinea-Bissau * `GY` - Guyana * `HT` - Haiti * `HM` - Heard Island and McDonald Islands * `HN` - Honduras * `HK` - Hong Kong * `HU` - Hungary * `IS` - Iceland * `IN` - India * `ID` - Indonesia * `IR` - Iran * `IQ` - Iraq * `IE` - Ireland * `IM` - Isle of Man * `IL` - Israel * `IT` - Italy * `JM` - Jamaica * `JP` - Japan * `JE` - Jersey * `JO` - Jordan * `KZ` - Kazakhstan * `KE` - Kenya * `KI` - Kiribati * `KW` - Kuwait * `KG` - Kyrgyzstan * `LA` - Laos * `LV` - Latvia * `LB` - Lebanon * `LS` - Lesotho * `LR` - Liberia * `LY` - Libya * `LI` - Liechtenstein * `LT` - Lithuania * `LU` - Luxembourg * `MO` - Macao * `MG` - Madagascar * `MW` - Malawi * `MY` - Malaysia * `MV` - Maldives * `ML` - Mali * `MT` - Malta * `MH` - Marshall Islands * `MQ` - Martinique * `MR` - Mauritania * `MU` - Mauritius * `YT` - Mayotte * `MX` - Mexico * `FM` - Micronesia * `MD` - Moldova * `MC` - Monaco * `MN` - Mongolia * `ME` - Montenegro * `MS` - Montserrat * `MA` - Morocco * `MZ` - Mozambique * `MM` - Myanmar * `NA` - Namibia * `NR` - Nauru * `NP` - Nepal * `NL` - Netherlands * `NC` - New Caledonia * `NZ` - New Zealand * `NI` - Nicaragua * `NE` - Niger * `NG` - Nigeria * `NU` - Niue * `NF` - Norfolk Island * `KP` - North Korea * `MK` - North Macedonia * `MP` - Northern Mariana Islands * `NO` - Norway * `OM` - Oman * `PK` - Pakistan * `PW` - Palau * `PS` - Palestine * `PA` - Panama * `PG` - Papua New Guinea * `PY` - Paraguay * `PE` - Peru * `PH` - Philippines * `PN` - Pitcairn * `PL` - Poland * `PT` - Portugal * `PR` - Puerto Rico * `QA` - Qatar * `RE` - Réunion * `RO` - Romania * `RU` - Russia * `RW` - Rwanda * `BL` - Saint Barthélemy * `SH` - Saint Helena * `KN` - Saint Kitts and Nevis * `LC` - Saint Lucia * `MF` - Saint Martin (French part) * `PM` - Saint Pierre and Miquelon * `VC` - Saint Vincent and the Grenadines * `WS` - Samoa * `SM` - San Marino * `ST` - Sao Tome and Principe * `SA` - Saudi Arabia * `SN` - Senegal * `RS` - Serbia * `SC` - Seychelles * `SL` - Sierra Leone * `SG` - Singapore * `SX` - Sint Maarten (Dutch part) * `SK` - Slovakia * `SI` - Slovenia * `SB` - Solomon Islands * `SO` - Somalia * `ZA` - South Africa * `GS` - South Georgia * `KR` - South Korea * `SS` - South Sudan * `ES` - Spain * `LK` - Sri Lanka * `SD` - Sudan * `SR` - Suriname * `SJ` - Svalbard and Jan Mayen * `SE` - Sweden * `CH` - Switzerland * `SY` - Syria * `TW` - Taiwan * `TJ` - Tajikistan * `TZ` - Tanzania * `TH` - Thailand * `TL` - Timor-Leste * `TG` - Togo * `TK` - Tokelau * `TO` - Tonga * `TT` - Trinidad and Tobago * `TN` - Tunisia * `TR` - Turkey * `TM` - Turkmenistan * `TC` - Turks and Caicos Islands * `TV` - Tuvalu * `UG` - Uganda * `UA` - Ukraine * `AE` - United Arab Emirates * `GB` - United Kingdom * `UM` - United States Minor Outlying Islands * `US` - United States of America * `UY` - Uruguay * `UZ` - Uzbekistan * `VU` - Vanuatu * `VA` - Vatican City * `VE` - Venezuela * `VN` - Vietnam * `VG` - Virgin Islands (British) * `VI` - Virgin Islands (U.S.) * `WF` - Wallis and Futuna * `EH` - Western Sahara * `YE` - Yemen * `ZM` - Zambia * `ZW` - Zimbabwe Bathroom: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value hair_dryer: type: boolean default: false shower: type: boolean default: false bath: type: boolean default: false jacuzzi: type: boolean default: false spa_bath: type: boolean default: false mirror: type: boolean default: false toothbrush_holder: type: boolean default: false wastebasket: type: boolean default: false towel_warmer: type: boolean default: false toilet: type: boolean default: false required: - id - rental_id Bed: type: object properties: bed_type: type: string required: - bed_type BedType: type: object properties: id: type: integer readOnly: true name: type: string description: Bed type name, e.g. "SINGLE", "DOUBLE". maxLength: 255 required: - id - name Bedroom: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value bedroom_type: allOf: - $ref: '#/components/schemas/BedroomTypeEnum' default: BEDROOM window_coverage: nullable: true oneOf: - $ref: '#/components/schemas/BedroomWindowCoverageEnum' - $ref: '#/components/schemas/NullEnum' universal_adapter: type: boolean readOnly: true default: false beds: type: array items: $ref: '#/components/schemas/Bed' required: - beds - id - rental_id - universal_adapter BedroomTypeEnum: enum: - BEDROOM - LIVINGROOM type: string description: |- * `BEDROOM` - BEDROOM * `LIVINGROOM` - LIVINGROOM BedroomWindowCoverageEnum: enum: - SHUTTER - ESHUTTER - CURTAIN - STORE - NOTHING type: string description: |- * `SHUTTER` - SHUTTER * `ESHUTTER` - ESHUTTER * `CURTAIN` - CURTAIN * `STORE` - STORE * `NOTHING` - NOTHING Blacklist: type: object properties: id: type: integer readOnly: true first_name: type: string maxLength: 50 last_name: type: string maxLength: 50 card_last4: type: string nullable: true maxLength: 4 card_fingerprint: type: string nullable: true maxLength: 20 addresses: type: array items: {} emails: type: array items: type: string format: email maxLength: 254 phones: type: array items: type: string maxLength: 20 comment: type: string nullable: true maxLength: 1000 reasons: type: array items: $ref: '#/components/schemas/BlacklistReason' readOnly: true created_by: type: string readOnly: true reservation_ids: type: array items: type: integer readOnly: true description: Ids of the reservations linked to this blacklist entry, limited to properties you can access. email: type: array items: type: string readOnly: true description: Personal email addresses taken from the linked reservations. office_ids: type: array items: type: integer readOnly: true description: Ids of the offices of the linked reservations' properties. property_manager_ids: type: array items: type: integer readOnly: true description: Ids of the property managers of the linked reservations' properties. platform_ids: type: array items: type: integer readOnly: true description: Ids of the booking platforms of the linked reservations. required: - created_by - email - first_name - id - last_name - office_ids - platform_ids - property_manager_ids - reasons - reservation_ids BlacklistReason: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 50 required: - id - name BlankEnum: enum: - '' BlockCalendar: type: object properties: rental_id: type: string description: Id of the property (rental) whose calendar the date range applies to. start_date: type: string format: date-time description: Start of the date range (ISO 8601, e.g. 2026-07-01T14:00:00). The range is interpreted by calendar date, and this date must fall strictly before the end date, so the range spans at least one night. end_date: type: string format: date-time description: End of the date range (ISO 8601, e.g. 2026-07-05T11:00:00). Its calendar date must fall strictly after the start date. blocked_reason: description: |- Reason the calendar range is being blocked. * `HOST_STAY` - Owner stay * `MAINTENANCE` - Maintenance * `OTHER` - Other * `PARTIAL_OCCUPANCY` - Partially occupied * `FULL_OCCUPANCY` - Fully occupied * `BLOCKED_BY_HOST` - Blocked by owner * `UPSELLING_REQUEST` - Upselling request oneOf: - $ref: '#/components/schemas/BlockedReasonEnum' - $ref: '#/components/schemas/BlankEnum' blocked_notes: type: string description: Free-text notes about the block. return_cleaning: description: |- Cleaning arrangement for the owner's return, setting who provides the bedding (owner or property manager). Defaults to a full cleaning with property-manager bedding when omitted. * `FULL_OWNER` - Full cleaning + Owner bedding * `FULL_PROPERTY_MANAGER` - Full cleaning + Property manager bedding oneOf: - $ref: '#/components/schemas/ReturnCleaningEnum' - $ref: '#/components/schemas/BlankEnum' departure_cleaning: description: |- Cleaning arrangement for the owner's departure, setting the cleaning level and who provides the bedding. Defaults to a full cleaning with property-manager bedding when omitted. * `FULL_OWNER` - Full cleaning + Owner bedding * `FULL_PROPERTY_MANAGER` - Full cleaning + Property manager bedding * `DELIVERY` - Delivery (No cleaning + Property manager bedding) * `CLEANING_ONLY` - Cleaning only (Full cleaning + Owner bedding) * `NO_CLEANING` - No cleaning oneOf: - $ref: '#/components/schemas/DepartureCleaningEnum' - $ref: '#/components/schemas/BlankEnum' required: - end_date - rental_id - start_date BlockRentalCalendar: type: object properties: start_date: type: string format: date-time end_date: type: string format: date-time blocked_reason: type: string blocked_notes: type: string required: - end_date - start_date BlockedReasonEnum: enum: - HOST_STAY - MAINTENANCE - OTHER - PARTIAL_OCCUPANCY - FULL_OCCUPANCY - BLOCKED_BY_HOST - UPSELLING_REQUEST type: string description: |- * `HOST_STAY` - Owner stay * `MAINTENANCE` - Maintenance * `OTHER` - Other * `PARTIAL_OCCUPANCY` - Partially occupied * `FULL_OCCUPANCY` - Fully occupied * `BLOCKED_BY_HOST` - Blocked by owner * `UPSELLING_REQUEST` - Upselling request BookingsyncAmenity: type: object properties: key: type: string maxLength: 100 title: type: string nullable: true maxLength: 100 metadata: type: array items: $ref: '#/components/schemas/AmenityMetadata' readOnly: true required: - key - metadata BookingsyncRentalAmenity: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value amenity_key: type: string type_name: type: string readOnly: true details: type: string nullable: true description: Describe how to use the amenity location: type: string nullable: true model: type: string nullable: true brand: type: string nullable: true extra_information: nullable: true serial_number: type: string nullable: true metadata_values: type: object additionalProperties: true example: wifi_speed: 100 parking_type: garage readOnly: true description: Key-value map of metadata for this rental amenity. Keys correspond to the `key` field on the amenity's metadata schema, available via GET /api/v3/amenities/. On write (POST/PUT/PATCH), send the full dict — omitted keys are deleted (full replace semantics). Unknown keys are silently ignored. required: - amenity_key - id - metadata_values - rental_id - type_name BuildingConstructionPeriodEnum: enum: - BEFORE_1949 - FROM_1949_TO_1974 - FROM_1975_TO_1989 - FROM_1989_TO_2005 - AFTER_2005 type: string description: |- * `BEFORE_1949` - before 1949 * `FROM_1949_TO_1974` - from 1949 to 1974 * `FROM_1975_TO_1989` - from 1975 to 1989 * `FROM_1989_TO_2005` - from 1989 to 2005 * `AFTER_2005` - after 2005 BuildingLegalStatusEnum: enum: - INDIVIDUAL - CONDOMINIUM type: string description: |- * `INDIVIDUAL` - Individual ownership * `CONDOMINIUM` - Condominium regime CancellationPolicyCategoryEnum: enum: - flexible - moderate - strict - firm type: string description: |- * `flexible` - Flexible * `moderate` - Moderate * `strict` - Strict * `firm` - Firm CategoryC86Enum: enum: - COVID type: string description: '* `COVID` - covid' ChannelEnum: enum: - airbnb - homeaway - vrbo - vrbo_qa - email - sms - booking - booking-com - booking-qa - internal - whatsapp - guestspace - support type: string description: |- * `airbnb` - Airbnb * `homeaway` - HomeAway * `vrbo` - VRBO * `vrbo_qa` - VRBO (QA) * `email` - Email * `sms` - SMS * `booking` - Booking.com (Channel-Manager) * `booking-com` - Booking.com * `booking-qa` - Booking.com QA * `internal` - Internal * `whatsapp` - WhatsApp * `guestspace` - Guest space * `support` - Support ChargeTypeEnum: enum: - PER_ADULT - PER_ROOM - PER_NIGHT type: string description: |- * `PER_ADULT` - Per adult / per night * `PER_ROOM` - Per room / per night * `PER_NIGHT` - Per night ChargeWithEnum: enum: - FIXED - PERCENTAGE type: string description: |- * `FIXED` - Fixed * `PERCENTAGE` - Percentage ChargedToEnum: enum: - PROPERTY_MANAGER - OWNER - GUEST - PROVIDERS type: string description: |- * `PROPERTY_MANAGER` - Property Manager * `OWNER` - Owner * `GUEST` - Guest * `PROVIDERS` - Providers CheckInStep: type: object properties: id: type: integer nullable: true order: type: integer maximum: 32767 minimum: -32768 title: Ordering index attachment: allOf: - $ref: '#/components/schemas/CheckInStepAttachment' nullable: true show_for_check_in_type: nullable: true description: |- If not set, the step will be shown for all check-in types. * `SELF_CHECK_IN` - Self check-in * `IN_PERSON` - In-person check-in oneOf: - $ref: '#/components/schemas/ShowForCheckInTypeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' content_en: type: string content_fr: type: string content_pt: type: string content_es: type: string content_it: type: string content_ar: type: string content_de: type: string content_pl: type: string content_nl: type: string required: - order CheckInStepAttachment: type: object properties: image: type: string format: uri nullable: true file: type: string format: uri nullable: true image_or_file: type: string format: uri nullable: true City: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 200 required: - id - name CityRule: type: object properties: id: type: integer readOnly: true name: type: string title: Name of rule description: Name of the tax rule. maxLength: 250 city: type: integer description: Id of the city this tax rule applies to. charge_type: allOf: - $ref: '#/components/schemas/ChargeTypeEnum' description: |- Basis the tax is charged on per night: per adult, per bedroom, or a single flat charge per night. * `PER_ADULT` - Per adult / per night * `PER_ROOM` - Per room / per night * `PER_NIGHT` - Per night charge_with: allOf: - $ref: '#/components/schemas/ChargeWithEnum' description: |- How the amount is interpreted: FIXED means a fixed money amount, PERCENTAGE means a share of the reservation price. * `FIXED` - Fixed * `PERCENTAGE` - Percentage amount: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ description: Tax amount. When charge_with is FIXED, a fixed money amount (in the rule's currency) charged per unit per night; when charge_with is PERCENTAGE, a fraction of the reservation price between 0 and 1 (e.g. 0.05 for 5%). taxable_base: nullable: true title: Calculate percentage on description: |- For percentage rules, the amount the percentage is applied to: RENTAL_INCOME for the rental income only, or ACCOMMODATION for the rental income plus the cleaning fee. * `RENTAL_INCOME` - Rental income only * `ACCOMMODATION` - Rental income + cleaning fee oneOf: - $ref: '#/components/schemas/TaxableBaseEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' currency: readOnly: true nullable: true description: |- Currency the fixed amount and cap are expressed in, taken from the property manager's branch. Null when no branch currency is set. * `AED` - AED * `AUD` - AUD * `BRL` - BRL * `CAD` - CAD * `CHF` - CHF * `CZK` - CZK * `EUR` - EUR * `GBP` - GBP * `HKD` - HKD * `IDR` - IDR * `ILS` - ILS * `JPY` - JPY * `KRW` - KRW * `MAD` - MAD * `MYR` - MYR * `PLN` - PLN * `RUB` - RUB * `SAR` - SAR * `THB` - THB * `USD` - USD oneOf: - $ref: '#/components/schemas/CurrencyD53Enum' - $ref: '#/components/schemas/NullEnum' max_cap: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true title: Maximum cap per night description: Upper limit on the tax, per charge unit per night, in the rule's currency; applies to percentage rules only. Null means no cap. max_number_of_nights: type: integer maximum: 32767 minimum: 0 nullable: true title: Maximum number of nights description: Maximum number of nights the tax is charged for in a single stay; longer stays are charged as if they lasted this many nights. Null means every night is charged. affected_months: type: array items: type: integer readOnly: true description: Months, as numbers 1-12, during which the rule applies; the rule is used when the stay's month falls in this set. from_date: type: string format: date nullable: true description: Start date for when this rule applies until_date: type: string format: date nullable: true description: End date for when this rule applies is_default: type: boolean title: Set as default description: If enabled, it will be assigned automatically to new properties of the City required: - affected_months - amount - charge_type - charge_with - city - currency - id - name CleaningFeeInvoicedToEnum: enum: - GUEST - HOST type: string description: |- * `GUEST` - Guest * `HOST` - Owner ColorEnum: enum: - orange - red - pink - violet - blue - green - gray type: string description: |- * `orange` - Orange * `red` - Red * `pink` - Pink * `violet` - Violet * `blue` - Blue * `green` - Green * `gray` - Gray CommissionCalculationEnum: enum: - PROPERTY_MANAGER - OWNER type: string description: |- * `PROPERTY_MANAGER` - Property Manager commission * `OWNER` - Owner commission Conversation: type: object properties: id: type: integer readOnly: true status: allOf: - $ref: '#/components/schemas/StatusFa3Enum' readOnly: true guest_id: type: integer readOnly: true nullable: true guest_name: type: string nullable: true readOnly: true description: Guest's full name, or null when the conversation has no guest. guest_email: type: string format: email readOnly: true nullable: true rental_ids: type: array items: type: integer readOnly: true description: Ids of the properties (rentals) linked to this conversation. reservation_ids: type: array items: type: integer readOnly: true description: Ids of the reservations linked to this conversation. inquiry_ids: type: array items: type: integer readOnly: true description: Ids of the inquiries linked to this conversation. default_channel: type: string readOnly: true nullable: true flag_id: type: integer readOnly: true nullable: true description: Id of the triage flag on this conversation, or null when it is not flagged. Flags are the mailbox's triage queues; list them with the conversation_flags resource to map a colour to an id. flag_name: type: string nullable: true description: Name of the triage flag as the caller's property manager renamed it, or null when the conversation is not flagged. Match on flag_class_name instead for a value that survives renames. readOnly: true flag_class_name: type: string readOnly: true nullable: true description: Colour of the triage flag (for example 'pink', 'green'), or null when the conversation is not flagged. Stable across renames, unlike flag_name. last_message_id: type: integer readOnly: true nullable: true description: Id of the most recent message in this conversation, or null when it has none. Read it with the messages resource. snooze_until: type: string format: date-time readOnly: true description: 'UTC timestamp the conversation stays snoozed until. Never null: a conversation that was never snoozed carries a past timestamp, so ''currently snoozed'' means snooze_until is in the FUTURE, not that a value is present. Every inbound guest message resets it to the time that message arrived, which un-snoozes the conversation.' automatic_ai_enabled: type: boolean readOnly: true nullable: true description: 'Whether the AI answers this conversation automatically. Three-state: true, false, or null when it was never set (inherit the office default) -- null is not the same as false.' created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true description: UTC timestamp of the last change to the conversation row (the default list ordering). required: - automatic_ai_enabled - created - default_channel - flag_class_name - flag_id - flag_name - guest_email - guest_id - guest_name - id - inquiry_ids - last_message_id - modified - rental_ids - reservation_ids - snooze_until - status ConversationCreate: type: object properties: id: type: integer readOnly: true status: $ref: '#/components/schemas/StatusFa3Enum' rental_ids: type: array items: type: integer writeOnly: true reservation_ids: type: array items: type: integer writeOnly: true default_channel: type: string nullable: true maxLength: 250 required: - id ConversationFlag: type: object description: |- A triage flag, named AS THE CALLER'S PROPERTY MANAGER SEES IT. The rows themselves are global reference data (every tenant flags against the same handful of flags), but the ``name`` is per-property-manager: ``PropertyManagerConversationFlag`` renames a flag for one tenant, and that rename is what the mailbox shows and what an operations lead says. So ``name`` is resolved the same way here as on ``ConversationSerializer.flag_name`` -- the two must agree, or "the Pink queue" resolves to a different id depending on which endpoint answered. properties: id: type: integer readOnly: true name: type: string readOnly: true class_name: type: string readOnly: true description: Colour of the flag (for example 'pink', 'green'). Stable across renames, unlike name. required: - class_name - id - name Country: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 200 required: - id - name CreateListing: type: object properties: id: type: integer readOnly: true reservation_platform: type: integer rental: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value title: type: string nullable: true maxLength: 150 id_platform: type: string nullable: true maxLength: 255 id_platform_2: type: string nullable: true description: Use only when platform has multiple IDs, eg. HomeAway maxLength: 20 url: type: string format: uri nullable: true maxLength: 200 is_active: type: boolean insurance: type: integer nullable: true insurance_rate: type: number format: double maximum: 1.0 minimum: 0.0 nullable: true description: Insurance rate as invoiced to client required: - id - rental - reservation_platform CreateMultiUnit: type: object description: |- Create a parent/child multi-unit from a main unit and its sub-units. The multi-unit takes its office and address from the main unit and is created ACTIVE. Assigning the properties blocks the calendars of their future reservations (see ``save_rentals_and_block``). properties: name: type: string description: Name of the multi-unit. host: type: string description: Username of the owner the multi-unit belongs to. main_unit: type: string title: Contract number description: Id of the property (rental) to use as the main (parent) unit. Its office and address become the multi-unit's office and address. rentals: type: array items: type: string title: Contract number description: Ids of the properties (rentals) to group under the multi-unit, including the main unit and at least one sub-unit. The main unit is added automatically if omitted. Each property must not already belong to another multi-unit and must share the main unit's address or sit within the configured distance of it. Once assigned, each property's future reservations have their calendars blocked. required: - host - main_unit - name - rentals CreateOwner: type: object properties: name: type: string readOnly: true first_name: type: string last_name: type: string email: type: string format: email user_name: type: string phone: type: string property_manager: type: string default_locale: $ref: '#/components/schemas/CreateOwnerDefaultLocaleEnum' type: $ref: '#/components/schemas/TypeF08Enum' gender: $ref: '#/components/schemas/GenderEnum' nationality: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' date_of_birth: type: string format: date nullable: true job: type: string nullable: true title: Occupation maxLength: 30 managed_by: type: integer nullable: true address_line1: type: string title: Address line 1 address_line2: type: string nullable: true title: Address line 2 post_code: type: string nullable: true title: Postcode maxLength: 10 city: type: string nullable: true maxLength: 100 region: type: string nullable: true maxLength: 40 country_of_residence: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' bank_account_iban: type: string title: Bank account (IBAN) maxLength: 500 bic: type: string nullable: true pattern: ^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$ maxLength: 50 bank_account_number: type: string maxLength: 100 bank_account_routing_number: type: string title: Bank account sort code / routing number maxLength: 100 bank_account_currency: nullable: true oneOf: - $ref: '#/components/schemas/BankAccountCurrencyEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' bank_account_name: type: string nullable: true title: Bank account holder name maxLength: 100 bank_account_holder_address: type: string nullable: true maxLength: 250 bank_name: type: string nullable: true maxLength: 100 bank_branch_name: type: string nullable: true maxLength: 100 bank_country: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' business_name: type: string nullable: true maxLength: 250 company_id: type: string nullable: true title: VAT number maxLength: 50 company_number: type: string nullable: true title: Company number / SIREN number maxLength: 50 company_address: type: string nullable: true maxLength: 250 tax_identification_number: type: string nullable: true title: Tax identification number (TIN) maxLength: 250 host_created_notification: type: boolean title: Owner creation notification description: When the owner account is created, this will send the owner a notification containing their login credentials property_validation: type: boolean title: Property validation notification description: Once a property is validated, this will automatically send the owner a validation notification for the property and a link to their Airbnb listing. deactivation_property_email: type: boolean title: Property deactivation notification description: Once a property is deactivated, this will automatically send the owner a notification of deactivation. It will say to contact the property manager to reopen dates / reactivate the property in the future. open_dates_notification: type: boolean description: Periodically send a notification to the owner if not enough dates are open required: - default_locale - email - first_name - last_name - name - phone - property_manager - user_name CreateOwnerDefaultLocaleEnum: enum: - en - fr - pt - es - it - ar - de - pl - nl type: string description: |- * `en` - en * `fr` - fr * `pt` - pt * `es` - es * `it` - it * `ar` - ar * `de` - de * `pl` - pl * `nl` - nl CreateRental: type: object properties: id: type: string readOnly: true name: type: string nullable: true title: Property name description: Use practical name for owners such as street name, do not use abbreviation or contract number. Name is displayed on invoices and owner profile. maxLength: 100 status: allOf: - $ref: '#/components/schemas/Status075Enum' readOnly: true office_name: type: string title: Office name description: 'Should be the name of the property manager + city (example: GUESTREADY-PARIS)' owner_name: type: string city: type: integer city_name: type: string readOnly: true country: type: integer country_name: type: string readOnly: true address: type: string description: 'Name and street number only. Example: 2 rue Volta' postal_code: type: string geoposition: type: string key_strategy: nullable: true description: |- Is used to define how to work with Keys. * `PADLOCK` - Lockbox/Padlock * `KEYNEST` - Keynest * `IGLOOHOME_KEYBOX` - Igloohome KeyBox * `IGLOOHOME_LOCK` - Igloohome Lock * `OFFICE` - Office pick-up * `NUKI_LOCK` - Nuki lock * `SEAM_INTEGRATED_LOCK` - Integrated lock * `KEY_STORAGE` - Key storage * `PERSONAL_CHECK_IN` - Personal check-in * `SMART_LOCK` - Smart lock (not synchronised with RentalReady) * `DUBAI_KEYLESS` - Dubai Keyless * `REMOTELOCK` - RemoteLock * `YACAN_LOCK` - Yacan lock * `MANAGED_SMART_LOCK` - Managed smart lock * `OTHER` - Other oneOf: - $ref: '#/components/schemas/KeyStrategyEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' wifi_name: type: string maxLength: 200 wifi_password: type: string maxLength: 200 checkout_instructions: type: string trash_can_area_local: type: string trash_can_area_en: type: string key_deposit_local: type: string key_deposit_en: type: string key_box_code: type: string nullable: true maxLength: 255 lockbox_code: type: string nullable: true maxLength: 255 self_checkin_instructions_local: type: string self_checkin_instructions_en: type: string property_access_en: type: string property_access_local: type: string owner_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ default: '0.00' platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ default: '0.00' required: - address - city - city_name - country - country_name - geoposition - id - office_name - owner_name - postal_code - status CurrencyD53Enum: enum: - AED - AUD - BRL - CAD - CHF - CZK - EUR - GBP - HKD - IDR - ILS - JPY - KRW - MAD - MYR - PLN - RUB - SAR - THB - USD type: string description: |- * `AED` - AED * `AUD` - AUD * `BRL` - BRL * `CAD` - CAD * `CHF` - CHF * `CZK` - CZK * `EUR` - EUR * `GBP` - GBP * `HKD` - HKD * `IDR` - IDR * `ILS` - ILS * `JPY` - JPY * `KRW` - KRW * `MAD` - MAD * `MYR` - MYR * `PLN` - PLN * `RUB` - RUB * `SAR` - SAR * `THB` - THB * `USD` - USD CurrencyValueEnum: enum: - AED - AUD - BRL - CAD - CHF - CZK - EUR - GBP - HKD - IDR - ILS - JPY - KRW - MAD - MYR - PLN - RUB - SAR - THB - USD type: string description: |- * `AED` - AED * `AUD` - AUD * `BRL` - BRL * `CAD` - CAD * `CHF` - CHF * `CZK` - CZK * `EUR` - EUR * `GBP` - GBP * `HKD` - HKD * `IDR` - IDR * `ILS` - ILS * `JPY` - JPY * `KRW` - KRW * `MAD` - MAD * `MYR` - MYR * `PLN` - PLN * `RUB` - RUB * `SAR` - SAR * `THB` - THB * `USD` - USD CustomFieldDefinition: type: object properties: id: type: integer readOnly: true entity_type: $ref: '#/components/schemas/EntityTypeEnum' key: type: string maxLength: 100 label: type: string maxLength: 255 field_type: $ref: '#/components/schemas/FieldTypeEnum' options: type: array items: type: string maxLength: 255 description: List of allowed values. Required for 'select' field type, must be omitted or empty for other types. created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - entity_type - field_type - id - key - label - modified CustomFieldSearchResponse: type: object properties: entity_type: $ref: '#/components/schemas/EntityTypeEnum' results: type: array items: type: string description: List of object IDs matching the search criteria. required: - entity_type - results DailyPrice: type: object properties: is_available: allOf: - $ref: '#/components/schemas/IsAvailableEnum' readOnly: true date: type: string format: date price: type: number format: double minimum_stay: type: integer pricing_calendar: type: integer readOnly: true rental_id: type: string user: type: string readOnly: true required: - is_available - price - pricing_calendar - rental_id - user DepartureCleaningEnum: enum: - FULL_OWNER - FULL_PROPERTY_MANAGER - DELIVERY - CLEANING_ONLY - NO_CLEANING type: string description: |- * `FULL_OWNER` - Full cleaning + Owner bedding * `FULL_PROPERTY_MANAGER` - Full cleaning + Property manager bedding * `DELIVERY` - Delivery (No cleaning + Property manager bedding) * `CLEANING_ONLY` - Cleaning only (Full cleaning + Owner bedding) * `NO_CLEANING` - No cleaning Description: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: Id of the property (rental) the description belongs to. headline: type: string nullable: true description: Short listing headline shown as the property's title on booking platforms. Single line, up to 75 characters. maxLength: 75 summary: type: string nullable: true description: Brief overview of the property, shown near the top of the listing. Up to 500 characters. maxLength: 500 space: type: string nullable: true description: 'Description of the space itself: the layout, rooms and what guests will find inside the property.' access: type: string nullable: true description: Description of how guests access the property and which areas they are free to use. interaction: type: string nullable: true description: Description of the level of contact and interaction guests can expect during their stay. neighborhood: type: string nullable: true title: Neighbourhood description: Description of the surrounding neighbourhood, such as nearby attractions, amenities and the character of the area. transit: type: string nullable: true description: Description of how to get around and reach the property, such as public transport and parking. notes: type: string nullable: true description: Any other useful details about the property not covered by the other sections. language: type: string nullable: true description: Two-letter code of the language this description is written in (e.g. 'en'). A property can have only one description per language. required: - id - language - rental_id DisableProperty: type: object properties: reason: type: string required: - reason DocumentTypeEnum: enum: - CONTRACT - INVENTORY - LEGAL_DOCS - OTHER type: string description: |- * `CONTRACT` - Contract * `INVENTORY` - Inventory * `LEGAL_DOCS` - Legal documents * `OTHER` - Other EntityTypeEnum: type: string enum: - reservation - rental ExtraFee: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 256 required: - id - name FieldTypeEnum: enum: - text - number - boolean - date - select type: string description: |- * `text` - Text * `number` - Number * `boolean` - Boolean * `date` - Date * `select` - Select FrenchHotelNatureCategoryEnum: enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 description: |- * `1` - Palace * `2` - Tourist hotel * `3` - Tourist residence * `4` - Furnished tourism accommodation * `5` - Holiday village * `6` - Bed and breakfast * `7` - Camping-car area or tourist parking lot per 24-hour period * `8` - Camping or caravan site classified as 3, 4, and 5 stars and any other outdoor accommodation with equivalent characteristics * `9` - Marina GenderEnum: enum: - M - F type: string description: |- * `M` - Male * `F` - Female GuestControl: type: object properties: allows_children_as_host: type: boolean description: Is listing suitable for children (2-12 years)? If you selected false, this field is required to provide details about why the place is not suitable for children. allows_infants_as_host: type: boolean description: Is listing suitable for infants (under 2 years)? If you selected false, this field is required to provide details about why the place is not suitable for infants. allows_smoking_as_host: type: boolean description: Is smoking allowed in the property? allows_pets_as_host: type: boolean description: Are pets allowed? allows_events_as_host: type: boolean description: Are parties or events allowed? children_not_allowed_details: type: string nullable: true title: Why are children/infants not allowed? pet_capacity: type: integer maximum: 5 minimum: 0 nullable: true standard_phrases: type: array items: type: string maxLength: 255 nullable: true require_guest_address: type: boolean nullable: true require_guest_contact_number: type: boolean nullable: true GuestInvoice: type: object properties: email: type: string format: email nullable: true title: Recipient email maxLength: 254 country_name: type: string readOnly: true city: type: string nullable: true maxLength: 50 name: type: string nullable: true maxLength: 75 company: type: string nullable: true title: Company name maxLength: 255 tax_number: type: string nullable: true maxLength: 255 address: type: string nullable: true maxLength: 200 required: - country_name GuestReview: type: object properties: id: type: integer readOnly: true name: type: string nullable: true maxLength: 150 created: type: string format: date-time readOnly: true title: type: string nullable: true maxLength: 150 rating: type: integer maximum: 2147483647 minimum: -2147483648 rating_accurate: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ comment: type: string nullable: true shareable: type: boolean country_code: type: string nullable: true maxLength: 150 private_comment: type: string nullable: true criteria: type: array items: $ref: '#/components/schemas/GuestReviewCriteria' reservation_id: type: integer readOnly: true reservation_platform_name: type: string readOnly: true guest_name: type: string readOnly: true rental_pk: type: integer replies: type: array items: $ref: '#/components/schemas/ReviewReply' readOnly: true required: - created - criteria - guest_name - id - rental_pk - replies - reservation_id - reservation_platform_name GuestReviewCriteria: type: object properties: name: type: string maxLength: 250 rating: type: string format: decimal pattern: ^-?\d{0,6}(?:\.\d{0,2})?$ comment: type: string nullable: true required: - name - rating IcalSync: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value rental_name: type: string readOnly: true platform_id: type: integer platform_name: type: string readOnly: true ical_url: type: string format: uri title: ICal Import URL description: The URL to fetch the iCal calendar from maxLength: 200 import_summary_as_guest_name: type: boolean description: If enabled, the event summary will be used as guest name in blocked notes is_active: type: boolean title: Active description: Only active syncs will be processed last_sync_at: type: string format: date-time readOnly: true nullable: true title: Last sync time (UTC) description: Timestamp of the last successful sync last_sync_attempt_at: type: string format: date-time readOnly: true nullable: true title: Last sync attempt time (UTC) description: Timestamp of the last sync attempt, regardless of outcome last_sync_error: type: string readOnly: true nullable: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - ical_url - id - last_sync_at - last_sync_attempt_at - last_sync_error - modified - platform_id - platform_name - rental_id - rental_name IdTypeEnum: enum: - P - B - O type: string description: |- * `` - Select a travel document type * `P` - Passport * `B` - National ID card * `O` - Other IdVerificationStatusEnum: enum: - NOT_VERIFIED - PENDING - VERIFIED - FAILED type: string description: |- * `NOT_VERIFIED` - NOT_VERIFIED * `PENDING` - PENDING * `VERIFIED` - VERIFIED * `FAILED` - FAILED Incident: type: object properties: id: type: integer readOnly: true created_at: type: string format: date-time readOnly: true description: When the incident was reported. category: allOf: - $ref: '#/components/schemas/IncidentCategoryEnum' description: |- The kind of mission the incident was reported on (cleaning, maintenance, check-in, or quality). * `CLEANING` - Cleaning * `MAINTENANCE` - Maintenance * `CHECK_IN` - Check-in * `QUALITY` - Quality status: allOf: - $ref: '#/components/schemas/IncidentStatusEnum' description: |- Lifecycle status of the incident (new, ticket created, archived, or closed). * `NEW` - New * `ISSUE_CREATED` - Ticket * `IGNORED` - Archived * `CLOSED` - Closed mission: type: integer description: Id of the mission the incident was reported on. property: type: string title: Property description: Id of the property (Appartement) the mission for this incident belongs to. nullable: true readOnly: true comment: type: string description: Free-text description of the incident. status_change_comment: type: string nullable: true description: Comment recorded the last time the status changed. status_updated_at: type: string format: date-time nullable: true description: When the status was last changed, if ever. closed_by: type: integer readOnly: true description: Id of the user who closed the incident. Null on an incident that is not closed AND on one closed automatically (the system closes an incident once all the tickets created from it are closed), so a CLOSED incident with no closed_by was closed automatically, never by a person. Archiving never sets it. issues: type: array items: type: integer readOnly: true description: Ids of the tickets (issues) created from this incident. required: - category - closed_by - comment - created_at - id - issues - mission - property IncidentCategoryEnum: enum: - CLEANING - MAINTENANCE - CHECK_IN - QUALITY type: string description: |- * `CLEANING` - Cleaning * `MAINTENANCE` - Maintenance * `CHECK_IN` - Check-in * `QUALITY` - Quality IncidentStatusEnum: enum: - NEW - ISSUE_CREATED - IGNORED - CLOSED type: string description: |- * `NEW` - New * `ISSUE_CREATED` - Ticket * `IGNORED` - Archived * `CLOSED` - Closed Inquiry: type: object properties: id: type: integer readOnly: true status: allOf: - $ref: '#/components/schemas/InquiryStatusEnum' readOnly: true description: |- Inquiry state. Currently produced: inquiry (guest info request, no booking), pending (reservation request awaiting host accept/decline), preapproved (host pre-approved; not yet a confirmed booking), denied (host declined), cancelled (request voided/withdrawn). Legacy / not currently emitted: accepted, not_possible, special_offer, not_found. A confirmed booking is read from the conversation's reservation_ids, not from an inquiry status. * `inquiry` - Inquiry * `pending` - Pending * `preapproved` - Pre-approved * `denied` - Refused * `not_possible` - Not possible * `accepted` - Accepted * `cancelled` - Cancelled * `special_offer` - Special offer * `not_found` - Not found checkin_date: type: string format: date readOnly: true nullable: true description: Requested check-in date for the prospective stay (YYYY-MM-DD). checkout_date: type: string format: date readOnly: true nullable: true description: Requested check-out date for the prospective stay (YYYY-MM-DD). origin: allOf: - $ref: '#/components/schemas/InquiryOriginEnum' readOnly: true description: |- Source the inquiry came from, i.e. the platform or channel that originated it (e.g. Airbnb, Booking.com, direct email). * `channel_manager` - Platform * `bookingsync_inbox` - BookingSync * `airbnb_message` - Airbnb * `airbnb_email` - Airbnb * `airbnb_tentative` - Airbnb * `booking-com` - Booking.com * `homeaway` - HomeAway * `homeaway_tentative` - HomeAway * `tripadvisor` - TripAdvisor * `email` - Email * `messenger` - Messenger * `whatsapp` - WhatsApp * `sms` - SMS * `notification` - Email * `event` - Email * `airbnb_review` - Airbnb * `guestspace` - Guest space * `twilio` - SMS * `booking_widget` - Direct booking widget * `support` - Support rental_id: type: string readOnly: true description: Id of the property (rental) the inquiry is about. required: - checkin_date - checkout_date - id - origin - rental_id - status InquiryOriginEnum: enum: - channel_manager - bookingsync_inbox - airbnb_message - airbnb_email - airbnb_tentative - booking-com - homeaway - homeaway_tentative - tripadvisor - email - messenger - whatsapp - sms - notification - event - airbnb_review - guestspace - twilio - booking_widget - support type: string description: |- * `channel_manager` - Platform * `bookingsync_inbox` - BookingSync * `airbnb_message` - Airbnb * `airbnb_email` - Airbnb * `airbnb_tentative` - Airbnb * `booking-com` - Booking.com * `homeaway` - HomeAway * `homeaway_tentative` - HomeAway * `tripadvisor` - TripAdvisor * `email` - Email * `messenger` - Messenger * `whatsapp` - WhatsApp * `sms` - SMS * `notification` - Email * `event` - Email * `airbnb_review` - Airbnb * `guestspace` - Guest space * `twilio` - SMS * `booking_widget` - Direct booking widget * `support` - Support InquiryStatusEnum: enum: - inquiry - pending - preapproved - denied - not_possible - accepted - cancelled - special_offer - not_found type: string description: |- * `inquiry` - Inquiry * `pending` - Pending * `preapproved` - Pre-approved * `denied` - Refused * `not_possible` - Not possible * `accepted` - Accepted * `cancelled` - Cancelled * `special_offer` - Special offer * `not_found` - Not found InstantBookingChoicesEnum: enum: - 'OFF' - EVERYONE type: string description: |- * `OFF` - No one * `EVERYONE` - Everyone InternalCategoryEnum: enum: - airbnb_resolution - mission_charge type: string description: |- * `airbnb_resolution` - airbnb_resolution * `mission_charge` - mission_charge InvoicingGuestRegistration: type: object properties: first_name: type: string nullable: true pattern: ^([a-zA-Z\u00e7\u00c7\u00e3\u00c3\u00e1\u00c1\u00e0\u00c0\u00e9\u00c9\u00ea\u00ca\u00ed\u00cd\u00f5\u00d5\u00f4\u00d4\u00f3\u00d3\u00fa\u00da' ]|-)+$ maxLength: 40 last_name: type: string nullable: true pattern: ^([a-zA-Z\u00e7\u00c7\u00e3\u00c3\u00e1\u00c1\u00e0\u00c0\u00e9\u00c9\u00ea\u00ca\u00ed\u00cd\u00f5\u00d5\u00f4\u00d4\u00f3\u00d3\u00fa\u00da' ]|-)+$ maxLength: 40 date_of_birth: type: string format: date nullable: true nationality_code: type: string default: '' residence_country_code: type: string default: '' id_type: nullable: true title: Travel document type oneOf: - $ref: '#/components/schemas/IdTypeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' id_number: type: string nullable: true title: Travel document number pattern: ^[a-zA-Z0-9]+$ maxLength: 16 country_code: type: string default: '' check_in_date: type: string format: date nullable: true check_out_date: type: string format: date nullable: true is_primary_guest: type: boolean readOnly: true description: Whether this guest is the primary (first) registered guest. required: - is_primary_guest InvoicingReservation: type: object properties: id: type: integer readOnly: true platform_reservation_id: type: string number: type: string reservation_status: allOf: - $ref: '#/components/schemas/ReservationStatusEnum' readOnly: true source: type: string booked_at: type: string nullable: true readOnly: true description: Timestamp when the booking was placed (UTC, ISO 8601). checkin_date: type: string format: date checkout_date: type: string format: date arrival_time: type: string format: time departure_time: type: string format: time rental_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ city_tax: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ payment_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ property_manager_commission: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ extra_fees: type: array items: $ref: '#/components/schemas/ReservationExtraFee' extra_revenue: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ readOnly: true total_paid_by_guest: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ internal_comment: type: string readOnly: true description: Visible to staff only cleaning_internal_comment: type: string readOnly: true description: Visible to staff only number_of_adults: type: integer number_of_children: type: integer number_of_infants: type: integer number_of_pets: type: integer guest_first_name: type: string readOnly: true guest_last_name: type: string readOnly: true guest_personal_email: type: string guest_phone_number: type: string guest_preferred_language: type: string guest_invoice: allOf: - $ref: '#/components/schemas/GuestInvoice' readOnly: true is_owner: type: boolean guest_registration: type: array items: $ref: '#/components/schemas/InvoicingGuestRegistration' nullable: true readOnly: true description: Registered guest details for the stay (e.g. Portugal SEF registration), or null if none. blocked_reason: readOnly: true nullable: true oneOf: - $ref: '#/components/schemas/BlockedReasonEnum' - $ref: '#/components/schemas/NullEnum' blocked_notes: type: string readOnly: true nullable: true required: - arrival_time - blocked_notes - blocked_reason - booked_at - checkin_date - checkout_date - city_tax - cleaning_internal_comment - departure_time - extra_fees - extra_revenue - guest_first_name - guest_invoice - guest_last_name - guest_personal_email - guest_phone_number - guest_preferred_language - guest_registration - id - internal_comment - is_owner - number - number_of_adults - number_of_children - number_of_infants - number_of_pets - payment_fee - platform_cleaning_fee - platform_fee - platform_reservation_id - property_manager_commission - rental_amount - reservation_status - source - total_paid_by_guest IsAvailableEnum: enum: - AVAILABLE - BOOKED - UNAVAILABLE type: string description: |- * `AVAILABLE` - AVAILABLE * `BOOKED` - BOOKED * `UNAVAILABLE` - UNAVAILABLE Issue: type: object properties: id: type: integer readOnly: true host: type: integer nullable: true title: Owner description: Id of the property owner the ticket is about. rental: type: string title: Property description: Id of the property (rental) the ticket is about. At least one of rental, host, issue_mission, mission_incident, reservation, or guest_review is required. nullable: true issue_mission: type: integer nullable: true title: Mission description: Id of the mission the ticket relates to, if any. mission_incident: type: integer nullable: true description: 'Id of the mission incident the ticket is raised from — a problem a field agent reported during a mission. This is NOT issue_mission, which takes a mission id. When set, the incident''s photo and attachments are copied onto the ticket, and a new incident is marked as having a ticket. An archived or closed incident keeps its status: linking a ticket never reopens it.' reservation: type: integer nullable: true description: Id of the reservation (booking) concerned, if any. guest_review: type: integer nullable: true description: Id of the guest review the ticket relates to, if any. assignees: type: array items: type: integer description: Ids of the users to assign the ticket to. group_assignees: type: array items: type: integer description: Ids of the support-user groups to assign the ticket to. status: allOf: - $ref: '#/components/schemas/IssueStatusEnum' description: |- Workflow state of the ticket; defaults to OPEN. FINANCIAL_REVIEW means the ticket is under financial review. * `OPEN` - Open * `ONGOING_RESOLUTION` - Ongoing resolution * `CLOSED` - Closed * `ON_HOLD` - On hold * `FINANCIAL_REVIEW` - Under financial review priority_level: allOf: - $ref: '#/components/schemas/PriorityLevelEnum' description: |- Urgency of the ticket, from LV1_EMERGENCY (most urgent) to LV4_LOW (least urgent). Defaults to LV4_LOW. * `LV1_EMERGENCY` - Urgent * `LV2_HIGH` - High * `LV3_MEDIUM` - Mid * `LV4_LOW` - Low category: type: integer description: Id of the ticket category. Must be a child category (one that itself has a parent category). due_date: type: string format: date nullable: true description: Date the ticket is due (YYYY-MM-DD). intervention_allowed: type: boolean title: Guest allowed intervention during their stay description: Whether the guest permits intervention at the property during their stay. Defaults to false. title: type: string nullable: true description: Short title of the ticket, shown as its headline in ticket lists. Optional, up to 100 characters; the description goes in creation_comment. maxLength: 100 creation_comment: type: string nullable: true title: Description description: Opening comment describing the problem, shown on the ticket. origin: allOf: - $ref: '#/components/schemas/IssueOriginEnum' description: |- How the ticket was reported, i.e. where it originated. Defaults to UNKNOWN. * `GUEST_DAMAGES` - Guest damages * `GUEST_REPORTED` - Reported by guest * `HOST_REPORTED` - Reported by owner * `AGENT_REPORTED` - Reported by agent * `PROPERTY_CHECK` - Property check * `OVERUSE` - Overuse * `UNKNOWN` - Unknown * `CLEANING_TEAM_REPORTED` - Reported by cleaning team * `REVIEW` - Guest review * `INBOX_THREAD_CREATED` - Created from inbox thread * `MISSION_INCIDENT_REPORTED` - Reported by agent through mission incident * `COURTESY_CALL` - Courtesy call parent_issue: type: integer nullable: true title: Parent ticket description: Id of the parent ticket, when creating a sub-ticket. keep_ticket_after_rental_offboarding: type: boolean title: Ticket should stay open after property offboarding description: When true, the ticket stays open after its property is offboarded instead of being closed automatically. Defaults to false. user: type: string readOnly: true required: - category - id - user IssueCategory: type: object properties: id: type: integer readOnly: true name: type: string description: Name of the ticket category. maxLength: 100 parent: type: integer nullable: true description: Id of the parent category, or null when this is a top-level category. full_name: type: string nullable: true description: Full hierarchical name of the category, combining any parent categories with its own name (for example 'Plumbing > Leak'). maxLength: 300 user: type: string readOnly: true required: - id - name - user IssueFile: type: object properties: id: type: integer readOnly: true file: type: string format: uri tag: nullable: true oneOf: - $ref: '#/components/schemas/TagEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' url: type: string readOnly: true title: type: string nullable: true maxLength: 50 issue: type: integer nullable: true user: type: string readOnly: true required: - file - id - url - user IssueNote: type: object description: |- A note on a ticket: the internal, append-only activity log of the ticket. The author is server-controlled -- the viewset sets it from the authenticated caller -- so a client cannot attribute a note to somebody else. ``issue`` IS writable here (unlike the ticket-nested shape this replaced, where it came from the URL), and its write queryset is scoped to the caller's own tickets, same as every writable relation on ``IssueSerializer``. properties: id: type: integer readOnly: true issue: type: integer description: Id of the ticket the note belongs to. note: type: string description: Text of the note to add to the ticket. created_by: type: integer readOnly: true nullable: true description: Id of the user who wrote the note, if still known. created_by_name: type: string nullable: true readOnly: true created_at: type: string format: date-time readOnly: true description: When the note was written. required: - created_at - created_by - created_by_name - id - issue - note IssueOriginEnum: enum: - GUEST_DAMAGES - GUEST_REPORTED - HOST_REPORTED - AGENT_REPORTED - PROPERTY_CHECK - OVERUSE - UNKNOWN - CLEANING_TEAM_REPORTED - REVIEW - INBOX_THREAD_CREATED - MISSION_INCIDENT_REPORTED - COURTESY_CALL type: string description: |- * `GUEST_DAMAGES` - Guest damages * `GUEST_REPORTED` - Reported by guest * `HOST_REPORTED` - Reported by owner * `AGENT_REPORTED` - Reported by agent * `PROPERTY_CHECK` - Property check * `OVERUSE` - Overuse * `UNKNOWN` - Unknown * `CLEANING_TEAM_REPORTED` - Reported by cleaning team * `REVIEW` - Guest review * `INBOX_THREAD_CREATED` - Created from inbox thread * `MISSION_INCIDENT_REPORTED` - Reported by agent through mission incident * `COURTESY_CALL` - Courtesy call IssueStatusEnum: enum: - OPEN - ONGOING_RESOLUTION - CLOSED - ON_HOLD - FINANCIAL_REVIEW type: string description: |- * `OPEN` - Open * `ONGOING_RESOLUTION` - Ongoing resolution * `CLOSED` - Closed * `ON_HOLD` - On hold * `FINANCIAL_REVIEW` - Under financial review KeyCollectionCode: type: object properties: key_name: type: string readOnly: true store_name: type: string readOnly: true store_address: type: string readOnly: true store_time: type: string readOnly: true code: type: string maxLength: 50 access_link: type: string format: uri nullable: true maxLength: 200 required: - code - key_name - store_address - store_name - store_time KeyStrategyEnum: enum: - PADLOCK - KEYNEST - IGLOOHOME_KEYBOX - IGLOOHOME_LOCK - OFFICE - NUKI_LOCK - SEAM_INTEGRATED_LOCK - KEY_STORAGE - PERSONAL_CHECK_IN - SMART_LOCK - DUBAI_KEYLESS - REMOTELOCK - YACAN_LOCK - MANAGED_SMART_LOCK - OTHER type: string description: |- * `PADLOCK` - Lockbox/Padlock * `KEYNEST` - Keynest * `IGLOOHOME_KEYBOX` - Igloohome KeyBox * `IGLOOHOME_LOCK` - Igloohome Lock * `OFFICE` - Office pick-up * `NUKI_LOCK` - Nuki lock * `SEAM_INTEGRATED_LOCK` - Integrated lock * `KEY_STORAGE` - Key storage * `PERSONAL_CHECK_IN` - Personal check-in * `SMART_LOCK` - Smart lock (not synchronised with RentalReady) * `DUBAI_KEYLESS` - Dubai Keyless * `REMOTELOCK` - RemoteLock * `YACAN_LOCK` - Yacan lock * `MANAGED_SMART_LOCK` - Managed smart lock * `OTHER` - Other KindEnum: enum: - PERCENTAGE - FIXED type: string description: |- * `PERCENTAGE` - Percentage * `FIXED` - Fixed amount LOSRental: type: object properties: rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true los_url: type: string readOnly: true required: - los_url - rental_id Listing: type: object properties: id: type: integer readOnly: true reservation_platform: allOf: - $ref: '#/components/schemas/ReservationPlatformBrief' readOnly: true rental: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true title: type: string readOnly: true nullable: true id_platform: type: string readOnly: true nullable: true id_platform_2: type: string readOnly: true nullable: true description: Use only when platform has multiple IDs, eg. HomeAway url: type: string format: uri readOnly: true nullable: true is_active: type: boolean readOnly: true insurance: type: integer readOnly: true nullable: true insurance_rate: type: number format: double readOnly: true nullable: true description: Insurance rate as invoiced to client required: - id - id_platform - id_platform_2 - insurance - insurance_rate - is_active - rental - reservation_platform - title - url ListingRequest: type: object properties: rental: type: string platform: type: string status: $ref: '#/components/schemas/ListingRequestStatusEnum' created_at: type: string format: date-time reopen_at: type: string format: date-time nullable: true source: $ref: '#/components/schemas/SourceEnum' staff: type: integer comment: type: string nullable: true user: type: string readOnly: true required: - platform - rental - source - staff - status - user ListingRequestStatusEnum: enum: - NEW - PENDING - PENDING_LISTING - PUBLISHED - CANCELLED type: string description: |- * `NEW` - New * `PENDING` - Pending * `PENDING_LISTING` - Pending listing * `PUBLISHED` - Published * `CANCELLED` - Cancelled LocationEnum: enum: - ENSUITE - NEXT_DOOR - DOWN_THE_HALL - OPPOSITE_THE_ROOM - IN_THE_HALLWAY - OTHER - INSIDE_THE_UNIT type: string description: |- * `ENSUITE` - Ensuite * `NEXT_DOOR` - Next door * `DOWN_THE_HALL` - Down the hall * `OPPOSITE_THE_ROOM` - Opposite to the room * `IN_THE_HALLWAY` - In the hallway * `OTHER` - Other * `INSIDE_THE_UNIT` - Inside the unit Message: type: object properties: id: type: integer readOnly: true conversation_id: type: integer readOnly: true sender: allOf: - $ref: '#/components/schemas/SenderEnum' readOnly: true content: type: string readOnly: true nullable: true channel: readOnly: true nullable: true oneOf: - $ref: '#/components/schemas/ChannelEnum' - $ref: '#/components/schemas/NullEnum' sent_at: type: string format: date-time readOnly: true required: - channel - content - conversation_id - id - sender - sent_at MessageCreate: type: object properties: conversation_id: type: integer content: type: string channel: allOf: - $ref: '#/components/schemas/ChannelEnum' default: internal required: - content - conversation_id MidTermPeriodBreakdown: type: object properties: period_start_date: type: string format: date period_end_date: type: string format: date payment_due_date: type: string format: date total_guest_payment: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ rental_income: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_fees: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ city_tax: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ cleaning_fee_share: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ pm_commission: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ owner_net_payout: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ required: - city_tax - cleaning_fee_share - owner_net_payout - payment_due_date - period_end_date - period_start_date - platform_fees - pm_commission - rental_income - total_guest_payment MidtermContractFile: type: object description: |- Scopes the writable ``reservation`` field to the caller's rentals. Requires ``user_rentals`` in the serializer context. An unowned or non-existent reservation pk then fails ``reservation`` field validation identically (before any auto-generated ``UniqueValidator`` runs), so the existence of other tenants' reservations -- and whether they already have a related record -- cannot be enumerated from the response. properties: id: type: integer readOnly: true attachment: type: string format: uri url: type: string nullable: true readOnly: true reservation: type: integer created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - attachment - created - id - modified - reservation - url Mission: type: object properties: id: type: integer readOnly: true start: type: string format: date-time title: Mission start description: Mission start date and time (ISO 8601, e.g. 2026-07-04T09:00:00+00:00). end: type: string format: date-time title: Mission end description: Mission end date and time (ISO 8601, e.g. 2026-07-04T11:00:00+00:00). is_unsynchronised: type: boolean title: Is unsynchronised? description: Unsynchronise this mission from all automation type: type: integer description: Id of the mission type, such as cleaning or maintenance. Any mission type except check-in can be selected. sub_type: type: integer nullable: true description: Id of the mission subtype. Must be a subtype of the selected mission type. add_notification_on_checklist_submit: type: boolean description: Whether to show a notification badge on the Checklists tab once the mission checklist is submitted, until it is reviewed. mission_paid: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Mission price description: 'The mission price. Stored exactly as sent, but four later paths recompute it: editing the property''s check-out price, editing its check-in price, the nightly host-mission pass, which reprices a cleaning mission around an owner stay, and the daily check-in form penalty job, which drops an uncompleted check-in mission to 5 and sets its final agent earnings, after which a new price no longer changes what the agent is paid, and reaches the owner charge only on an unbilled owner-stay mission.' charged_to: nullable: true description: |- This will help us to reconcile the payment but this is not an automated flow. * `PROPERTY_MANAGER` - Property Manager * `OWNER` - Owner * `GUEST` - Guest * `PROVIDERS` - Providers oneOf: - $ref: '#/components/schemas/ChargedToEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' payment_status: allOf: - $ref: '#/components/schemas/PaymentStatusEnum' description: |- Set to Paid when the agent has been paid. Updated automatically to Paid when a split to agent happens. * `NOT_PAID` - Not paid * `PAID` - Paid appartement: type: string title: Contract number description: Id of the property (rental) the mission is for. On creation, exactly one of appartement, reservation, or issue must be set. reservation: type: integer nullable: true description: Id of the reservation (booking) the mission is for. issue: type: integer nullable: true title: Ticket description: Id of the ticket the mission is for. summary: type: string nullable: true title: Summary as displayed on owner invoice description: Summary of the mission as shown on the owner invoice. internal_comment: type: string nullable: true readOnly: true description: Staff-only internal comment for the mission. Writable on create and PATCH; stored on the mission's reservation (in the type-scoped column) when the mission has one and is not of type EXTRA. external_comment: type: string nullable: true readOnly: true description: External-facing comment for the mission. Writable on create and PATCH; stored on the mission's reservation (in the type-scoped column) when the mission has one and is not of type EXTRA. Writing it on PATCH requires the can_api_update_mission_external_comment permission. edit_comment: type: string nullable: true title: Editing comment description: Comment explaining the edit made to the mission. payout_adjustment: $ref: '#/components/schemas/MissionPayoutAdjustment' done: type: boolean title: Mission has been completed description: Whether the mission has been completed. agent: type: integer nullable: true description: Id of the agent assigned to the mission. The agent must be qualified for the mission type and belong to the office of the mission's property. status: allOf: - $ref: '#/components/schemas/MissionStatusEnum' description: |- Lifecycle status of the mission. Defaults to NEW and is set to ASSIGNED automatically when an agent is assigned; PENDING_CH means it is awaiting validation after a change. * `NEW` - New * `ASSIGNED` - Assigned * `PENDING_CH` - Awaiting validation after a change * `CANCELLED` - Cancelled * `ARCHIVED` - Archived active_status: allOf: - $ref: '#/components/schemas/ActiveStatusEnum' readOnly: true description: |- Progress status of the mission, computed from its checklist execution: PENDING (to do), DOING (in progress), or DONE. * `PENDING` - PENDING * `DOING` - DOING * `DONE` - DONE created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true collection_code: allOf: - $ref: '#/components/schemas/KeyCollectionCode' readOnly: true next_reservation_date: type: string format: date-time nullable: true readOnly: true description: Arrival date-time (UTC) of the next reservation at the property, or null if there is none. is_midterm: type: boolean readOnly: true description: Whether the mission relates to a mid-term stay. requested_maintenance_job: allOf: - $ref: '#/components/schemas/RequestedMaintenanceJobEnum' nullable: true readOnly: true reservation_check_out: type: string format: date-time nullable: true readOnly: true description: Check-out date-time (UTC) of the mission's reservation, or null if the mission has no reservation. user: type: string readOnly: true required: - active_status - collection_code - created_at - end - external_comment - id - internal_comment - is_midterm - next_reservation_date - requested_maintenance_job - reservation_check_out - start - updated_at - user MissionPayoutAdjustment: type: object properties: id: type: integer readOnly: true category: allOf: - $ref: '#/components/schemas/MissionPayoutAdjustmentCategoryEnum' description: |- Category of the payout adjustment, such as maintenance, cleaning, or improvement. * `cleaning` - cleaning * `maintenance` - maintenance * `improvement` - improvement * `quality_check` - quality_check * `issue_resolution` - issue_resolution * `onboarding_fee` - onboarding_fee * `utility_bill` - utility_bill * `unit_permits` - unit_permits * `reservation_cancellation` - reservation_cancellation * `advance_payment_for_decoration_project` - advance_payment_for_decoration_project * `decoration_project` - decoration_project * `commission_offer` - commission_offer * `fin_ops` - fin_ops * `pest_control` - pest_control * `deep_cleaning` - deep_cleaning * `guest_request` - guest_request * `tpl_insurance` - tpl_insurance * `service_charge` - service_charge * `local_tax` - local_tax * `termination_fee` - termination_fee * `others` - others price_of_purchase: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Purchase price of the item or service being charged. price_of_purchase_note: type: string description: Note describing the purchase price. maxLength: 500 service_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Service fee charged on top of the purchase price. service_fee_note: type: string description: Note describing the service fee. maxLength: 500 receipt_file: type: string format: uri nullable: true description: Receipt file supporting the payout adjustment. supplier_name: type: string nullable: true description: Name of the supplier the purchase was made from. maxLength: 250 assign_to_am: type: boolean description: Whether to assign the payout adjustment to the account manager. internal_note: type: string description: Free-text internal note about the payout adjustment. maxLength: 500 send_invoice_to_finance_team: type: boolean description: Whether to send the related invoice to the finance team. property: type: string title: Contract number description: Id of the property (rental) the payout adjustment is for. required: - category - id - price_of_purchase - price_of_purchase_note - property - service_fee MissionPayoutAdjustmentCategoryEnum: enum: - cleaning - maintenance - improvement - quality_check - issue_resolution - onboarding_fee - utility_bill - unit_permits - reservation_cancellation - advance_payment_for_decoration_project - decoration_project - commission_offer - fin_ops - pest_control - deep_cleaning - guest_request - tpl_insurance - service_charge - local_tax - termination_fee - others type: string description: |- * `cleaning` - cleaning * `maintenance` - maintenance * `improvement` - improvement * `quality_check` - quality_check * `issue_resolution` - issue_resolution * `onboarding_fee` - onboarding_fee * `utility_bill` - utility_bill * `unit_permits` - unit_permits * `reservation_cancellation` - reservation_cancellation * `advance_payment_for_decoration_project` - advance_payment_for_decoration_project * `decoration_project` - decoration_project * `commission_offer` - commission_offer * `fin_ops` - fin_ops * `pest_control` - pest_control * `deep_cleaning` - deep_cleaning * `guest_request` - guest_request * `tpl_insurance` - tpl_insurance * `service_charge` - service_charge * `local_tax` - local_tax * `termination_fee` - termination_fee * `others` - others MissionStatusEnum: enum: - NEW - ASSIGNED - PENDING_CH - CANCELLED - ARCHIVED type: string description: |- * `NEW` - New * `ASSIGNED` - Assigned * `PENDING_CH` - Awaiting validation after a change * `CANCELLED` - Cancelled * `ARCHIVED` - Archived MultiUnit: type: object properties: id: type: integer readOnly: true description: Numeric database id of the multi-unit. display_id: type: string readOnly: true description: Human-readable identifier of the multi-unit, e.g. M123 for a parent/child multi-unit or H123 for a hotel. name: type: string readOnly: true description: Name of the multi-unit. status: allOf: - $ref: '#/components/schemas/MultiUnitStatusEnum' readOnly: true description: |- Lifecycle status of the multi-unit. Multi-units created through this API start ACTIVE. * `INACTIVE` - INACTIVE * `ACTIVE` - ACTIVE * `ONBOARDING` - ONBOARDING type: allOf: - $ref: '#/components/schemas/MultiUnitTypeEnum' readOnly: true description: |- Kind of multi-unit. Multi-units created through this API are PARENT_CHILD, where one main (parent) property groups several sub-units (children). * `PARENT_CHILD` - PARENT_CHILD * `HOTEL` - HOTEL office_name: type: string title: Office name description: Name of the office the multi-unit belongs to, inherited from its main (parent) unit. readOnly: true host: type: string readOnly: true description: Username of the owner the multi-unit belongs to. address: type: string readOnly: true description: Postal address of the multi-unit, inherited from its main unit. rentals: type: array items: type: string readOnly: true description: Ids of the properties (rentals) grouped in the multi-unit, including the main (parent) unit. main_unit: type: string nullable: true readOnly: true description: Id of the property (rental) that is the main (parent) unit, or null when none is set. created: type: string format: date-time readOnly: true description: Date and time the multi-unit was created (ISO 8601, e.g. 2026-07-04T09:00:00Z). modified: type: string format: date-time readOnly: true description: Date and time the multi-unit was last modified (ISO 8601, e.g. 2026-07-04T09:00:00Z). required: - address - created - display_id - host - id - main_unit - modified - name - office_name - rentals - status - type MultiUnitRoleEnum: enum: - ROOM_TYPE - INVENTORY - PARENT - CHILD type: string description: |- * `ROOM_TYPE` - Room type * `INVENTORY` - Inventory * `PARENT` - Parent * `CHILD` - Child MultiUnitStatusEnum: enum: - INACTIVE - ACTIVE - ONBOARDING type: string description: |- * `INACTIVE` - INACTIVE * `ACTIVE` - ACTIVE * `ONBOARDING` - ONBOARDING MultiUnitTypeEnum: enum: - PARENT_CHILD - HOTEL type: string description: |- * `PARENT_CHILD` - PARENT_CHILD * `HOTEL` - HOTEL Neighbourhood: type: object properties: id: type: integer readOnly: true name: type: string description: Name of the neighbourhood. maxLength: 100 description: type: string description: Free-text description of the neighbourhood. city: type: string readOnly: true description: Name of the city the neighbourhood belongs to. required: - city - id - name NullEnum: enum: - null Office: type: object properties: id: type: integer readOnly: true name: type: string title: Office name description: Name of the office, typically the property manager name combined with its city. maxLength: 100 is_internal: type: boolean title: Is internal? description: Whether the office is operated internally by the property manager rather than by an external partner. Defaults to false. vat_rate: type: number format: double description: VAT rate applied to prices excluding tax, as a decimal fraction (for example 0.2 for 20%). Defaults to 0.2. user: type: string readOnly: true required: - id - name - user OnboardingRequest: type: object properties: rental: type: string status: $ref: '#/components/schemas/OnboardingRequestStatusEnum' comment: type: string nullable: true requested_by: type: integer requested_at: type: string format: date-time readOnly: true assignee: type: integer decline_comment: type: string nullable: true declined_by: type: integer closed_at: type: string format: date-time nullable: true user: type: string readOnly: true required: - assignee - declined_by - rental - requested_at - requested_by - status - user OnboardingRequestStatusEnum: enum: - OPEN - CLOSE - DECLINED type: string description: |- * `OPEN` - Open * `CLOSE` - Close * `DECLINED` - Declined OrderCheckInSteps: type: object properties: rental_id: type: string step_ids: type: array items: type: integer required: - rental_id - step_ids Owner: type: object properties: name: type: string readOnly: true first_name: type: string last_name: type: string email: type: string format: email readOnly: true user_name: type: string readOnly: true phone: type: string title: Phone number pattern: ^\+\d{8,15}$ maxLength: 160 property_manager: type: string default_locale: allOf: - $ref: '#/components/schemas/OwnerDefaultLocaleEnum' title: Default language type: $ref: '#/components/schemas/TypeF08Enum' gender: $ref: '#/components/schemas/GenderEnum' nationality: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' date_of_birth: type: string format: date nullable: true job: type: string nullable: true title: Occupation maxLength: 30 managed_by: type: integer nullable: true address_line1: type: string title: Address line 1 address_line2: type: string nullable: true title: Address line 2 post_code: type: string nullable: true title: Postcode maxLength: 10 city: type: string nullable: true maxLength: 100 region: type: string nullable: true maxLength: 40 country_of_residence: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' bank_account_iban: type: string title: Bank account (IBAN) maxLength: 500 bic: type: string nullable: true pattern: ^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$ maxLength: 50 bank_account_number: type: string maxLength: 100 bank_account_routing_number: type: string title: Bank account sort code / routing number maxLength: 100 bank_account_currency: nullable: true oneOf: - $ref: '#/components/schemas/BankAccountCurrencyEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' bank_account_name: type: string nullable: true title: Bank account holder name maxLength: 100 bank_account_holder_address: type: string nullable: true maxLength: 250 bank_name: type: string nullable: true maxLength: 100 bank_branch_name: type: string nullable: true maxLength: 100 bank_country: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' business_name: type: string nullable: true maxLength: 250 company_id: type: string nullable: true title: VAT number maxLength: 50 company_number: type: string nullable: true title: Company number / SIREN number maxLength: 50 company_address: type: string nullable: true maxLength: 250 tax_identification_number: type: string nullable: true title: Tax identification number (TIN) maxLength: 250 host_created_notification: type: boolean title: Owner creation notification description: When the owner account is created, this will send the owner a notification containing their login credentials property_validation: type: boolean title: Property validation notification description: Once a property is validated, this will automatically send the owner a validation notification for the property and a link to their Airbnb listing. deactivation_property_email: type: boolean title: Property deactivation notification description: Once a property is deactivated, this will automatically send the owner a notification of deactivation. It will say to contact the property manager to reopen dates / reactivate the property in the future. open_dates_notification: type: boolean description: Periodically send a notification to the owner if not enough dates are open required: - default_locale - email - name - phone - user_name OwnerDefaultLocaleEnum: enum: - en - fr - pt - es - it - ar - de - pl - nl type: string description: |- * `en` - English * `fr` - French * `pt` - Portuguese * `es` - Spanish * `it` - Italian * `ar` - Arabic * `de` - German * `pl` - Polish * `nl` - Dutch PaginatedAgentList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Agent' limit: type: integer example: 50 PaginatedBathroomList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Bathroom' limit: type: integer example: 50 PaginatedBedTypeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/BedType' limit: type: integer example: 50 PaginatedBedroomList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Bedroom' limit: type: integer example: 50 PaginatedBlacklistList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Blacklist' limit: type: integer example: 50 PaginatedBookingsyncAmenityList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/BookingsyncAmenity' limit: type: integer example: 50 PaginatedBookingsyncRentalAmenityList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/BookingsyncRentalAmenity' limit: type: integer example: 50 PaginatedCheckInStepList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CheckInStep' limit: type: integer example: 50 PaginatedCityList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/City' limit: type: integer example: 10 PaginatedCityRuleList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CityRule' limit: type: integer example: 50 PaginatedConversationFlagList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ConversationFlag' limit: type: integer example: 50 PaginatedConversationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Conversation' limit: type: integer example: 50 PaginatedCountryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Country' limit: type: integer example: 10 PaginatedCustomFieldDefinitionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CustomFieldDefinition' limit: type: integer example: 100 PaginatedDailyPriceList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/DailyPrice' limit: type: integer example: 365 PaginatedDescriptionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Description' limit: type: integer example: 50 PaginatedGuestReviewList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/GuestReview' limit: type: integer example: 200 PaginatedIcalSyncList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/IcalSync' limit: type: integer example: 50 PaginatedIncidentList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Incident' limit: type: integer example: 100 PaginatedInquiryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Inquiry' limit: type: integer example: 50 PaginatedInvoicingReservationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/InvoicingReservation' limit: type: integer example: 2000 PaginatedIssueCategoryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/IssueCategory' limit: type: integer example: 50 PaginatedIssueFileList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/IssueFile' limit: type: integer example: 50 PaginatedIssueList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Issue' limit: type: integer example: 50 PaginatedIssueNoteList: type: object required: - results properties: count: type: integer example: 123 description: Only present when paginating with `limit`/`offset`, not with `cursor`. next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/IssueNote' limit: type: integer example: 50 description: Only present when paginating with `limit`/`offset`, not with `cursor`. PaginatedLOSRentalList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/LOSRental' limit: type: integer example: 50 PaginatedListingList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Listing' limit: type: integer example: 50 PaginatedListingRequestList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ListingRequest' limit: type: integer example: 10 PaginatedMessageList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Message' limit: type: integer example: 50 PaginatedMidtermContractFileList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/MidtermContractFile' limit: type: integer example: 50 PaginatedMissionList: type: object required: - results properties: count: type: integer example: 123 description: Only present when paginating with `limit`/`offset`, not with `cursor`. next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Mission' limit: type: integer example: 50 description: Only present when paginating with `limit`/`offset`, not with `cursor`. PaginatedMultiUnitList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/MultiUnit' limit: type: integer example: 50 PaginatedNeighbourhoodList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Neighbourhood' limit: type: integer example: 50 PaginatedOfficeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Office' limit: type: integer example: 10 PaginatedOnboardingRequestList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/OnboardingRequest' limit: type: integer example: 10 PaginatedOwnerList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Owner' limit: type: integer example: 10 PaginatedPaymentAcceptanceTransactionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PaymentAcceptanceTransaction' limit: type: integer example: 100 PaginatedPaymentLinkList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PaymentLink' limit: type: integer example: 100 PaginatedPayoutAdjustmentList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PayoutAdjustment' limit: type: integer example: 100 PaginatedPhotoList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Photo' limit: type: integer example: 50 PaginatedPricingConfigurationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PricingConfiguration' limit: type: integer example: 50 PaginatedPropertyManagerList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PropertyManager' limit: type: integer example: 10 PaginatedPropertyManagerPlatformSettingsList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PropertyManagerPlatformSettings' limit: type: integer example: 50 PaginatedRateRuleList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/RateRule' limit: type: integer example: 10 PaginatedRentalAccountList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/RentalAccount' limit: type: integer example: 10 PaginatedRentalAgreementSignatureList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/RentalAgreementSignature' limit: type: integer example: 50 PaginatedRentalHistoryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/RentalHistory' limit: type: integer example: 50 PaginatedRentalList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Rental' limit: type: integer example: 50 PaginatedRentalPlatformSettingsList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/RentalPlatformSettings' limit: type: integer example: 50 PaginatedRentalTagList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/RentalTag' limit: type: integer example: 50 PaginatedReservationDocumentList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ReservationDocument' limit: type: integer example: 50 PaginatedReservationList: type: object required: - results properties: count: type: integer example: 123 description: Only present when paginating with `limit`/`offset`, not with `cursor`. next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Reservation' limit: type: integer example: 100 description: Only present when paginating with `limit`/`offset`, not with `cursor`. PaginatedReservationPlatformList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ReservationPlatform' limit: type: integer example: 100 PaginatedSmartLockListList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/SmartLockList' limit: type: integer example: 200 PaginatedSmartSchedulerList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/SmartScheduler' limit: type: integer example: 50 PaginatedSubTypeMissionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/SubTypeMission' limit: type: integer example: 50 PaginatedSubroomList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Subroom' limit: type: integer example: 50 PaginatedSubroomTypeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/SubroomType' limit: type: integer example: 50 PaginatedSupportUserGroupList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/SupportUserGroup' limit: type: integer example: 50 PaginatedSwiklyDepositList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/SwiklyDeposit' limit: type: integer example: 100 PaginatedTypeMissionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/TypeMission' limit: type: integer example: 50 PaginatedVoucherList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Voucher' limit: type: integer example: 50 PaidToEnum: enum: - HOST - PROPERTY_MANAGER type: string description: |- * `HOST` - Owner * `PROPERTY_MANAGER` - Property manager PatchedArchiveIncident: type: object description: |- Base write serializer for the incident ``close`` / ``archive`` actions. Bound to the incident instance (like ``MarkPayoutAdjustmentAsPaidSerializer``): transition rules are checked in ``validate`` against ``self.instance`` and the mutation happens in ``update``. Modelled on the incident dashboard's Close / Archive buttons, but it does NOT reproduce ``authentification.views.MarkIncidentAsClosed`` / ``MarkIncidentAsIgnored`` line for line. Three deliberate divergences: 1. **Only a non-empty comment overwrites** ``status_change_comment``. The views assign ``request.POST.get("comment", None)`` UNCONDITIONALLY, so a no-comment post wipes the existing reason -- including the note ``issue_manager.signals.close_incident_when_all_tickets_closed`` writes ("All tickets are closed."). An API caller re-closing without a comment must not silently destroy that provenance. 2. **Transitions out of IGNORED are rejected.** The views themselves accept any transition; it is the dashboard TEMPLATES that make IGNORED terminal (``staffing/templates/staffing/mission_incidents.html`` and ``authentification/templates/authentification/table_actions.html`` both disable the whole action menu on an archived incident). The API mirrors what the interface can actually produce, not what the views would let through -- otherwise the API could re-archive an incident, overwriting a human's archive note and bumping ``status_updated_at`` in a way no user can. 3. **Idempotent re-close is allowed** even though the template hides Close on a CLOSED incident: re-closing changes nothing a caller cares about (same target status, ``status_updated_at`` keeps the original transition time), and an agent retrying a call it cannot tell succeeded must not get a spurious 400. CLOSED -> IGNORED stays allowed too, because the templates do offer Archive on a closed incident. properties: comment: type: string nullable: true description: Optional free-text reason recorded on the incident for this status change. Left out, blank, or null, the previous status comment is kept -- notably the automatic 'All tickets are closed.' note. PatchedBathroom: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value hair_dryer: type: boolean default: false shower: type: boolean default: false bath: type: boolean default: false jacuzzi: type: boolean default: false spa_bath: type: boolean default: false mirror: type: boolean default: false toothbrush_holder: type: boolean default: false wastebasket: type: boolean default: false towel_warmer: type: boolean default: false toilet: type: boolean default: false PatchedBedroom: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value bedroom_type: allOf: - $ref: '#/components/schemas/BedroomTypeEnum' default: BEDROOM window_coverage: nullable: true oneOf: - $ref: '#/components/schemas/BedroomWindowCoverageEnum' - $ref: '#/components/schemas/NullEnum' universal_adapter: type: boolean readOnly: true default: false beds: type: array items: $ref: '#/components/schemas/Bed' PatchedBlockRentalCalendar: type: object properties: start_date: type: string format: date-time end_date: type: string format: date-time blocked_reason: type: string blocked_notes: type: string PatchedBookingsyncRentalAmenity: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value amenity_key: type: string type_name: type: string readOnly: true details: type: string nullable: true description: Describe how to use the amenity location: type: string nullable: true model: type: string nullable: true brand: type: string nullable: true extra_information: nullable: true serial_number: type: string nullable: true metadata_values: type: object additionalProperties: true example: wifi_speed: 100 parking_type: garage readOnly: true description: Key-value map of metadata for this rental amenity. Keys correspond to the `key` field on the amenity's metadata schema, available via GET /api/v3/amenities/. On write (POST/PUT/PATCH), send the full dict — omitted keys are deleted (full replace semantics). Unknown keys are silently ignored. PatchedCheckInStep: type: object properties: id: type: integer nullable: true order: type: integer maximum: 32767 minimum: -32768 title: Ordering index attachment: allOf: - $ref: '#/components/schemas/CheckInStepAttachment' nullable: true show_for_check_in_type: nullable: true description: |- If not set, the step will be shown for all check-in types. * `SELF_CHECK_IN` - Self check-in * `IN_PERSON` - In-person check-in oneOf: - $ref: '#/components/schemas/ShowForCheckInTypeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' content_en: type: string content_fr: type: string content_pt: type: string content_es: type: string content_it: type: string content_ar: type: string content_de: type: string content_pl: type: string content_nl: type: string PatchedCloseIncident: type: object description: |- Base write serializer for the incident ``close`` / ``archive`` actions. Bound to the incident instance (like ``MarkPayoutAdjustmentAsPaidSerializer``): transition rules are checked in ``validate`` against ``self.instance`` and the mutation happens in ``update``. Modelled on the incident dashboard's Close / Archive buttons, but it does NOT reproduce ``authentification.views.MarkIncidentAsClosed`` / ``MarkIncidentAsIgnored`` line for line. Three deliberate divergences: 1. **Only a non-empty comment overwrites** ``status_change_comment``. The views assign ``request.POST.get("comment", None)`` UNCONDITIONALLY, so a no-comment post wipes the existing reason -- including the note ``issue_manager.signals.close_incident_when_all_tickets_closed`` writes ("All tickets are closed."). An API caller re-closing without a comment must not silently destroy that provenance. 2. **Transitions out of IGNORED are rejected.** The views themselves accept any transition; it is the dashboard TEMPLATES that make IGNORED terminal (``staffing/templates/staffing/mission_incidents.html`` and ``authentification/templates/authentification/table_actions.html`` both disable the whole action menu on an archived incident). The API mirrors what the interface can actually produce, not what the views would let through -- otherwise the API could re-archive an incident, overwriting a human's archive note and bumping ``status_updated_at`` in a way no user can. 3. **Idempotent re-close is allowed** even though the template hides Close on a CLOSED incident: re-closing changes nothing a caller cares about (same target status, ``status_updated_at`` keeps the original transition time), and an agent retrying a call it cannot tell succeeded must not get a spurious 400. CLOSED -> IGNORED stays allowed too, because the templates do offer Archive on a closed incident. properties: comment: type: string nullable: true description: Optional free-text reason recorded on the incident for this status change. Left out, blank, or null, the previous status comment is kept -- notably the automatic 'All tickets are closed.' note. PatchedCustomFieldDefinition: type: object properties: id: type: integer readOnly: true entity_type: $ref: '#/components/schemas/EntityTypeEnum' key: type: string maxLength: 100 label: type: string maxLength: 255 field_type: $ref: '#/components/schemas/FieldTypeEnum' options: type: array items: type: string maxLength: 255 description: List of allowed values. Required for 'select' field type, must be omitted or empty for other types. created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true PatchedIssue: type: object properties: id: type: integer readOnly: true host: type: integer nullable: true title: Owner description: Id of the property owner the ticket is about. rental: type: string title: Property description: Id of the property (rental) the ticket is about. At least one of rental, host, issue_mission, mission_incident, reservation, or guest_review is required. nullable: true issue_mission: type: integer nullable: true title: Mission description: Id of the mission the ticket relates to, if any. mission_incident: type: integer nullable: true description: 'Id of the mission incident the ticket is raised from — a problem a field agent reported during a mission. This is NOT issue_mission, which takes a mission id. When set, the incident''s photo and attachments are copied onto the ticket, and a new incident is marked as having a ticket. An archived or closed incident keeps its status: linking a ticket never reopens it.' reservation: type: integer nullable: true description: Id of the reservation (booking) concerned, if any. guest_review: type: integer nullable: true description: Id of the guest review the ticket relates to, if any. assignees: type: array items: type: integer description: Ids of the users to assign the ticket to. group_assignees: type: array items: type: integer description: Ids of the support-user groups to assign the ticket to. status: allOf: - $ref: '#/components/schemas/IssueStatusEnum' description: |- Workflow state of the ticket; defaults to OPEN. FINANCIAL_REVIEW means the ticket is under financial review. * `OPEN` - Open * `ONGOING_RESOLUTION` - Ongoing resolution * `CLOSED` - Closed * `ON_HOLD` - On hold * `FINANCIAL_REVIEW` - Under financial review priority_level: allOf: - $ref: '#/components/schemas/PriorityLevelEnum' description: |- Urgency of the ticket, from LV1_EMERGENCY (most urgent) to LV4_LOW (least urgent). Defaults to LV4_LOW. * `LV1_EMERGENCY` - Urgent * `LV2_HIGH` - High * `LV3_MEDIUM` - Mid * `LV4_LOW` - Low category: type: integer description: Id of the ticket category. Must be a child category (one that itself has a parent category). due_date: type: string format: date nullable: true description: Date the ticket is due (YYYY-MM-DD). intervention_allowed: type: boolean title: Guest allowed intervention during their stay description: Whether the guest permits intervention at the property during their stay. Defaults to false. title: type: string nullable: true description: Short title of the ticket, shown as its headline in ticket lists. Optional, up to 100 characters; the description goes in creation_comment. maxLength: 100 creation_comment: type: string nullable: true title: Description description: Opening comment describing the problem, shown on the ticket. origin: allOf: - $ref: '#/components/schemas/IssueOriginEnum' description: |- How the ticket was reported, i.e. where it originated. Defaults to UNKNOWN. * `GUEST_DAMAGES` - Guest damages * `GUEST_REPORTED` - Reported by guest * `HOST_REPORTED` - Reported by owner * `AGENT_REPORTED` - Reported by agent * `PROPERTY_CHECK` - Property check * `OVERUSE` - Overuse * `UNKNOWN` - Unknown * `CLEANING_TEAM_REPORTED` - Reported by cleaning team * `REVIEW` - Guest review * `INBOX_THREAD_CREATED` - Created from inbox thread * `MISSION_INCIDENT_REPORTED` - Reported by agent through mission incident * `COURTESY_CALL` - Courtesy call parent_issue: type: integer nullable: true title: Parent ticket description: Id of the parent ticket, when creating a sub-ticket. keep_ticket_after_rental_offboarding: type: boolean title: Ticket should stay open after property offboarding description: When true, the ticket stays open after its property is offboarded instead of being closed automatically. Defaults to false. user: type: string readOnly: true PatchedIssueFile: type: object properties: id: type: integer readOnly: true file: type: string format: uri tag: nullable: true oneOf: - $ref: '#/components/schemas/TagEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' url: type: string readOnly: true title: type: string nullable: true maxLength: 50 issue: type: integer nullable: true user: type: string readOnly: true PatchedMission: type: object properties: id: type: integer readOnly: true start: type: string format: date-time title: Mission start description: Mission start date and time (ISO 8601, e.g. 2026-07-04T09:00:00+00:00). end: type: string format: date-time title: Mission end description: Mission end date and time (ISO 8601, e.g. 2026-07-04T11:00:00+00:00). is_unsynchronised: type: boolean title: Is unsynchronised? description: Unsynchronise this mission from all automation type: type: integer description: Id of the mission type, such as cleaning or maintenance. Any mission type except check-in can be selected. sub_type: type: integer nullable: true description: Id of the mission subtype. Must be a subtype of the selected mission type. add_notification_on_checklist_submit: type: boolean description: Whether to show a notification badge on the Checklists tab once the mission checklist is submitted, until it is reviewed. mission_paid: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Mission price description: 'The mission price. Stored exactly as sent, but four later paths recompute it: editing the property''s check-out price, editing its check-in price, the nightly host-mission pass, which reprices a cleaning mission around an owner stay, and the daily check-in form penalty job, which drops an uncompleted check-in mission to 5 and sets its final agent earnings, after which a new price no longer changes what the agent is paid, and reaches the owner charge only on an unbilled owner-stay mission.' charged_to: nullable: true description: |- This will help us to reconcile the payment but this is not an automated flow. * `PROPERTY_MANAGER` - Property Manager * `OWNER` - Owner * `GUEST` - Guest * `PROVIDERS` - Providers oneOf: - $ref: '#/components/schemas/ChargedToEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' payment_status: allOf: - $ref: '#/components/schemas/PaymentStatusEnum' description: |- Set to Paid when the agent has been paid. Updated automatically to Paid when a split to agent happens. * `NOT_PAID` - Not paid * `PAID` - Paid appartement: type: string title: Contract number description: Id of the property (rental) the mission is for. On creation, exactly one of appartement, reservation, or issue must be set. reservation: type: integer nullable: true description: Id of the reservation (booking) the mission is for. issue: type: integer nullable: true title: Ticket description: Id of the ticket the mission is for. summary: type: string nullable: true title: Summary as displayed on owner invoice description: Summary of the mission as shown on the owner invoice. internal_comment: type: string nullable: true readOnly: true description: Staff-only internal comment for the mission. Writable on create and PATCH; stored on the mission's reservation (in the type-scoped column) when the mission has one and is not of type EXTRA. external_comment: type: string nullable: true readOnly: true description: External-facing comment for the mission. Writable on create and PATCH; stored on the mission's reservation (in the type-scoped column) when the mission has one and is not of type EXTRA. Writing it on PATCH requires the can_api_update_mission_external_comment permission. edit_comment: type: string nullable: true title: Editing comment description: Comment explaining the edit made to the mission. payout_adjustment: $ref: '#/components/schemas/MissionPayoutAdjustment' done: type: boolean title: Mission has been completed description: Whether the mission has been completed. agent: type: integer nullable: true description: Id of the agent assigned to the mission. The agent must be qualified for the mission type and belong to the office of the mission's property. status: allOf: - $ref: '#/components/schemas/MissionStatusEnum' description: |- Lifecycle status of the mission. Defaults to NEW and is set to ASSIGNED automatically when an agent is assigned; PENDING_CH means it is awaiting validation after a change. * `NEW` - New * `ASSIGNED` - Assigned * `PENDING_CH` - Awaiting validation after a change * `CANCELLED` - Cancelled * `ARCHIVED` - Archived active_status: allOf: - $ref: '#/components/schemas/ActiveStatusEnum' readOnly: true description: |- Progress status of the mission, computed from its checklist execution: PENDING (to do), DOING (in progress), or DONE. * `PENDING` - PENDING * `DOING` - DOING * `DONE` - DONE created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true collection_code: allOf: - $ref: '#/components/schemas/KeyCollectionCode' readOnly: true next_reservation_date: type: string format: date-time nullable: true readOnly: true description: Arrival date-time (UTC) of the next reservation at the property, or null if there is none. is_midterm: type: boolean readOnly: true description: Whether the mission relates to a mid-term stay. requested_maintenance_job: allOf: - $ref: '#/components/schemas/RequestedMaintenanceJobEnum' nullable: true readOnly: true reservation_check_out: type: string format: date-time nullable: true readOnly: true description: Check-out date-time (UTC) of the mission's reservation, or null if the mission has no reservation. user: type: string readOnly: true PatchedOwner: type: object properties: name: type: string readOnly: true first_name: type: string last_name: type: string email: type: string format: email readOnly: true user_name: type: string readOnly: true phone: type: string title: Phone number pattern: ^\+\d{8,15}$ maxLength: 160 property_manager: type: string default_locale: allOf: - $ref: '#/components/schemas/OwnerDefaultLocaleEnum' title: Default language type: $ref: '#/components/schemas/TypeF08Enum' gender: $ref: '#/components/schemas/GenderEnum' nationality: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' date_of_birth: type: string format: date nullable: true job: type: string nullable: true title: Occupation maxLength: 30 managed_by: type: integer nullable: true address_line1: type: string title: Address line 1 address_line2: type: string nullable: true title: Address line 2 post_code: type: string nullable: true title: Postcode maxLength: 10 city: type: string nullable: true maxLength: 100 region: type: string nullable: true maxLength: 40 country_of_residence: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' bank_account_iban: type: string title: Bank account (IBAN) maxLength: 500 bic: type: string nullable: true pattern: ^[a-zA-Z]{6}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?$ maxLength: 50 bank_account_number: type: string maxLength: 100 bank_account_routing_number: type: string title: Bank account sort code / routing number maxLength: 100 bank_account_currency: nullable: true oneOf: - $ref: '#/components/schemas/BankAccountCurrencyEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' bank_account_name: type: string nullable: true title: Bank account holder name maxLength: 100 bank_account_holder_address: type: string nullable: true maxLength: 250 bank_name: type: string nullable: true maxLength: 100 bank_branch_name: type: string nullable: true maxLength: 100 bank_country: default: '' oneOf: - $ref: '#/components/schemas/BankCountryEnum' - $ref: '#/components/schemas/BlankEnum' business_name: type: string nullable: true maxLength: 250 company_id: type: string nullable: true title: VAT number maxLength: 50 company_number: type: string nullable: true title: Company number / SIREN number maxLength: 50 company_address: type: string nullable: true maxLength: 250 tax_identification_number: type: string nullable: true title: Tax identification number (TIN) maxLength: 250 host_created_notification: type: boolean title: Owner creation notification description: When the owner account is created, this will send the owner a notification containing their login credentials property_validation: type: boolean title: Property validation notification description: Once a property is validated, this will automatically send the owner a validation notification for the property and a link to their Airbnb listing. deactivation_property_email: type: boolean title: Property deactivation notification description: Once a property is deactivated, this will automatically send the owner a notification of deactivation. It will say to contact the property manager to reopen dates / reactivate the property in the future. open_dates_notification: type: boolean description: Periodically send a notification to the owner if not enough dates are open PatchedPricingConfiguration: type: object properties: pricing_calendar: type: integer readOnly: true min_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Minimum price minimum_stay: type: integer maximum: 2147483647 minimum: 0 description: Define minimum stay on platforms (including Airbnb if you are using official API). If you choose 0, will default to 1 night for next 15 days then 2 nights after that. Always choose 2 for normal properties. max_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true title: Maximum price base_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Price of a night price_per_extra_person: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ mid_term_factor: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true title: Factor applied to the price for mid-term min_price_profitability: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ readOnly: true nullable: true title: Profitability floor adjustable_min_price: type: boolean title: Possibility to change minimum price max_night_stay: type: integer maximum: 2147483647 minimum: 0 nullable: true title: Maximum number of nights booking_interval: type: integer maximum: 730 minimum: 30 description: Number of days priced in the future. Select a value between 30 and 730, default being 365. Airbnb and Booking.com allow up to 540 days. include_time_factor: type: boolean title: Time factor description: Reduce the price for last-minute reservations and increase the price of reservations booked in advance include_seasonality_factor: type: boolean title: Events factor description: Optimize the price for various events (new year, ...) include_shortstay_factor: type: boolean title: Short availability factor description: Reduce the price between two close bookings include_geo_event_factor: type: boolean title: Local event factor description: Optimize the price according on local events (concert, ...) include_new_flat_factor: type: boolean title: New rental factor description: Reduce the price for the first bookings include_day_of_the_week_factor: type: boolean title: Day of the week factor description: Optimize the price depending on the day of the week include_one_night_gap_optimization: type: boolean title: 'Minimum stay: Short availability factor' description: Reduces the minimum number of nights depending on the number of days available between bookings, the 'minimum stay' set on the property remaining the absolute minimum value. include_monthly_seasonality_factor: type: boolean title: Seasonality factor description: Seasonality per month. include_daily_difference: type: boolean title: Daily difference description: Add 1 or 0 to the price, day by day, to trigger a change in price on the platforms and improve the visibility of the listing. include_min_stay_compression: type: boolean title: Minimum stay compression description: If the guest want to book a duration lower than the minstay, he will have to pay for a minstay duration. weekend_single_night_forbidden: type: boolean title: Forbid one night minimum stay for the weekend description: Forbid one night minimum stay for the weekend include_variable_min_stay: type: boolean title: Allow to set up periods of minstay description: Activates the possibility of having different MinStays over a specific period. If the booking is taken in a long time, it is interesting to have a higher MinStay than for last minute bookings. This factor should ideally be coupled with 'Minimum Night Number Factor optimized' for optimal results. include_occupancy_rate: type: boolean title: Occupancy rate factor description: Optimize the pricing based on occupancy rate include_automatic_midterm_pricing: type: boolean title: Automatic mid-term pricing description: Automatically create the mid-term ranges and publish them to enable mid-term bookings owner_instruction: type: string nullable: true description: |2- Fill this field if the owner has any specific instruction the pricing strategy.Describe the pricing stragegy: Imperative: give the precise objectives, give REALISTIC minimum prices for margin of maneuver, are they strict ? different high season/low season, etc. currency: nullable: true oneOf: - $ref: '#/components/schemas/CurrencyD53Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' checkout_date_discount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Discount at checkout yearly_max_days: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true title: Maximum amount days booked as short stay per year short_stay_maximum_days: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true title: Number of days after which the stay is a mid-term stay airbnb_non_refundable_price_factor: type: string format: decimal pattern: ^-?\d{0,2}(?:\.\d{0,1})?$ nullable: true description: Guests can book the non-refundable rate until the listing's cancellation policy kicks in and if the reservation's check-out date is within 60 days. Note that 1.0 = 0%, 0.9 = 10% and 0.1 = 90% discount. Please use it accordingly. user: type: string readOnly: true PatchedPropertyManagerPlatformSettings: type: object properties: id: type: integer readOnly: true property_manager: type: integer readOnly: true property_manager_name: type: string readOnly: true platform: type: integer readOnly: true platform_name: type: string readOnly: true markup: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ PatchedRateRule: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value always_applied: type: boolean start_date: type: string format: date nullable: true end_date: type: string format: date nullable: true percentage: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Make sure to use a - (minus) for discounts, otherwise it will be a price increase. fixed_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Make sure to use a - (minus) for discounts, otherwise it will be a price increase. kind: type: string period_name: type: string nullable: true maxLength: 100 variables: nullable: true is_active: type: boolean PatchedRental: type: object description: Renders custom-field values under `custom_fields`, skipped on list actions. properties: id: type: string readOnly: true name: type: string nullable: true title: Property name description: Use practical name for owners such as street name, do not use abbreviation or contract number. Name is displayed on invoices and owner profile. maxLength: 100 status: allOf: - $ref: '#/components/schemas/Status075Enum' readOnly: true office_name: type: string title: Office name description: 'Should be the name of the property manager + city (example: GUESTREADY-PARIS)' owner_name: type: string city: type: integer city_name: type: string readOnly: true country: type: integer country_name: type: string readOnly: true address: type: string description: 'Name and street number only. Example: 2 rue Volta' postal_code: type: string geoposition: type: string key_strategy: nullable: true description: |- Is used to define how to work with Keys. * `PADLOCK` - Lockbox/Padlock * `KEYNEST` - Keynest * `IGLOOHOME_KEYBOX` - Igloohome KeyBox * `IGLOOHOME_LOCK` - Igloohome Lock * `OFFICE` - Office pick-up * `NUKI_LOCK` - Nuki lock * `SEAM_INTEGRATED_LOCK` - Integrated lock * `KEY_STORAGE` - Key storage * `PERSONAL_CHECK_IN` - Personal check-in * `SMART_LOCK` - Smart lock (not synchronised with RentalReady) * `DUBAI_KEYLESS` - Dubai Keyless * `REMOTELOCK` - RemoteLock * `YACAN_LOCK` - Yacan lock * `MANAGED_SMART_LOCK` - Managed smart lock * `OTHER` - Other oneOf: - $ref: '#/components/schemas/KeyStrategyEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' wifi_name: type: string maxLength: 200 wifi_password: type: string maxLength: 200 checkout_instructions: type: string trash_can_area_local: type: string trash_can_area_en: type: string key_deposit_local: type: string key_deposit_en: type: string key_box_code: type: string nullable: true maxLength: 255 lockbox_code: type: string nullable: true maxLength: 255 self_checkin_instructions_local: type: string self_checkin_instructions_en: type: string property_access_en: type: string property_access_local: type: string owner_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ default: '0.00' platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ default: '0.00' stars: nullable: true minimum: 0 maximum: 5 oneOf: - $ref: '#/components/schemas/StarsEnum' - $ref: '#/components/schemas/NullEnum' host_id: type: integer readOnly: true emergency_contact: type: string nullable: true property_setup: type: string description: "Valid choices: \n- apartment\n- bed-in-dormitory\n- boat\n\ - bungalow\n- cabin\n- castle\n- cave\n- chalet\n- condominium\n- cottage\n\ - dormitory\n- double-room\n- earth-house\n- family-room\n- farmhouse\n\ - holiday-home\n- hotel\n- house\n- hut\n- igloo\n- island\n- lighthouse\n\ - loft\n- plane\n- quad-room\n- recreational-vehicle\n- single-room\n\ - studio\n- suite\n- tent\n- tipi\n- townhouse\n- train\n- treehouse\n\ - triple-room\n- twin-room\n- villa\n- yurt" property_type: $ref: '#/components/schemas/PropertyTypeEnum' building_construction_period: nullable: true oneOf: - $ref: '#/components/schemas/BuildingConstructionPeriodEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' building_construction_year: type: integer maximum: 2999 minimum: 0 nullable: true license_number: type: string nullable: true maxLength: 250 temporary_comment: type: string surface_area: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true description: in m2 published_status: nullable: true oneOf: - $ref: '#/components/schemas/PublishedStatusEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' sleeps: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true sleeps_max: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true classic_rental_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Classic property expected price land_registration_number: type: string nullable: true maxLength: 250 minimum_commission: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Minimum rate fixed_rent: type: boolean description: When true, Property manager receives full payments from reservations. The owner payments should be done manually. fixed_rent_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: This field data will be only used for analytics, it will not affect payment splits. key_sets_total: type: string nullable: true maxLength: 255 keys_observation: type: string nullable: true internal_notes: type: string nullable: true office_id: type: string readOnly: true multi_unit_id: type: integer readOnly: true description: ID of the multi-unit the property is associated to, or null if the property is not part of a multi-unit. multi_unit_role: allOf: - $ref: '#/components/schemas/MultiUnitRoleEnum' readOnly: true description: |- Role of the property within its multi-unit. Null when the property is not part of a multi-unit. * `ROOM_TYPE` - Room type * `INVENTORY` - Inventory * `PARENT` - Parent * `CHILD` - Child igloohome_lock_id: type: string nullable: true maxLength: 100 rental_category: $ref: '#/components/schemas/RentalCategoryEnum' can_receive_mid_term_reservations: type: boolean contract_started_at: type: string format: date-time nullable: true contract_terminated_at: type: string format: date-time nullable: true short_term_commission_rate: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ short_term_commission_rate_from: type: string format: date mid_term_commission_rate: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ mid_term_commission_rate_from: type: string format: date bnblord_commission_rate: type: number format: double maximum: 1.0 minimum: 0.0 nullable: true title: Commission rate commission_calculation: allOf: - $ref: '#/components/schemas/CommissionCalculationEnum' description: |- Choose whether to calculate Property Manager or Owner commission. * `PROPERTY_MANAGER` - Property Manager commission * `OWNER` - Owner commission commission_formula: type: string contract_duration: type: integer nullable: true contract: type: string format: uri nullable: true minimum_availability: type: integer nullable: true maximum_blocked_nights: type: integer nullable: true reservations_from: type: string format: date nullable: true access_utilities: type: string nullable: true maxLength: 250 default_agent_cleaning: type: integer nullable: true default_agent_checkin: type: integer nullable: true default_agent_checkout: type: integer nullable: true default_agent_extra: type: integer nullable: true indication_welcome: type: string nullable: true permanent_check_in_external_comment: type: string nullable: true permanent_check_in_internal_comment: type: string nullable: true retour_proprietaire_texte: type: string nullable: true cleaning_duration: type: integer nullable: true permanent_cleaning_external_comment: type: string nullable: true permanent_cleaning_internal_comment: type: string nullable: true linen_delivery_information: type: string nullable: true has_checkout: type: boolean nullable: true permanent_extra_external_comment: type: string nullable: true permanent_extra_internal_comment: type: string nullable: true is_maintenance_allowed: type: boolean nullable: true midterm_mandatory_checkin: type: boolean nullable: true midterm_mandatory_checkout: type: boolean nullable: true allow_vouchers: type: boolean title: Allow discount vouchers description: Allow discount vouchers on this property extra_key: type: boolean title: Extra Key for guest description: Tick if there is an extra keyset for guests which remains in the property at all times. neighbourhood: type: integer nullable: true hellosign_contract: type: integer nullable: true title: Dropbox Sign contract hellosign_template_id: type: string nullable: true title: Template ID description: To be filled only if the contract is not the default contract used at office level maxLength: 250 custom_contract: type: boolean title: Custom Contract for property description: Do you need a custom contract for this property? security_deposit_charging_rule: $ref: '#/components/schemas/SecurityDepositChargingRuleEnum' security_deposit_charging_method: $ref: '#/components/schemas/SecurityDepositChargingMethodEnum' is_nuki_belongs_pm: type: boolean title: Nuki lock belongs to property manager platforms_that_cover_the_damage_deposit: type: array items: type: integer title: Platforms that cover the Damage Deposit description: We do not create security deposit for bookings from these platforms. We create security deposits for all bookings from other platforms. integrated_lock_belongs_to_pm: type: boolean title: Integrated lock belongs to property manager city_tax_auto: type: boolean title: City tax paid to owner description: If ticked, the city tax will be paid to the owner for each reservation, otherwise it will be paid to the property manager. city_tax_hall_login: type: string maxLength: 250 city_tax_hall_password: type: string maxLength: 250 license_number_not_required: type: boolean title: Licence number is not required for this property special_event: type: string nullable: true host_is_exempted: type: boolean nullable: true title: Owner is exempted description: Local authorities may grant exemptions under certain conditions. This exemption is not synchronised with the channel manager. If a full exemption is granted, please enter "0" as the maximum number of short-term nights per year. If a partial exemption is granted, indicate the approved number of days in this field. city_tax_rules: type: array items: type: integer surface: type: integer created_at: type: string format: date-time readOnly: true bedrooms: type: array items: type: integer readOnly: true description: Ids of the subrooms that count as bedrooms for this property. bathrooms: type: array items: type: integer readOnly: true description: Ids of the subrooms that count as bathrooms for this property. images: type: array items: $ref: '#/components/schemas/RentalPhoto' readOnly: true currency_value: allOf: - $ref: '#/components/schemas/CurrencyValueEnum' readOnly: true street: type: string closest_tube_station: type: string building_code_1: type: string building_code_2: type: string floor: type: integer intercom: type: string nullable: true description: Is there an intercom ? Display intercom name or indication lift_code: type: string nullable: true maxLength: 20 self_checkin: $ref: '#/components/schemas/SelfCheckinEnum' self_checkin_key_location: type: string format: uri nullable: true extra_guest_information_en: type: string nullable: true title: Extra information for guest (English) description: Please add in English any extra information you want to advise the guest about. Kindly note that this will be added into guest templates. extra_guest_information_local: type: string nullable: true title: Extra information for guest (local language) description: Please add in the local language any extra information you want to advise the guest about. Kindly note that this will be added into guest templates. extra_information_internal: type: string nullable: true house_manual: type: string format: uri nullable: true title: Property guide description: This manual will be displayed to internal staff and agents upon check-in for better understanding of the property and equipments manual youtube_instructions: type: string nullable: true house_rules_en: type: string nullable: true title: Same as house rules in English house_rules_local: type: string extra_bedding_location_en: type: string readOnly: true extra_bedding_location_local: type: string readOnly: true listings: type: array items: $ref: '#/components/schemas/RentalListing' readOnly: true listing_photos: type: array items: $ref: '#/components/schemas/RentalPhoto' readOnly: true min_arrival: type: string description: This field is deprecated and will be removed in a near future. Use min_check_in_time instead. max_arrival: type: string description: This field is deprecated and will be removed in a near future. Use max_check_in_time instead. max_checkout: type: string description: This field is deprecated and will be removed in a near future. Use max_check_out_time instead. cleaning_equipment_location: type: string readOnly: true specific_cleaning_instructions: type: string hubspot_deal_id: type: string pattern: \d+ maxLength: 250 hubspot_deal_value: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true online_management: type: boolean description: This property is managed directly by the owner and not by the property manager (Online Offer/Online Management) premium_class: allOf: - $ref: '#/components/schemas/PremiumClassEnum' title: Class parking_instructions_en: type: string parking_instructions_local: type: string private_parking: type: boolean parking_badge: type: boolean title: Is there a parking badge ? access_badge: type: boolean building_key: type: boolean mailbox_instructions: type: string welcome_basket_description_en: type: string nullable: true title: Welcome basket description (English) welcome_basket_description_local: type: string total_floors: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true damage_already_reported: type: string nullable: true description: Fill this field if there is already damage in the property prior to taking over the management average_rating: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ average_rating_shareable: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ agent_cleaning_packages: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description: Not relevant to all missions, only used to compute agent earnings under some specific circumstances. booking_deposit: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Reservation deposit description: Guest security deposit cancellation_policy_category: allOf: - $ref: '#/components/schemas/CancellationPolicyCategoryEnum' description: |- Cancellation policy * `flexible` - Flexible * `moderate` - Moderate * `strict` - Strict * `firm` - Firm min_check_in_time: type: integer maximum: 23 minimum: 0 nullable: true title: Minimum arrival time max_check_in_time: type: integer maximum: 24 minimum: 0 nullable: true title: Maximum arrival time description: Default time from platform min_check_out_time: type: integer nullable: true max_check_out_time: type: integer instant_booking_choices: $ref: '#/components/schemas/InstantBookingChoicesEnum' guest_control: $ref: '#/components/schemas/GuestControl' booking_lead_time_in_hours: type: integer turnover_days: $ref: '#/components/schemas/TurnoverDaysEnum' tags: type: array items: type: integer description: List of tag IDs to assign to the rental. Replaces the current set. ical: type: string readOnly: true description: Owner iCal feed URL for the property's calendar. hotel_name: type: string nullable: true room_type_name: type: string nullable: true french_hotel_nature_category: nullable: true oneOf: - $ref: '#/components/schemas/FrenchHotelNatureCategoryEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' monthly_long_term_rate: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Monthly long-term rate (net value for owner) mid_term_cleaning_duration: type: integer nullable: true description: Mid-term cleaning duration mid_term_security_deposit: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Mid-term security deposit amount airbnb_account: type: integer nullable: true signed_by: type: integer nullable: true has_outbound_deal: type: boolean outbound_deal_source: type: string nullable: true account_manager: type: integer writeOnly: true nullable: true baby_policy: type: string nullable: true circuit_breaker_location: type: string nullable: true water_cut_off_tap_location: type: string nullable: true toilet_pump: type: boolean writeOnly: true nullable: true mid_term_default_checkin_agent: type: integer nullable: true mid_term_default_cleaning_agent: type: integer nullable: true mid_term_default_checkout_agent: type: integer nullable: true mid_term_default_extra_agent: type: integer nullable: true mid_term_house_instructions: type: string format: uri nullable: true mid_term_management_instructions: type: string nullable: true mid_term_pre_approval_instructions: type: string nullable: true mid_term_mailbox_instructions: type: string nullable: true property_access_self_checkin: type: string nullable: true self_check_in_receptions: type: array items: type: integer self_check_in_key_deposit_local: type: string nullable: true self_check_in_key_deposit_en: type: string nullable: true allow_regular_check_in_at_extra_cost: type: boolean nullable: true onboarding_assignees: type: array items: type: integer listing_expectations: type: object additionalProperties: {} writeOnly: true existing_airbnb_account_credentials: type: string nullable: true key_box_available: type: boolean nullable: true bills_and_services_up_to_date: type: boolean nullable: true air_conditioning_supplier_details: type: string nullable: true maxLength: 250 gas_supplier_details: type: string nullable: true maxLength: 250 du_etisalat_account_number: type: string nullable: true maxLength: 50 dewa_account_number: type: string nullable: true maxLength: 50 building_legal_status: nullable: true oneOf: - $ref: '#/components/schemas/BuildingLegalStatusEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' cadastral_reference: type: string nullable: true padlock_possible: type: boolean nullable: true smart_locks: type: array items: $ref: '#/components/schemas/RentalSmartLock' readOnly: true check_in_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true check_out_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true cleaning_fee_invoiced_to: $ref: '#/components/schemas/CleaningFeeInvoicedToEnum' is_damage_risk: type: boolean is_party_risk: type: boolean no_laundry_with_delivery_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true no_laundry_with_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_with_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_with_delivery_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_no_cleaning_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_no_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true no_laundry_no_cleaning_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true no_laundry_no_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true hide_airbnb_pre_approvals: type: boolean pre_approval_instructions: type: string nullable: true mailbox_instructions_bo: type: string nullable: true enable_automatic_host_to_guest_reviews: type: boolean allow_booking_requests_past_minimum_advance: type: boolean display_exact_location_to_guest: type: boolean checkout_option_types: $ref: '#/components/schemas/RentalCheckoutOptionTypes' invoicing_details: $ref: '#/components/schemas/RentalInvoiceDetails' custom_fields: type: object additionalProperties: {} readOnly: true description: Custom field values set on this rental, keyed by field key. Only returned on detail views. PatchedRentalAgreementSignature: type: object description: |- Scopes the writable ``reservation`` field to the caller's rentals. Requires ``user_rentals`` in the serializer context. An unowned or non-existent reservation pk then fails ``reservation`` field validation identically (before any auto-generated ``UniqueValidator`` runs), so the existence of other tenants' reservations -- and whether they already have a related record -- cannot be enumerated from the response. properties: id: type: integer readOnly: true reservation: type: integer pdf_file: type: string format: uri url: type: string nullable: true readOnly: true guest_name: type: string default: '' maxLength: 255 guest_email: type: string default: '' maxLength: 255 guest_phone: type: string maxLength: 50 language: type: string maxLength: 10 created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true PatchedRentalPlatformSettings: type: object properties: id: type: integer readOnly: true rental: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true platform: type: integer readOnly: true platform_name: type: string readOnly: true markup: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ PatchedRentalTag: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 50 color: allOf: - $ref: '#/components/schemas/ColorEnum' default: gray description: |- Tag color. Defaults to `gray` if omitted. Valid choices: orange, red, pink, violet, blue, green, gray. * `orange` - Orange * `red` - Red * `pink` - Pink * `violet` - Violet * `blue` - Blue * `green` - Green * `gray` - Gray PatchedRentalUpsellingConfiguration: type: object properties: managed_upselling_configuration: type: integer nullable: true description: ID of the upselling configuration to assign to the property. Must be one of the configurations connected to the property's office. Pass null to clear the assignment. PatchedReservationArrivalTimeUpdate: type: object description: Set the expected guest arrival time, and nothing else. properties: arrival_time: type: string format: time description: New expected guest arrival time on the check-in date, in the property's local time (e.g. 15:00:00). PatchedReservationCreate: type: object properties: guest_preferred_language: type: string nullable: true currency: oneOf: - $ref: '#/components/schemas/CurrencyD53Enum' - $ref: '#/components/schemas/BlankEnum' payment_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: 'Deprecated: any submitted value is ignored. The payment fee is computed from the platform/property-level rate configured in RentalReady.' reservation_type: allOf: - $ref: '#/components/schemas/ReservationTypeEnum' default: CLASSIQUE check_in_internal_comment: type: string description: Visible to staff only platform_reservation_id: type: string nullable: true maxLength: 50 id: type: integer readOnly: true rental_id: type: string description: Id of the property (rental) the reservation is for. booked_at: type: string readOnly: true description: Timestamp when the booking was originally placed on the source platform (ISO 8601, e.g. 2026-07-04T09:00:00Z); falls back to when the reservation was first created in the system. reservation_platform_id: type: integer description: Id of the reservation platform (the booking channel) the reservation belongs to. checkin_date: type: string format: date description: Check-in date, the first night of the stay (YYYY-MM-DD). checkout_date: type: string format: date description: Check-out date, the day the guest leaves (YYYY-MM-DD); falls after the check-in date. rental_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ invoiced_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ guest_first_name: type: string maxLength: 90 guest_last_name: type: string maxLength: 150 guest_email: type: string format: email nullable: true maxLength: 254 guest_phone_number: type: string guest_personal_email: type: string arrival_time: type: string format: time description: Expected guest arrival time on the check-in date (e.g. 15:00:00). departure_time: type: string format: time description: Expected guest departure time on the check-out date (e.g. 11:00:00). number_of_adults: type: integer description: Number of adults staying on the reservation. number_of_children: type: integer description: Number of children staying on the reservation. number_of_infants: type: integer description: Number of infants staying on the reservation (at most 5). number_of_pets: type: integer description: Number of pets on the reservation. city_tax: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ status: $ref: '#/components/schemas/Status3eaEnum' is_stay_relocation: type: boolean nullable: true title: Is this a stay relocation? is_stay_extension: type: boolean nullable: true title: Is this a stay extension? blocked_reason: nullable: true oneOf: - $ref: '#/components/schemas/BlockedReasonEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' blocked_notes: type: string nullable: true internal_comment: type: string description: Visible to staff only return_cleaning: nullable: true title: Owner return cleaning oneOf: - $ref: '#/components/schemas/ReturnCleaningEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' departure_cleaning: nullable: true title: Owner departure cleaning oneOf: - $ref: '#/components/schemas/DepartureCleaningEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' platform_payment_fees: type: string readOnly: true passport_number: type: string nullable: true maxLength: 50 guest_invoice: $ref: '#/components/schemas/GuestInvoice' guidebook_url: type: string format: uri nullable: true maxLength: 200 user: type: string readOnly: true PatchedSetConversationFlag: type: object description: |- Write serializer for the ``set_flag`` action: one field, no silent no-op. Bound to the conversation instance (like the incident status-change serializers): ``update`` delegates to ``SetConversationFlagService``, so this path produces exactly the mailbox's side effects -- the conversation event and the note on every ticket raised from the conversation. ``flag_id`` is REQUIRED and nullable, and the two are not the same thing: ``null`` removes the flag, while omitting the field is a 400. A missing field must never read as "leave it alone" on a single-field write -- an agent that meant to clear a flag and dropped the key would otherwise get a 200 back for a call that changed nothing. The queryset is unscoped, like the ``flag_id`` filter and the ``conversation_flags`` resource: ``ConversationFlag`` is global reference data, so narrowing it per tenant would only 400 a valid id. properties: flag_id: type: integer nullable: true description: Id of the triage flag to put on the conversation, or null to remove the flag. List the ids with the conversation_flags resource. PatchedSmartScheduler: type: object properties: id: type: integer readOnly: true rental: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value mission_template: type: integer schedule: type: integer default_agent: type: integer nullable: true initial_run: type: string format: date-time is_active: type: boolean title: Is active? PatchedSubroom: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: Id of the property (rental) this room belongs to. subroom_type: type: string description: Room type, given by its name (e.g. BEDROOM, BATHROOM). Use the /api/v3/subroom_types/ endpoint to list available values. position: type: integer readOnly: true description: Position of the room within its property, assigned automatically in creation order. privacy: allOf: - $ref: '#/components/schemas/PrivacyEnum' default: PRIVATE description: |- Privacy level of the room for the guest. Defaults to PRIVATE. * `PRIVATE` - Private * `SHARED` - Shared * `ENSUITE` - Ensuite location: nullable: true description: |- Location of the room relative to the space it serves, such as a bathroom relative to its bedroom. Optional. * `ENSUITE` - Ensuite * `NEXT_DOOR` - Next door * `DOWN_THE_HALL` - Down the hall * `OPPOSITE_THE_ROOM` - Opposite to the room * `IN_THE_HALLWAY` - In the hallway * `OTHER` - Other * `INSIDE_THE_UNIT` - Inside the unit oneOf: - $ref: '#/components/schemas/LocationEnum' - $ref: '#/components/schemas/NullEnum' window_coverage: nullable: true description: |- Type of window covering in the room. Optional. * `SHUTTER` - Shutter * `ESHUTTER` - Electronic Shutter * `CURTAIN` - Curtain * `STORE` - Store * `NOTHING` - No Coverage oneOf: - $ref: '#/components/schemas/SubroomWindowCoverageEnum' - $ref: '#/components/schemas/NullEnum' beds: type: array items: $ref: '#/components/schemas/Bed' description: Beds in this room. PatchedUnblockRentalCalendar: type: object properties: start_date: type: string format: date-time end_date: type: string format: date-time PatchedUpdateDescription: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: Id of the property (rental) the description belongs to. headline: type: string nullable: true description: Short listing headline shown as the property's title on booking platforms. Single line, up to 75 characters. maxLength: 75 summary: type: string nullable: true description: Brief overview of the property, shown near the top of the listing. Up to 500 characters. maxLength: 500 space: type: string nullable: true description: 'Description of the space itself: the layout, rooms and what guests will find inside the property.' access: type: string nullable: true description: Description of how guests access the property and which areas they are free to use. interaction: type: string nullable: true description: Description of the level of contact and interaction guests can expect during their stay. neighborhood: type: string nullable: true title: Neighbourhood description: Description of the surrounding neighbourhood, such as nearby attractions, amenities and the character of the area. transit: type: string nullable: true description: Description of how to get around and reach the property, such as public transport and parking. notes: type: string nullable: true description: Any other useful details about the property not covered by the other sections. PatchedUpdateIcalSync: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true rental_name: type: string readOnly: true platform_id: type: integer readOnly: true platform_name: type: string readOnly: true ical_url: type: string format: uri title: ICal Import URL description: The URL to fetch the iCal calendar from maxLength: 200 import_summary_as_guest_name: type: boolean description: If enabled, the event summary will be used as guest name in blocked notes is_active: type: boolean title: Active description: Only active syncs will be processed last_sync_at: type: string format: date-time readOnly: true nullable: true title: Last sync time (UTC) description: Timestamp of the last successful sync last_sync_attempt_at: type: string format: date-time readOnly: true nullable: true title: Last sync attempt time (UTC) description: Timestamp of the last sync attempt, regardless of outcome last_sync_error: type: string readOnly: true nullable: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true PatchedUpdateMissionEndTime: type: object description: |- Base for the update_start_time / update_end_time actions. Subclasses declare their own datetime field and move it onto the mission in ``_apply_new_time``; the audit comment and the write are shared. Both pin ``default_timezone`` to UTC so the parsed value carries a fixed offset: ``_apply_new_time`` adds the mission duration to it, and adding to a zone-aware datetime shifts the wall clock without renormalising, so a dynamic zone would drift across a DST transition. properties: edit_comment: type: string description: Reason for the change, recorded on the mission. end: type: string format: date-time description: New mission end date and time. The UTC offset is required, e.g. 2026-07-04T11:00:00+00:00 or 2026-07-04T13:00:00+02:00. PatchedUpdateMissionStartTime: type: object description: |- Base for the update_start_time / update_end_time actions. Subclasses declare their own datetime field and move it onto the mission in ``_apply_new_time``; the audit comment and the write are shared. Both pin ``default_timezone`` to UTC so the parsed value carries a fixed offset: ``_apply_new_time`` adds the mission duration to it, and adding to a zone-aware datetime shifts the wall clock without renormalising, so a dynamic zone would drift across a DST transition. properties: edit_comment: type: string description: Reason for the change, recorded on the mission. start: type: string format: date-time description: New mission start date and time. The UTC offset is required, e.g. 2026-07-04T09:00:00+00:00 or 2026-07-04T11:00:00+02:00. PatchedUpdateMultiUnit: type: object description: |- Partially update a parent/child multi-unit. Every field is optional, but ``main_unit`` and ``rentals`` must be supplied together (or both omitted). When they are supplied, the multi-unit's office and address are refreshed from the new main unit; newly added properties have their calendars blocked and removed ones unblocked for future reservations (see ``save_rentals_and_block``). properties: name: type: string description: New name for the multi-unit. main_unit: type: string title: Contract number description: Id of the property (rental) to set as the main (parent) unit. Must be provided together with rentals; the multi-unit's office and address are refreshed from it. rentals: type: array items: type: string title: Contract number description: Ids of the properties (rentals) to group under the multi-unit, including the main unit and at least one sub-unit. Must be provided together with main_unit. A property not already in this multi-unit must not belong to another one and must share the main unit's address or sit within the configured distance of it. Newly added properties have their future reservations' calendars blocked and removed ones unblocked. PatchedUpdatePhoto: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value category: nullable: true oneOf: - $ref: '#/components/schemas/CategoryC86Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' kind: type: string description: "Valid choices: \n- balcony_terrace\n- bathroom\n- beach\n\ - bedroom\n- building\n- dining area\n- Facade_Entrance\n- floor_plan\n\ - garden\n- inside\n- kitchen\n- livingroom\n- neighbourhood\n- outside\n\ - parking\n- patio\n- safety\n- surroundings\n- swimming_pool\n- view" kind_verbose: type: string readOnly: true position: type: integer maximum: 2147483647 minimum: 1 nullable: true subroom_id: type: integer nullable: true description: Id of the room of the property this photo shows, e.g. a bedroom or a bathroom. Use the /api/v3/subrooms/ endpoint to list the rooms of a property. The room must belong to the same property as the photo. Send null to unassign the photo from its room. Moving a photo to another property clears the room assignment. subroom_type: type: string nullable: true readOnly: true description: Room type of the assigned room, e.g. "BEDROOM", "BATHROOM". Read-only, null when the photo is not assigned to a room. subroom_position: type: integer nullable: true readOnly: true description: Position of the assigned room within its property. Read-only, null when the photo is not assigned to a room. PaymentAcceptanceTransaction: type: object properties: id: type: integer readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true currency: allOf: - $ref: '#/components/schemas/CurrencyD53Enum' readOnly: true amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ amount_refunded: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ readOnly: true is_splittable: type: boolean readOnly: true description: If false, the transaction cannot be splitted. payment_acceptance: type: integer readOnly: true reservation: type: integer voucher: type: integer readOnly: true nullable: true payment_collection_method: $ref: '#/components/schemas/PaymentCollectionMethodEnum' stripe_payment_reference: type: string nullable: true description: Stripe payment intent ID (pi_xxx). Required on write when payment_collection_method is STRIPE; returned on read for Stripe payments, null otherwise. note: type: string nullable: true payment_date: type: string format: date required: - amount - amount_refunded - created - currency - id - is_splittable - modified - payment_acceptance - payment_collection_method - reservation - voucher PaymentCollectionMethodEnum: enum: - CASH - BANK_TRANSFER - CHEQUE - STRIPE type: string description: |- * `CASH` - Cash * `BANK_TRANSFER` - Bank Transfer * `CHEQUE` - Cheque * `STRIPE` - Stripe PaymentLink: type: object properties: id: type: integer readOnly: true rental_id: type: integer readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true uuid: type: string format: uuid readOnly: true short_uuid: type: string readOnly: true amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ amount_received: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true amount_refunded: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true currency: $ref: '#/components/schemas/PaymentLinkCurrencyEnum' voided_at: type: string format: date-time nullable: true title: Voided date voided_reason: type: string nullable: true title: Reason for voiding the payment link category: $ref: '#/components/schemas/PaymentLinkCategoryEnum' pre_authorization: type: boolean status: $ref: '#/components/schemas/Status1a4Enum' internal_comment: type: string description: Visible by staff only external_comment: type: string description: Visible by staff and guest paid_at: type: string format: date-time nullable: true title: Payment date last_renewal_failed_at: type: string format: date-time nullable: true last_renewal_failure_code: type: string nullable: true maxLength: 64 last_renewal_failure_message: type: string nullable: true reservation: type: integer payment_intent: type: integer nullable: true checkout_payment: type: integer nullable: true created_by: type: integer nullable: true voided_by: type: integer nullable: true required: - amount - category - created - currency - id - modified - rental_id - reservation - short_uuid - uuid PaymentLinkCategoryEnum: enum: - EXTRA_SERVICES - DAMAGES - RESERVATION_PAYMENT - CITY_TAX - SECURITY_DEPOSIT - OTHER type: string description: |- * `EXTRA_SERVICES` - Extra services * `DAMAGES` - Damages * `RESERVATION_PAYMENT` - Reservation payment * `CITY_TAX` - City tax * `SECURITY_DEPOSIT` - Security deposit * `OTHER` - Other PaymentLinkCurrencyEnum: enum: - EUR - GBP - AED - HKD - CHF - SAR type: string description: |- * `EUR` - EUR * `GBP` - GBP * `AED` - AED * `HKD` - HKD * `CHF` - CHF * `SAR` - SAR PaymentLinkSecurityDeposit: type: object properties: status: allOf: - $ref: '#/components/schemas/Status1a4Enum' description: |- Payment-link security-deposit status. Possible values: `NOT_PAID` — not yet paid; `AUTHORIZED` — pre-authorization hold placed; `PAID` — paid; `FAILED` — payment failed; `VOIDED` — payment voided; `PROCESSED` — pre-authorization released/processed. * `AUTHORIZED` - Authorized * `NOT_PAID` - Not paid * `PAID` - Paid * `FAILED` - Failed * `VOIDED` - Voided * `PROCESSED` - Processed amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ pre_authorization: type: boolean required: - amount PaymentStatusEnum: enum: - NOT_PAID - PAID type: string description: |- * `NOT_PAID` - Not paid * `PAID` - Paid PayoutAdjustment: type: object properties: id: type: integer readOnly: true type: $ref: '#/components/schemas/PayoutAdjustmentTypeEnum' category: $ref: '#/components/schemas/PayoutAdjustmentCategoryEnum' price_of_purchase: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ service_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ price_of_purchase_note: type: string maxLength: 500 internal_note: type: string maxLength: 500 service_fee_note: type: string maxLength: 500 author: type: integer nullable: true supplier_name: type: string nullable: true maxLength: 250 send_invoice_to_finance_team: type: boolean vat: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ total_gross: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ owner: type: integer property: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value mission: type: integer nullable: true reservation: type: integer nullable: true status: $ref: '#/components/schemas/PayoutAdjustmentStatusEnum' receipt_file: type: string format: uri nullable: true internal_category: nullable: true oneOf: - $ref: '#/components/schemas/InternalCategoryEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' recurrent_payout_adjustment: type: integer nullable: true reviewed: type: boolean assignee: type: integer nullable: true original: type: integer nullable: true description: When credit note PA is created we assign original PA to it. activation_date: type: string format: date nullable: true invoice_to_host_name: type: boolean title: Invoice under owner's name? description: (if yes, please submit invoice) void_reason: type: string maxLength: 128 credit_note_reason: type: string maxLength: 128 voided_by: type: integer nullable: true voided_at: type: string format: date-time nullable: true review_required: type: boolean currency: allOf: - $ref: '#/components/schemas/CurrencyD53Enum' readOnly: true invoices: type: array items: $ref: '#/components/schemas/PayoutAdjustmentAccountingInvoice' readOnly: true required: - currency - id - invoices - owner - property PayoutAdjustmentAccountingInvoice: type: object properties: serie: type: string nullable: true maxLength: 100 emmission_date: type: string format: date nullable: true category: type: integer description: type: string nullable: true maxLength: 200 pdf: type: string format: uri nullable: true required: - category PayoutAdjustmentCategoryEnum: enum: - cleaning - maintenance - improvement - quality_check - issue_resolution - onboarding_fee - utility_bill - unit_permits - reservation_cancellation - advance_payment_for_decoration_project - decoration_project - commission_offer - fin_ops - pest_control - deep_cleaning - guest_request - tpl_insurance - service_charge - local_tax - termination_fee - others type: string description: |- * `cleaning` - Cleaning * `maintenance` - Maintenance * `improvement` - Improvement/Furniture * `quality_check` - Quality Check * `issue_resolution` - Resolution adjustment * `onboarding_fee` - Onboarding fee * `utility_bill` - Utility bill * `unit_permits` - Unit permits * `reservation_cancellation` - Reservation cancellation * `advance_payment_for_decoration_project` - Advance Payment for Decoration Project/Equipment * `decoration_project` - Decoration Project/Equipment * `commission_offer` - Commission Offer * `fin_ops` - FinOps * `pest_control` - Pest control * `deep_cleaning` - Deep cleaning * `guest_request` - Guest Request * `tpl_insurance` - TPL Insurance * `service_charge` - Service Charge * `local_tax` - Local Tax * `termination_fee` - Termination Fee * `others` - Others PayoutAdjustmentStatusEnum: enum: - inactive - paid - not_paid type: string description: |- * `inactive` - Inactive * `paid` - Paid * `not_paid` - Not Paid PayoutAdjustmentTypeEnum: enum: - CHARGE - REFUND type: string description: |- * `CHARGE` - Charge * `REFUND` - Refund Photo: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value category: nullable: true oneOf: - $ref: '#/components/schemas/CategoryC86Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' kind: type: string description: "Valid choices: \n- balcony_terrace\n- bathroom\n- beach\n\ - bedroom\n- building\n- dining area\n- Facade_Entrance\n- floor_plan\n\ - garden\n- inside\n- kitchen\n- livingroom\n- neighbourhood\n- outside\n\ - parking\n- patio\n- safety\n- surroundings\n- swimming_pool\n- view" kind_verbose: type: string readOnly: true position: type: integer maximum: 2147483647 minimum: 1 nullable: true subroom_id: type: integer nullable: true description: Id of the room of the property this photo shows, e.g. a bedroom or a bathroom. Use the /api/v3/subrooms/ endpoint to list the rooms of a property. The room must belong to the same property as the photo. Send null to unassign the photo from its room. Moving a photo to another property clears the room assignment. subroom_type: type: string nullable: true readOnly: true description: Room type of the assigned room, e.g. "BEDROOM", "BATHROOM". Read-only, null when the photo is not assigned to a room. subroom_position: type: integer nullable: true readOnly: true description: Position of the assigned room within its property. Read-only, null when the photo is not assigned to a room. picture: type: string format: uri required: - id - kind_verbose - picture - rental_id - subroom_position - subroom_type PortugalRegisteredGuestData: type: object properties: pk: type: integer readOnly: true title: ID last_name: type: string nullable: true pattern: ^([a-zA-Z\u00e7\u00c7\u00e3\u00c3\u00e1\u00c1\u00e0\u00c0\u00e9\u00c9\u00ea\u00ca\u00ed\u00cd\u00f5\u00d5\u00f4\u00d4\u00f3\u00d3\u00fa\u00da' ]|-)+$ maxLength: 40 first_name: type: string nullable: true pattern: ^([a-zA-Z\u00e7\u00c7\u00e3\u00c3\u00e1\u00c1\u00e0\u00c0\u00e9\u00c9\u00ea\u00ca\u00ed\u00cd\u00f5\u00d5\u00f4\u00d4\u00f3\u00d3\u00fa\u00da' ]|-)+$ maxLength: 40 date_of_birth: type: string format: date nullable: true place_of_birth: type: string nullable: true maxLength: 30 nationality: type: integer nullable: true nationality_code: type: string default: '' residence_country: type: integer nullable: true title: Country of residence residence_country_code: type: string default: '' residence_place: type: string nullable: true title: Place of residence maxLength: 30 id_type: nullable: true title: Travel document type oneOf: - $ref: '#/components/schemas/IdTypeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' id_country: type: integer nullable: true title: Country of issuance country_code: type: string default: '' id_number: type: string nullable: true title: Travel document number pattern: ^[a-zA-Z0-9]+$ maxLength: 16 check_in_date: type: string format: date nullable: true check_out_date: type: string format: date nullable: true is_primary_guest: type: boolean readOnly: true description: Whether this guest is the primary (first) registered guest. required: - is_primary_guest - pk PremiumClassEnum: enum: - DIAMOND - GOLD - SILVER - BRONZE - CLASSIC type: string description: |- * `DIAMOND` - Diamond * `GOLD` - Gold * `SILVER` - Silver * `BRONZE` - Bronze * `CLASSIC` - Classic PricingConfiguration: type: object properties: rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value pricing_calendar: type: integer readOnly: true min_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Minimum price minimum_stay: type: integer maximum: 2147483647 minimum: 0 description: Define minimum stay on platforms (including Airbnb if you are using official API). If you choose 0, will default to 1 night for next 15 days then 2 nights after that. Always choose 2 for normal properties. max_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true title: Maximum price base_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Price of a night price_per_extra_person: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ mid_term_factor: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true title: Factor applied to the price for mid-term min_price_profitability: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ readOnly: true nullable: true title: Profitability floor adjustable_min_price: type: boolean title: Possibility to change minimum price max_night_stay: type: integer maximum: 2147483647 minimum: 0 nullable: true title: Maximum number of nights booking_interval: type: integer maximum: 730 minimum: 30 description: Number of days priced in the future. Select a value between 30 and 730, default being 365. Airbnb and Booking.com allow up to 540 days. include_time_factor: type: boolean title: Time factor description: Reduce the price for last-minute reservations and increase the price of reservations booked in advance include_seasonality_factor: type: boolean title: Events factor description: Optimize the price for various events (new year, ...) include_shortstay_factor: type: boolean title: Short availability factor description: Reduce the price between two close bookings include_geo_event_factor: type: boolean title: Local event factor description: Optimize the price according on local events (concert, ...) include_new_flat_factor: type: boolean title: New rental factor description: Reduce the price for the first bookings include_day_of_the_week_factor: type: boolean title: Day of the week factor description: Optimize the price depending on the day of the week include_one_night_gap_optimization: type: boolean title: 'Minimum stay: Short availability factor' description: Reduces the minimum number of nights depending on the number of days available between bookings, the 'minimum stay' set on the property remaining the absolute minimum value. include_monthly_seasonality_factor: type: boolean title: Seasonality factor description: Seasonality per month. include_daily_difference: type: boolean title: Daily difference description: Add 1 or 0 to the price, day by day, to trigger a change in price on the platforms and improve the visibility of the listing. include_min_stay_compression: type: boolean title: Minimum stay compression description: If the guest want to book a duration lower than the minstay, he will have to pay for a minstay duration. weekend_single_night_forbidden: type: boolean title: Forbid one night minimum stay for the weekend description: Forbid one night minimum stay for the weekend include_variable_min_stay: type: boolean title: Allow to set up periods of minstay description: Activates the possibility of having different MinStays over a specific period. If the booking is taken in a long time, it is interesting to have a higher MinStay than for last minute bookings. This factor should ideally be coupled with 'Minimum Night Number Factor optimized' for optimal results. include_occupancy_rate: type: boolean title: Occupancy rate factor description: Optimize the pricing based on occupancy rate include_automatic_midterm_pricing: type: boolean title: Automatic mid-term pricing description: Automatically create the mid-term ranges and publish them to enable mid-term bookings owner_instruction: type: string nullable: true description: |2- Fill this field if the owner has any specific instruction the pricing strategy.Describe the pricing stragegy: Imperative: give the precise objectives, give REALISTIC minimum prices for margin of maneuver, are they strict ? different high season/low season, etc. currency: nullable: true oneOf: - $ref: '#/components/schemas/CurrencyD53Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' checkout_date_discount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Discount at checkout yearly_max_days: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true title: Maximum amount days booked as short stay per year short_stay_maximum_days: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true title: Number of days after which the stay is a mid-term stay airbnb_non_refundable_price_factor: type: string format: decimal pattern: ^-?\d{0,2}(?:\.\d{0,1})?$ nullable: true description: Guests can book the non-refundable rate until the listing's cancellation policy kicks in and if the reservation's check-out date is within 60 days. Note that 1.0 = 0%, 0.9 = 10% and 0.1 = 90% discount. Please use it accordingly. user: type: string readOnly: true required: - min_price_profitability - pricing_calendar - rental_id - user PriorityLevelEnum: enum: - LV1_EMERGENCY - LV2_HIGH - LV3_MEDIUM - LV4_LOW type: string description: |- * `LV1_EMERGENCY` - Urgent * `LV2_HIGH` - High * `LV3_MEDIUM` - Mid * `LV4_LOW` - Low PrivacyEnum: enum: - PRIVATE - SHARED - ENSUITE type: string description: |- * `PRIVATE` - Private * `SHARED` - Shared * `ENSUITE` - Ensuite PropertyManager: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 250 required: - id - name PropertyManagerPlatformSettings: type: object properties: id: type: integer readOnly: true property_manager: type: integer readOnly: true property_manager_name: type: string readOnly: true platform: type: integer readOnly: true platform_name: type: string readOnly: true markup: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ required: - id - platform - platform_name - property_manager - property_manager_name PropertyTypeEnum: enum: - PRIMARY - OTHER - SECONDARY - UNKNOWN type: string description: |- * `PRIMARY` - Primary residence * `OTHER` - Non-residential property (commercial/guest-room) * `SECONDARY` - Secondary residence * `UNKNOWN` - Unknown PublishedStatusEnum: enum: - NEW - PENDING - APPROVED type: string description: |- * `NEW` - New * `PENDING` - Pending activation * `APPROVED` - Activated RateRule: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value always_applied: type: boolean start_date: type: string format: date nullable: true end_date: type: string format: date nullable: true percentage: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Make sure to use a - (minus) for discounts, otherwise it will be a price increase. fixed_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Make sure to use a - (minus) for discounts, otherwise it will be a price increase. kind: type: string period_name: type: string nullable: true maxLength: 100 variables: nullable: true is_active: type: boolean required: - id - kind - rental_id Rental: type: object description: Renders custom-field values under `custom_fields`, skipped on list actions. properties: id: type: string readOnly: true name: type: string nullable: true title: Property name description: Use practical name for owners such as street name, do not use abbreviation or contract number. Name is displayed on invoices and owner profile. maxLength: 100 status: allOf: - $ref: '#/components/schemas/Status075Enum' readOnly: true office_name: type: string title: Office name description: 'Should be the name of the property manager + city (example: GUESTREADY-PARIS)' owner_name: type: string city: type: integer city_name: type: string readOnly: true country: type: integer country_name: type: string readOnly: true address: type: string description: 'Name and street number only. Example: 2 rue Volta' postal_code: type: string geoposition: type: string key_strategy: nullable: true description: |- Is used to define how to work with Keys. * `PADLOCK` - Lockbox/Padlock * `KEYNEST` - Keynest * `IGLOOHOME_KEYBOX` - Igloohome KeyBox * `IGLOOHOME_LOCK` - Igloohome Lock * `OFFICE` - Office pick-up * `NUKI_LOCK` - Nuki lock * `SEAM_INTEGRATED_LOCK` - Integrated lock * `KEY_STORAGE` - Key storage * `PERSONAL_CHECK_IN` - Personal check-in * `SMART_LOCK` - Smart lock (not synchronised with RentalReady) * `DUBAI_KEYLESS` - Dubai Keyless * `REMOTELOCK` - RemoteLock * `YACAN_LOCK` - Yacan lock * `MANAGED_SMART_LOCK` - Managed smart lock * `OTHER` - Other oneOf: - $ref: '#/components/schemas/KeyStrategyEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' wifi_name: type: string maxLength: 200 wifi_password: type: string maxLength: 200 checkout_instructions: type: string trash_can_area_local: type: string trash_can_area_en: type: string key_deposit_local: type: string key_deposit_en: type: string key_box_code: type: string nullable: true maxLength: 255 lockbox_code: type: string nullable: true maxLength: 255 self_checkin_instructions_local: type: string self_checkin_instructions_en: type: string property_access_en: type: string property_access_local: type: string owner_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ default: '0.00' platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ default: '0.00' stars: nullable: true minimum: 0 maximum: 5 oneOf: - $ref: '#/components/schemas/StarsEnum' - $ref: '#/components/schemas/NullEnum' host_id: type: integer readOnly: true emergency_contact: type: string nullable: true property_setup: type: string description: "Valid choices: \n- apartment\n- bed-in-dormitory\n- boat\n\ - bungalow\n- cabin\n- castle\n- cave\n- chalet\n- condominium\n- cottage\n\ - dormitory\n- double-room\n- earth-house\n- family-room\n- farmhouse\n\ - holiday-home\n- hotel\n- house\n- hut\n- igloo\n- island\n- lighthouse\n\ - loft\n- plane\n- quad-room\n- recreational-vehicle\n- single-room\n\ - studio\n- suite\n- tent\n- tipi\n- townhouse\n- train\n- treehouse\n\ - triple-room\n- twin-room\n- villa\n- yurt" property_type: $ref: '#/components/schemas/PropertyTypeEnum' building_construction_period: nullable: true oneOf: - $ref: '#/components/schemas/BuildingConstructionPeriodEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' building_construction_year: type: integer maximum: 2999 minimum: 0 nullable: true license_number: type: string nullable: true maxLength: 250 temporary_comment: type: string surface_area: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true description: in m2 published_status: nullable: true oneOf: - $ref: '#/components/schemas/PublishedStatusEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' sleeps: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true sleeps_max: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true classic_rental_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Classic property expected price land_registration_number: type: string nullable: true maxLength: 250 minimum_commission: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Minimum rate fixed_rent: type: boolean description: When true, Property manager receives full payments from reservations. The owner payments should be done manually. fixed_rent_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: This field data will be only used for analytics, it will not affect payment splits. key_sets_total: type: string nullable: true maxLength: 255 keys_observation: type: string nullable: true internal_notes: type: string nullable: true office_id: type: string readOnly: true multi_unit_id: type: integer readOnly: true description: ID of the multi-unit the property is associated to, or null if the property is not part of a multi-unit. multi_unit_role: allOf: - $ref: '#/components/schemas/MultiUnitRoleEnum' readOnly: true description: |- Role of the property within its multi-unit. Null when the property is not part of a multi-unit. * `ROOM_TYPE` - Room type * `INVENTORY` - Inventory * `PARENT` - Parent * `CHILD` - Child igloohome_lock_id: type: string nullable: true maxLength: 100 rental_category: $ref: '#/components/schemas/RentalCategoryEnum' can_receive_mid_term_reservations: type: boolean contract_started_at: type: string format: date-time nullable: true contract_terminated_at: type: string format: date-time nullable: true short_term_commission_rate: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ short_term_commission_rate_from: type: string format: date mid_term_commission_rate: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ mid_term_commission_rate_from: type: string format: date bnblord_commission_rate: type: number format: double maximum: 1.0 minimum: 0.0 nullable: true title: Commission rate commission_calculation: allOf: - $ref: '#/components/schemas/CommissionCalculationEnum' description: |- Choose whether to calculate Property Manager or Owner commission. * `PROPERTY_MANAGER` - Property Manager commission * `OWNER` - Owner commission commission_formula: type: string contract_duration: type: integer nullable: true contract: type: string format: uri nullable: true minimum_availability: type: integer nullable: true maximum_blocked_nights: type: integer nullable: true reservations_from: type: string format: date nullable: true access_utilities: type: string nullable: true maxLength: 250 default_agent_cleaning: type: integer nullable: true default_agent_checkin: type: integer nullable: true default_agent_checkout: type: integer nullable: true default_agent_extra: type: integer nullable: true indication_welcome: type: string nullable: true permanent_check_in_external_comment: type: string nullable: true permanent_check_in_internal_comment: type: string nullable: true retour_proprietaire_texte: type: string nullable: true cleaning_duration: type: integer nullable: true permanent_cleaning_external_comment: type: string nullable: true permanent_cleaning_internal_comment: type: string nullable: true linen_delivery_information: type: string nullable: true has_checkout: type: boolean nullable: true permanent_extra_external_comment: type: string nullable: true permanent_extra_internal_comment: type: string nullable: true is_maintenance_allowed: type: boolean nullable: true midterm_mandatory_checkin: type: boolean nullable: true midterm_mandatory_checkout: type: boolean nullable: true allow_vouchers: type: boolean title: Allow discount vouchers description: Allow discount vouchers on this property extra_key: type: boolean title: Extra Key for guest description: Tick if there is an extra keyset for guests which remains in the property at all times. neighbourhood: type: integer nullable: true hellosign_contract: type: integer nullable: true title: Dropbox Sign contract hellosign_template_id: type: string nullable: true title: Template ID description: To be filled only if the contract is not the default contract used at office level maxLength: 250 custom_contract: type: boolean title: Custom Contract for property description: Do you need a custom contract for this property? security_deposit_charging_rule: $ref: '#/components/schemas/SecurityDepositChargingRuleEnum' security_deposit_charging_method: $ref: '#/components/schemas/SecurityDepositChargingMethodEnum' is_nuki_belongs_pm: type: boolean title: Nuki lock belongs to property manager platforms_that_cover_the_damage_deposit: type: array items: type: integer title: Platforms that cover the Damage Deposit description: We do not create security deposit for bookings from these platforms. We create security deposits for all bookings from other platforms. integrated_lock_belongs_to_pm: type: boolean title: Integrated lock belongs to property manager city_tax_auto: type: boolean title: City tax paid to owner description: If ticked, the city tax will be paid to the owner for each reservation, otherwise it will be paid to the property manager. city_tax_hall_login: type: string maxLength: 250 city_tax_hall_password: type: string maxLength: 250 license_number_not_required: type: boolean title: Licence number is not required for this property special_event: type: string nullable: true host_is_exempted: type: boolean nullable: true title: Owner is exempted description: Local authorities may grant exemptions under certain conditions. This exemption is not synchronised with the channel manager. If a full exemption is granted, please enter "0" as the maximum number of short-term nights per year. If a partial exemption is granted, indicate the approved number of days in this field. city_tax_rules: type: array items: type: integer surface: type: integer created_at: type: string format: date-time readOnly: true bedrooms: type: array items: type: integer readOnly: true description: Ids of the subrooms that count as bedrooms for this property. bathrooms: type: array items: type: integer readOnly: true description: Ids of the subrooms that count as bathrooms for this property. images: type: array items: $ref: '#/components/schemas/RentalPhoto' readOnly: true currency_value: allOf: - $ref: '#/components/schemas/CurrencyValueEnum' readOnly: true street: type: string closest_tube_station: type: string building_code_1: type: string building_code_2: type: string floor: type: integer intercom: type: string nullable: true description: Is there an intercom ? Display intercom name or indication lift_code: type: string nullable: true maxLength: 20 self_checkin: $ref: '#/components/schemas/SelfCheckinEnum' self_checkin_key_location: type: string format: uri nullable: true extra_guest_information_en: type: string nullable: true title: Extra information for guest (English) description: Please add in English any extra information you want to advise the guest about. Kindly note that this will be added into guest templates. extra_guest_information_local: type: string nullable: true title: Extra information for guest (local language) description: Please add in the local language any extra information you want to advise the guest about. Kindly note that this will be added into guest templates. extra_information_internal: type: string nullable: true house_manual: type: string format: uri nullable: true title: Property guide description: This manual will be displayed to internal staff and agents upon check-in for better understanding of the property and equipments manual youtube_instructions: type: string nullable: true house_rules_en: type: string nullable: true title: Same as house rules in English house_rules_local: type: string extra_bedding_location_en: type: string readOnly: true extra_bedding_location_local: type: string readOnly: true listings: type: array items: $ref: '#/components/schemas/RentalListing' readOnly: true listing_photos: type: array items: $ref: '#/components/schemas/RentalPhoto' readOnly: true min_arrival: type: string description: This field is deprecated and will be removed in a near future. Use min_check_in_time instead. max_arrival: type: string description: This field is deprecated and will be removed in a near future. Use max_check_in_time instead. max_checkout: type: string description: This field is deprecated and will be removed in a near future. Use max_check_out_time instead. cleaning_equipment_location: type: string readOnly: true specific_cleaning_instructions: type: string hubspot_deal_id: type: string pattern: \d+ maxLength: 250 hubspot_deal_value: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true online_management: type: boolean description: This property is managed directly by the owner and not by the property manager (Online Offer/Online Management) premium_class: allOf: - $ref: '#/components/schemas/PremiumClassEnum' title: Class parking_instructions_en: type: string parking_instructions_local: type: string private_parking: type: boolean parking_badge: type: boolean title: Is there a parking badge ? access_badge: type: boolean building_key: type: boolean mailbox_instructions: type: string welcome_basket_description_en: type: string nullable: true title: Welcome basket description (English) welcome_basket_description_local: type: string total_floors: type: integer maximum: 2147483647 minimum: -2147483648 nullable: true damage_already_reported: type: string nullable: true description: Fill this field if there is already damage in the property prior to taking over the management average_rating: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ average_rating_shareable: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ agent_cleaning_packages: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ description: Not relevant to all missions, only used to compute agent earnings under some specific circumstances. booking_deposit: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ title: Reservation deposit description: Guest security deposit cancellation_policy_category: allOf: - $ref: '#/components/schemas/CancellationPolicyCategoryEnum' description: |- Cancellation policy * `flexible` - Flexible * `moderate` - Moderate * `strict` - Strict * `firm` - Firm min_check_in_time: type: integer maximum: 23 minimum: 0 nullable: true title: Minimum arrival time max_check_in_time: type: integer maximum: 24 minimum: 0 nullable: true title: Maximum arrival time description: Default time from platform min_check_out_time: type: integer nullable: true max_check_out_time: type: integer instant_booking_choices: $ref: '#/components/schemas/InstantBookingChoicesEnum' guest_control: $ref: '#/components/schemas/GuestControl' booking_lead_time_in_hours: type: integer turnover_days: $ref: '#/components/schemas/TurnoverDaysEnum' tags: type: array items: type: integer description: List of tag IDs to assign to the rental. Replaces the current set. ical: type: string readOnly: true description: Owner iCal feed URL for the property's calendar. hotel_name: type: string nullable: true room_type_name: type: string nullable: true french_hotel_nature_category: nullable: true oneOf: - $ref: '#/components/schemas/FrenchHotelNatureCategoryEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' monthly_long_term_rate: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true description: Monthly long-term rate (net value for owner) mid_term_cleaning_duration: type: integer nullable: true description: Mid-term cleaning duration mid_term_security_deposit: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: Mid-term security deposit amount airbnb_account: type: integer nullable: true signed_by: type: integer nullable: true has_outbound_deal: type: boolean outbound_deal_source: type: string nullable: true account_manager: type: integer writeOnly: true nullable: true baby_policy: type: string nullable: true circuit_breaker_location: type: string nullable: true water_cut_off_tap_location: type: string nullable: true toilet_pump: type: boolean writeOnly: true nullable: true mid_term_default_checkin_agent: type: integer nullable: true mid_term_default_cleaning_agent: type: integer nullable: true mid_term_default_checkout_agent: type: integer nullable: true mid_term_default_extra_agent: type: integer nullable: true mid_term_house_instructions: type: string format: uri nullable: true mid_term_management_instructions: type: string nullable: true mid_term_pre_approval_instructions: type: string nullable: true mid_term_mailbox_instructions: type: string nullable: true property_access_self_checkin: type: string nullable: true self_check_in_receptions: type: array items: type: integer self_check_in_key_deposit_local: type: string nullable: true self_check_in_key_deposit_en: type: string nullable: true allow_regular_check_in_at_extra_cost: type: boolean nullable: true onboarding_assignees: type: array items: type: integer listing_expectations: type: object additionalProperties: {} writeOnly: true existing_airbnb_account_credentials: type: string nullable: true key_box_available: type: boolean nullable: true bills_and_services_up_to_date: type: boolean nullable: true air_conditioning_supplier_details: type: string nullable: true maxLength: 250 gas_supplier_details: type: string nullable: true maxLength: 250 du_etisalat_account_number: type: string nullable: true maxLength: 50 dewa_account_number: type: string nullable: true maxLength: 50 building_legal_status: nullable: true oneOf: - $ref: '#/components/schemas/BuildingLegalStatusEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' cadastral_reference: type: string nullable: true padlock_possible: type: boolean nullable: true smart_locks: type: array items: $ref: '#/components/schemas/RentalSmartLock' readOnly: true check_in_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true check_out_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true cleaning_fee_invoiced_to: $ref: '#/components/schemas/CleaningFeeInvoicedToEnum' is_damage_risk: type: boolean is_party_risk: type: boolean no_laundry_with_delivery_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true no_laundry_with_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_with_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_with_delivery_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_no_cleaning_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true with_laundry_no_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true no_laundry_no_cleaning_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true no_laundry_no_laundry_price: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ nullable: true hide_airbnb_pre_approvals: type: boolean pre_approval_instructions: type: string nullable: true mailbox_instructions_bo: type: string nullable: true enable_automatic_host_to_guest_reviews: type: boolean allow_booking_requests_past_minimum_advance: type: boolean display_exact_location_to_guest: type: boolean checkout_option_types: $ref: '#/components/schemas/RentalCheckoutOptionTypes' invoicing_details: $ref: '#/components/schemas/RentalInvoiceDetails' required: - address - average_rating - average_rating_shareable - bathrooms - bedrooms - booking_lead_time_in_hours - building_code_1 - building_code_2 - city - city_name - cleaning_equipment_location - closest_tube_station - country - country_name - created_at - currency_value - extra_bedding_location_en - extra_bedding_location_local - floor - geoposition - guest_control - host_id - house_rules_local - ical - id - images - listing_photos - listings - mailbox_instructions - max_arrival - max_check_out_time - max_checkout - min_arrival - multi_unit_id - multi_unit_role - office_id - office_name - owner_name - parking_instructions_en - parking_instructions_local - postal_code - property_setup - self_checkin - smart_locks - specific_cleaning_instructions - status - street - surface - temporary_comment - turnover_days - welcome_basket_description_local RentalAccount: type: object properties: uuid: type: string format: uuid readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true account_email: type: string readOnly: true maxLength: 500 reservation_platform_name: type: string readOnly: true maxLength: 250 synchronization_category: $ref: '#/components/schemas/SynchronizationCategoryEnum' url: type: string format: uri nullable: true maxLength: 200 platform_id: type: string nullable: true maxLength: 250 status: $ref: '#/components/schemas/RentalAccountStatusEnum' required: - account_email - rental_id - reservation_platform_name - uuid RentalAccountStatusEnum: enum: - new - listed - unlisted - suspended - deleted - missing_data - failed_to_onboard type: string description: |- * `new` - New * `listed` - Listed * `unlisted` - Unlisted * `suspended` - Suspended * `deleted` - Deleted * `missing_data` - Missing data * `failed_to_onboard` - Failed to onboard RentalAgreementSignature: type: object description: |- Scopes the writable ``reservation`` field to the caller's rentals. Requires ``user_rentals`` in the serializer context. An unowned or non-existent reservation pk then fails ``reservation`` field validation identically (before any auto-generated ``UniqueValidator`` runs), so the existence of other tenants' reservations -- and whether they already have a related record -- cannot be enumerated from the response. properties: id: type: integer readOnly: true reservation: type: integer pdf_file: type: string format: uri url: type: string nullable: true readOnly: true guest_name: type: string default: '' maxLength: 255 guest_email: type: string default: '' maxLength: 255 guest_phone: type: string maxLength: 50 language: type: string maxLength: 10 created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - id - modified - pdf_file - reservation - url RentalCategoryEnum: enum: - SHORT-TERM - MID-TERM - LONG-TERM type: string description: |- * `SHORT-TERM` - Short-term * `MID-TERM` - Mid-term * `LONG-TERM` - Long-term RentalCheckoutOptionTypes: type: object properties: return_keys: type: boolean return_keys_text: type: string nullable: true title: Return keys to a specific place/person on checking out turn_things_off: type: boolean throw_trash: type: boolean lock_up: type: boolean gather_towels: type: boolean gather_towels_text: type: string nullable: true title: Keep the towels in a specified place additional_requests: type: boolean additional_requests_text: type: string nullable: true title: Other requests on/before checking out RentalHistory: type: object properties: date: type: string format: date-time user: type: string nullable: true readOnly: true type: allOf: - $ref: '#/components/schemas/RentalHistoryTypeEnum' readOnly: true description: |- Kind of history change: `+` created, `~` changed, `-` deleted. * `+` - + * `~` - ~ * `-` - - changes: type: array items: $ref: '#/components/schemas/RentalHistoryChange' readOnly: true required: - changes - date - type - user RentalHistoryChange: type: object properties: field: type: string field_name: type: string old: type: string nullable: true new: type: string nullable: true required: - field - field_name - new - old RentalHistoryTypeEnum: enum: - + - '~' - '-' type: string description: |- * `+` - + * `~` - ~ * `-` - - RentalInvoiceDetails: type: object properties: business_name: type: string maxLength: 250 tax_number: type: string maxLength: 250 address_line_1: type: string maxLength: 250 address_line_2: type: string maxLength: 250 city: type: string maxLength: 250 postal_code: type: string maxLength: 10 country: type: integer logo: type: string format: uri nullable: true required: - address_line_1 - address_line_2 - business_name - city - postal_code - tax_number RentalListing: type: object properties: language: type: string readOnly: true headline: type: string nullable: true maxLength: 75 summary: type: string nullable: true maxLength: 500 space: type: string nullable: true neighborhood: type: string nullable: true title: Neighbourhood required: - language RentalPhoto: type: object properties: picture: type: string readOnly: true required: - picture RentalPlatformSettings: type: object properties: id: type: integer readOnly: true rental: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true platform: type: integer readOnly: true platform_name: type: string readOnly: true markup: type: string format: decimal pattern: ^-?\d{0,11}(?:\.\d{0,4})?$ required: - id - platform - platform_name - rental RentalSmartLock: type: object properties: id: type: integer readOnly: true name: type: string readOnly: true description: Human-readable name including the provider prefix, e.g. 'Akiles - Cylindre V2 - 25 Feutrier 75018 Paris R+2'. type: allOf: - $ref: '#/components/schemas/TypeD5dEnum' nullable: true readOnly: true description: Smart lock provider key (e.g. 'akiles'), or null when no provider is linked. gadget_id: type: string nullable: true readOnly: true description: Akiles gadget identifier as used by the Akiles platform, or null when no Akiles gadget is linked. required: - gadget_id - id - name - type RentalTag: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 50 color: allOf: - $ref: '#/components/schemas/ColorEnum' default: gray description: |- Tag color. Defaults to `gray` if omitted. Valid choices: orange, red, pink, violet, blue, green, gray. * `orange` - Orange * `red` - Red * `pink` - Pink * `violet` - Violet * `blue` - Blue * `green` - Green * `gray` - Gray required: - id - name RentalUpsellingConfiguration: type: object properties: managed_upselling_configuration: type: integer nullable: true description: ID of the upselling configuration to assign to the property. Must be one of the configurations connected to the property's office. Pass null to clear the assignment. RequestedMaintenanceJobEnum: type: string enum: - Handyman - Plumber - Gas Engineer - A/C and HIU Specialist - Locksmith - Pest Control - Window Cleaner - Roofing - Gardening - Painter / Decorator - Electrician - Appliance Engineer - Compliance (EICR,GSC,EPC,PAT) - Boiler Service - Drainage Specialist - General Builder - Disposals / Collections Reservation: type: object description: Renders custom-field values under `custom_fields`, skipped on list actions. properties: number: type: string description: Guest-facing booking reference generated by the system and shared with the guest, distinct from the platform's own reservation id. created_at: type: string format: date-time readOnly: true description: Timestamp when the reservation record was created in the system (ISO 8601, e.g. 2026-07-04T09:00:00Z). modified_at: type: string format: date-time readOnly: true description: Timestamp when the reservation was last modified (ISO 8601, e.g. 2026-07-04T09:00:00Z). source: type: string description: Name of the platform (booking channel) the reservation came from, e.g. the connected OTA or a direct booking. currency: description: |- ISO 4217 currency code of the reservation's monetary amounts, e.g. EUR. * `AED` - AED * `AUD` - AUD * `BRL` - BRL * `CAD` - CAD * `CHF` - CHF * `CZK` - CZK * `EUR` - EUR * `GBP` - GBP * `HKD` - HKD * `IDR` - IDR * `ILS` - ILS * `JPY` - JPY * `KRW` - KRW * `MAD` - MAD * `MYR` - MYR * `PLN` - PLN * `RUB` - RUB * `SAR` - SAR * `THB` - THB * `USD` - USD oneOf: - $ref: '#/components/schemas/CurrencyD53Enum' - $ref: '#/components/schemas/BlankEnum' reservation_status: allOf: - $ref: '#/components/schemas/ReservationStatusEnum' readOnly: true description: |- Reservation lifecycle status. Possible values: `pending` — a tentative/held reservation (e.g. an unconfirmed manual quote hold); `accepted` — a confirmed booking; `cancelled` — a cancelled booking. Note: guest inquiries never appear here. An inquiry is not a reservation — read inquiry state from the inquiries endpoint or a conversation's `inquiry_ids`. A reservation (and therefore this field) only exists once a booking is confirmed or created as an internal tentative hold. * `pending` - pending * `accepted` - accepted * `cancelled` - cancelled reservation_type: allOf: - $ref: '#/components/schemas/ReservationTypeEnum' readOnly: true description: |- Kind of reservation, distinguishing a real guest booking from an owner (blocking) stay or a placeholder booking. * `CLASSIQUE` - CLASSIQUE * `FAUSSE` - FAUSSE * `PROPRIETAIRE` - PROPRIETAIRE is_owner: type: boolean description: True when the reservation is an owner stay that blocks the property for the owner's own use rather than a paying guest booking. property_manager_commission: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ pms_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ payment_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ guest_preferred_language: type: string description: Name of the guest's preferred language, e.g. English. total_paid_by_guest: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ payment_links_deposits: type: array items: $ref: '#/components/schemas/PaymentLinkSecurityDeposit' readOnly: true description: This field is deprecated and will be removed in the v4. Use the payment_links endpoint instead. swikly_deposit: allOf: - $ref: '#/components/schemas/SwiklyDepositEmbedded' readOnly: true description: This field is deprecated and will be removed in the v4. Use the swikly_deposits endpoint instead. keynest_code: type: string nullable: true readOnly: true description: KeyNest collection code for the check-in, or null if none. keynest_access_link: type: string nullable: true readOnly: true description: KeyNest access link for the check-in, or null if none. igloohome_code: type: string nullable: true readOnly: true description: Igloohome lock code for the check-in, or null if none. key_code: type: string cancellation_date: type: string format: date-time nullable: true description: Timestamp when the reservation was cancelled (ISO 8601, e.g. 2026-07-04T09:00:00Z); set once a cancellation takes place. guest_reservation_id: type: string description: Guest-facing booking reference; the same value as `number`. platform_reservation_id: type: string description: Identifier of the reservation on the external booking platform, as assigned by that platform. cleaning_internal_comment: type: string description: Cleaning note for the reservation, visible to staff only. cleaning_external_comment: type: string description: Cleaning note for the reservation, visible to staff and the assigned agent. check_in_internal_comment: type: string description: Check-in note for the reservation, visible to staff only. check_in_external_comment: type: string description: Check-in note for the reservation, visible to staff and the assigned agent. check_out_internal_comment: type: string description: Check-out note for the reservation, visible to staff only. check_out_external_comment: type: string description: Check-out note for the reservation, visible to staff and the assigned agent. is_stay_extension: type: boolean nullable: true title: Is this a stay extension? description: Flag marking the reservation as an extension of an earlier stay. relocated_from_id: type: integer description: Id of the reservation this one was relocated from, when the stay was moved over from another property. voucher_redemption: type: array items: $ref: '#/components/schemas/VoucherRedemption' readOnly: true branch_name: type: string description: Name of the branch the reservation's office belongs to. office_name: type: string description: Name of the office managing the reservation's property. owner_net_earnings: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ guest_total_to_pay: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ readOnly: true title: Total to pay description: Total amount to be paid by the guest. extra_fees: type: array items: $ref: '#/components/schemas/ReservationExtraFee' id_verification_status: allOf: - $ref: '#/components/schemas/IdVerificationStatusEnum' readOnly: true description: |- Status of the guest's identity verification: not verified, pending, verified, or failed. * `NOT_VERIFIED` - NOT_VERIFIED * `PENDING` - PENDING * `VERIFIED` - VERIFIED * `FAILED` - FAILED reviewed_by: type: string readOnly: true description: Username of the staff member who reviewed the guest's identity document. rate_plan_name: type: string nullable: true description: Name of the rate plan applied to the reservation; rate_plan_display_name gives its human-friendly label. maxLength: 255 rate_plan_display_name: type: string readOnly: true description: Human-friendly display name of the rate plan applied to the reservation. mid_term_period_breakdown: type: array items: $ref: '#/components/schemas/MidTermPeriodBreakdown' nullable: true readOnly: true description: Per-period rent breakdown for a mid-term stay, or null when the reservation is not mid-term. id: type: integer readOnly: true description: Id of the reservation (booking) in the system. rental_id: type: string description: Id of the property (rental) the reservation is for. booked_at: type: string readOnly: true description: Timestamp when the booking was originally placed on the source platform (ISO 8601, e.g. 2026-07-04T09:00:00Z); falls back to when the reservation was first created in the system. reservation_platform_id: type: integer description: Id of the reservation platform (the booking channel) the reservation belongs to. checkin_date: type: string format: date description: Check-in date, the first night of the stay (YYYY-MM-DD). checkout_date: type: string format: date description: Check-out date, the day the guest leaves (YYYY-MM-DD); falls after the check-in date. rental_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ invoiced_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ guest_first_name: type: string description: Guest's first name. maxLength: 90 guest_last_name: type: string description: Guest's last name. maxLength: 150 guest_email: type: string format: email nullable: true maxLength: 254 guest_phone_number: type: string guest_personal_email: type: string arrival_time: type: string format: time description: Expected guest arrival time on the check-in date (e.g. 15:00:00). departure_time: type: string format: time description: Expected guest departure time on the check-out date (e.g. 11:00:00). number_of_adults: type: integer description: Number of adults staying on the reservation. number_of_children: type: integer description: Number of children staying on the reservation. number_of_infants: type: integer description: Number of infants staying on the reservation (at most 5). number_of_pets: type: integer description: Number of pets on the reservation. city_tax: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ status: allOf: - $ref: '#/components/schemas/Status3eaEnum' description: |- Internal reservation status. The simplified pending/accepted/cancelled view is exposed separately as reservation_status. * `TENTATIVE` - Tentative * `NEW` - New * `ARCHIVED` - Archived * `CANCELLED` - Cancelled * `CANCELLED_FEE` - Cancelled with fee is_stay_relocation: type: boolean nullable: true title: Is this a stay relocation? description: Flag tagging the reservation as a stay relocation, for callers that mark relocations through the API while keeping the reservation on its current property. blocked_reason: nullable: true description: |- Reason the dates are blocked on an owner (blocking) reservation, such as an owner stay or maintenance. * `HOST_STAY` - Owner stay * `MAINTENANCE` - Maintenance * `OTHER` - Other * `PARTIAL_OCCUPANCY` - Partially occupied * `FULL_OCCUPANCY` - Fully occupied * `BLOCKED_BY_HOST` - Blocked by owner * `UPSELLING_REQUEST` - Upselling request oneOf: - $ref: '#/components/schemas/BlockedReasonEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' blocked_notes: type: string nullable: true description: Free-text notes explaining a calendar block. internal_comment: type: string description: Free-text internal note about the reservation, visible to staff only. return_cleaning: nullable: true title: Owner return cleaning description: |- Cleaning arrangement for the owner's return on an owner (blocking) reservation, setting who provides the bedding. * `FULL_OWNER` - Full cleaning + Owner bedding * `FULL_PROPERTY_MANAGER` - Full cleaning + Property manager bedding oneOf: - $ref: '#/components/schemas/ReturnCleaningEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' departure_cleaning: nullable: true title: Owner departure cleaning description: |- Cleaning arrangement for the owner's departure on an owner (blocking) reservation, setting the cleaning level and who provides the bedding. * `FULL_OWNER` - Full cleaning + Owner bedding * `FULL_PROPERTY_MANAGER` - Full cleaning + Property manager bedding * `DELIVERY` - Delivery (No cleaning + Property manager bedding) * `CLEANING_ONLY` - Cleaning only (Full cleaning + Owner bedding) * `NO_CLEANING` - No cleaning oneOf: - $ref: '#/components/schemas/DepartureCleaningEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' platform_payment_fees: type: string readOnly: true passport_number: type: string nullable: true maxLength: 50 guest_invoice: $ref: '#/components/schemas/GuestInvoice' guidebook_url: type: string format: uri nullable: true maxLength: 200 user: type: string readOnly: true required: - booked_at - branch_name - checkin_date - checkout_date - city_tax - created_at - extra_fees - guest_personal_email - guest_phone_number - guest_preferred_language - guest_reservation_id - guest_total_to_pay - id - id_verification_status - igloohome_code - invoiced_cleaning_fee - is_owner - key_code - keynest_access_link - keynest_code - mid_term_period_breakdown - modified_at - number - number_of_adults - number_of_children - office_name - owner_net_earnings - payment_fee - payment_links_deposits - platform_cleaning_fee - platform_fee - platform_payment_fees - platform_reservation_id - pms_fee - property_manager_commission - rate_plan_display_name - rental_amount - rental_id - reservation_platform_id - reservation_status - reservation_type - reviewed_by - source - swikly_deposit - total_paid_by_guest - user - voucher_redemption ReservationCreate: type: object properties: guest_preferred_language: type: string nullable: true currency: oneOf: - $ref: '#/components/schemas/CurrencyD53Enum' - $ref: '#/components/schemas/BlankEnum' payment_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ description: 'Deprecated: any submitted value is ignored. The payment fee is computed from the platform/property-level rate configured in RentalReady.' reservation_type: allOf: - $ref: '#/components/schemas/ReservationTypeEnum' default: CLASSIQUE check_in_internal_comment: type: string description: Visible to staff only platform_reservation_id: type: string nullable: true maxLength: 50 id: type: integer readOnly: true rental_id: type: string description: Id of the property (rental) the reservation is for. booked_at: type: string readOnly: true description: Timestamp when the booking was originally placed on the source platform (ISO 8601, e.g. 2026-07-04T09:00:00Z); falls back to when the reservation was first created in the system. reservation_platform_id: type: integer description: Id of the reservation platform (the booking channel) the reservation belongs to. checkin_date: type: string format: date description: Check-in date, the first night of the stay (YYYY-MM-DD). checkout_date: type: string format: date description: Check-out date, the day the guest leaves (YYYY-MM-DD); falls after the check-in date. rental_amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ invoiced_cleaning_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ platform_fee: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ guest_first_name: type: string maxLength: 90 guest_last_name: type: string maxLength: 150 guest_email: type: string format: email nullable: true maxLength: 254 guest_phone_number: type: string guest_personal_email: type: string arrival_time: type: string format: time description: Expected guest arrival time on the check-in date (e.g. 15:00:00). departure_time: type: string format: time description: Expected guest departure time on the check-out date (e.g. 11:00:00). number_of_adults: type: integer description: Number of adults staying on the reservation. number_of_children: type: integer description: Number of children staying on the reservation. number_of_infants: type: integer description: Number of infants staying on the reservation (at most 5). number_of_pets: type: integer description: Number of pets on the reservation. city_tax: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ status: $ref: '#/components/schemas/Status3eaEnum' is_stay_relocation: type: boolean nullable: true title: Is this a stay relocation? is_stay_extension: type: boolean nullable: true title: Is this a stay extension? blocked_reason: nullable: true oneOf: - $ref: '#/components/schemas/BlockedReasonEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' blocked_notes: type: string nullable: true internal_comment: type: string description: Visible to staff only return_cleaning: nullable: true title: Owner return cleaning oneOf: - $ref: '#/components/schemas/ReturnCleaningEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' departure_cleaning: nullable: true title: Owner departure cleaning oneOf: - $ref: '#/components/schemas/DepartureCleaningEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' platform_payment_fees: type: string readOnly: true passport_number: type: string nullable: true maxLength: 50 guest_invoice: $ref: '#/components/schemas/GuestInvoice' guidebook_url: type: string format: uri nullable: true maxLength: 200 user: type: string readOnly: true required: - booked_at - checkin_date - checkout_date - city_tax - guest_personal_email - guest_phone_number - id - invoiced_cleaning_fee - number_of_adults - number_of_children - platform_cleaning_fee - platform_fee - platform_payment_fees - rental_amount - rental_id - reservation_platform_id - user ReservationDocument: type: object description: |- Scopes the writable ``reservation`` field to the caller's rentals. Requires ``user_rentals`` in the serializer context. An unowned or non-existent reservation pk then fails ``reservation`` field validation identically (before any auto-generated ``UniqueValidator`` runs), so the existence of other tenants' reservations -- and whether they already have a related record -- cannot be enumerated from the response. properties: id: type: integer readOnly: true attachment: type: string format: uri url: type: string nullable: true readOnly: true reservation: type: integer document_type: $ref: '#/components/schemas/DocumentTypeEnum' comment: type: string nullable: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - attachment - created - document_type - id - modified - reservation - url ReservationExtraFee: type: object properties: amount: type: string format: decimal pattern: ^-?\d{0,13}(?:\.\d{0,2})?$ paid_to: $ref: '#/components/schemas/PaidToEnum' extra_fee: $ref: '#/components/schemas/ExtraFee' vat_rate: type: number format: double readOnly: true required: - amount - extra_fee - vat_rate ReservationPlatform: type: object properties: id: type: integer readOnly: true name: type: string description: Name of the booking platform, such as Airbnb or Booking.com. maxLength: 50 description: type: string nullable: true description: Free-text description of the booking platform. logo: type: string format: uri nullable: true description: Logo image file of the booking platform. cancellation_policy: type: string nullable: true description: Cancellation policy text applying to reservations (bookings) made through this platform. required: - id - name ReservationPlatformBrief: type: object properties: id: type: integer readOnly: true name: type: string maxLength: 50 required: - id - name ReservationStatusEnum: enum: - pending - accepted - cancelled type: string description: |- * `pending` - pending * `accepted` - accepted * `cancelled` - cancelled ReservationTypeEnum: enum: - CLASSIQUE - FAUSSE - PROPRIETAIRE type: string description: |- * `CLASSIQUE` - CLASSIQUE * `FAUSSE` - FAUSSE * `PROPRIETAIRE` - PROPRIETAIRE ReturnCleaningEnum: enum: - FULL_OWNER - FULL_PROPERTY_MANAGER type: string description: |- * `FULL_OWNER` - Full cleaning + Owner bedding * `FULL_PROPERTY_MANAGER` - Full cleaning + Property manager bedding ReviewReply: type: object properties: message: type: string submitted_at: type: string format: date-time nullable: true author: allOf: - $ref: '#/components/schemas/ReviewReplyAuthor' nullable: true required: - author - message ReviewReplyAuthor: type: object properties: username: type: string description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 required: - username SecurityDepositChargingMethodEnum: enum: - NONE - SWIKLY - STRIPE type: string description: |- * `NONE` - No security deposit * `SWIKLY` - Swikly * `STRIPE` - Stripe SecurityDepositChargingRuleEnum: enum: - NEVER - HIGH_RISK - ALWAYS type: string description: |- * `NEVER` - Never charge a security deposit * `HIGH_RISK` - Only charge a security deposit in high-risk bookings * `ALWAYS` - Always charge a security deposit SelfCheckinEnum: enum: - FORBIDDEN - POSSIBLE - ALWAYS - RECEPTION type: string description: |- * `FORBIDDEN` - FORBIDDEN * `POSSIBLE` - POSSIBLE * `ALWAYS` - ALWAYS * `RECEPTION` - RECEPTION SenderEnum: enum: - guest - staff type: string description: |- * `guest` - Guest * `staff` - Staff ShowForCheckInTypeEnum: enum: - SELF_CHECK_IN - IN_PERSON type: string description: |- * `SELF_CHECK_IN` - Self check-in * `IN_PERSON` - In-person check-in SmartLockAssign: type: object properties: id: type: integer description: ID of the smart lock to assign. required: - id SmartLockList: type: object properties: id: type: integer readOnly: true name: type: string readOnly: true description: Human-readable name including the provider prefix, e.g. 'Akiles - Cylindre V2 - 25 Feutrier 75018 Paris R+2'. type: allOf: - $ref: '#/components/schemas/TypeD5dEnum' nullable: true readOnly: true description: Smart lock provider key (e.g. 'akiles'), or null when no provider is linked. gadget_id: type: string nullable: true readOnly: true description: Akiles gadget identifier as used by the Akiles platform, or null for non-Akiles locks. required: - gadget_id - id - name - type SmartScheduler: type: object properties: id: type: integer readOnly: true rental: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value mission_template: type: integer schedule: type: integer default_agent: type: integer nullable: true initial_run: type: string format: date-time is_active: type: boolean title: Is active? required: - id - mission_template - rental - schedule SourceEnum: enum: - INTERCOM - PHONECALL - EMAIL - MEETING - BUTTON type: string description: |- * `INTERCOM` - Intercom * `PHONECALL` - Phone call * `EMAIL` - Email * `MEETING` - Meeting * `BUTTON` - Button StarsEnum: enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer description: |- * `0` - No Stars * `1` - 1 Star * `2` - 2 Stars * `3` - 3 Stars * `4` - 4 Stars * `5` - 5 Stars Status075Enum: enum: - ACTIVE - INACTIVE - PENDING_DEACTIVATION - PRE_ONBOARDING type: string description: |- * `ACTIVE` - ACTIVE * `INACTIVE` - INACTIVE * `PENDING_DEACTIVATION` - PENDING_DEACTIVATION * `PRE_ONBOARDING` - PRE_ONBOARDING Status1a4Enum: enum: - AUTHORIZED - NOT_PAID - PAID - FAILED - VOIDED - PROCESSED type: string description: |- * `AUTHORIZED` - Authorized * `NOT_PAID` - Not paid * `PAID` - Paid * `FAILED` - Failed * `VOIDED` - Voided * `PROCESSED` - Processed Status3eaEnum: enum: - TENTATIVE - NEW - ARCHIVED - CANCELLED - CANCELLED_FEE type: string description: |- * `TENTATIVE` - Tentative * `NEW` - New * `ARCHIVED` - Archived * `CANCELLED` - Cancelled * `CANCELLED_FEE` - Cancelled with fee Status6f9Enum: enum: - NOT_PAID - PAID type: string description: |- * `NOT_PAID` - NOT_PAID * `PAID` - PAID StatusFa3Enum: enum: - merged - opened - closed type: string description: |- * `merged` - Merged * `opened` - Opened * `closed` - Closed SubTypeMission: type: object properties: id: type: integer readOnly: true name: type: string readOnly: true description: Internal code identifying the mission subtype. Set internally. display_name: type: string nullable: true description: Human-readable label for the mission subtype shown in the interface. Falls back to the internal name when not set. maxLength: 100 type_mission_id: type: integer title: Mission type readOnly: true description: Id of the mission type this subtype belongs to. When creating a mission, its subtype must belong to the selected mission type. user: type: string readOnly: true required: - id - name - type_mission_id - user Subroom: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: Id of the property (rental) this room belongs to. subroom_type: type: string description: Room type, given by its name (e.g. BEDROOM, BATHROOM). Use the /api/v3/subroom_types/ endpoint to list available values. position: type: integer readOnly: true description: Position of the room within its property, assigned automatically in creation order. privacy: allOf: - $ref: '#/components/schemas/PrivacyEnum' default: PRIVATE description: |- Privacy level of the room for the guest. Defaults to PRIVATE. * `PRIVATE` - Private * `SHARED` - Shared * `ENSUITE` - Ensuite location: nullable: true description: |- Location of the room relative to the space it serves, such as a bathroom relative to its bedroom. Optional. * `ENSUITE` - Ensuite * `NEXT_DOOR` - Next door * `DOWN_THE_HALL` - Down the hall * `OPPOSITE_THE_ROOM` - Opposite to the room * `IN_THE_HALLWAY` - In the hallway * `OTHER` - Other * `INSIDE_THE_UNIT` - Inside the unit oneOf: - $ref: '#/components/schemas/LocationEnum' - $ref: '#/components/schemas/NullEnum' window_coverage: nullable: true description: |- Type of window covering in the room. Optional. * `SHUTTER` - Shutter * `ESHUTTER` - Electronic Shutter * `CURTAIN` - Curtain * `STORE` - Store * `NOTHING` - No Coverage oneOf: - $ref: '#/components/schemas/SubroomWindowCoverageEnum' - $ref: '#/components/schemas/NullEnum' beds: type: array items: $ref: '#/components/schemas/Bed' description: Beds in this room. required: - id - position - rental_id - subroom_type SubroomType: type: object properties: id: type: integer readOnly: true name: type: string description: Room type code, e.g. "BEDROOM", "BATHROOM", "LIVING_ROOM". maxLength: 255 required: - id - name SubroomWindowCoverageEnum: enum: - SHUTTER - ESHUTTER - CURTAIN - STORE - NOTHING type: string description: |- * `SHUTTER` - Shutter * `ESHUTTER` - Electronic Shutter * `CURTAIN` - Curtain * `STORE` - Store * `NOTHING` - No Coverage SupportUserGroup: type: object properties: id: type: integer readOnly: true name: type: string nullable: true description: Name of the support-user group, usually naming a team and the region it covers (for example 'Owner Success France'). maxLength: 100 required: - id SwiklyDeposit: type: object properties: id: type: integer readOnly: true reservation_id: type: integer readOnly: true amount: type: number format: double date_paid: type: string format: date-time nullable: true status: allOf: - $ref: '#/components/schemas/Status6f9Enum' readOnly: true description: |- Swikly security-deposit status. Possible values: `NOT_PAID` — not yet paid; `PAID` — paid. * `NOT_PAID` - NOT_PAID * `PAID` - PAID payment_link: type: string readOnly: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - amount - created - id - modified - payment_link - reservation_id - status SwiklyDepositEmbedded: type: object properties: status: allOf: - $ref: '#/components/schemas/Status6f9Enum' readOnly: true description: |- Swikly security-deposit status. Possible values: `NOT_PAID` — not yet paid; `PAID` — paid. * `NOT_PAID` - NOT_PAID * `PAID` - PAID amount: type: number format: double required: - amount - status SynchronizationCategoryEnum: enum: - FULL_SYNC - PARTIAL_SYNC type: string description: |- * `FULL_SYNC` - Full synchronisation * `PARTIAL_SYNC` - Partial synchronisation TagEnum: enum: - BEFORE - DURING - AFTER - QUOTE - INVOICE - REPORT type: string description: |- * `BEFORE` - Before the incident * `DURING` - During the incident * `AFTER` - After the incident * `QUOTE` - Quote (cost estimation) * `INVOICE` - Invoice * `REPORT` - Report TaxableBaseEnum: enum: - RENTAL_INCOME - ACCOMMODATION type: string description: |- * `RENTAL_INCOME` - Rental income only * `ACCOMMODATION` - Rental income + cleaning fee TurnoverDaysEnum: enum: - 0 - 1 - 2 type: integer description: |- * `0` - 0 * `1` - 1 * `2` - 2 TypeD5dEnum: type: string enum: - akiles - nuki - ttlock - omnitec - salto_space TypeF08Enum: enum: - NATURAL - BUSINESS - ORGANIZATION - SOLETRADER type: string description: |- * `NATURAL` - Individual owner * `BUSINESS` - Business entity * `ORGANIZATION` - Organization entity * `SOLETRADER` - Soletrader entity TypeMission: type: object properties: id: type: integer readOnly: true name: type: string readOnly: true description: Internal code identifying the mission type (for example CHECK-IN). Set internally. display_name: type: string nullable: true description: Human-readable label for the mission type shown in the interface. Falls back to the internal name when not set. maxLength: 20 user: type: string readOnly: true required: - id - name - user UnblockCalendar: type: object properties: rental_id: type: string description: Id of the property (rental) whose calendar the date range applies to. start_date: type: string format: date-time description: Start of the date range (ISO 8601, e.g. 2026-07-01T14:00:00). The range is interpreted by calendar date, and this date must fall strictly before the end date, so the range spans at least one night. end_date: type: string format: date-time description: End of the date range (ISO 8601, e.g. 2026-07-05T11:00:00). Its calendar date must fall strictly after the start date. required: - end_date - rental_id - start_date UpdateDescription: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: Id of the property (rental) the description belongs to. headline: type: string nullable: true description: Short listing headline shown as the property's title on booking platforms. Single line, up to 75 characters. maxLength: 75 summary: type: string nullable: true description: Brief overview of the property, shown near the top of the listing. Up to 500 characters. maxLength: 500 space: type: string nullable: true description: 'Description of the space itself: the layout, rooms and what guests will find inside the property.' access: type: string nullable: true description: Description of how guests access the property and which areas they are free to use. interaction: type: string nullable: true description: Description of the level of contact and interaction guests can expect during their stay. neighborhood: type: string nullable: true title: Neighbourhood description: Description of the surrounding neighbourhood, such as nearby attractions, amenities and the character of the area. transit: type: string nullable: true description: Description of how to get around and reach the property, such as public transport and parking. notes: type: string nullable: true description: Any other useful details about the property not covered by the other sections. required: - id - rental_id UpdateIcalSync: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value readOnly: true rental_name: type: string readOnly: true platform_id: type: integer readOnly: true platform_name: type: string readOnly: true ical_url: type: string format: uri title: ICal Import URL description: The URL to fetch the iCal calendar from maxLength: 200 import_summary_as_guest_name: type: boolean description: If enabled, the event summary will be used as guest name in blocked notes is_active: type: boolean title: Active description: Only active syncs will be processed last_sync_at: type: string format: date-time readOnly: true nullable: true title: Last sync time (UTC) description: Timestamp of the last successful sync last_sync_attempt_at: type: string format: date-time readOnly: true nullable: true title: Last sync attempt time (UTC) description: Timestamp of the last sync attempt, regardless of outcome last_sync_error: type: string readOnly: true nullable: true created: type: string format: date-time readOnly: true modified: type: string format: date-time readOnly: true required: - created - ical_url - id - last_sync_at - last_sync_attempt_at - last_sync_error - modified - platform_id - platform_name - rental_id - rental_name UpdateMultiUnit: type: object description: |- Partially update a parent/child multi-unit. Every field is optional, but ``main_unit`` and ``rentals`` must be supplied together (or both omitted). When they are supplied, the multi-unit's office and address are refreshed from the new main unit; newly added properties have their calendars blocked and removed ones unblocked for future reservations (see ``save_rentals_and_block``). properties: name: type: string description: New name for the multi-unit. main_unit: type: string title: Contract number description: Id of the property (rental) to set as the main (parent) unit. Must be provided together with rentals; the multi-unit's office and address are refreshed from it. rentals: type: array items: type: string title: Contract number description: Ids of the properties (rentals) to group under the multi-unit, including the main unit and at least one sub-unit. Must be provided together with main_unit. A property not already in this multi-unit must not belong to another one and must share the main unit's address or sit within the configured distance of it. Newly added properties have their future reservations' calendars blocked and removed ones unblocked. UpdatePhoto: type: object properties: id: type: integer readOnly: true rental_id: type: string title: Contract number description: |- This field is not editable after creation. ALWAYS fill it with the correct value category: nullable: true oneOf: - $ref: '#/components/schemas/CategoryC86Enum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' kind: type: string description: "Valid choices: \n- balcony_terrace\n- bathroom\n- beach\n\ - bedroom\n- building\n- dining area\n- Facade_Entrance\n- floor_plan\n\ - garden\n- inside\n- kitchen\n- livingroom\n- neighbourhood\n- outside\n\ - parking\n- patio\n- safety\n- surroundings\n- swimming_pool\n- view" kind_verbose: type: string readOnly: true position: type: integer maximum: 2147483647 minimum: 1 nullable: true subroom_id: type: integer nullable: true description: Id of the room of the property this photo shows, e.g. a bedroom or a bathroom. Use the /api/v3/subrooms/ endpoint to list the rooms of a property. The room must belong to the same property as the photo. Send null to unassign the photo from its room. Moving a photo to another property clears the room assignment. subroom_type: type: string nullable: true readOnly: true description: Room type of the assigned room, e.g. "BEDROOM", "BATHROOM". Read-only, null when the photo is not assigned to a room. subroom_position: type: integer nullable: true readOnly: true description: Position of the assigned room within its property. Read-only, null when the photo is not assigned to a room. required: - id - kind_verbose - rental_id - subroom_position - subroom_type UserSerialzer: type: object properties: id: type: integer readOnly: true username: type: string description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 property_manager: type: string readOnly: true required: - id - property_manager - username Voucher: type: object properties: code: type: string description: type: string description: For internal reference value: oneOf: - type: object properties: kind: type: string enum: - PERCENTAGE percentage: type: number - type: object properties: kind: type: string enum: - FIXED amount: type: string currency: type: string readOnly: true rentals: type: array items: type: integer readOnly: true description: Ids of the properties (rentals) the voucher applies to. antennes: type: array items: type: integer readOnly: true description: Ids of the offices the voucher applies to. status: type: object properties: code: type: string enum: - DISABLED - PAST - CURRENT label: type: string readOnly: true created: type: string readOnly: true description: Timestamp when the voucher was created (ISO 8601). validity_start: type: string readOnly: true description: Date from which the voucher is valid (ISO 8601). validity_end: type: string readOnly: true description: Last date on which the voucher is valid (ISO 8601). created_by: type: string nullable: true readOnly: true description: Username of the user who created the voucher, or null. percentage: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ nullable: true title: Discount percentage enabled: type: boolean kind: allOf: - $ref: '#/components/schemas/KindEnum' title: Voucher type id: type: integer readOnly: true required: - antennes - code - created - created_by - description - id - kind - rentals - status - validity_end - validity_start - value VoucherRedemption: type: object properties: code: type: string voucher_amount: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ required: - code - voucher_amount securitySchemes: basicAuth: type: http scheme: basic cookieAuth: type: apiKey in: cookie name: sessionid oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: /o/authorize/ tokenUrl: /o/token/ refreshUrl: /o/token/ scopes: read: Read scope write: Write scope amenities:read: Read amenities amenities:write: Create, update and delete amenities photos:write: Create, update and delete photos reservations:read: Read reservations reservations:write: Create, update and cancel reservations reservation_platform:read: Read reservation platform reviews:read: Read reviews reviews:write: Write reviews owners:read: Read owners owners:write: Write owners hosts:read: Read hosts (deprecated) hosts:write: Write hosts (deprecated) offices:read: Read offices property_managers:read: Read property managers onboarding_requests:read: Read onboarding requests listing_requests:read: Read listing requests pricing:read: Read pricing pricing:write: Create, update and delete pricing users:read: Read user data calendar:read: Read calendar calendar:write: Write calendar rentals:read: Read rentals rentals:write: Create, update and delete rentals issues:read: Read issues issues:write: Write issues incidents:read: Read incidents incidents:write: Write incidents missions:read: Read missions missions:write: Write missions agents:read: Read agents smart_schedulers:read: Read smart schedulers smart_schedulers:write: Write smart schedulers neighbourhoods:read: Read neighbourhoods payment_links:read: Read payment links swikly_deposits:read: Read swikly deposits payout_adjustments:read: Read payout adjustments payout_adjustments:write: Write payout adjustments payment_acceptance_transactions:read: Read payment acceptance transactions payment_acceptance_transactions:write: Write payment acceptance transactions accounting_invoice:read: Read accounting invoices accounting_invoice:write: Write accounting invoices guest_registration:read: Read guest registration data conversations:read: Read conversations conversations:write: Write conversations messages:read: Read messages messages:write: Write messages inquiries:read: Read inquiries city_tax_rules:read: Read city tax rules custom_fields:read: Read custom fields custom_fields:write: Write custom fields tokenAuth: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token"