Outdoorsy Search API

The Outdoorsy Search API — a read-only JSON:API-formatted search surface over rentals, campgrounds, external campgrounds, national/state parks, localities, breadcrumbs, users and vacation packages, with geo lookup by IP. 29 operations, page[limit]/page[offset] pagination, and a Total-Results response header.

OpenAPI Specification

outdoorsy-search-openapi-original.json Raw ↑
{
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/vnd.api+json",
    "application/json"
  ],
  "swagger": "2.0",
  "info": {
    "description": "The Outdoorsy Search 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 Search Documentation",
    "version": "0.0.1"
  },
  "paths": {
    "/breadcrumbs": {
      "get": {
        "description": "Breadcrumb search",
        "tags": [
          "breadcrumbs"
        ],
        "operationId": "breadcrumbSearch",
        "parameters": [
          {
            "type": "string",
            "name": "Locale",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "name": "Lat",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "name": "Lon",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "Radius",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "Limit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "name": "Offset",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/breadcrumbResponse"
          }
        }
      }
    },
    "/breadcrumbs/closest": {
      "get": {
        "description": "Get closest breadcrumb to lag/lng",
        "tags": [
          "breadcrumbs"
        ],
        "operationId": "closestBreadcrumb",
        "parameters": [
          {
            "type": "number",
            "format": "double",
            "name": "Lat",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "name": "Lon",
            "in": "query"
          },
          {
            "type": "string",
            "name": "Locale",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/closestResponse"
          }
        }
      }
    },
    "/breadcrumbs/{id}": {
      "get": {
        "description": "Get breadcrumb by id",
        "tags": [
          "breadcrumbs"
        ],
        "operationId": "getBreadcrumb",
        "responses": {
          "200": {
            "$ref": "#/responses/retrieveResponse"
          }
        }
      }
    },
    "/campgrounds": {
      "get": {
        "description": "Search performs search on campgrounds",
        "tags": [
          "campgrounds"
        ],
        "operationId": "searchCampgrounds",
        "responses": {
          "200": {
            "$ref": "#/responses/jsonApiRentalsResponse"
          }
        }
      }
    },
    "/campgrounds/nearby-for-rental/{rental_id}": {
      "get": {
        "description": "Searches nearby campgrounds for given rental with rental_id",
        "tags": [
          "campgrounds"
        ],
        "operationId": "searchCampgrounds",
        "responses": {
          "200": {
            "$ref": "#/responses/jsonApiRentalsResponse"
          }
        }
      }
    },
    "/campgrounds/{id}": {
      "get": {
        "description": "Get campgrounds by id",
        "tags": [
          "campgrounds"
        ],
        "operationId": "getCampground",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "ID",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/jsonApiRentalsResponse"
          }
        }
      }
    },
    "/external-campgrounds": {
      "get": {
        "description": "Search performs search on external campgrounds",
        "tags": [
          "externalCampgrounds"
        ],
        "operationId": "searchExternalCampgrounds",
        "parameters": [
          {
            "type": "string",
            "x-go-name": "KeywordsSwaggerPlaceholder",
            "description": "List of keywords, comma-separated, e.g. \"Komfort,wifi\"\nThe fields checked for keywords are: name, description, vehicle_make, vehicle_model, and tags",
            "name": "filter[keywords]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "RentalTypeSwaggerPlaceholder",
            "description": "List of rental types, e.g. \"b,c,camper-van\"",
            "name": "filter[type]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "RentalCategorySwaggerPlaceholder",
            "description": "Rental category, e.g. \"rv\", \"stay\", \"campground\"",
            "name": "filter[rental_category]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryTypesSwaggerPlaceholder",
            "description": "Campsite category types, e.g. \"rv_site\", \"lodging_site\", \"tent_site\"",
            "name": "cs[category_types]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryRVSiteFeaturesSwaggerPlaceholder",
            "description": "Campsite category rv site Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cs[rv_site_features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryTentSiteFeaturesSwaggerPlaceholder",
            "description": "Campsite category tent site Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cs[tent_site_features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryLodgingSiteFeaturesSwaggerPlaceholder",
            "description": "Campsite category lodging site Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cs[lodging_features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "ExcludeTypeSwaggerPlaceholder",
            "description": "List of rental types to exclude, e.g. \"b,c\"",
            "name": "filter[exclude_type]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "StyleSwaggerPlaceholder",
            "description": "List of styles, e.g. \"drivable,towable,both\"",
            "name": "filter[style]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "TagsSwaggerPlaceholder",
            "description": "List of tags, e.g. \"Family Friendly,Luxury,Photo Friendly,Easy to Drive,Good for couples\"",
            "name": "filter[tags]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "FeaturesSwaggerPlaceholder",
            "description": "Feature list, e.g. \"dining_table,inside_shower,wifi\"",
            "name": "filter[feature]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "OwnerTypeSwaggerPlaceholder",
            "description": "Owner type, one of: \"dealer\",\" pro\"",
            "name": "filter[owner_type]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "LocationIDsSwaggerPlaceholder",
            "description": "Location IDs, e.g. \"1697,791,1369\"",
            "name": "location_ids",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "IDsSwaggerPlaceholder",
            "description": "Rental IDs to return, e.g. \"50302,50303\"",
            "name": "ids",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "ExcludeIDsSwaggerPlaceholder",
            "description": "Rental IDs to exclude, e.g. \"50303,503034\"",
            "name": "exclude",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "OwnerIDsSwaggerPlaceholder",
            "description": "Owner IDs, e.g. \"255926,251875\"",
            "name": "owner_ids",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "SortBySwaggerPlaceholder",
            "description": "One or many of \"price\", \"-price\", \"position\", \"-position\", \"seatbelts\", \"-seatbelts\", \"sleeps\", \"-sleeps\", \"rating\", \"-rating\", \"distance\", \"-distance\", \"num_reviews\", \"-num_reviews\", \"new_listings\"",
            "name": "sort",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "AutoRadiusSwaggerPlaceholder",
            "description": "Increment search radius until enough results are provided (specified by 'page[limit]' parameter.)\nMax radius is 1000 miles. (default false)",
            "name": "auto_radius",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Source",
            "description": "making a variable for source",
            "name": "source",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "Random",
            "description": "Random Score",
            "name": "random",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Seatbelts",
            "description": "Number of seatbelts",
            "name": "seatbelts",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Sleeps",
            "description": "Total people to sleep",
            "name": "sleeps",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "SleepsAdults",
            "description": "Adults to sleep",
            "name": "sleeps[adults]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "SleepsKids",
            "description": "Kids to sleep",
            "name": "sleeps[kids]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "SleepsInfants",
            "description": "Infants to sleep",
            "name": "sleeps[infants]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "RenterAge",
            "description": "Minimum renter age required for rental",
            "name": "renter_age",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Limit",
            "description": "Limit the number of results (default 25, max 150)",
            "name": "page[limit]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Offset",
            "description": "Skip some results and return results starting with this offset (min 0, max 1000)",
            "name": "page[offset]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "PriceMin",
            "description": "Min price",
            "name": "price[min]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "PriceMax",
            "description": "Max price",
            "name": "price[max]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "TotalPriceMin",
            "description": "Min price",
            "name": "total_price[min]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "TotalPriceMax",
            "description": "Max price",
            "name": "total_price[max]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "DateFrom",
            "description": "Date from, for date range query, e.g. 2021-06-01",
            "name": "date[from]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "DateTo",
            "description": "Date to, for date range query, e.g. 2021-06-14",
            "name": "date[to]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "FlexibleDays",
            "description": "Flexible Days +/- 1-3 days. (default 0)",
            "name": "flexible_days",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Near",
            "description": "Latitude,longitude to search near, e.g. \"38.302,-121.972\". Supersedes address. Superseded by bounding box.",
            "name": "near",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-name": "Address",
            "description": "Street address to search near. Superseded by latitude/longitude and by bounding box.\nIf no `address` is passed, GeoIP is used to get geo coordinates.",
            "name": "address",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-name": "DeliveryAddress",
            "description": "Street address to be delivered to. Supersedes `address` field. Default radius 100 miles",
            "name": "delivery_address",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "BoundsNE",
            "description": "Bounding box'es north-east, e.g. \"37.812, -122.3482\"",
            "name": "bounds[ne]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "BoundsSW",
            "description": "Bounding box'es south-west, e.g. \"37.703399, -122.526999\"",
            "name": "bounds[sw]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "NearRentalID",
            "description": "Rental ID to search near, e.g. 37183. Superseded by bounding box.\nSpecified rental is boosted to be at the top of the results.",
            "name": "near_rental",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "Radius",
            "description": "Search radius (miles)",
            "name": "radius",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "OwnerID",
            "description": "Owner ID, e.g. 255926",
            "name": "owner_id",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Slug",
            "description": "Pro user slug, e.g. \"hwyonerentals\"",
            "name": "slug",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "ShowHidden",
            "description": "Show hidden results? (Non-hidden results will not be returned.)",
            "name": "hidden",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "x-go-name": "Score",
            "description": "Only return results with scores greater or equal than this",
            "name": "score",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "UnlimitedMiles",
            "description": "Only return results with unlimited miles? Boolean string, e.g. 1, 0, T, f, true, False",
            "name": "unlimited_miles",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "UnlimitedGenerator",
            "description": "Only return results with unlimited generator hours? Boolean string",
            "name": "unlimited_generator",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "InstantBook",
            "description": "Only return results with instant book? Boolean string",
            "name": "instant_book",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "RequireDriverVerification",
            "description": "Only return results with insurance requiring driver verification? Boolean string",
            "name": "requires_driver_verification",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Currency",
            "description": "Currency unit for price range requests (default USD)",
            "name": "currency",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "DistanceUnit",
            "description": "Distance unit for location search requests",
            "name": "distance_unit",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "LengthLTE",
            "description": "Max vehicle length, integer",
            "name": "length[lte]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "LengthGTE",
            "description": "Min vehicle length, integer",
            "name": "length[gte]",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            },
            "x-go-name": "LengthBetween",
            "description": "Length ranges (e.g.: \"18-24,25-31,32-38\")",
            "name": "length[between]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "YearLTE",
            "description": "Max vehicle year, e.g. 2019",
            "name": "year[lte]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "YearGTE",
            "description": "Min vehicle year, e.g. 1960",
            "name": "year[gte]",
            "in": "query"
          },
          {
            "type": "string",
            "format": "date-time",
            "x-go-name": "LastPublishedLTE",
            "description": "Published on or before date, e.g. 2020-12-02",
            "name": "last_published[lte]",
            "in": "query"
          },
          {
            "type": "string",
            "format": "date-time",
            "x-go-name": "LastPublishedGTE",
            "description": "Published on or after date, e.g. 2006-01-02",
            "name": "last_published[gte]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "TrailerWeightLTE",
            "description": "Max trailer weight, integer",
            "name": "trailer_weight[lte]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "TrailerWeightGTE",
            "description": "Min trailer weight, integer",
            "name": "trailer_weight[gte]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "WeightUnit",
            "description": "Weight unit, one of: \"kg\", \"lbs\"",
            "name": "weight_unit",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-name": "CancelPolicy",
            "description": "Cancel policy: values \"strict\", \"moderate\", \"flexible\", \"custom\"",
            "name": "cancel_policy",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "InsuranceState",
            "description": "State of insurance, e.g. \"approved\"",
            "name": "insurance_state",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "VehicleMake",
            "description": "Vehicle make. Examples: \"Jeep\", \"Horse\", \"Catering\", \"Winnebago\", \"Champion\", \"Komfort\", \"Thor Motor Coach\"",
            "name": "filter[vehicle_make]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "VehicleModel",
            "description": "Vehicle model. Examples: \"Wrangler\", \"Trailer Bar\", \"Westfalia\", \"Four Winds\"",
            "name": "filter[vehicle_model]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Transmission",
            "description": "Transmission type. Examples: \"automatic\", \"manual\"",
            "name": "filter[transmission]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "FuelType",
            "description": "Fuel type. Examples: \"gas\", \"diesel\", \"electric\"",
            "name": "filter[fuel_type]",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "Delivery",
            "description": "Delivery available?",
            "name": "delivery",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "DeliveryStationary",
            "name": "delivery_stationary",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "DeliveryCampgroundID",
            "description": "Are we searching for vehicles to deliver to a campground?",
            "name": "delivery_campground_id",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "Debug",
            "description": "Include some debug output, such as hit count and query source",
            "name": "debug",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "AllowsLongTerm",
            "description": "Include rentals which have a monthly discount",
            "name": "allows_long_term",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "IncludeUnavailable",
            "description": "Include vehicles already booked for the specified date range?\nIn results, each rental will get a boolean field unavailable set to true or false.",
            "name": "include_unavailable",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "Only",
            "description": "Limit returned keys. One of: \"meta\", \"rentals\"",
            "name": "only",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CountrySwaggerPlaceholder",
            "description": "Limit search to a specific locale, e.g. en-us (default en-us)",
            "name": "locale",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "NewOwnersSwaggerPlaceholder",
            "description": "Rentals of owners who have published a first listing in the past 30 days",
            "name": "new_owners",
            "in": "query"
          },
          {
            "$ref": "#/definitions/ABTest",
            "name": "ABTest",
            "in": "query"
          },
          {
            "type": "number",
            "format": "double",
            "x-go-name": "CampsiteCategoryMaxVehicleLength",
            "name": "cs[max_vehicle_length]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "CampsiteCategoryBeds",
            "name": "cs[beds]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "CampsiteCategoryBedrooms",
            "name": "cs[bedrooms]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "CampsiteCategoryBathrooms",
            "name": "cs[bathrooms]",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "CampsiteCategoryParkingOnsite",
            "name": "cs[parking_onsite]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "CampsiteCategoryMaxParkingSpaces",
            "name": "cs[max_parking_spaces]",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "CampsiteCategoryIsODN",
            "name": "cs[is_odn]",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-name": "CampsiteCategorySupportedTypes",
            "name": "cs[supported_types]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "CampsiteCategorySupportedLength",
            "name": "cs[supported_length]",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-name": "CampsiteCategorySupportedSlideouts",
            "name": "cs[supported_slideouts]",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "CampsiteCategoryHasPricing",
            "name": "cs[has_pricing]",
            "in": "query"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-go-name": "PropertyTypes",
            "description": "Property type filter Examples: \"campground\", \"private-property\"",
            "name": "filter[property]",
            "in": "query"
          },
          {
            "type": "boolean",
            "x-go-name": "IncludeNearbyCampgrounds",
            "description": "Include nearby campgrounds in the response",
            "name": "include_nearby_campgrounds",
            "in": "query"
          },
          {
            "type": "boolean",
            "name": "TotalPriceSortDirection",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampgroundFeaturesSwaggerPlaceholder",
            "description": "Campground specific: */\nCampground Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cg[features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "NearExternalCampgroundID",
            "description": "Specified external campground is boosted to be at the top of the results.",
            "name": "cg[near_campground]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampgroundVacationPackageSlug",
            "name": "cg[vacation_package_slug]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampgroundCategoriesSwaggerPlaceholder",
            "description": "Campground Categories list, e.g. \"city,forest,etc.\"",
            "name": "cg[categories]",
            "in": "query"
          },
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "ID",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/jsonApiExternalCampgroundsResponse"
          },
          "400": {
            "$ref": "#/responses/badRequestError"
          }
        }
      }
    },
    "/external-campgrounds/nearby-for-rental/{rental_id}": {
      "get": {
        "description": "Searches nearby claimed and unclaimed campgrounds for a given rental with rental_id",
        "tags": [
          "externalCampgrounds"
        ],
        "operationId": "searchNearbyCampgrounds",
        "parameters": [
          {
            "type": "integer",
            "format": "int64",
            "x-go-name": "RentalID",
            "name": "rental_id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/jsonApiNearbyCampgroundsResponse"
          }
        }
      }
    },
    "/external-campgrounds/{id}": {
      "get": {
        "description": "Get external campgrounds by id",
        "tags": [
          "externalCampgrounds"
        ],
        "operationId": "getExternalCampground",
        "parameters": [
          {
            "type": "string",
            "x-go-name": "KeywordsSwaggerPlaceholder",
            "description": "List of keywords, comma-separated, e.g. \"Komfort,wifi\"\nThe fields checked for keywords are: name, description, vehicle_make, vehicle_model, and tags",
            "name": "filter[keywords]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "RentalTypeSwaggerPlaceholder",
            "description": "List of rental types, e.g. \"b,c,camper-van\"",
            "name": "filter[type]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "RentalCategorySwaggerPlaceholder",
            "description": "Rental category, e.g. \"rv\", \"stay\", \"campground\"",
            "name": "filter[rental_category]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryTypesSwaggerPlaceholder",
            "description": "Campsite category types, e.g. \"rv_site\", \"lodging_site\", \"tent_site\"",
            "name": "cs[category_types]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryRVSiteFeaturesSwaggerPlaceholder",
            "description": "Campsite category rv site Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cs[rv_site_features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryTentSiteFeaturesSwaggerPlaceholder",
            "description": "Campsite category tent site Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cs[tent_site_features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "CampsiteCategoryLodgingSiteFeaturesSwaggerPlaceholder",
            "description": "Campsite category lodging site Features list, e.g. \"pet_friendly,accessible\"",
            "name": "cs[lodging_features]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "ExcludeTypeSwaggerPlaceholder",
            "description": "List of rental types to exclude, e.g. \"b,c\"",
            "name": "filter[exclude_type]",
            "in": "query"
          },
          {
            "type": "string",
            "x-go-name": "StyleSwaggerPlaceholder",
            "description": "List of styles, e.g. \"drivable,towable,both\"",
            "name": "filter[style]",
            "in": "query"
          },
          {
            "

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