Outdoorsy Users API

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

OpenAPI Specification

outdoorsy-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Outdoorsy Users API
  version: 0.0.1
  description: 'Operations tagged users across 2 of this provider''s published API definitions: outdoorsy-openapi-original.json, outdoorsy-search-openapi-original.json. Each path carries the servers of the definition it was published in.'
servers:
- url: /v0
tags:
- name: users
paths:
  /autosuggestions:
    get:
      tags:
      - users
      summary: Returns a breakdown of previous rentals, bookings or pending reviews.
      operationId: getAutosuggestions
      parameters:
      - x-go-name: UserID
        name: user_id
        in: query
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/getAutosuggestionsResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /confirm:
    get:
      description: Confirm new or changed user email
      tags:
      - users
      operationId: confirmEmail
      parameters:
      - x-go-name: ChangeEmailToken
        name: change_email_token
        in: query
        schema:
          type: string
      - x-go-name: NewEmailToken
        name: new_email_token
        in: query
        schema:
          type: string
      responses:
        '204':
          $ref: '#/components/responses/noContentResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /users:
    get:
      description: Return list of users
      tags:
      - users
      operationId: listUsers
      responses:
        '200':
          $ref: '#/components/responses/usersResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /users/logout:
    get:
      description: Log user out by invalidating authorization token
      tags:
      - users
      operationId: logoutUser
      responses:
        '204':
          $ref: '#/components/responses/noContentResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /users/me:
    get:
      description: 'Must be authenticated to make this request, otherwise an unauthorized error

        is returned.'
      tags:
      - users
      summary: Returns currently logged in user.
      operationId: usersMe
      responses:
        '200':
          $ref: '#/components/responses/userResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /users/mini_me:
    get:
      description: 'Must be authenticated to make this request, otherwise an unauthorized error

        is returned.'
      tags:
      - users
      summary: Returns currently logged in user with minimal info.
      operationId: getMiniMe
      responses:
        '200':
          $ref: '#/components/responses/userResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /users/todays-activities:
    get:
      description: Returns today's activities for the owner
      tags:
      - users
      operationId: getTodaysActivities
      responses:
        '200':
          $ref: '#/components/responses/todaysActivitiesResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        default:
          $ref: '#/components/responses/genericError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
  /users/{id}:
    get:
      description: Return requested user model
      tags:
      - users
      operationId: getUserById
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/userResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
    patch:
      description: Update a user
      tags:
      - users
      operationId: updateUser
      parameters:
      - x-go-name: ID
        name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          $ref: '#/components/responses/userResponse'
        '400':
          $ref: '#/components/responses/badRequestError'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Profile'
  /users/{id}/owner-report-card:
    get:
      description: Returns statistics about the owner
      tags:
      - users
      operationId: ownerReportCard
      parameters:
      - name: Start
        in: query
        schema:
          type: string
      - name: End
        in: query
        schema:
          type: string
      - name: IncludeAllRentals
        in: query
        schema:
          type: boolean
      responses:
        '200':
          $ref: '#/components/responses/ownerReportCardResponse'
        '401':
          $ref: '#/components/responses/unauthorizedError'
        '404':
          $ref: '#/components/responses/notFoundError'
        default:
          $ref: '#/components/responses/genericError'
      security:
      - Bearer:
        - '[]'
      - API-Key:
        - '[]'
