Outdoorsy Bookings API

The Bookings API from Outdoorsy — 9 operation(s) for bookings.

OpenAPI Specification

outdoorsy-bookings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'The Outdoorsy API (or simply "API") is organized around REST. It uses

    predictable, resource-oriented URLs and implements standard HTTP response

    codes, verbs, authentication mechanisms, and a variety of request encodings.


    ## Versioning


    The API implements semantic versioning.'
  title: Outdoorsy API Documentation Bookings API
  version: 0.0.1
servers:
- url: /v0
security:
- Bearer:
  - '[]'
- API-Key:
  - '[]'
tags:
- name: Bookings
paths:
  /bookings/soonest:
    get:
      description: Get the current trip or an upcoming trip or returned trip that are within 14 days
      operationId: bookings
      responses:
        '200':
          $ref: '#/components/responses/getSoonestResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
      tags:
      - Bookings
  /bookings:
    get:
      description: Read many bookings
      tags:
      - Bookings
      operationId: listBookings
      parameters:
      - x-go-name: Offset
        name: offset
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: Limit
        name: limit
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: OrderBy
        name: order_by
        in: query
        schema:
          type: string
      - name: FromLT
        in: query
        schema:
          type: string
      - name: FromGT
        in: query
        schema:
          type: string
      - name: ToLT
        in: query
        schema:
          type: string
      - name: ToGT
        in: query
        schema:
          type: string
      - name: UpdatedLT
        in: query
        schema:
          type: string
      - name: UpdatedGT
        in: query
        schema:
          type: string
      - name: CreatedLT
        in: query
        schema:
          type: string
      - name: CreatedGT
        in: query
        schema:
          type: string
      - name: BookedLT
        in: query
        schema:
          type: string
      - name: BookedGT
        in: query
        schema:
          type: string
      - x-go-name: CSVToken
        name: csv-token
        in: query
        schema:
          type: string
      - x-go-name: Blocking
        name: blocking
        in: query
        schema:
          type: boolean
      - x-go-name: Calendar
        name: calendar
        in: query
        schema:
          type: boolean
      - x-go-name: OwnerID
        name: owner_id
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: RentalID
        name: rental_id
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: RentalIDsRaw
        name: rental_ids
        in: query
        schema:
          type: string
      - x-go-name: IncludeCoachnet
        name: include_coachnet
        in: query
        schema:
          type: boolean
      - x-go-name: CSV
        name: csv
        in: query
        schema:
          type: boolean
      - x-go-name: FullObject
        name: full_object
        in: query
        schema:
          type: boolean
      - x-go-name: IncludeChildren
        name: include_children
        in: query
        schema:
          type: boolean
      - x-go-name: RenterID
        name: renter_id
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: Dealer
        name: dealer
        in: query
        schema:
          type: boolean
      - x-go-name: Instamatch
        name: instamatch
        in: query
        schema:
          type: boolean
      - x-go-name: HasConsignedPayout
        name: has_consigned_payout
        in: query
        schema:
          type: boolean
      - x-go-name: ReturnedLT
        name: returned_lt
        in: query
        schema:
          type: string
      - x-go-name: ReturnedGT
        name: returned_gt
        in: query
        schema:
          type: string
      - x-go-name: Abandoned
        name: abandoned
        in: query
        schema:
          type: boolean
      - x-go-name: IncludeAbandoned
        name: include_abandoned
        in: query
        schema:
          type: boolean
      - x-go-name: Status
        name: status
        in: query
        schema:
          type: string
      - x-go-name: Order
        name: order
        in: query
        schema:
          type: string
      - x-go-name: Archived
        name: archived
        in: query
        schema:
          type: boolean
      - x-go-name: NeedsReview
        name: needs_review
        in: query
        schema:
          type: boolean
      - x-go-name: Refunded
        name: refunded
        in: query
        schema:
          type: boolean
      - x-go-name: New
        name: new
        in: query
        schema:
          type: boolean
      - x-go-name: CoachnetIDSet
        name: coachnet_id_set
        in: query
        schema:
          type: boolean
      - x-go-name: ForUserID
        name: for_user_id
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: IDs
        name: ids
        in: query
        schema:
          type: string
      - x-go-name: LocationIDs
        name: location_ids
        in: query
        schema:
          type: string
      - x-go-name: IncludeShared
        name: include_shared
        in: query
        schema:
          type: boolean
      - x-go-name: SharedOnly
        name: shared
        in: query
        schema:
          type: boolean
      - x-go-name: Filter
        name: filter
        in: query
        schema:
          type: string
      - x-go-name: Role
        name: role
        in: query
        schema:
          type: string
      - x-go-name: HandoffFilter
        name: handoff_filter
        in: query
        schema:
          type: string
      - x-go-name: IncludeQuoteMetadata
        name: include_quote_metadata
        in: query
        schema:
          type: boolean
      - x-go-name: DeliverableCampground
        name: deliverable_campground
        in: query
        schema:
          type: boolean
      - x-go-name: RentalCategory
        name: rental_category
        in: query
        schema:
          type: string
      - x-go-name: Source
        name: source
        in: query
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/listBookingsResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
    post:
      description: Creates a booking
      tags:
      - Bookings
      operationId: createBooking
      responses:
        '201':
          $ref: '#/components/responses/getBookingResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingRequest'
  /bookings/stage:
    get:
      description: Read Many By Stage
      tags:
      - Bookings
      operationId: readManyByStageRequest
      parameters:
      - x-go-name: Archived
        name: archived
        in: query
        schema:
          type: boolean
      - x-go-name: StageFilter
        name: filter
        in: query
        schema:
          type: string
      - x-go-name: Offset
        name: offset
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: Limit
        name: limit
        in: query
        schema:
          type: integer
          format: int64
      - x-go-name: Search
        name: search
        in: query
        schema:
          type: string
      - x-go-name: OrderBy
        name: order_by
        in: query
        schema:
          type: string
      - x-go-name: CreatedGT
        name: created_gt
        in: query
        schema:
          type: string
      - x-go-name: CreatedLT
        name: created_lt
        in: query
        schema:
          type: string
      - x-go-name: FromGT
        name: from_gt
        in: query
        schema:
          type: string
      - x-go-name: FromLT
        name: from_lt
        in: query
        schema:
          type: string
      - x-go-name: IncludeItems
        name: include_items
        in: query
        schema:
          type: boolean
      - x-go-name: IncludePassengers
        name: include_passengers
        in: query
        schema:
          type: boolean
      - x-go-name: Statuses
        name: statuses
        in: query
        schema:
          type: string
      - x-go-name: LocationsRaw
        name: location_ids
        in: query
        schema:
          type: string
      - x-go-name: ExcludeAbandoned
        name: exclude_abandoned
        in: query
        schema:
          type: boolean
      responses:
        '200':
          $ref: '#/components/responses/readManyByStageResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
  /bookings/{booking_id}/calculate-delivery:
    post:
      description: Calculate estimated delivery for booking
      tags:
      - Bookings
      operationId: estimatedDeliveryRequest
      responses:
        '200':
          $ref: '#/components/responses/estimatedDeliveryResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeliveryEstimatedRequest'
  /bookings/{booking_id}/collect-post-trip-charges:
    post:
      description: Collect post-trip charges for booking
      tags:
      - Bookings
      operationId: collectBookingPostTripCharges
      parameters:
      - x-go-name: BookingID
        name: booking_id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '201':
          $ref: '#/components/responses/transactionsResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectPostTripChargesRequest'
  /bookings/{id}:
    get:
      description: Read one booking
      tags:
      - Bookings
      operationId: getBookingById
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/getBookingResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
    delete:
      tags:
      - Bookings
      summary: Archives the booking which hides it from view.
      operationId: deleteBookingById
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          $ref: '#/components/responses/noContentResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
    patch:
      description: 'Certain changes are only allowed while the booking is in the negotiating state.

        Dealers, owners, renters and admins all have different access level on what can be changed.

        This often results in a recalculation of the booking total.'
      tags:
      - Bookings
      summary: Updates the booking with requested changes.
      operationId: updateBooking
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/getBookingResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingUpdateRequest'
  /bookings/{id}/cancellation-details:
    get:
      description: Returns the cancellation details for the requested booking
      tags:
      - Bookings
      operationId: getBookingCancellationDetails
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/bookingCancelDetailsResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
  /bookings/{id}/collect-overage-fee:
    post:
      description: Collect booking overage fee
      tags:
      - Bookings
      operationId: collectBookingOverageFee
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/transactionsResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectOverageFeeRequest'
  /bookings/{id}/status:
    patch:
      description: 'Examples:


        negotiating -> approved

        approved -> handed_off

        handed_off -> returned

        approved -> renter_cancelled/owner_cancelled'
      tags:
      - Bookings
      summary: Progresses the status of the booking to the requested state.
      operationId: bookingChangeStatus
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/bookingResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusChangeRequest'
components:
  responses:
    notFoundError:
      description: Not found error
    readManyByStageResponse:
      description: ''
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BookingsStageWithMeta'
    listBookingsResponse:
      description: HTTP status code 200 and array of rental models
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Booking'
    getSoonestResponse:
      description: ''
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GetSoonestResponse'
    bookingCancelDetailsResponse:
      description: ''
      headers:
        allow_user_refund_method:
          description: return numbers for display but user may not be allowed to choose
          schema:
            type: boolean
        booking_total:
          schema:
            type: integer
            format: uint64
        cancel_policy:
          schema:
            type: string
        cancellation_penalty_info: {}
        charges:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/MinRenterCharge'
        from: {}
        hide_refund_amounts:
          schema:
            type: boolean
        id:
          schema:
            type: integer
            format: int64
        presentment_currency:
          schema:
            type: string
        refund_options: {}
        rental_summary: {}
        service_fee:
          schema:
            type: integer
            format: uint64
        sibling_booking_group_id: {}
        sibling_rental_summaries: {}
        to: {}
        total_cash_charges:
          schema:
            type: integer
            format: int64
        total_charges:
          schema:
            type: integer
            format: int64
        total_credit_charges:
          schema:
            type: integer
            format: int64
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CancellationPenaltyInfoV2'
    noContentResponse:
      description: Everything went as planned
    genericError:
      description: An unknown, unexpected error.
    getBookingResponse:
      description: HTTP status code 200 and rental model
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Booking'
    unauthorizedError:
      description: Unauthorized error
    badRequestError:
      description: Invalid input or state means you're bad
      headers:
        Error:
          schema:
            type: string
    estimatedDeliveryResponse:
      description: ''
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DeliveryEstimatedResponse'
    transactionsResponse:
      description: ''
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Transaction'
  schemas:
    Plan:
      type: object
      properties:
        allow_unregistered:
          type: boolean
          x-go-name: AllowUnregistered
        approved_vehicle_types:
          $ref: '#/components/schemas/DBStringSlice'
        bundle_required:
          type: boolean
          x-go-name: BundleRequired
        claims_number:
          type: string
          x-go-name: ClaimsNumber
        comp_policy_url:
          type: string
          x-go-name: CompPolicyURL
        comprehensive_coverage:
          type: boolean
          x-go-name: ComprehensiveCoverage
        comprehensive_maximum:
          type: string
          x-go-name: ComprehensiveMaximum
        country:
          type: string
          x-go-name: Country
        created:
          type: string
          x-go-name: Created
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        created_by_id:
          type:
          - integer
          - 'null'
          format: int64
        dealer_only:
          type: boolean
          x-go-name: DealerOnly
        hidden:
          type: boolean
          x-go-name: Hidden
        id:
          description: 'The fields below are returned in the minimum response when this

            insurance plan is an element inside a rental'
          type: integer
          format: int64
          x-go-name: ID
        insurance_address_1:
          type: string
          x-go-name: InsuranceAddress1
        insurance_city:
          type: string
          x-go-name: InsuranceCity
        insurance_end_date:
          type: string
          x-go-name: InsuranceEndDate
        insurance_name:
          type: string
          x-go-name: InsuranceName
        insurance_plan_override:
          $ref: '#/components/schemas/PlanOverride'
        insurance_policy_number:
          type: string
          x-go-name: InsurancePolicyNumber
        insurance_start_date:
          type: string
          x-go-name: InsuranceStartDate
        insurance_state:
          type: string
          x-go-name: InsuranceState
        insurance_zip:
          type: string
          x-go-name: InsuranceZip
        insured_address_1:
          type: string
          x-go-name: InsuredAddress1
        insured_city:
          type: string
          x-go-name: InsuredCity
        insured_name:
          type: string
          x-go-name: InsuredName
        insured_state:
          type: string
          x-go-name: InsuredState
        insured_zip:
          type: string
          x-go-name: InsuredZip
        label:
          type: string
          x-go-name: Label
        last_updated_by_id:
          type:
          - integer
          - 'null'
          format: int64
        liability_coverage:
          type: boolean
          x-go-name: LiabilityCoverage
        liability_maximum:
          type: string
          x-go-name: LiabilityMaximum
        liability_policy_url:
          type: string
          x-go-name: LiabilityPolicyURL
        locality:
          type: string
          x-go-name: Locality
        minimum_daily_fee:
          type: integer
          format: uint64
          x-go-name: MinimumDailyFee
        minimum_year:
          type: integer
          format: int64
          x-go-name: MinimumYear
        owner_comprehensive_deductible:
          type: string
          x-go-name: OwnerComprehensiveDeductible
        owner_fee_percentage:
          type: number
          format: double
          x-go-name: OwnerFeePercentage
        owner_liability_deductible:
          type: string
          x-go-name: OwnerLiabilityDeductible
        owner_liability_maximum:
          type: string
          x-go-name: OwnerLiabilityMaximum
        rental_category:
          type: string
          x-go-name: RentalCategory
        renter_comprehensive_deductible:
          type: string
          x-go-name: RenterComprehensiveDeductible
        renter_fee_percentage:
          type: number
          format: double
          x-go-name: RenterFeePercentage
        renter_liability_deductible:
          type: string
          x-go-name: RenterLiabilityDeductible
        renter_liability_maximum:
          type: string
          x-go-name: RenterLiabilityMaximum
        requires_driver_verification:
          type: boolean
          x-go-name: RequiresDriverVerification
        tiered:
          type: boolean
          x-go-name: Tiered
        updated:
          type: string
          x-go-name: Updated
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
      x-go-package: github.com/outdoorsy/api/internal/insurance
    bookingConsignment:
      type: object
      properties:
        keep_amt_cc_fee:
          type: integer
          format: int64
          x-go-name: KeepAmountCCFee
        keep_amt_insurance_fee:
          type: integer
          format: int64
          x-go-name: KeepAmountInsuranceFee
        keep_pct_cc_fee:
          type: number
          format: double
          x-go-name: KeepPctCCFee
        keep_pct_insurance_fee:
          type: number
          format: double
          x-go-name: KeepPctInsuranceFee
        pay_amt_total:
          type: integer
          format: int64
          x-go-name: PayAmountTotal
        pay_pct_generator:
          type: number
          format: double
          x-go-name: PayPctGenerator
        pay_pct_mileage:
          description: Consigned owner support - copied rental data
          type: number
          format: double
          x-go-name: PayPctMileage
        payout_id:
          $ref: '#/components/schemas/ConsignedPayout'
      x-go-package: github.com/outdoorsy/api/model
    PaypalChargeDetailsDetails:
      type: object
      properties:
        billingAddress:
          $ref: '#/components/schemas/PaypalAddress'
        countryCode:
          type: string
          x-go-name: CountryCode
        email:
          type: string
          x-go-name: Email
        firstName:
          type: string
          x-go-name: FirstName
        lastName:
          type: string
          x-go-name: LastName
        payerId:
          type: string
          x-go-name: PayerID
        phone:
          type: string
          x-go-name: Phone
        shippingAddress:
          $ref: '#/components/schemas/PaypalAddress'
      x-go-package: github.com/outdoorsy/api/libs/payment
    SearchFilters:
      type: object
      properties:
        festival_friendly:
          type: boolean
          x-go-name: FestivalFriendly
        make:
          type: string
          x-go-name: Make
        model:
          type: array
          items:
            type: string
          x-go-name: Model
        pet_friendly:
          type: boolean
          x-go-name: PetFriendly
        smoking_allowed:
          type: boolean
          x-go-name: SmokingAllowed
        tailgate_friendly:
          type: boolean
          x-go-name: TailgateFriendly
        towing_capacity:
          type: integer
          format: int64
          x-go-name: TowingCapacity
        towing_vehicle_make:
          type: string
          x-go-name: TowingVehicleMake
        towing_vehicle_model:
          type: string
          x-go-name: TowingVehicleModel
        towing_vehicle_year:
          type: integer
          format: int64
          x-go-name: TowingVehicleYear
        travelers:
          type: integer
          format: int64
          x-go-name: Travelers
        year_max:
          type: integer
          format: int64
          x-go-name: YearMax
        year_min:
          type: integer
          format: int64
          x-go-name: YearMin
      x-go-package: github.com/outdoorsy/api/types
    SiblingBooking:
      description: 'SiblingBooking embedded struct to get around Booking struct issues where we only render the first

        instance in the response then simply render the booking ID.

        See `func (b *Booking) ResponseElementData(options objx.Map)` for more details.'
      type: object
      properties:
        abandoned:
          type: boolean
          x-go-name: Abandoned
        addons:
          type: array
          items:
            $ref: '#/components/schemas/BookingItem'
          x-go-name: Addons
        adults:
          type: integer
          format: int64
          x-go-name: Adults
        affirm_details:
          $ref: '#/components/schemas/AffirmDetails'
        affirm_total:
          description: Dynamically calculated. Not stored in DB
          type: integer
          format: int64
          x-go-name: AffirmTotal
        applicable_tos_version:
          type: string
          x-go-name: ApplicableToSVersion
        attention:
          type: array
          items:
            $ref: '#/components/schemas/AttentionItem'
          x-go-name: Attention
        auto_assign_group:
          type:
          - boolean
          - 'null'
        auto_insurance_type:
          type: string
          x-go-name: AutoInsuranceType
        bid_id:
          type: integer
          format: int64
          x-go-name: BidID
        block_discount_code:
          type: boolean
          x-go-name: BlockDiscountCode
        booked:
          description: Not Mutable
          type: string
          x-go-name: Booked
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        booking_agent:
          type: string
          x-go-name: BookingAgentID
        booking_color:
          type:
          - string
          - 'null'
        booking_token:
          type: string
          x-go-name: BookingToken
        bundle_id:
          description: 'calculated field that holds the result of whether the rental has this assigned

            if not, will look at the user/owner'
          type: string
          x-go-name: BundleID
        calculated_day_price:
          type: integer
          format: uint64
          x-go-name: CalculatedDayPrice
        calculated_total_paid:
          type: integer
          format: uint64
          x-go-name: CalculatedTotalPaid
        campaign:
          description: dealer only
          type: string
          x-go-name: Campaign
        campground_booking_url:
          description: Contains the booking id so ember can call /bookings/:id/default-selections
          type: string
          x-go-name: CampgroundBookingURL
        campground_data:
          $ref: '#/components/schemas/SiblingBookingCampgroundData'
        can_add_ending_generator_values:
          type: boolean
          x-go-name: CanAddEndingGeneratorValues
        can_add_ending_mileage_values:
          type: boolean
          x-go-name: CanAddEndingMileageValues
        can_add_starting_generator_values:
          type: boolean
          x-go-name: CanAddStartingGeneratorValues
        can_add_starting_mileage_values:
          type: boolean
          x-go-name: CanAddStartingMileageValues
        can_add_trip_protection:
          description: CanAddTransaction is used to check if the guest can add a trip protection
          type: boolean
          x-go-name: CanAddTripProtection
        can_apply_credits:
          type: boolean
          x-go-name: CanApplyCredits
        can_cancel_trip_protection:
          description: CanCancelTripProtection is used to check if the guest can cancel a trip protection
          type: boolean
          x-go-name: CanCancelTripProtection
        can_charge_overage_fees:
          type: boolean
          x-go-name: CanChargeOverageFees
        can_file_claim:
          type: boolean
          x-go-name: CanFileClaim
        can_generate_weather_quote:
          type: boolean
          x-go-name: CanGenerateWeatherQuote
        can_manage_security_deposit:
          type: boolean
          x-go-name: CanManageSecurityDeposit
        can_manage_tax_rates:
          description: used by dashboard to disable tax editing
          type: boolean
          x-go-name: CanManageTaxRates
        can_renter_review:
          type: boolean
          x-go-name: CanRenterReview
        can_renter_review_until:
          type: string
          x-go-name: CanRenterReviewUntil
        can_see_contract:
          type: boolean
          x-go-name: CanSeeContract
        can_suggest_date_change:
          type: boolean
          x-go-name: CanSuggestDateChange
        can_suggest_delivery_change:
          type: boolean
          x-go-name: CanSuggestDeliveryChange
        cancel_metadata:
          $ref: '#/components/schemas/CancelMetadata'
        cancel_policy:
          type: string
          x-go-name: CancelPolicy
        cancel_reason:
          type: string
          x-go-name: CancelReason
        canceled:
          type: string
          x-go-name: Canceled
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        cancellation_cutoff_date:
          type: string
        cancellation_refund_breakdown:
          $ref: '#/components/schemas/CancellationRefundBreakdown'
        cancellation_refund_percentage:
          type: number
          format: double
          x-go-name: CancellationRefundPercentage
        cc_fee_percentage:
          description: Copied rental data - don't want rental changes to affect this booking
          type: number
          format: double
          x-go-name: CCFeePercentage
        checkin_stamp:
          description: Internal
          type: string
          x-go-name: CheckinStamp
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        checkout_questions:
          $ref: '#/components/schemas/DBMSISlice'
        checkout_stamp:
          type: string
          x-go-name: CheckoutStamp
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        checkout_steps_id:
          type: integer
          format: int64
          x-go-name: CheckoutStepsID
        children:
         

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