Outdoorsy API

The core Outdoorsy REST API (Trailblazer Partner API). Resource-oriented URLs, standard HTTP verbs and response codes, semantic versioning, and 283 operations across rentals, bookings, booking proposals and items, quotes, availability, users, conversations and messaging, reviews, wishlists and favorites, banks and payouts, transactions, bundles, gift cards, ICS calendars, locations, usage-based items and admin/validation tooling.

OpenAPI Specification

outdoorsy-openapi-original.json Raw ↑
{
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "swagger": "2.0",
  "info": {
    "description": "The Outdoorsy API (or simply \"API\") is organized around REST. It uses\npredictable, resource-oriented URLs and implements standard HTTP response\ncodes, verbs, authentication mechanisms, and a variety of request encodings.\n\n## Versioning\n\nThe API implements semantic versioning.",
    "title": "Outdoorsy API Documentation",
    "version": "0.0.1"
  },
  "basePath": "/v0",
  "paths": {
    "/2fa/send": {
      "post": {
        "description": "Create and send verification code",
        "tags": [
          "twoFactorAuth"
        ],
        "operationId": "sendCode",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/TwoFARequest"
            }
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/successResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          }
        }
      }
    },
    "/2fa/setup-method": {
      "post": {
        "description": "Setup preferred method",
        "tags": [
          "twoFactorAuth"
        ],
        "operationId": "setupPreferredMethod",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/TwoFASetupMethod"
            }
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/successResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          }
        }
      }
    },
    "/2fa/verify": {
      "patch": {
        "description": "Verify code",
        "tags": [
          "twoFactorAuth"
        ],
        "operationId": "verifyCode",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/VerifyCodeRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/successResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          }
        }
      }
    },
    "/admin/ai-reply-suggestions": {
      "get": {
        "description": "Returns a paginated list of AI-generated reply suggestions for the specified conversation.\nSuggestions are ordered by creation date in descending order (newest first).\nRequires conversation_id query parameter. Supports pagination via offset and limit.\nFilter by confidence level with threshold_min and threshold_max (inclusive); if omitted,\nthreshold_min defaults to 0 and threshold_max defaults to 1.\nAdmin access required.",
        "tags": [
          "conversations"
        ],
        "summary": "List AI reply suggestions for a conversation.",
        "operationId": "listAiReplySuggestions",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "name": "Offset",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "Limit",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "name": "ThresholdMin",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "name": "ThresholdMax",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "ConversationID",
            "name": "conversation_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/aiReplySuggestionsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/announcement-groups": {
      "get": {
        "description": "Lists all announcement groups (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "readManyAnnouncementGroups",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "AnnouncementID",
            "name": "announcement_id",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "UserID",
            "name": "user_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/readManyAnnouncementGroupsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      },
      "post": {
        "description": "Creates a new announcement group (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "createAnnouncementGroup",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/CreateUpdateAnnouncementGroupRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/createAnnouncementGroupResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/announcement-groups/{announcement_group_id}": {
      "get": {
        "description": "Gets a specific announcement group by ID (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "readOneAnnouncementGroup",
        "responses": {
          "200": {
            "$ref": "#/responses/readOneAnnouncementGroupResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      },
      "delete": {
        "description": "Deletes an announcement (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "deleteAnnouncementGroup",
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      },
      "patch": {
        "description": "Updates an announcement (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "updateAnnouncementGroup",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/CreateUpdateAnnouncementGroupRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/announcements": {
      "get": {
        "description": "Lists all announcements (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "readManyAnnouncements",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "UserId",
            "name": "user_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/readManyAnnouncementsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      },
      "post": {
        "description": "Creates a new announcement (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "createAnnouncement",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/CreateUpdateAnnouncementRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/responses/createAnnouncementResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/announcements/{announcement_id}": {
      "get": {
        "description": "Gets a specific announcement by ID (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "readOneAnnouncement",
        "responses": {
          "200": {
            "$ref": "#/responses/readOneAnnouncementResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      },
      "delete": {
        "description": "Deletes an announcement (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "deleteAnnouncement",
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      },
      "patch": {
        "description": "Updates an announcement (admin only)",
        "tags": [
          "announcements"
        ],
        "operationId": "updateAnnouncement",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/CreateUpdateAnnouncementRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/users/banks/payouts-triggered": {
      "get": {
        "description": "List all payment processing infos with payouts-triggered missing field (admin only)",
        "tags": [
          "banks"
        ],
        "operationId": "getBanksWithPayoutsTriggered",
        "responses": {
          "200": {
            "$ref": "#/responses/listBankResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "403": {
            "$ref": "#/responses/forbiddenError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/users/banks/update": {
      "post": {
        "description": "Updates the specified connected bank",
        "tags": [
          "banks"
        ],
        "operationId": "updateBankAccount",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "ID",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/VendorBody"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/responses/bankResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/users/{user_id}/resend-confirmation": {
      "post": {
        "description": "Resends email confirmation for a specific user (Admin only)",
        "tags": [
          "admin"
        ],
        "operationId": "adminAuthCredsResendForUser",
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/admin/validations": {
      "get": {
        "tags": [
          "validations"
        ],
        "summary": "Returns a list of validations in the system.",
        "operationId": "adminListValidations",
        "parameters": [
          {
            "type": "string",
            "description": "A hash[string]string object containing the fields you wish to query on. If the field names and values match an entry exactly, that entry will be returned. For example, this could be used to fetch a specific tint validation row by sending `{\"booking_id\":\"1234\",\"driver_id\":\"5678\",\"validator\":\"tint\"}`",
            "name": "args",
            "in": "query"
          },
          {
            "type": "string",
            "description": "A hash[string]string object containing the fields you wish to query on. If the field names and values are contained by one or more entries, those entries will be returned. For example, this could be used to fetch all tint validations for a specific booking by sending `{\"booking_id\":\"1234\",\"validator\":\"tint\"}`",
            "name": "contains_args",
            "in": "query"
          },
          {
            "type": "string",
            "description": "The status on which you wish to filter. Valid options are `pending, processing, passed, flagged, error, failed`",
            "name": "status",
            "in": "query"
          },
          {
            "type": "string",
            "description": "The validator on which you wish to filter. Valid options are `tint`.",
            "name": "validator",
            "in": "query"
          },
          {
            "type": "string",
            "description": "The order in which to return results. Typically you may pass the name of a field in the object to order by that field ASC. If you want DESC, prepend the name with `-`",
            "name": "order_by",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "Returns list of results for a given limit.",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "Returns list of results for a given offset.",
            "name": "offset",
            "in": "query"
          }
        ]
      }
    },
    "/admin/validations/{id}": {
      "get": {
        "tags": [
          "validations"
        ],
        "summary": "Returns a validation in the system by its ID.",
        "operationId": "adminGetValidation",
        "parameters": [
          {
            "pattern": "^[a-f\\\\d]{24}$",
            "type": "string",
            "description": "A 24 character hex-encoded ObjectID value.",
            "name": "id",
            "in": "path",
            "required": true
          }
        ]
      },
      "delete": {
        "tags": [
          "validations"
        ],
        "summary": "Flags a validation as deleted.",
        "operationId": "adminDeleteValidation",
        "parameters": [
          {
            "pattern": "^[a-f\\\\d]{24}$",
            "type": "string",
            "description": "A 24 character hex-encoded ObjectID value.",
            "name": "id",
            "in": "path",
            "required": true
          }
        ]
      }
    },
    "/admin/validations/{id}/duplicate": {
      "post": {
        "tags": [
          "validations"
        ],
        "summary": "Duplicates a validation, overwriting its arguments to copy its data to another object in the system. This is intended to be used when creating a more specific version of a validation. For example, a user-level validation that needs to be \\\"locked\\\" to a booking by using a user_id,booking_id tuple. Send the tuple you wish this duplicate to use as its identifier as the new_args key in the body.",
        "operationId": "adminDuplicateValidation",
        "parameters": [
          {
            "pattern": "^[a-f\\\\d]{24}$",
            "type": "string",
            "description": "A 24 character hex-encoded ObjectID value.",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "$ref": "#/definitions/adminDuplicateValidationRequest",
            "name": "body",
            "in": "body",
            "required": true
          }
        ]
      }
    },
    "/admin/validations/{id}/force": {
      "post": {
        "tags": [
          "validations"
        ],
        "summary": "Forces an validation into a `passed` state.",
        "operationId": "adminForceValidationApproval",
        "parameters": [
          {
            "pattern": "^[a-f\\\\d]{24}$",
            "type": "string",
            "description": "A 24 character hex-encoded ObjectID value.",
            "name": "id",
            "in": "path",
            "required": true
          }
        ]
      }
    },
    "/admin/validations/{id}/history": {
      "get": {
        "tags": [
          "validations"
        ],
        "summary": "Returns the historical list of validation entries.",
        "operationId": "adminGetValidationHistoryByID",
        "parameters": [
          {
            "pattern": "^[a-f\\\\d]{24}$",
            "type": "string",
            "description": "A 24 character hex-encoded ObjectID value.",
            "name": "id",
            "in": "path",
            "required": true
          }
        ]
      }
    },
    "/admin/validations/{id}/retry": {
      "post": {
        "tags": [
          "validations"
        ],
        "summary": "Retry a validation request if failed or error",
        "operationId": "adminRetryValidation",
        "parameters": [
          {
            "pattern": "^[a-f\\\\d]{24}$",
            "type": "string",
            "description": "A 24 character hex-encoded ObjectID value.",
            "name": "id",
            "in": "path",
            "required": true
          }
        ]
      }
    },
    "/aggregate-reviews-for-locality": {
      "get": {
        "description": "Return a aggregation for reviews for given locality",
        "tags": [
          "reviews"
        ],
        "operationId": "aggregateLocalityReviews",
        "parameters": [
          {
            "type": "number",
            "format": "double",
            "x-go-name": "Lat",
            "name": "lat",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "x-go-name": "Lng",
            "name": "lng",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "LocalityType",
            "name": "locality_type",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "RegionCode",
            "name": "region_code",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "RentalCategory",
            "name": "rental_category",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/aggregateLocalityReviewsResponse"
          }
        }
      }
    },
    "/amenities": {
      "get": {
        "description": "Returns a list of amenities and the group they belong to",
        "tags": [
          "amenities"
        ],
        "operationId": "listAmenitiesGroups",
        "responses": {
          "200": {
            "$ref": "#/responses/amenitiesResponse"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/announcements": {
      "get": {
        "description": "Gets announcements for current user",
        "tags": [
          "announcements"
        ],
        "operationId": "getAnnouncementsForUser",
        "responses": {
          "200": {
            "$ref": "#/responses/getAnnouncementsForUserResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/announcements/{announcement_id}": {
      "get": {
        "description": "Gets a specific announcement by ID",
        "tags": [
          "announcements"
        ],
        "operationId": "getAnnouncementForID",
        "responses": {
          "200": {
            "$ref": "#/responses/getAnnouncementForUserResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/announcements/{announcement_id}/read": {
      "post": {
        "description": "Marks an announcement as read for the current user",
        "tags": [
          "announcements"
        ],
        "operationId": "markAnnouncementAsRead",
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/auth/creds/create": {
      "post": {
        "description": "If no password is provided then user is considered a guest.",
        "tags": [
          "auth"
        ],
        "summary": "Register a new user given a name and email address.",
        "operationId": "authCredsCreate",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/UserCreateRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/authCreateResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/auth/creds/forgot": {
      "post": {
        "description": "Sends email to registered email with password reset instructions",
        "tags": [
          "auth"
        ],
        "operationId": "authCredsForget",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/PasswordForgotRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/responses/noContentResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/auth/creds/login": {
      "post": {
        "tags": [
          "auth"
        ],
        "operationId": "authCredsLogin",
        "parameters": [
          {
            "name": "Body",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/UserLoginRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/userAuthResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/auth/creds/resend": {
      "post": {
        "description": "Resends password reset email",
        "tags": [
          "auth"
        ],
        "operationId": "authCredsResend",
        "responses": {
          "200": {
            "$ref": "#/responses/noContentResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/auth/dealers/create": {
      "post": {
        "description": "Creates a dealer account for unauthenticated users through the self-serve signup flow.\nThe dealer will need to complete email verification and subscription payment before\ngaining full access to Wheelbase.",
        "tags": [
          "auth"
        ],
        "summary": "Register a new self-serve dealer account.",
        "operationId": "authDealersSelfServeCreate",
        "responses": {
          "201": {
            "$ref": "#/responses/userAuthResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          },
          "default": {
            "$ref": "#/responses/genericError"
          }
        }
      }
    },
    "/auth/{provider}/callback": {
      "get": {
        "tags": [
          "auth"
        ],
        "summary": "Redirect endpoint after performing oauth flow with facebook, google, apple.",
        "operationId": "oauthCallback",
        "parameters": [
          {
            "enum": [
              "google",
              "facebook",
              "apple"
            ],
            "type": "string",
            "name": "provider",
            "in": "path",
            "required": true
          }
        ]
      }
    },
    "/auth/{provider}/login": {
      "get": {
        "description": "Redirects to respective identity provider.",
        "tags": [
          "auth"
        ],
        "summary": "Entry point for starting oauth flow with specified provider.",
        "operationId": "oauthLogin",
        "parameters": [
          {
            "enum": [
              "google",
              "facebook"
            ],
            "type": "string",
            "name": "provider",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/autosuggestions": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "Returns a breakdown of previous rentals, bookings or pending reviews.",
        "operationId": "getAutosuggestions",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "UserID",
            "name": "user_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/getAutosuggestionsResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          }
        }
      }
    },
    "/availability": {
      "get": {
        "tags": [
          "rentals"
        ],
        "summary": "Returns list of available rentals for a given date range.",
        "operationId": "listAvailability",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "RentalID",
            "name": "rental_id",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "OwnerID",
            "name": "owner_id",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "CampgroundID",
            "name": "campground_id",
            "in": "query"
          },
          {
            "x-go-name": "From",
            "name": "from",
            "in": "query",
            "type": "string"
          },
          {
            "x-go-name": "To",
            "name": "to",
            "in": "query",
            "type": "string"
          },
          {
            "type": "boolean",
            "x-go-name": "OverrideProtections",
            "name": "override_protections",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "IncludeChildren",
            "name": "include_children",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "BookingID",
            "name": "booking_id",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "IncludeMarketplaceOnlyBlocks, if true, includes unavailable bookings\nmarked with outdoorsy_marketplace_only metadata. By default, these blocks\nare excluded. Set to true for Outdoorsy marketplace bookings (combo bookings).",
            "name": "IncludeMarketplaceOnlyBlocks",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/listAvailabilityResponse"
          },
          "401": {
            "$ref": "#/responses/unauthorizedError"
          },
          "404": {
            "$ref": "#/responses/notFoundError"
          }
        }
      }
    },
    "/bids": {
      "get": {
        "description": "Return list of bids",
        "tags": [
          "instamatch"
        ],
        "operationId": "listBids",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "ID",
            "name": "id",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "IDs",
            "name": "ids",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "OwnerID",
            "name": "owner_id",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "Open",
            "name": "open",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Limit",
            "name": "limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Offset",
            "name": "offset",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Order",
            "name": "order",
            "in": "query"
          },
          {
            

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