components:
  schemas:
    LocAvailabilityDay:
      type: object
      properties:
        dropoff:
          $ref: '#/components/schemas/LocAvailabilityInfo'
        pickup:
          $ref: '#/components/schemas/LocAvailabilityInfo'
      x-go-package: github.com/outdoorsy/api/internal/location
    User:
      description: 'A user is the security principal for this application.


        A user can be an owner, renter, agent or admin.'
      type: object
      title: User represents the user for this application
      properties:
        accept_percent:
          type: number
          format: double
          x-go-name: AcceptPercent
        accepted_tos_version:
          type: integer
          format: int64
          x-go-name: AcceptedTOSVersion
        accepted_tos_versions:
          type: array
          items:
            $ref: '#/components/schemas/TOS_Acceptance'
          x-go-name: AcceptedTOSVersions
        account_id:
          type:
          - string
          - 'null'
        active_quotes_count:
          type: integer
          format: int64
          x-go-name: ActiveQuotesCount
        active_reservations_count:
          description: Holds the count of active reservations and quotes for DOU
          type: integer
          format: int64
          x-go-name: ActiveReservationsCount
        addon_fee_percentage:
          type: number
          format: double
          x-go-name: AddonFeePercentage
        admin:
          type: boolean
          x-go-name: IsAdmin
        admin_level:
          type: integer
          format: int64
          x-go-name: AdminLevel
        api_key:
          type: string
          x-go-name: APIKey
        approved_drivers:
          type: boolean
          x-go-name: ApprovedDrivers
        archived:
          type:
          - boolean
          - 'null'
        auto_owner:
          type: boolean
          x-go-name: IsAutoOwner
        average_response_time:
          $ref: '#/components/schemas/NullFloat64'
        bank_country:
          type: string
          x-go-name: BankCountry
        banned:
          description: admin only
          type: boolean
          x-go-name: Banned
        campground_owner:
          type: boolean
          x-go-name: IsCampgroundOwner
        campground_user:
          type: boolean
          x-go-name: IsCampgroundUser
        can_accept_payments:
          type: boolean
          x-go-name: CanAcceptPaymentsField
        cash_credits:
          type: integer
          format: uint64
          x-go-name: OriginalCredits
        cc_fee_percentage:
          type: number
          format: double
          x-go-name: CCFeePercentage
        commercial_insurance:
          type: boolean
          x-go-name: CommercialInsurance
        completed_bookings:
          type: integer
          format: int64
          x-go-name: CompletedBookings
        confirmed:
          type: boolean
          x-go-name: Confirmed
        created:
          type: string
          x-go-name: Created
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        credits:
          type: integer
          format: uint64
          x-go-name: AvailableCredits
        csm_agent_id:
          description: User ID of the CSM agent assigned to the corresponding owner/dealer
          type: integer
          format: int64
          x-go-name: CSMAgentID
        deal_id:
          description: Deal ID used to store Hubspot deals
          type: string
          x-go-name: DealID
        dealer:
          description: dealer/employee support
          type: boolean
          x-go-name: Dealer
        deposits_disabled:
          type: boolean
          x-go-name: DepositsDisabled
        display_w9_reminder:
          type: boolean
          x-go-name: DisplayW9Reminder
        driver_checks_enabled:
          type: boolean
          x-go-name: DriverChecksEnabled
        drivers:
          type: array
          items:
            $ref: '#/components/schemas/Driver'
          x-go-name: AdditionalDrivers
        earned_credits:
          type: array
          items:
            $ref: '#/components/schemas/EarnedCredit'
          x-go-name: EarnedCredits
        employee:
          type: boolean
          x-go-name: Employee
        esign_enabled:
          type: boolean
          x-go-name: EsignEnabled
        fleet_api_key:
          type: string
          x-go-name: FleetAPIKey
        force_reconnect_bank:
          type: boolean
          x-go-name: ForceReconnectBank
        fraud_review_complete:
          type: boolean
          x-go-name: FraudReviewComplete
        fraudulent:
          type: boolean
          x-go-name: Fraudulent
        gps_device_data:
          $ref: '#/components/schemas/GpsDevicesData'
        group_on_map:
          type: boolean
          x-go-name: GroupOnMap
        guest:
          type: boolean
          x-go-name: Guest
        has_connected_gateway:
          description: 'Indicates to the FE that this user has a connected gateway and the

            Spreedly CC form should be used when adding renter CCs'
          type: boolean
          x-go-name: HasConnectedGateway
        has_gps_device:
          type: boolean
          x-go-name: HasGPSDevice
        has_notes_to_renters_migrated:
          type: boolean
          x-go-name: HasNotesToRentersMigrated
        has_setup_intent_enabled:
          type: boolean
          x-go-name: HasSetupIntentEnabled
        hidden:
          type: boolean
          x-go-name: Hidden
        host_type_by_rental_category:
          type: string
          x-go-name: HostTypeByRentalCategory
        host_type_by_rental_count:
          type: string
          x-go-name: HostTypeByRentalCount
        id:
          description: internal - server generated and not mutable by PATCH
          type: integer
          format: int64
          x-go-name: ID
        impersonated:
          type: boolean
          x-go-name: Impersonated
        import_id:
          type: string
          x-go-name: ImportID
        inactive_by:
          type: integer
          format: int64
          x-go-name: InactiveBy
        inactive_on:
          type: string
          x-go-name: InactiveOn
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        is_admin_managed_superhost:
          type: boolean
          x-go-name: IsAdminManagedSuperHost
        is_award_winner:
          type: boolean
          x-go-name: IsAwardWinner
        is_csm_agent:
          description: Represents if a user is CSM agent
          type: boolean
          x-go-name: IsCSMAgent
        is_military_host:
          type: boolean
          x-go-name: IsMilitaryHost
        is_superhost:
          description: SuperHost
          type: boolean
          x-go-name: IsSuperHost
        items:
          type: array
          items:
            $ref: '#/components/schemas/RentalItem'
          x-go-name: Items
        last_accessed_ip:
          type:
          - string
          - 'null'
        last_activity_at:
          type: string
          x-go-name: Accessed
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        legacy_tracking_device_count:
          type: integer
          format: int64
          x-go-name: LegacyTrackingDeviceCount
        metadata:
          $ref: '#/components/schemas/MSI'
        missing_fields:
          $ref: '#/components/schemas/DBStringSlice'
        num_reservations:
          type: integer
          format: int64
          x-go-name: NumReservations
        offer_roamly:
          type: boolean
          x-go-name: OfferRoamly
        offers_delivery:
          type: boolean
          x-go-name: OffersDelivery
        owned_by_id:
          type: integer
          format: int64
          x-go-name: OwnedByID
        owner:
          type: boolean
          x-go-name: IsOwner
        owner_fee_percentage:
          description: admin only
          type: number
          format: double
          x-go-name: OwnerFeePercentage
        owner_score:
          type: number
          format: double
          x-go-name: OwnerScore
        owner_score_count:
          type: integer
          format: int64
          x-go-name: OwnerReviewsCount
        partner_app_id:
          type:
          - integer
          - 'null'
          format: int64
        partner_id:
          type:
          - integer
          - 'null'
          format: int64
        payment_processing_info:
          description: internal - server generated and not sent to client
          type: array
          items:
            $ref: '#/components/schemas/PaymentProcessingInfo'
          x-go-name: PaymentProcessingInfo
        pending_email:
          type: string
          x-go-name: PendingEmail
        permissions:
          $ref: '#/components/schemas/DBBoolMap'
        pro:
          type: boolean
          x-go-name: Pro
        pro_status:
          $ref: '#/components/schemas/ProStatus'
        profile:
          $ref: '#/components/schemas/Profile'
        reconnect_bank:
          type: boolean
          x-go-name: ReconnectBank
        referral_code:
          type: string
          x-go-name: ReferralCode
        referred_by_id:
          type: integer
          format: int64
        referred_owner_paid:
          type: boolean
          x-go-name: ReferredOwnerPaid
        referred_owner_payout_amount:
          type: integer
          format: uint64
          x-go-name: ReferredOwnerPayoutAmount
        referred_renter_paid:
          type: boolean
          x-go-name: ReferredRenterPaid
        referred_renter_payout_amount:
          type: integer
          format: uint64
          x-go-name: ReferredRenterPayoutAmount
        renter:
          type: boolean
          x-go-name: IsRenter
        renter_fee_percentage:
          type: number
          format: double
          x-go-name: RenterFeePercentage
        require_w9_form:
          type: boolean
          x-go-name: RequireW9Form
        require_w9_to_accept_booking:
          type: boolean
          x-go-name: RequireW9ToAcceptBooking
        response_percent:
          $ref: '#/components/schemas/NullFloat64'
        roadside_missing:
          $ref: '#/components/schemas/DBStringSlice'
        roamly_carshare_user:
          type: boolean
          x-go-name: RoamlyCarshareUser
        roamly_policy_id:
          type: string
          x-go-name: RoamlyPolicyID
        roamly_policy_number:
          type: string
          x-go-name: RoamlyPolicyNumber
        roamly_status:
          type: string
          x-go-name: RoamlyStatus
        role:
          $ref: '#/components/schemas/Role'
        rv_owner:
          description: Host Rental Possession
          type: boolean
          x-go-name: IsRVOwner
        score:
          type: number
          format: double
          x-go-name: Score
        score_count:
          description: 'Only used by database triggers, not intended for use by

            anything in the application.  They''re listed here to make sure

            the migration system creates the columns.'
          type: integer
          format: int64
          x-go-name: ReviewsCount
        search_metrics_start_date:
          type: string
        security:
          $ref: '#/components/schemas/UserSecurity'
        self_serve_signup:
          type:
          - boolean
          - 'null'
        session_id:
          type: string
          x-go-name: SessionID
        show_gps_deprecation_warning:
          type: boolean
          x-go-name: ShowGpsDeprecationWarning
        signup_source:
          type: string
          x-go-name: SignupSource
        skip_w9_to_publish:
          type: boolean
          x-go-name: SkipW9ToPublish
        slug:
          type: string
          x-go-name: Slug
        sso:
          $ref: '#/components/schemas/SSO'
        stay_owner:
          type: boolean
          x-go-name: IsStayOwner
        superhost_cancel_rate:
          type: number
          format: double
          x-go-name: SuperHostCancelRate
        superhost_departed_bookings:
          type: integer
          format: int64
          x-go-name: SuperHostDepartedBookings
        superhost_last_assessment:
          type: string
          x-go-name: SuperHostLastAssessment
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        superhost_last_start_assessment:
          type: string
          x-go-name: SuperHostLastStartAssessment
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        superhost_response_rate:
          type: number
          format: double
          x-go-name: SuperHostResponseRate
        superhost_review_rate:
          type: number
          format: double
          x-go-name: SuperHostReviewRate
        superhost_reviewed_bookings:
          type: integer
          format: int64
          x-go-name: SuperHostReviewedBookings
        time_to_first_action:
          type: integer
          format: int64
          x-go-name: TimeToFirstAction
        tolls_enabled:
          type: boolean
          x-go-name: TollsEnabled
        tollspot_account_number:
          type: string
          x-go-name: TollSpotAccountNumber
        tollspot_account_status:
          type: string
          x-go-name: TollSpotAccountStatus
        tos_acceptance_date:
          type: string
          x-go-name: TOSAcceptanceDate
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        total_bookings:
          type: integer
          format: int64
          x-go-name: TotalBookings
        tracking:
          $ref: '#/components/schemas/Tracking'
        undelivered_emails_count:
          description: Indicates if there are undelivered emails for the last booking of DOU
          type: integer
          format: int64
          x-go-name: UndeliveredEmailsCount
        use_fees_increase:
          type:
          - boolean
          - 'null'
        use_insurance_bundles:
          type: boolean
          x-go-name: UseInsuranceBundles
        verifications:
          $ref: '#/components/schemas/Verifications'
        viewed_outdoorsy_host_beta:
          type: boolean
          x-go-name: ViewedOutdoorsyHostBeta
        viewed_roamly_ad:
          type: boolean
          x-go-name: ViewedRoamlyAd
        viewed_smart_match_banner:
          type: boolean
          x-go-name: ViewedSmartMatchBanner
        viewed_smart_pricing_banner:
          type: boolean
          x-go-name: ViewedSmartPricingBanner
        viewed_super_host_banner:
          type: boolean
          x-go-name: ViewedSuperHostBanner
        w9_completed_at:
          type: string
          x-go-name: W9CompletedAt
        w9_eligible:
          type: boolean
          x-go-name: W9Eligible
        w9_tax_form_completed:
          type: boolean
          x-go-name: W9TaxFormCompleted
        w9_tin_status:
          type: string
          x-go-name: W9TinStatus
        waive_w9_completion:
          type: boolean
          x-go-name: WaiveUserW9Completion
        wheelbase_fee:
          type:
          - integer
          - 'null'
          format: int64
      x-go-package: github.com/outdoorsy/api/model
    PaymentProcessorName:
      type: string
      x-go-package: github.com/outdoorsy/api/controller/broker
    IMap:
      type: object
      additionalProperties: {}
      x-go-package: github.com/outdoorsy/api/pkg/jsonb
    NotificationMobile:
      type: object
      properties:
        all:
          type: boolean
          x-go-name: All
      x-go-package: github.com/outdoorsy/api/internal/user_helper
    MSI:
      type: object
      additionalProperties: {}
      x-go-package: github.com/outdoorsy/api/internal/platform/db
    Locale:
      type: object
      properties:
        base_currency:
          type: string
          x-go-name: BaseCurrency
        date_format:
          type: string
          x-go-name: DateFormat
        distance_unit:
          type: string
          x-go-name: DistanceUnit
        language:
          type: string
          x-go-name: Language
        length_unit:
          type: string
          x-go-name: LengthUnit
        liquid_unit:
          type: string
          x-go-name: LiquidUnit
        time_format:
          type: string
          x-go-name: TimeFormat
        timezone:
          type: string
          x-go-name: Timezone
        weight_unit:
          type: string
          x-go-name: WeightUnit
      x-go-package: github.com/outdoorsy/api/model
    ProStatus:
      type: object
      properties:
        approval_rate:
          type: number
          format: double
          x-go-name: ApprovalRate
        bank_account:
          type: boolean
          x-go-name: BankAccount
        completed_points:
          type: integer
          format: int64
          x-go-name: CompletedPoints
        description:
          type: boolean
          x-go-name: Description
        eligible_insurance:
          type: boolean
          x-go-name: EligibleInsurance
        pending_rentals:
          type: array
          items:
            $ref: '#/components/schemas/ineligibleRental'
          x-go-name: PendingRentals
        pro:
          type: boolean
          x-go-name: Pro
        profile_percent_complete:
          type: integer
          format: int64
          x-go-name: ProfilePercentComplete
        rating:
          type: number
          format: double
          x-go-name: Rating
        response_time:
          type: integer
          format: int64
          x-go-name: ResponseTime
        response_time_rank:
          type: integer
          format: int64
          x-go-name: ResponseTimeRank
        total_points:
          type: integer
          format: int64
          x-go-name: TotalPoints
        verified_phone:
          type: boolean
          x-go-name: VerifiedPhone
      x-go-package: github.com/outdoorsy/api/model
    NotificationSMS:
      type: object
      properties:
        abandoned_checkout:
          type: boolean
          x-go-name: AbandonedCheckout
        bookings:
          type: boolean
          x-go-name: Bookings
        marketing:
          type: boolean
          x-go-name: Marketing
        messages:
          type: boolean
          x-go-name: Messages
      x-go-package: github.com/outdoorsy/api/internal/user_helper
    ineligibleRental:
      type: object
      properties:
        id:
          type: integer
          format: int64
          x-go-name: ID
        insurance_state:
          type: string
          x-go-name: InsuranceState
        name:
          type: string
          x-go-name: Name
      x-go-package: github.com/outdoorsy/api/model
    DBInterfaceMap:
      description: DBInterfaceMap is a map[string]interface{} with database conversion methods
      type: object
      additionalProperties: {}
      x-go-package: github.com/outdoorsy/api/utils
    PaymentProcessingInfo:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/PaymentAddress'
        archived:
          type: boolean
          x-go-name: Archived
        bank_address:
          type: string
          x-go-name: BankAddress
        bank_last_four:
          type: string
          x-go-name: BankLastFour
        bank_name:
          type: string
          x-go-name: BankName
        base_currency:
          type: string
          x-go-name: BaseCurrency
        can_accept_payments:
          description: Dynamic Fields
          type: boolean
          x-go-name: CanAcceptPayments
        can_archive_bank:
          type: boolean
          x-go-name: CanArchiveBank
        can_send_payments:
          type: boolean
          x-go-name: CanSendPayments
        capabilities:
          $ref: '#/components/schemas/DBInterfaceMap'
        created:
          type: string
          x-go-name: Created
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        customer_id:
          type: string
          x-go-name: CustomerID
        debit_agreement_date:
          type: string
          x-go-name: DebitAgreementDate
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        deposits_disabled:
          type: boolean
          x-go-name: DepositsDisabled
        form:
          type: object
          additionalProperties: {}
          x-go-name: Form
        fund_id:
          type: string
          x-go-name: FundID
        gateway_type:
          type: string
          x-go-name: GatewayType
        id:
          type: integer
          format: int64
          x-go-name: ID
        managed_account_id:
          type: string
          x-go-name: ManagedAccountID
        missing_fields:
          $ref: '#/components/schemas/DBStringSlice'
        missing_fields_change_description:
          type: array
          items:
            type: string
          x-go-name: MissingFieldsChangeDescription
        needs_migration:
          description: can be used to force an account to re-authorize their bank via plaid
          type: boolean
          x-go-name: NeedsMigration
        nickname:
          type: string
          x-go-name: Nickname
        notes:
          type: string
          x-go-name: Notes
        owner_id:
          type: integer
          format: int64
          x-go-name: OwnerID
        payment_processor:
          $ref: '#/components/schemas/PaymentProcessor'
        phone:
          type: string
          x-go-name: Phone
        reference_number:
          type: string
          x-go-name: ReferenceNumber
        sort_code:
          type: string
          x-go-name: SortCode
        status:
          type: string
          x-go-name: Status
        support_phone:
          type: string
          x-go-name: SupportPhone
        updated:
          type: string
          x-go-name: Updated
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
      x-go-package: github.com/outdoorsy/api/model
    EarnedCredit:
      type: object
      properties:
        amount:
          type: integer
          format: int64
          x-go-name: Amount
        booking_id:
          type:
          - integer
          - 'null'
          format: int64
        can_delete:
          type: boolean
          x-go-name: CanDelete
        can_edit:
          type: boolean
          x-go-name: CanEdit
        created:
          description: Created shadows the same field in internal.DBObject which has `created` timestamp side effects
          type: string
          x-go-name: Created
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        created_by_id:
          type:
          - integer
          - 'null'
          format: int64
        deleted:
          type: string
          x-go-name: Deleted
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        description:
          type: string
          x-go-name: Description
        expires:
          type: string
          x-go-name: Expires
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        has_children:
          type: boolean
          x-go-name: HasChildren
        id:
          type: integer
          format: int64
          x-go-name: ID
        metadata:
          $ref: '#/components/schemas/DBInterfaceMap'
        parent_id:
          type:
          - integer
          - 'null'
          format: int64
        referred_by_user_id:
          type:
          - integer
          - 'null'
          format: int64
        referred_user_id:
          type:
          - integer
          - 'null'
          format: int64
        source:
          type: string
        system_action:
          $ref: '#/components/schemas/Action'
        updated:
          type: string
          x-go-name: Updated
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        user_id:
          type: integer
          format: int64
          x-go-name: UserID
      x-go-package: github.com/outdoorsy/api/internal/earned_credit
    Profile:
      description: profile holds all profile information for a user
      type: object
      properties:
        address:
          $ref: '#/components/schemas/Address'
        affiliate_description:
          type: string
          x-go-name: AffiliateDescription
        anonymized_by:
          type: integer
          format: int64
          x-go-name: AnonymizedBy
        anonymized_on:
          type: string
          x-go-name: AnonymizedOn
          x-go-type: github.com/outdoorsy/api/clocks.RfcTime
        avatar_url:
          type: string
          x-go-name: AvatarURL
        bio:
          $ref: '#/components/schemas/Bio'
        birthdate:
          type: string
        booking_options:
          $ref: '#/components/schemas/BookingOptions'
        booking_restrictions:
          $ref: '#/components/schemas/BookingRestrictions'
        business:
          $ref: '#/components/schemas/Business'
        coaching_completed:
          type: boolean
          x-go-name: CoachingCompleted
        coaching_completed_on_date:
          type: string
        coaching_dismissed_count:
          type: integer
          format: int64
          x-go-name: CoachingDismissedCount
        dealer_locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
          x-go-name: DealerLocations
        disable_phone:
          type: boolean
          x-go-name: DisablePhone
        email:
          type: string
          x-go-name: Email
        employee_locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
          x-go-name: EmployeeLocations
        exclude_locations:
          $ref: '#/components/schemas/DBStringSlice'
        extra:
          $ref: '#/components/schemas/DBInterfaceMap'
        first_name:
          type: string
          x-go-name: FirstName
        gender:
          type: string
          x-go-name: Gender
        google_place_id:
          type: string
          x-go-name: GooglePlaceID
        guest_smart_match_opt_out:
          type: boolean
          x-go-name: GuestSmartMatchOptOut
        last_nam

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