Outdoorsy Messages API
The messages API from Outdoorsy — 3 operation(s) for messages.
The messages API from Outdoorsy — 3 operation(s) for messages.
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 Messages API
version: 0.0.1
servers:
- url: /v0
security:
- Bearer:
- '[]'
- API-Key:
- '[]'
tags:
- name: messages
paths:
/messages:
get:
description: Returns a list of messages based on search criteria
tags:
- messages
operationId: listMessages
parameters:
- name: OrderBy
in: query
schema:
type: string
- name: Offset
in: query
schema:
type: integer
format: int64
- name: Limit
in: query
schema:
type: integer
format: int64
- name: ConversationID
in: query
schema:
type: integer
format: int64
- name: UserID
in: query
schema:
type: integer
format: int64
- name: ReceiverID
in: query
schema:
type: integer
format: int64
- name: SenderID
in: query
schema:
type: integer
format: int64
- name: Sentiments
in: query
schema:
type: array
items:
type: string
- x-go-type: github.com/outdoorsy/api/clocks.RfcTime
name: From
in: query
schema:
type: string
- x-go-type: github.com/outdoorsy/api/clocks.RfcTime
name: To
in: query
schema:
type: string
- name: SkipBannedFilter
in: query
schema:
type: boolean
responses:
'200':
$ref: '#/components/responses/messagesResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
'404':
$ref: '#/components/responses/notFoundError'
default:
$ref: '#/components/responses/genericError'
post:
tags:
- messages
summary: Creates a new message as part of a conversation between owner and renter.
operationId: createMessage
responses:
'200':
$ref: '#/components/responses/messageResponse'
'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/Message'
/messages/twilio/sms:
get:
description: Returns the reply if someone responds to one of our twilio sms messages
tags:
- messages
operationId: getTwilioSmsReply
responses:
'200':
$ref: '#/components/responses/string'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
'404':
$ref: '#/components/responses/notFoundError'
default:
$ref: '#/components/responses/genericError'
/messages/{id}:
get:
description: Returns a message by id
tags:
- messages
operationId: getMessageById
parameters:
- x-go-name: ID
name: id
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/messageResponse'
'400':
$ref: '#/components/responses/badRequestError'
'401':
$ref: '#/components/responses/unauthorizedError'
'404':
$ref: '#/components/responses/notFoundError'
default:
$ref: '#/components/responses/genericError'
patch:
description: Marks a message as being read or unread
tags:
- messages
operationId: updateMessage
parameters:
- x-go-name: ID
name: id
in: path
required: true
schema:
type: integer
format: int64
responses:
'200':
$ref: '#/components/responses/messageResponse'
'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/MessageUpdate'
components:
schemas:
Message:
type: object
properties:
actor_id:
type: integer
format: int64
archived:
type: boolean
x-go-name: Archived
booking:
$ref: '#/components/schemas/MinBooking'
booking_summary:
$ref: '#/components/schemas/BookingSummary'
clicked:
type: string
x-go-name: Clicked
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
conversation_id:
type: integer
format: int64
destination_data:
$ref: '#/components/schemas/RenterDestinationData'
file_urls:
type: array
items:
type: string
x-go-name: FileURLs
files:
$ref: '#/components/schemas/DBIntSlice'
flagged:
type:
- boolean
- 'null'
flagged_text:
type:
- string
- 'null'
from_email:
type:
- string
- 'null'
id:
type: integer
format: int64
x-go-name: ID
image:
type:
- string
- 'null'
latest_status:
type:
- string
- 'null'
opened:
type: string
x-go-name: Opened
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
origin:
type:
- string
- 'null'
proxy_interaction_id:
type:
- string
- 'null'
read:
type: boolean
x-go-name: Read
receiver_id:
type: integer
format: int64
ref_booking_id:
type: integer
format: int64
x-go-name: RefBookingID
ref_rental_id:
type: integer
format: int64
x-go-name: RefRentalID
rental_summary:
x-go-name: RentalSummary
sender_id:
type: integer
format: int64
sentiment:
type: string
x-go-name: Sentiment
sentiment_confidence:
type: number
format: double
x-go-name: SentimentConfidence
spam:
type: boolean
x-go-name: Spam
system:
type: boolean
x-go-name: System
template:
type: string
x-go-name: Template
text:
type: string
x-go-name: Text
timestamp:
type: string
x-go-name: Timestamp
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
x-go-package: github.com/outdoorsy/api/model
RenterDestinationData:
type: object
properties:
region:
type: string
x-go-name: Region
spot_types:
type: array
items:
type: string
x-go-name: SpotTypes
stops:
type: array
items:
type: string
x-go-name: Stops
x-go-package: github.com/outdoorsy/api/types
BookingTaxRate:
type: object
properties:
booking_id:
type: integer
format: int64
x-go-name: BookingID
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
deleted:
type: boolean
x-go-name: Deleted
id:
type: integer
format: int64
x-go-name: ID
object_id:
type: integer
format: int64
x-go-name: ObjectID
object_type:
type: string
x-go-name: ObjectType
payable_to:
type: string
x-go-name: PayableTo
source:
type: string
x-go-name: Source
state:
type: string
x-go-name: State
tax_amount:
type: integer
format: int64
x-go-name: Amount
tax_description:
type: string
x-go-name: Description
tax_name:
type: string
x-go-name: Name
tax_rate:
type: number
format: double
x-go-name: Rate
tax_rate_id:
type: integer
format: int64
x-go-name: TaxRateID
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
zip_code:
type: string
x-go-name: ZipCode
x-go-package: github.com/outdoorsy/api/internal/tax_rates
AttentionItem:
type: object
properties:
data:
$ref: '#/components/schemas/AttentionItemData'
is_actionable:
type: boolean
x-go-name: IsActionable
type:
type: string
x-go-name: Type
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
DBIntSlice:
description: DBIntSlice is a []int with database conversion methods
type: array
items:
type: integer
format: int64
x-go-package: github.com/outdoorsy/api/utils
MinBooking:
type: object
properties:
attention_items:
type: array
items:
$ref: '#/components/schemas/AttentionItem'
x-go-name: Attention
conversation_id:
type: integer
format: int64
x-go-name: ConversationID
created:
type: string
details:
$ref: '#/components/schemas/DBInterfaceMap'
display_status:
type: string
x-go-name: DisplayStatus
display_status_style:
type: string
x-go-name: DisplayStatusStyle
from:
type: string
id:
type: integer
format: int64
x-go-name: ID
instant_book:
type: boolean
x-go-name: InstantBook
is_actionable:
type: boolean
x-go-name: IsActionable
items:
type: array
items:
$ref: '#/components/schemas/BookingItem'
x-go-name: Items
locale:
$ref: '#/components/schemas/BookingLocale'
owner_approved:
type: boolean
x-go-name: OwnerApproved
owner_payout:
type: integer
format: int64
x-go-name: OwnerPayout
passengers:
type: array
items:
$ref: '#/components/schemas/BookingDriver'
x-go-name: Passengers
rental:
$ref: '#/components/schemas/RentalSummary'
renter:
$ref: '#/components/schemas/UserPartial'
renter_approved:
type: boolean
x-go-name: RenterApproved
stage:
type: string
x-go-name: Stage
status:
type: string
x-go-name: Status
to:
type: string
total:
type: integer
format: int64
x-go-name: Total
updated:
type: string
waiver_summary:
$ref: '#/components/schemas/WaiverSummary'
x-go-package: github.com/outdoorsy/api/model
WaiverSummary:
type: object
properties:
description:
type: string
x-go-name: Description
owner_completed:
type: boolean
x-go-name: OwnerCompleted
owner_terms:
type: string
x-go-name: OwnerTerms
renter_completed:
type: boolean
x-go-name: RenterCompleted
renter_confirmation_description:
type: string
x-go-name: RenterConfirmationDescription
renter_confirmation_title:
type: string
x-go-name: RenterConfirmationTitle
renter_terms:
type: string
x-go-name: RenterTerms
x-go-package: github.com/outdoorsy/api/types
BookingDriver:
description: BookingDriver is the driver(s) of the 'rv' rental or the renter of the 'stay' rental
type: object
properties:
age_verified:
type: boolean
x-go-name: AgeVerified
avatar_url:
type: string
x-go-name: AvatarURL
birthdate:
type: string
booking_id:
type: integer
format: int64
x-go-name: BookingID
checkr_trust_verified:
type: boolean
x-go-name: CheckrTrustVerified
checks:
type: array
items:
$ref: '#/components/schemas/BookingDriverCheck'
x-go-name: Checks
driver_check_verified:
type: boolean
x-go-name: DriverCheckVerified
driver_verification_status:
type: string
x-go-name: DriverVerificationStatus
email:
type: string
x-go-name: Email
evident_check_verified:
type: boolean
x-go-name: EvidentCheckVerified
first_name:
type: string
x-go-name: FirstName
has_driving_record_check:
type: boolean
x-go-name: HasDrivingRecordCheck
id:
type: integer
format: int64
x-go-name: ID
invite_status:
type: string
x-go-name: InviteStatus
last_name:
type: string
x-go-name: LastName
legacy_driver:
type: boolean
x-go-name: LegacyDriver
named_passenger:
type: boolean
x-go-name: NamedPassenger
owned_by_id:
type: integer
format: int64
x-go-name: OwnedByID
persona_check_verified:
type: boolean
x-go-name: PersonaCheckVerified
require_evident:
type: boolean
x-go-name: RequireEvident
require_persona:
type: boolean
x-go-name: RequirePersona
roamly_risk_check_verified:
type: boolean
x-go-name: RoamlyRiskCheckVerified
role:
description: attrs from Passenger struct so frontend can treat them the same
type: string
x-go-name: Role
show_persona_flow:
type: boolean
x-go-name: ShowPersonaFlow
tessera_check_verified:
type: boolean
x-go-name: TesseraCheckVerified
tint_check_verified:
type: boolean
x-go-name: TintCheckVerified
token:
type: string
x-go-name: ConfirmationToken
validation_status:
type: string
x-go-name: ValidationStatus
verified:
type: boolean
x-go-name: Verified
verified_checks_count:
type: integer
format: int64
x-go-name: VerifiedChecksCount
x-go-package: github.com/outdoorsy/api/internal/booking_helper
NoticeResponse:
type: object
properties:
guest_acknowledgement_text:
type: string
x-go-name: GuestAcknowledgementText
guest_need_to_acknowledge:
type: boolean
x-go-name: GuestNeedToAcknowledge
guest_user_text:
type: string
x-go-name: GuestUserText
host_acknowledgement_text:
type: string
x-go-name: HostAcknowledgementText
host_help_url:
type: string
x-go-name: HostHelpUrl
host_need_to_acknowledge:
type: boolean
x-go-name: HostNeedToAcknowledge
host_user_text:
type: string
x-go-name: HostUserText
id:
type: integer
format: int64
x-go-name: ID
name:
type: string
x-go-name: Name
x-go-package: github.com/outdoorsy/api/internal/user_notice_events
MessageUpdate:
type: object
properties:
read:
type: boolean
x-go-name: Read
x-go-package: github.com/outdoorsy/api/cmd/web/handlers
ISlice:
type: array
items: {}
x-go-package: github.com/outdoorsy/api/pkg/jsonb
BookingDriverCheck:
type: object
properties:
arguments:
type: object
additionalProperties: {}
x-go-name: Arguments
country:
type: string
x-go-name: Country
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
display_status:
description: checkr and sterling specific
type: string
x-go-name: DisplayStatus
external_id:
type: string
x-go-name: ExternalID
failure_reason:
type: string
x-go-name: FailureReason
forced_approval_by:
type: string
x-go-name: ForcedApprovalBy
forced_approval_reason:
type: string
x-go-name: ForcedApprovalReason
forced_failure_by:
type: integer
format: int64
x-go-name: ForcedFailureBy
forced_failure_reason:
type: string
x-go-name: ForcedFailureReason
id:
type: integer
format: int64
x-go-name: ID
is_old_enough:
type: boolean
x-go-name: IsOldEnough
last_created:
type: string
x-go-name: LastCreated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
license_state:
type: string
x-go-name: LicenseState
method:
type: string
x-go-name: Method
ofac_sdn_score:
type: number
format: double
x-go-name: OFACScore
rv_length:
type: string
x-go-name: RVLength
score:
description: tint specific
type: integer
format: int64
x-go-name: Score
status:
type: string
x-go-name: Status
theft_score:
type: integer
format: int64
x-go-name: TheftScore
validation_id:
type: string
x-go-name: ValidationID
verification_upload_link:
type: string
x-go-name: VerificationUploadLink
verified:
type: boolean
x-go-name: Verified
x-go-package: github.com/outdoorsy/api/internal/booking_helper
DailyChange:
type: object
properties:
date:
type: string
x-go-name: Date
price:
type: integer
format: int64
x-go-name: Price
rules:
$ref: '#/components/schemas/ISlice'
x-go-package: github.com/outdoorsy/api/internal/booking_price_log
CampsiteSummary:
type: object
properties:
beds:
type: integer
format: int64
x-go-name: Beds
campground_id:
type: integer
format: int64
x-go-name: CampgroundID
campground_name:
type: string
x-go-name: CampgroundName
campground_sitemap_url:
type: string
x-go-name: CampgroundSiteMapURL
display_campsite_type:
type: string
x-go-name: DisplayCampsiteType
display_max_vehicle_length:
type: string
x-go-name: DisplayMaxVehicleLength
display_site_type:
type: string
x-go-name: DisplaySiteType
is_odn:
type: boolean
x-go-name: IsOdn
rental_id:
type: integer
format: int64
x-go-name: RentalID
site_type:
type: string
x-go-name: SiteType
sleeps:
type: integer
format: int64
x-go-name: Sleeps
type:
type: string
x-go-name: CategoryType
x-go-package: github.com/outdoorsy/api/types
BookingSummary:
type: object
properties:
from:
type: string
id:
type: integer
format: int64
x-go-name: ID
to:
type: string
x-go-package: github.com/outdoorsy/api/types
StaySummary:
type: object
properties:
baths:
type: integer
format: int64
x-go-name: Baths
bedrooms:
type: integer
format: int64
x-go-name: Bedrooms
beds:
type: integer
format: int64
x-go-name: Beds
check_in_type:
type: string
x-go-name: CheckInType
display_stay_type:
type: string
x-go-name: DisplayStayType
location_description:
type: string
x-go-name: LocationDescription
max_parking_spaces:
type: integer
format: int64
x-go-name: MaxParkingSpaces
parking_onsite:
type: boolean
x-go-name: ParkingOnsite
rental_id:
type: integer
format: int64
x-go-name: RentalID
sleeps:
type: integer
format: int64
x-go-name: Sleeps
type:
type: string
x-go-name: Type
x-go-package: github.com/outdoorsy/api/types
RentalSummary:
type: object
properties:
campsite_summary:
$ref: '#/components/schemas/CampsiteSummary'
disallow_movement:
type: boolean
x-go-name: DisallowMovement
display_type:
type: string
x-go-name: DisplayType
formatted_length:
type: string
x-go-name: FormattedLength
id:
type: integer
format: int64
x-go-name: ID
interior_primary_image_url:
type: string
x-go-name: InteriorPrimaryImageURL
internal_id:
type: string
x-go-name: InternalID
location:
type: string
x-go-name: Location
name:
type: string
x-go-name: Name
primary_image_url:
type: string
x-go-name: PrimaryImageURL
rental_category:
type: string
x-go-name: RentalCategory
sleeps:
type: integer
format: int64
x-go-name: Sleeps
slug:
type: string
x-go-name: Slug
stay_summary:
$ref: '#/components/schemas/StaySummary'
style:
type: string
x-go-name: Style
type:
type: string
x-go-name: Type
x-go-package: github.com/outdoorsy/api/types
UserPartial:
type: object
properties:
avatar_url:
type: string
x-go-name: AvatarURL
business_name:
type: string
x-go-name: BusinessName
email:
type: string
x-go-name: Email
first_name:
type: string
x-go-name: FirstName
id:
type: integer
format: int64
x-go-name: ID
last_name:
type: string
x-go-name: LastName
phone:
type: string
x-go-name: Phone
x-go-package: github.com/outdoorsy/api/pkg/zapier
Proposal:
type: object
properties:
action:
type: string
x-go-name: Action
booking_id:
type: integer
format: int64
x-go-name: BookingID
created:
type: string
x-go-name: Created
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
daily_changes:
type: array
items:
$ref: '#/components/schemas/DailyChange'
x-go-name: DailyChanges
details:
$ref: '#/components/schemas/DBInterfaceMap'
dry_create:
type: boolean
x-go-name: DryCreate
future_booking:
x-go-name: FutureBooking
id:
type: integer
format: int64
x-go-name: ID
note:
type: string
x-go-name: Note
object_id:
type: integer
format: uint64
x-go-name: ObjectID
object_type:
type: string
x-go-name: ObjectType
owner_acknowledged:
type: string
x-go-name: OwnerAcknowledged
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
owner_id:
type: integer
format: int64
x-go-name: OwnerID
renter_acknowledged:
type: string
x-go-name: RenterAcknowledged
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
renter_dismissed:
type: string
x-go-name: RenterDismissed
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
status:
type: string
x-go-name: Status
updated:
type: string
x-go-name: Updated
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
user_notice_events:
type: array
items:
$ref: '#/components/schemas/NoticeResponse'
x-go-name: UserNoticeEvents
user_notices_acknowledged:
type: array
items:
type: integer
format: int64
x-go-name: UserNoticesAcknowledged
x-go-package: github.com/outdoorsy/api/internal/proposal
BookingLocale:
type: object
properties:
base_currency:
type: string
x-go-name: BaseCurrency
distance_unit:
type: string
x-go-name: DistanceUnit
x-go-package: github.com/outdoorsy/api/model
BookingItem:
type: object
properties:
_deleted:
description: special flag for handling batch update/delete
type: boolean
x-go-name: BatchDeleted
booking_id:
type: integer
format: int64
coachnet_item:
type: boolean
x-go-name: CoachnetItem
consigned_pay_amount:
type: integer
format: int64
x-go-name: ConsignedPayAmount
count:
type: integer
format: uint64
x-go-name: Count
created:
$ref: '#/components/schemas/NullTime'
daily:
type: boolean
x-go-name: Daily
deferred:
type: boolean
x-go-name: Deferred
deferred_total:
type:
- integer
- 'null'
format: int64
deleted_at:
$ref: '#/components/schemas/NullTime'
delivery:
type: boolean
x-go-name: Delivery
description:
type: string
x-go-name: Description
discount_amount:
type: integer
format: int64
x-go-name: DiscountAmount
generator:
type: boolean
x-go-name: Generator
id:
type: integer
format: int64
x-go-name: ID
image_url:
type: string
x-go-name: ImageURL
maximum_price:
type:
- integer
- 'null'
format: int64
mileage:
type: boolean
x-go-name: Mileage
minimum_price:
type:
- integer
- 'null'
format: int64
name:
type: string
x-go-name: Name
original_consigned_pay_pct:
description: consigned owner support
type: number
format: double
x-go-name: OriginalConsignedPayPct
original_tax_rate_id:
type: integer
format: int64
x-go-name: OriginalTaxRateID
other_claim:
type: boolean
x-go-name: OtherClaim
outdoorsy_item:
type: boolean
x-go-name: OutdoorsyItem
parent_item_id:
type: integer
format: int64
x-go-name: ParentItemID
parent_item_type:
type: string
x-go-name: ParentItemType
percent:
type: number
format: double
x-go-name: Percent
percent_type:
type: string
x-go-name: PercentType
position:
type: integer
format: int64
x-go-name: Position
premium_amount:
type: integer
format: int64
x-go-name: PremiumAmount
premium_total:
type: integer
format: int64
x-go-name: PremiumTotal
price:
type: integer
format: int64
x-go-name: Price
rental_amount:
description: mutation modifiers
type: boolean
x-go-name: RentalAmount
required:
type: boolean
x-go-name: Required
tax_amount:
type: integer
format: int64
x-go-name: TaxAmount
tax_description:
type: string
x-go-name: TaxDescription
tax_name:
type: string
x-go-name: TaxName
tax_rate:
type: number
format: double
x-go-name: TaxRate
tax_rates:
type: array
items:
$ref: '#/components/schemas/BookingTaxRate'
x-go-name: TaxRates
total:
type: integer
format: int64
x-go-name: Total
updated:
$ref: '#/components/schemas/NullTime'
x-go-package: github.com/outdoorsy/api/model
NullTime:
description: 'NullTime represents a time.Time that may be null. NullTime implements the
sql.Scanner interface so it can be used as a scan destination, similar to
sql.NullString.'
type: object
properties:
Time:
type: string
format: date-time
Valid:
type: boolean
x-go-package: github.com/lib/pq
AttentionItemData:
type: object
properties:
auto_expires:
type: boolean
x-go-name: AutoExpires
completed_at:
type: string
x-go-name: CompletedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
confirmation_message:
type: string
x-go-name: ConfirmationMessage
conversation_first_message:
type: integer
format: int64
created_at:
type: string
x-go-name: CreatedAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
daily:
type: boolean
x-go-name: Daily
description:
type: string
x-go-name: Description
expires_at:
type: string
x-go-name: ExpiresAt
x-go-type: github.com/outdoorsy/api/clocks.RfcTime
from:
type: string
group_item_details:
type: array
items:
$ref: '#/components/schemas/Proposal'
x-go-name: GroupItemDetails
id:
type: integer
format: int64
x-go-name: ID
message:
type: string
x-go-name: Message
name:
type: string
x-go-name: Name
price:
type: integer
format: int64
x-go-name: Price
quantity:
type: integer
format: int64
x-go-name: Quantity
rental_amount:
type: integer
format: int64
x-go-name: RentalAmount
to:
type: string
total:
type: integer
format: int64
x
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/outdoorsy/refs/heads/main/openapi/outdoorsy-messages-api-openapi.yml