{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","description":"The Molo Public API is in Beta. Please provide constructive feedback and let us know when you catch something that's totally off, be kind :)\n\nWe monitor *apisupport@getmolo.com.*\n\nMolo's API allows you to:\n\n1. GET contacts and boats.\n2. POST contacts and boats.\n3. POST to receive availability of \"Offers\" a marina has for space availability and also receive detailed pricing.\n4. GET Marina details such as name, address, phone, and amenities.\n5. POST Offer Holds.\n6. POST reservations prepayments.\n7. Be awesome.\n\n# General API Info\n1. Times sent to us and returned back to you are always in UTC.\n2. Molo stores ID's using HashID (http://hashids.org/). Be prepared to receive a string in this field.\n3. Dimensions are sent and received in numeric format. When it comes to converting imperial measurements, remember to convert inches to decimal by divided X/12 inches. Examples: 1 Inch = 0.08, 2 Inches = 0.17, 3 Inches = 0.25, 4 Inches = 0.33, 5 Inches = 0.42, 6 Inches = 0.50, 7 Inches = 0.58, 8 Inches = 0.67. 9 Inches = 0.75, 10 Inches = 0.83, 11 Inches = 0.92\n\n## Limits\n1. The API limits are: 120 calls in a 60 second rolling window and a combined 12,000 calls in a rolling 24 hour period.\n2. If you reach your limits, you'll received a 429 response header and a response body that shows when you should re-attempt your call.\n3. If you feel these limits don't work for your needs, email us at *apisupport@getmolo.com.*.\n\nBelow is a step-by-step overview of how the Molo API workflow should funtion.\n1. Your Partner token will grant you access to all marinas setup by you and other existing Molo marinas that grant you access to their marina. The **Marinas** endpoint will list out all the marinas available along with name, address, phone, lat+long, and amenities.\n2. When a user enters arrival, departure, and vessel dimensions in your app, you will find available spaces and pricing with the **Offers** endpoint.\n3. If a boater decides to move forward with their booking, it will take them some time to complete the checkout process in your app. During that time you will not want them to lose their space. Therefore, you will use the **OfferHold** endpoint to temporarily hold a space for that boater while they complete the checkout steps in your app. A **OfferHold** lasts for 15 minutes before expiring.\n4. After a boater completes the checkout process in your app, you will use the **Reservations** endpoint to POST a reservationt to Molo therefore permanently holding the space. In the **Reservations** endpoint, you can indicate that payment was already taken by your app.\n\n## Offer Types\nBelow is a list of Offer Types\n1. Transient Dockage / Slip / Berth\n2. Transient Mooring\n3. Transient Side-To / Alongside Dockage\n4. Transient Med Mooring Dockage\n5. Transient Rack Storage\n6. Transient Dry Storage\n\n## List of Amenities\nThis is a list of all the strings Molo uses to identify amenities a marina might have.\n`ATM,\nAviation Fuel,\nBait & Tackle,\nBank,\nClubs/Bars On-Site,\nClubs/Bars Nearby,\nBath,\nBeaches,\nBikes,\nBoat Rental,\nBoat Service Available,\nPaddleboard/Kayak Rental,\nCable TV,\nSatellite TV,\nCampground,\nCharters On-Site,\nCourtesy Car,\nCurrency Exchange,\nDeli,\nDiesel,\nDisability Access,\nDive Shop,\nDrop-In/Haul-Out Services,\nDry Cleaning,\nDry Storage,\nEvent Space,\nFitness Center,\nFloating Docks,\nGas,\nGolf Within 5 Miles,\nGrocery,\nGrills,\nHardware,\nHealth Club,\nHotel/Lodging On-Site,\nHotel/Lodging Nearby,\nHot Tub,\nIce,\nWiFi,\nWired Internet,\nLaunch Ramp,\nLaundry,\nLockers,\nLounge On-Site,\nMedical Facilities Within 5 Miles,\nNewsletter,\nOil Recycling,\nParking,\nPet Friendly,\nPicnic Area,\nPlayground,\nPlunge Pool,\nPost Office Within 1 Mile,\nProvisions,\nPump-Out,\nRental Cars,\nRestaurant On-Site,\nRestaurant Nearby,\nRestrooms,\nRetail Nearby,\nSalon/Spa,\nSecurity,\nShip Store,\nShowers,\nSnack Shop,\nTown Nearby,\nTransportation,\nSwimming Pool,\nTennis,\nTiki Bar,\nTravel Lift,\nTowing,\nWater Sport Rental,\nWater Taxi,\nWinter Storage,\nValvTect`\n\n# Changelog\nThis is a reverse chronological log of all changes to the Molo Public API. More to come.\n\n## Version 1.6\n3-Apr-2018\n1. The `Reservation` endpoint will now return `TransactionId` in its response body. This is for future cancellation and refund capabilities of the API.\n2. The `Reservation` endpoint will also return `TransactionTotal` which is an echo of the payment you sent that we stored to the `TransactionId`.\n3. Our response headers used to display `Content-Type →text/plain; charset=utf-8`. This header has been updated to properly reflect that we respond in JSON\n\n## Version 1.5\n25-Jan-2018\n1. We refactored the `/Offer` endpoint for performance improvements.\n\n## Version 1.4\n22-Jan-2018\n1. The `Marina` endpoint was updated to return `default_arrival_time` and `default_departure_time` as military time strings like `09:30` or `18:00`. The times used to be sent as the local time for each marina but are now sent in GMT / UTC time format.\n\n## Version 1.3\n17-Jan-2018\n1. *Issue*: Certain POST's to the `Boat` endpoint could yield a response code of 200 instead of 201 as expected. This issue has been resolved.\n2. Docs were updated to more clearly call out that our API expects a leading zero for military times prior to 12pm.\n\n## Version 1.2\n11-Jan-2018\n1. *Issue*: We identified an issue where Slips with Maximum Drafts or Beams with inches that were non-zero weren't being parsed correctly. Thus, you could POST to /Offer and get incorrect availablity when the Beam or Draft were too large. This has been fixed.\n2. Along with the parsing issue above, the API expects 2 decimal places if you collect inches during the booking process from your boaters.\n\n## Version 1.1\n27-Dec-2017\n1. `PowerNeed1` and `PowerNeed2` should be sent as an array of string values.\n2. The `/Offer` endpoint now dynamically updates pricing, availability, and the list of required add-ons depending on what `PowerNeed` values are sent.\n3. The `/OfferHold` endpoint checks to see if a space can be held that meet the `PowerNeed` values sent.\n4. An issue was fixed where the workflow of `Offer --> OfferHold --> Reservation` would error out at the `Reservation` step for some marinas with certain `PowerNeed` values.\n5. The validation of the POST to the `Contacts` endpoint has been updated. Spaces and non-numeric characters will now be permitted in the `country_code` and `phone` fields. They will be stripped out when stored on Molo's side since we dynamically format these numeric values for our users depending on region and country code.\n\n# Rate Limit\nYou may only send 120 requests per minute to our API and 12,000 calls per day.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"3439648","collectionId":"4cc83388-0106-8503-9efd-a0d07b4261b0","publishedId":"RVfzfox7","public":true,"publicUrl":"https://developer.getmolo.com","privateUrl":"https://go.postman.co/documentation/3439648-4cc83388-0106-8503-9efd-a0d07b4261b0","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"1E6286"},"documentationLayout":"classic-double-column","version":"8.10.1","publishDate":"2018-02-21T16:55:01.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://getmolo.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://developer.getmolo.com/view/metadata/RVfzfox7"}