{"info":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","description":"<html><head></head><body><p>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 :)</p>\n<p>We monitor <em><a href=\"mailto:apisupport@getmolo.com\">apisupport@getmolo.com</a>.</em></p>\n<p>Molo's API allows you to:</p>\n<ol>\n<li>GET contacts and boats.</li>\n<li>POST contacts and boats.</li>\n<li>POST to receive availability of \"Offers\" a marina has for space availability and also receive detailed pricing.</li>\n<li>GET Marina details such as name, address, phone, and amenities.</li>\n<li>POST Offer Holds.</li>\n<li>POST reservations prepayments.</li>\n<li>Be awesome.</li>\n</ol>\n<h1 id=\"general-api-info\">General API Info</h1>\n<ol>\n<li>Times sent to us and returned back to you are always in UTC.</li>\n<li>Molo stores ID's using HashID (<a href=\"http://hashids.org/\">http://hashids.org/</a>). Be prepared to receive a string in this field.</li>\n<li>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</li>\n</ol>\n<h2 id=\"limits\">Limits</h2>\n<ol>\n<li>The API limits are: 120 calls in a 60 second rolling window and a combined 12,000 calls in a rolling 24 hour period.</li>\n<li>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.</li>\n<li>If you feel these limits don't work for your needs, email us at <em><a href=\"mailto:apisupport@getmolo.com\">apisupport@getmolo.com</a>.</em>.</li>\n</ol>\n<p>Below is a step-by-step overview of how the Molo API workflow should funtion.</p>\n<ol>\n<li>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 <strong>Marinas</strong> endpoint will list out all the marinas available along with name, address, phone, lat+long, and amenities.</li>\n<li>When a user enters arrival, departure, and vessel dimensions in your app, you will find available spaces and pricing with the <strong>Offers</strong> endpoint.</li>\n<li>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 <strong>OfferHold</strong> endpoint to temporarily hold a space for that boater while they complete the checkout steps in your app. A <strong>OfferHold</strong> lasts for 15 minutes before expiring.</li>\n<li>After a boater completes the checkout process in your app, you will use the <strong>Reservations</strong> endpoint to POST a reservationt to Molo therefore permanently holding the space. In the <strong>Reservations</strong> endpoint, you can indicate that payment was already taken by your app.</li>\n</ol>\n<h2 id=\"offer-types\">Offer Types</h2>\n<p>Below is a list of Offer Types</p>\n<ol>\n<li>Transient Dockage / Slip / Berth</li>\n<li>Transient Mooring</li>\n<li>Transient Side-To / Alongside Dockage</li>\n<li>Transient Med Mooring Dockage</li>\n<li>Transient Rack Storage</li>\n<li>Transient Dry Storage</li>\n</ol>\n<h2 id=\"list-of-amenities\">List of Amenities</h2>\n<p>This is a list of all the strings Molo uses to identify amenities a marina might have.\n<code>ATM, Aviation Fuel, Bait &amp; Tackle, Bank, Clubs/Bars On-Site, Clubs/Bars Nearby, Bath, Beaches, Bikes, Boat Rental, Boat Service Available, Paddleboard/Kayak Rental, Cable TV, Satellite TV, Campground, Charters On-Site, Courtesy Car, Currency Exchange, Deli, Diesel, Disability Access, Dive Shop, Drop-In/Haul-Out Services, Dry Cleaning, Dry Storage, Event Space, Fitness Center, Floating Docks, Gas, Golf Within 5 Miles, Grocery, Grills, Hardware, Health Club, Hotel/Lodging On-Site, Hotel/Lodging Nearby, Hot Tub, Ice, WiFi, Wired Internet, Launch Ramp, Laundry, Lockers, Lounge On-Site, Medical Facilities Within 5 Miles, Newsletter, Oil Recycling, Parking, Pet Friendly, Picnic Area, Playground, Plunge Pool, Post Office Within 1 Mile, Provisions, Pump-Out, Rental Cars, Restaurant On-Site, Restaurant Nearby, Restrooms, Retail Nearby, Salon/Spa, Security, Ship Store, Showers, Snack Shop, Town Nearby, Transportation, Swimming Pool, Tennis, Tiki Bar, Travel Lift, Towing, Water Sport Rental, Water Taxi, Winter Storage, ValvTect</code></p>\n<h1 id=\"changelog\">Changelog</h1>\n<p>This is a reverse chronological log of all changes to the Molo Public API. More to come.</p>\n<h2 id=\"version-16\">Version 1.6</h2>\n<p>3-Apr-2018</p>\n<ol>\n<li>The <code>Reservation</code> endpoint will now return <code>TransactionId</code> in its response body. This is for future cancellation and refund capabilities of the API.</li>\n<li>The <code>Reservation</code> endpoint will also return <code>TransactionTotal</code> which is an echo of the payment you sent that we stored to the <code>TransactionId</code>.</li>\n<li>Our response headers used to display <code>Content-Type →text/plain; charset=utf-8</code>. This header has been updated to properly reflect that we respond in JSON</li>\n</ol>\n<h2 id=\"version-15\">Version 1.5</h2>\n<p>25-Jan-2018</p>\n<ol>\n<li>We refactored the <code>/Offer</code> endpoint for performance improvements.</li>\n</ol>\n<h2 id=\"version-14\">Version 1.4</h2>\n<p>22-Jan-2018</p>\n<ol>\n<li>The <code>Marina</code> endpoint was updated to return <code>default_arrival_time</code> and <code>default_departure_time</code> as military time strings like <code>09:30</code> or <code>18:00</code>. The times used to be sent as the local time for each marina but are now sent in GMT / UTC time format.</li>\n</ol>\n<h2 id=\"version-13\">Version 1.3</h2>\n<p>17-Jan-2018</p>\n<ol>\n<li><em>Issue</em>: Certain POST's to the <code>Boat</code> endpoint could yield a response code of 200 instead of 201 as expected. This issue has been resolved.</li>\n<li>Docs were updated to more clearly call out that our API expects a leading zero for military times prior to 12pm.</li>\n</ol>\n<h2 id=\"version-12\">Version 1.2</h2>\n<p>11-Jan-2018</p>\n<ol>\n<li><em>Issue</em>: 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.</li>\n<li>Along with the parsing issue above, the API expects 2 decimal places if you collect inches during the booking process from your boaters.</li>\n</ol>\n<h2 id=\"version-11\">Version 1.1</h2>\n<p>27-Dec-2017</p>\n<ol>\n<li><code>PowerNeed1</code> and <code>PowerNeed2</code> should be sent as an array of string values.</li>\n<li>The <code>/Offer</code> endpoint now dynamically updates pricing, availability, and the list of required add-ons depending on what <code>PowerNeed</code> values are sent.</li>\n<li>The <code>/OfferHold</code> endpoint checks to see if a space can be held that meet the <code>PowerNeed</code> values sent.</li>\n<li>An issue was fixed where the workflow of <code>Offer --&gt; OfferHold --&gt; Reservation</code> would error out at the <code>Reservation</code> step for some marinas with certain <code>PowerNeed</code> values.</li>\n<li>The validation of the POST to the <code>Contacts</code> endpoint has been updated. Spaces and non-numeric characters will now be permitted in the <code>country_code</code> and <code>phone</code> 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.</li>\n</ol>\n<h1 id=\"rate-limit\">Rate Limit</h1>\n<p>You may only send 120 requests per minute to our API and 12,000 calls per day.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"General API Info","slug":"general-api-info"},{"content":"Changelog","slug":"changelog"},{"content":"Rate Limit","slug":"rate-limit"}],"owner":"3439648","collectionId":"4cc83388-0106-8503-9efd-a0d07b4261b0","publishedId":"RVfzfox7","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"1E6286"},"publishDate":"2018-02-21T16:55:01.000Z"},"item":[{"name":"Bearer Token","event":[{"listen":"test","script":{"id":"668af471-a5f2-499e-b138-fb7f38546762","exec":["pm.environment.set(\"prod_public_api_token\", pm.response.json().token);","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"expiresAt\");","});","","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","pm.test(\"Response time is less than 750ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(750);","});"],"type":"text/javascript"}}],"id":"5599eea3-fd8e-d149-64b0-05a11d1f8d65","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"url":"{{online-booking-url}}v1/api/token?key=ca3ec8b9-370e-47d4-9563-8be7dbb040e4&secret=3381df8a-249b-4982-a189-9ad3298bb1b1","description":"<p>This method is used to fetch an access token for accessing the API.</p>\n<p>When it comes to your secret if you have to ask then you'll never know...</p>\n<p>Just messing. Contact us at <em><a href=\"mailto:apisupport@getmolo.com\">apisupport@getmolo.com</a></em> with authentication issues.</p>\n","urlObject":{"path":["api","token"],"host":["{{online-booking-url}}v1"],"query":[{"key":"key","value":"ca3ec8b9-370e-47d4-9563-8be7dbb040e4"},{"key":"secret","value":"3381df8a-249b-4982-a189-9ad3298bb1b1"}],"variable":[]}},"response":[{"id":"08e3685d-e79a-2fd1-c341-daadd9bcab80","name":"Default","originalRequest":{"method":"GET","header":[],"body":{"mode":"formdata","formdata":[]},"url":"https://molopublicapistage.azure-api.net/v1/api/token"},"code":200,"_postman_previewlanguage":"","header":[],"cookie":[],"responseTime":"0","body":""}],"_postman_id":"5599eea3-fd8e-d149-64b0-05a11d1f8d65"},{"name":"Contact","event":[{"listen":"prerequest","script":{"id":"9c371382-69aa-4094-91a7-e51893e5c177","exec":["pm.globals.get(\"token\");"],"type":"text/javascript"}},{"listen":"test","script":{"id":"488b98bb-992c-4cf1-af35-edaf192ca4cd","exec":["pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"molo_contact_id\");","});","","pm.test(\"Response time is less than 350ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(350);","});","","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript"}}],"id":"2da5f116-f0fb-8be1-475d-e7343c8ac736","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"url":"{{online-booking-url}}v1/api/contact","description":"<p>This endpooint lets you fetch all contacts linked to your Partner account or just a single contact by HashID.</p>\n<p>Add the Contact's HashID at the end of your GET to receive only that contact info.</p>\n<p><code>Example: https://molopublicapistage.azure-api.net/v1/api/Contact?id=Omlo</code></p>\n<ol>\n<li><p>Molo stores \"contact_id\" as a HashID (<a href=\"http://hashids.org/\">http://hashids.org/</a>). Be prepared to receive a string in this field.</p>\n</li>\n<li><p>We use the \"is_primary\" in address to mark the customer's primary billing address. Other non-primary addresses may be vacation homes or alternate addresses the customer has provided.</p>\n</li>\n<li><p>Phone Type values are: <em>Home, Work, Mobile, Boat, Home Fax, Work Fax, Boat Fax, Pager, and Other</em></p>\n</li>\n<li><p>We store the country code and phone number separately. Moreover, the Phone Number \"phone\" is stored as a numeric value and we add dynamic formatting in the Molo UI. <em>US Example: (###) ###-####</em></p>\n</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"path":["api","contact"],"host":["{{online-booking-url}}v1"],"query":[],"variable":[]}},"response":[{"id":"52c91e46-7fea-cc5d-61a5-a27971a8fe3a","name":"Retrieve A Single Contact","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"https://molopublicapistage.azure-api.net/v1/api/contact?id=PN4o","protocol":"https","host":["molopublicapistage","azure-api","net"],"path":["v1","api","contact"],"query":[{"key":"id","value":"PN4o"}]}},"code":200,"_postman_previewlanguage":"","header":[],"cookie":[],"responseTime":"0","body":"{\"molo_contact_id\":\"PN4o\",\"first_name\":\"International\",\"last_name\":\"Person2\",\"email\":\"lucas@getmolo.com\",\"marina_location\":null,\"addresses\":[],\"phones\":[{\"country_code\":\"54\",\"phone\":\"5523432332\",\"phone_type\":\"Other\"}]}"}],"_postman_id":"2da5f116-f0fb-8be1-475d-e7343c8ac736"},{"name":"Contact","event":[{"listen":"prerequest","script":{"id":"53965fad-1371-4cdb-8f93-dec7e49a9739","exec":["pm.globals.get(\"token\");"],"type":"text/javascript"}},{"listen":"test","script":{"id":"c78a66b6-c8b9-4028-9cb4-50c4051ea2d0","exec":["pm.environment.set(\"ContactID\", pm.response.json().Id);","","pm.test(\"Response time is less than 750ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(750);","});","","pm.test(\"Status code is 201\", function () {","    pm.response.to.have.status(201);","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"Created\");","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"Id\");","});"],"type":"text/javascript"}}],"id":"a9481a96-c23f-2aa3-eafa-371f24fdefe4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"body":{"mode":"raw","raw":"{\n        \"molo_contact_id\": null,\n        \"first_name\": \"Guy 2\",\n        \"last_name\": \"Davis\",\n\t\t\"phones\":\n      [{\"country_code\":\"+1\", \"phone\":\"(914) 555-2332\", \"phone_type\":\"Other\"}],\n        \"email\": \"lucas@getmolo.com\"\n    }"},"url":"{{online-booking-url}}v1/api/contact","description":"<p>Use this endpoint to add new contacts to Molo or update existing contacts.</p>\n<ol>\n<li><p>POST contact with a NULL \"molo_contact_id\" to make a new contact.</p>\n</li>\n<li><p>POST <em>with</em> an existing Contact HashID 'molo_contact_id' to update.</p>\n</li>\n<li><p>We use the 'is_primary' in address to mark the customer's primary billing address. Other non-primary addresses may be vacation homes or alternate addresses the customer has provided.</p>\n</li>\n<li><p>Phone Type values are: <em>Home, Work, Mobile, Boat, Home Fax, Work Fax, Boat Fax, Pager, and Other</em></p>\n</li>\n<li><p>You must send the country code and phone number separately. Moreover, the Phone Number \"phone\" must be sent as a numeric value without spaces or special characters. In the Molo UI, we dynamically format phone numbers. <em>US Example: (###) ###-####</em></p>\n</li>\n<li><p>If you are submitting an address, only \"Address Line 2\" is optional.</p>\n</li>\n<li><p>The \"Zip\" field supports alphanumerics for international zip codes.</p>\n</li>\n<li><p>For the purposes of sending international addresses from Europe, etc. view this crosswalk below:</p>\n</li>\n</ol>\n<ul>\n<li>City = <em>Town = Province</em></li>\n<li>State = <em>Region = County</em></li>\n<li>Zip = <em>Postal Code</em></li>\n</ul>\n<ol>\n<li>If you leave out any Address or Phone block(s) it will cause those values to be removed from the contact. Therefore, whenever updating a contact, send all contact details in every POST.</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"path":["api","contact"],"host":["{{online-booking-url}}v1"],"query":[],"variable":[]}},"response":[{"id":"f04f09ca-ddae-001a-8e12-0116215d7dd1","name":"Post a New Contact","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"99297b51b5b64f0c81849d07e57d5be5"}],"body":{"mode":"raw","raw":"{\n        \"molo_contact_id\": null,\n        \"first_name\": \"International\",\n        \"last_name\": \"Person2\",\n\t\t\"phones\":\n      [{\"country_code\":\"+54\", \"phone\":\"(55) 2343-2332\", \"phone_type\":\"Other\"}],\n        \"email\": \"lucas@getmolo.com\"\n    }"},"url":"https://molopublicapistage.azure-api.net/v1/api/contact"},"status":"Created","code":201,"_postman_previewlanguage":"plain","header":[{"key":"Cache-Control","value":"no-cache","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Content-Length","value":"33","name":"Content-Length","description":"The length of the response body in octets (8-bit bytes)"},{"key":"Content-Type","value":"text/plain; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Wed, 17 Jan 2018 15:51:27 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"-1","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Set-Cookie","value":"ARRAffinity=eceb174a5b4e7520fd91ad1310012d0a5d1e646197e17e8d9c08b7ab0c0300aa;Path=/;HttpOnly;Domain=molopublicapistage.azurewebsites.net","name":"Set-Cookie","description":"an HTTP cookie"},{"key":"X-AspNet-Version","value":"4.0.30319","name":"X-AspNet-Version","description":"Custom header"},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":"161","body":"{\"Id\":\"PN4o\",\"Message\":\"Created\"}"}],"_postman_id":"a9481a96-c23f-2aa3-eafa-371f24fdefe4"},{"name":"Boat","event":[{"listen":"prerequest","script":{"id":"1ce8c4fe-4b8c-4a4c-a1c2-e4d179b3ba75","type":"text/javascript","exec":["pm.globals.get(\"token\");"]}},{"listen":"test","script":{"id":"5a91fbbc-08c9-4ea6-ade9-576f5dc7833c","type":"text/javascript","exec":["pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"molo_vessel_id\");","});","","pm.test(\"Response time is less than 250ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(250);","});","","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"]}}],"id":"d40f9b1f-3c34-f9d6-4a7c-4c0630537cad","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"body":{"mode":"raw","raw":""},"url":"https://molopublicapi.azure-api.net/v1/api/boat","description":"<p>Use this endpoint to retrieve boats from Molo.</p>\n<ol>\n<li><p>Possible vessel types: Power, Sail Monohull, Sail Multihull, Kayak, Canoe, PWC, Pontoon, Power Multihull, Dinghy, Paddle Boat, Motoryacht, Megayacht, Sportfish, Ferry, Bowrider, Ski Boat, Cruiser, Speedboat, Barge, Stand-Up Paddleboard, Electric Boat, Center Console, Cuddy, Express Cruiser, Houseboat, Submarine, Towboat, Tugboat, Narrowboat, Water Taxi, Tender, Runabout, Tower Boat, Snowmobile, ATV</p>\n</li>\n<li><p>For \"dimensions\" we will send \"imperial\" or \"metric\" to indicate the original measurement standard used for the numeric dimensions sent.</p>\n</li>\n<li><p>Dimensions are in numeric format. Remember to convert inches to decimal by divided X/12 inches.\n<em>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</em></p>\n</li>\n<li><p>The following fields are optional: <em>Air Draft, Make,  Model, Weight, Key Location / Code, Registration Number, Registration State, Hull ID, Color, and Insurance</em></p>\n</li>\n</ol>\n<h2 id=\"add-the-boats-hashid-at-the-end-of-your-get-to-receive-only-that-boat-info-example-with-boat-id-httpmolopublicapistageazurewebsitesnetv1apiboatid8wlq\">Add the Boat's HashID at the end of your GET to receive only that boat info. Example with boat Id: <a href=\"http://molopublicapistage.azurewebsites.net/v1/api/boat?id=8WLQ\">http://molopublicapistage.azurewebsites.net/v1/api/boat?id=8WLQ</a></h2>\n<h2 id=\"add-the-contacts-hashid-at-the-end-of-your-get-to-receive-boats-that-are-linked-to-that-contact-example-with-boat-id-httpmolopublicapistageazurewebsitesnetv1apiboatcontactidryz4\">Add the Contact's HashID at the end of your GET to receive boats that are linked to that contact. Example with boat Id: <a href=\"http://molopublicapistage.azurewebsites.net/v1/api/boat?contactId=ryz4\">http://molopublicapistage.azurewebsites.net/v1/api/boat?contactId=ryz4</a></h2>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","api","boat"],"host":["molopublicapi","azure-api","net"],"query":[],"variable":[]}},"response":[{"id":"cd604848-44c6-09f7-1d98-feadf1188691","name":"Default","originalRequest":{"method":"GET","header":[],"body":{"mode":"formdata","formdata":[]},"url":"https://molopublicapistage.azure-api.net/v1/api/boat"},"code":200,"_postman_previewlanguage":"","header":[],"cookie":[],"responseTime":"0","body":""}],"_postman_id":"d40f9b1f-3c34-f9d6-4a7c-4c0630537cad"},{"name":"Boat","event":[{"listen":"prerequest","script":{"id":"6870f0b7-86bc-4099-b9a7-63d44a2d4102","exec":["pm.globals.get(\"token\");"],"type":"text/javascript"}},{"listen":"test","script":{"id":"f1537029-b23f-4b9a-8f88-180e4acf7755","exec":["pm.environment.set(\"BoatID\", pm.response.json().Id);","","pm.test(\"Response time is less than 400ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(400);","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"Id\");","});","","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript"}}],"id":"5375cc7b-0842-1868-14df-ff466a4dfda4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"body":{"mode":"raw","raw":"{\n   \"vessel_type\": \"Power\", \n    \"name\":\"Guy 1 Boat Try 2\", \n    \"dimensions\":\"imperial\", \n    \"loa\":30,\n    \"beam\":8,\n    \"draft\":2, \n    \"make\":\"Test Make\", \n    \"model\":\"Test Model\", \n    \"registration_number\":\"MD 2343 AB\", \n    \"hull_id\":\"A23433233BV223A\", \n    \"color\": \"White Over Navy\",\n\t\"PowerNeed1\":\"120 V, 30 Amps\",\n\t\"PowerNeed2\":\"120 V, 30 Amps\",\n\t\"insurance\":[{\"LiabilityMaximum\":1000000,\"Provider\":\"Best Insurance Provider\"}], \n\t\"contact\": {\n        \"contact_id\":\"NgLa5\", \n        \"relationship\":\"Owner/Captain\"} \n}"},"url":"{{online-booking-url}}v1/api/boat","description":"<p>Use this endpoint to post a boat to Molo.</p>\n<h1 id=\"important-notes\">Important Notes</h1>\n<ol>\n<li><p>Omitting <code>molo_vessel_id</code> field will result in a new vessel creation.</p>\n</li>\n<li><p>POST <em>with</em> a <code>molo_vessel_id</code> to update a vessel.</p>\n</li>\n<li><p>Possible vessel types: <code>Power, Sail Monohull, Sail Multihull, Kayak, Canoe, PWC, Pontoon, Power Multihull, Dinghy, Paddle Boat, Motoryacht, Megayacht, Sportfish, Ferry, Bowrider, Ski Boat, Cruiser, Speedboat, Barge, Stand-Up Paddleboard, Electric Boat, Center Console, Cuddy, Express Cruiser, Houseboat, Submarine, Towboat, Tugboat, Narrowboat, Water Taxi, Tender, Runabout, Tower Boat, Snowmobile, ATV</code></p>\n</li>\n<li><p>For <code>dimensions</code> you must send <code>imperial</code> or <code>metric</code> to indicate the original measurement standard used for the numeric dimensions sent.</p>\n</li>\n<li><p>Send dimensions in numeric format. Remember to convert inches to decimal by divided X/12 inches.\n<em>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</em></p>\n</li>\n<li><p>The following fields are optional: <em>Air Draft, Make,  Model, Weight, Key Location / Code, Registration Number, Registration State, Hull ID, Color</em></p>\n</li>\n<li><p>You must send a Molo Contact ID to indicate to which contact a vessel is linked. If you don't send a relationship, we will default <code>Owner/Captain</code>. Here are the possible relationship values: <code>Owner/Captain, Owner, Captain, Crew, Guest, Co-Owner, Management, Contractor, Secretary/Assistant, First Mate, Engineer, Broker/Agent</code></p>\n</li>\n<li><p>All <code>Insurance</code> fields are optional.</p>\n</li>\n<li><p>When updating vessel, if Insurance fields are empty, the existing insurances linked to vessel will be deleted. </p>\n</li>\n<li><p>If you include a value for <code>Id</code> in the Insurance block, the existing insurances linked to vessel will be updated.</p>\n</li>\n</ol>\n<h1 id=\"list-of-shore-power\">List of Shore Power</h1>\n<p>This is a list of all the strings Molo uses to identify shore power a vessel might have.</p>\n<ol>\n<li>120 V, 30 Amps</li>\n<li>120 V, 50 Amps</li>\n<li>120/240 V, 50 Amps</li>\n<li>120/240 V, 100 Amps</li>\n<li>120/208 V, 100 Amps</li>\n<li>408 V, 3 Phase</li>\n<li>480 V, Single Phase</li>\n<li>480 V, 3 Phase</li>\n<li>120/208 V, 100 Amps, 3 Phase</li>\n<li>480 V, 200 Amps, 3 Phase</li>\n<li>120 V, 20 Amps</li>\n<li>120 V /240 V 100 Amps</li>\n<li>240 V 200 Amps</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"path":["api","boat"],"host":["{{online-booking-url}}v1"],"query":[],"variable":[]}},"response":[{"id":"5f91e205-770d-daef-701a-c99ba8cca760","name":"Post a New Boat","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"99297b51b5b64f0c81849d07e57d5be5"}],"body":{"mode":"raw","raw":"{\n\t\"vessel_type\": \"Power\", \n    \"name\":\"Magic Wonder\", \n    \"dimensions\":\"imperial\", \n    \"loa\":35,\n    \"beam\":4,\n    \"draft\":4, \n    \"make\":\"Test Make\", \n    \"model\":\"Test Model\", \n    \"registration_number\":\"MD 2343 AB\", \n    \"hull_id\":\"A23433233BV223A\", \n    \"color\": \"White Over Navy\",\n\t\"shorePower1\":1,\n\t\"insurance\":[{\"LiabilityMaximum\":1000000,\"Provider\":\"Best Insurance Provider\"}], \n\t\"contact\": {\n        \"contact_id\":\"{{ContactId}}\", \n        \"relationship\":\"Owner/Captain\"} \n}"},"url":"https://molopublicapistage.azure-api.net/v1/api/boat"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Cache-Control","value":"no-cache","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":"The type of encoding used on the data."},{"key":"Content-Type","value":"text/plain; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Wed, 17 Jan 2018 16:03:12 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"-1","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Set-Cookie","value":"ARRAffinity=eceb174a5b4e7520fd91ad1310012d0a5d1e646197e17e8d9c08b7ab0c0300aa;Path=/;HttpOnly;Domain=molopublicapistage.azurewebsites.net","name":"Set-Cookie","description":"an HTTP cookie"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":"Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server."},{"key":"X-AspNet-Version","value":"4.0.30319","name":"X-AspNet-Version","description":"Custom header"},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":"240","body":"{\"Id\":\"0k6w\",\"Message\":\"Success\"}"}],"_postman_id":"5375cc7b-0842-1868-14df-ff466a4dfda4"},{"name":"Marina","event":[{"listen":"prerequest","script":{"id":"e5b488ff-2093-4766-81a3-25c9300dccef","type":"text/javascript","exec":["pm.globals.get(\"token\");"]}},{"listen":"test","script":{"id":"9ce2d350-aab3-4e3d-9f63-467ae9d10109","type":"text/javascript","exec":["pm.test(\"Response time is less than 500ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(500);","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"marina_id\");","});","","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"]}}],"id":"234aadcf-094b-d2a7-115a-494ad0fe05f7","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"body":{"mode":"formdata","formdata":[]},"url":"https://molopublicapi.azure-api.net/v1/api/Marina/?limit=500","description":"<p>Use this endpoint to retrieve a list of marinas.</p>\n<p>Important Note: The <code>default_arrival_time</code> and <code>default_departure_time</code> are sent back in UTC / GMT time zone and as military time strings instead of UNIX timestamps.</p>\n<p>Add the Marina's HashID at the end of your GET to receive only that marina info.</p>\n<p><em>Example with marina Id: <a href=\"https://https://molopublicapistage.azurewebsites.net/v1/api/Marina?id=Omlo\">https://https://molopublicapistage.azurewebsites.net/v1/api/Marina?id=Omlo</a></em>\n<em>Example with region filtering: <a href=\"http://molopublicapistage.azurewebsites.net/v1/api/marina?latMin=-85&amp;latMax=85&amp;longMin=-180&amp;longMax=180\">http://molopublicapistage.azurewebsites.net/v1/api/marina?latMin=-85&amp;latMax=85&amp;longMin=-180&amp;longMax=180</a></em></p>\n<p>To utilise paging, append an offset and/or limit parameters to the URL e.g. ?offset=100&amp;limit=25.\nAdd the four url parameters to filter marinas by region. If any of the position parameters is left out, the rest will be ignored and API will return marinas without region filtering. </p>\n<ul>\n<li>Parameters<ul>\n<li>latMin (float) - Minimum value for region Latitude</li>\n<li>latMax (float) - Maximum value for region Latitude</li>\n<li>longMin (float) - Minimum value for region Longitude</li>\n<li>longMax (float) - Maximum value for region Longitude</li>\n<li>limit (int) - Maximum number of results</li>\n<li>offset (int) - Offseting results</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"protocol":"https","path":["v1","api","Marina",""],"host":["molopublicapi","azure-api","net"],"query":[{"key":"limit","value":"500"}],"variable":[]}},"response":[{"id":"3d4dad1a-6da0-54ce-0a15-4ae1ce0fc190","name":"Retieve the First 20 Marinas","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"99297b51b5b64f0c81849d07e57d5be5"}],"body":{"mode":"formdata","formdata":[]},"url":{"raw":"https://molopublicapistage.azure-api.net/v1/api/Marina/?limit=20","protocol":"https","host":["molopublicapistage","azure-api","net"],"path":["v1","api","Marina",""],"query":[{"key":"latMin","value":null,"disabled":true},{"key":"latMax","value":null,"disabled":true},{"key":"longMin","value":null,"disabled":true},{"key":"longMax","value":null,"disabled":true},{"key":"offset","value":null,"disabled":true},{"key":"limit","value":"20"}]}},"status":"OK","code":200,"_postman_previewlanguage":"","header":[],"cookie":[],"responseTime":"0","body":""}],"_postman_id":"234aadcf-094b-d2a7-115a-494ad0fe05f7"},{"name":"Check Offer Availability","event":[{"listen":"prerequest","script":{"id":"c6773ce8-07e5-4adb-be64-66752fc0848b","exec":["pm.globals.get(\"token\");"],"type":"text/javascript"}},{"listen":"test","script":{"id":"816f5ba3-1244-4419-a8c9-d6ee9a3c4380","exec":["pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"OfferID\");","});","","pm.test(\"Response time is less than 1000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(1000);","});","","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript"}}],"id":"262d26ad-4d28-b441-6ab3-65864f80ad5a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751","disabled":false}],"body":{"mode":"raw","raw":"{\n  \"Marina_IDs\":[\"kg\"],\n  \"OfferType\":[\"1\",\"2\",\"3\",\"4\"],\n  \"Dimensions\":\"imperial\",\n  \"VesselLOA\":30,\n  \"VesselBeam\":8,\n  \"VesselDraft\":2,\n  \"ArrivalDate\":\"8/7/2021 23:59\",\n  \"DepartureDate\":\"8/8/2021 14:00\"\n}"},"url":"{{online-booking-url}}v1/api/offer","description":"<h1 id=\"request\">Request</h1>\n<p>Use this endpoint list all available offers. The following are required fields when searching for offers:</p>\n<ol>\n<li>Arrival and Departure Date must be provided in UTC.</li>\n<li>The Arrival date and time must always be equal to the current date and time or later.</li>\n<li>We expect times be military time and have the leading zero for times before 12pm. <em>(E.g. 09:30)</em></li>\n<li>Dimensions is a string of \"imperial\" or \"metric\". It tells us what measurement units are being sent for the vessel dimensions.</li>\n<li>Vessel LOA - This is the Length Overall of the vessel. Up to 2 decimal places.</li>\n<li>Vessel Beam - This is the width of the vessel. Up to 2 decimal places.</li>\n<li>Vessel Draft - This is the depth below the waterline. Up to 2 decimal places.</li>\n</ol>\n<p>You can also send some other items in your request to limit the marina offers.</p>\n<ol>\n<li>Marina ID - This is optional and you can POST the hash ID of a specific marina location to limit offer availability to that location only.</li>\n<li>Min Lat, Max Lat, Min Long, and Max Long - These are shown in the example below and allow you to draw a polygon to restrict the offers to only the marinas in that polygon. Send Lat and Long in decimal format.</li>\n<li>Amenities</li>\n<li>City</li>\n<li>State (2-letter USPS abbreviation)</li>\n<li>Zip Code (only first 5 digits for US)</li>\n<li>Country</li>\n</ol>\n<h1 id=\"list-of-shore-power\">List of Shore Power</h1>\n<p>This is a list of all the strings Molo uses to identify shore power a space might have.</p>\n<ol>\n<li>120 V, 30 Amps</li>\n<li>120 V, 50 Amps</li>\n<li>120/240 V, 50 Amps</li>\n<li>120/240 V, 100 Amps</li>\n<li>120/208 V, 100 Amps</li>\n<li>408 V, 3 Phase</li>\n<li>480 V, Single Phase</li>\n<li>480 V, 3 Phase</li>\n<li>120/208 V, 100 Amps, 3 Phase</li>\n<li>480 V, 200 Amps, 3 Phase</li>\n<li>120 V, 20 Amps</li>\n<li>120 V / 240 V 100 Amps</li>\n<li>240 V 200 Amps</li>\n</ol>\n<h1 id=\"response\">Response</h1>\n<p>Here is an explanation of the elements of our response:</p>\n<ol>\n<li>The <em>StorageSubtotal</em> is the subtotal of dockage fees whether they are flat, per night, or per foot per night.</li>\n<li>The <em>Add-OnSubtotal</em> is sum of all required <em>Add-On Total</em> values.</li>\n<li><em>OfferSubtotal</em> is <em>StorageSubtotal + Add-OnSubtotal</em>.</li>\n<li><em>TaxTotal</em> is the total of taxes across storage (dockage) fees and add-ons.</li>\n<li><em>OfferTotal</em> is <em>(OfferSubtotal-AutomaticDiscount&gt;Total) + TaxTotal</em>.</li>\n</ol>\n<h1 id=\"marina-vg\">Marina <code>vg</code></h1>\n<h2 id=\"offer-r5p-example-in-stage\">Offer <code>R5p</code> Example in Stage</h2>\n<ol>\n<li>Vessel LOA must be less than or equal to 29 feet and 11 inches.</li>\n<li>Vessel Draft must be less than or equal to 7 feet.</li>\n<li>Length of stay must be between 2 and 10 nights (inclusive).</li>\n<li>Earliest arrival is 14-Aug-2017 and latest departure is 31-Oct-2017.</li>\n<li>The standard daily rate is $2.25 per foot per night.</li>\n<li>Friday and Saturday night are overriden in the offer and will calculate at $2.75 per foot per night through October 28th.</li>\n<li>Only 4 spaces exist for this offer.</li>\n</ol>\n<h2 id=\"offer-rwl-example-in-stage\">Offer <code>RWL</code> Example in Stage</h2>\n<ol>\n<li>Vessel LOA must be 30.0 Feet or greater.</li>\n<li>Max Beam and Draft are 15 and 10 feet respectively.</li>\n<li>Length of stay must be 1 to 20 nights (inclusive).</li>\n<li>Earliest arrival is 7-Sep-2017 and latest departure is 18-Oct-2017.</li>\n<li>Only 7 spaces exist for this offer. 4 of them overlap with Offer \"R5p\".</li>\n</ol>\n<h1 id=\"marina-oa\">Marina <code>oA</code></h1>\n<p>Important info for all offers at Marina <code>oA</code>:</p>\n<ol>\n<li>Length of stay must be 1 to 30 nights (inclusive on min and max).</li>\n<li>Latest departure is 1-Jan-2019.</li>\n<li>When the vessel is less than 30 feet in length, a minimum standard rate of $60 / night applies to weeknights and a minimum weekend and holiday rate of $67.50 / night applies.</li>\n<li>When the vessel is more than 30 feet in length, a standard weeknight rate of $2.00 / foot / night applies and a $2.25 / foot / night rate applies to weekends and holidays. </li>\n<li>Below is a list of rate overrides for weekends or holidays. The weekend and holiday rate overrides are applied by <em>night</em>, meaning if the vessel is staying at that marina the night of the date then the rate applies. If the vessel checks out the day a rate override begins, it won't be used to calculate amounts due.</li>\n</ol>\n<p><code>5-Jan-18   6-Jan-18 12-Jan-18   13-Jan-18 19-Jan-18   20-Jan-18 26-Jan-18   27-Jan-18 2-Feb-18    3-Feb-18 9-Feb-18    10-Feb-18 16-Feb-18   17-Feb-18 23-Feb-18   24-Feb-18 2-Mar-18    3-Mar-18 9-Mar-18    10-Mar-18 16-Mar-18   17-Mar-18 23-Mar-18   24-Mar-18 30-Mar-18   31-Mar-18 6-Apr-18    7-Apr-18 13-Apr-18   14-Apr-18 20-Apr-18   21-Apr-18 27-Apr-18   28-Apr-18 4-May-18    5-May-18 11-May-18   12-May-18 18-May-18   19-May-18 25-May-18   28-May-18 1-Jun-18    2-Jun-18 8-Jun-18    9-Jun-18 15-Jun-18   16-Jun-18 22-Jun-18   23-Jun-18 29-Jun-18   4-Jul-18 6-Jul-18    7-Jul-18 13-Jul-18   14-Jul-18 20-Jul-18   21-Jul-18 27-Jul-18   28-Jul-18 3-Aug-18    4-Aug-18 10-Aug-18   11-Aug-18 17-Aug-18   18-Aug-18 24-Aug-18   25-Aug-18 31-Aug-18   3-Sep-18 7-Sep-18    8-Sep-18 14-Sep-18   15-Sep-18 21-Sep-18   22-Sep-18 28-Sep-18   29-Sep-18 5-Oct-18    6-Oct-18 12-Oct-18   13-Oct-18 19-Oct-18   20-Oct-18 26-Oct-18   27-Oct-18 2-Nov-18    3-Nov-18 9-Nov-18    10-Nov-18 16-Nov-18   17-Nov-18 21-Nov-18   26-Nov-18 30-Nov-18   1-Dec-18 7-Dec-18    8-Dec-18 14-Dec-18   15-Dec-18 21-Dec-18   25-Dec-18 28-Dec-18   1-Jan-19</code></p>\n<h2 id=\"offer-gmk-example-in-stage\">Offer <code>gmk</code> Example in Stage</h2>\n<p>This offer contains 10 slips in total. One of these 10 slips has a long term reservation that will always result in a max of 9 slips available.</p>\n<ol>\n<li>Vessel LOA must be 29 feet 11 inches or less.</li>\n<li>Max Beam is 13 feet.</li>\n<li>One of the available slips has a Max Draft of 4 feet. Three of the other available slips has a Max Draft of 4 feet 9 inches.</li>\n<li>All 9 of the 10 that are available can support a single 120 V, 30 Amps.</li>\n<li>When you send <code>\"PowerNeed1\":[\"120 V, 30 Amps\"]</code>, we will automatically add a $10 / night fee for electricity.</li>\n</ol>\n<h2 id=\"offer-jql-example-in-stage\">Offer <code>JqL</code> Example in Stage</h2>\n<p>This offer contains 10 slips in total. There are no long term reservations present.</p>\n<ol>\n<li>Vessel LOA must be 30 feet or greater and also less than 39 feet 11 inches.</li>\n<li>2 of the slips have a Max Beam of 16 feet 6 inches and for the other two the Max Beam is 17 feet.</li>\n<li>1 slip has a Max Draft of 5 feet 6 inches, 1 slip has a Max Draft of 6 feet, and for the last 2 slips the Max Draft is 6 feet 6 inches.</li>\n<li>All 10 slips are capable of providing 1x 120 V, 30 Amp or 1x 120 V, 50 Amp power.</li>\n<li>When you send <code>\"PowerNeed1\":[\"120 V, 50 Amps\"]</code>, we will automatically add a $15 / night fee for electricity.</li>\n</ol>\n<h2 id=\"offer-g19-example-in-stage\">Offer <code>G19</code> Example in Stage</h2>\n<p>This offer contains 10 slips in total.</p>\n<ol>\n<li>Vesesl LOA must be 40 feet or greater and also less than 65 feet.</li>\n<li>2 slips have a Max Beam of 16 feet 6 inches, 5 slips have a Max Beam of 17 feet, 1 slip has a Max Beam of 18 feet, and the last slip has a Max Beam of 19 feet.</li>\n<li>1 slip has a Max Draft of 5 feet 6 inches, 1 slip has a Max Draft of 6 feet, 5 slips have a Max Draft of 6 feet 6 inches, and the final 2 slips have a Max Draft of 7 feet 9 inches.</li>\n<li>All 10 slips can accommodate 2x 120 V, 50 Amps Power.</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"path":["api","offer"],"host":["{{online-booking-url}}v1"],"query":[],"variable":[]}},"response":[{"id":"64930bd2-dc88-4985-9519-96ea2fb7a6b7","name":"Check Offer Availability","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","disabled":false},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751","disabled":false}],"body":{"mode":"raw","raw":"{\n  \"ArrivalDate\":\"04/06/2018 18:00\",\n  \"DepartureDate\":\"04/07/2018 14:00\",\n  \"Dimensions\":\"imperial\",\n  \"Marina_IDs\":[\"Jo\"],\n  \"PowerNeed1\":[\"120 V, 30 Amps\"],\n  \"VesselLOA\":55,\n  \"VesselBeam\":12,\n  \"VesselDraft\":6\n}"},"url":"https://molopublicapi.azure-api.net/v1/api/offer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Cache-Control","value":"no-cache","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Content-Encoding","value":"gzip","name":"Content-Encoding","description":"The type of encoding used on the data."},{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Wed, 04 Apr 2018 18:32:17 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"-1","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Set-Cookie","value":"ARRAffinity=b83feb1011c0c1fe251a2b7c4cfc96f4857b02c76caebdab729dc2740f535341;Path=/;HttpOnly;Domain=molopublicapiprod.azurewebsites.net","name":"Set-Cookie","description":"an HTTP cookie"},{"key":"Transfer-Encoding","value":"chunked","name":"Transfer-Encoding","description":"The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity."},{"key":"Vary","value":"Accept-Encoding","name":"Vary","description":"Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server."},{"key":"X-AspNet-Version","value":"4.0.30319","name":"X-AspNet-Version","description":"Custom header"},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[],"responseTime":null,"body":"[{\"OfferID\":\"DAN\",\"MarinaLocation\":{\"marina_id\":\"Jo\",\"name\":\"Horn Point Harbor Marina\",\"address\":{\"address_line_1\":\"105 Eastern Avenue\",\"address_line_2\":null,\"city\":\"Annapolis\",\"state\":\"MD\",\"zip\":\"21403\"},\"primary_phone_number\":\"410.263.0550\",\"primary_fax_number\":\"410.648.4027\",\"default_tax_rate\":\"6.00\",\"unit_system\":\"imperial\",\"time_zone\":\"(UTC-05:00) Eastern Time (US & Canada)\",\"latitude\":38.969882,\"longitude\":-76.47619,\"marina_website\":null,\"default_arrival_time\":\"10:00\",\"default_departure_time\":\"06:00\",\"amenities\":[]},\"CustomerOfferName\":\"Transient Dockage\",\"ExternalDescription\":null,\"OfferType\":\"Transient Dockage / Slip / Berth\",\"PriceMethod\":\"per foot per night\",\"StandardUnitPrice\":\"2.00\",\"AverageNightlyRate\":\"123.75\",\"SpacesRemaining\":1,\"RateOverrides\":[{\"start_date\":\"4/6/2018\",\"end_date\":\"4/7/2018\",\"rate\":\"2.25\",\"rate_method\":\"per foot per night\"}],\"AddOns\":[{\"AddonName\":\"Electricity, Single 30 Amp, Per Night\",\"Required\":true,\"PricingMethod\":\"per night\",\"UnitPrice\":\"10.00\",\"Total\":\"10.00\",\"Id\":null}],\"StorageSubtotal\":\"123.75\",\"AddOnSubtotal\":\"10.00\",\"OfferSubtotal\":\"133.75\",\"TotalTax\":\"0.00\",\"OfferTotal\":\"133.75\",\"MinimumPayment\":\"133.75\"}]"}],"_postman_id":"262d26ad-4d28-b441-6ab3-65864f80ad5a"},{"name":"Hold Offer for Reservation","event":[{"listen":"prerequest","script":{"id":"62b7fa30-b48f-4af4-8ddc-4bc5740240bd","exec":["pm.globals.get(\"token\");"],"type":"text/javascript"}},{"listen":"test","script":{"id":"b5a80f6d-8597-42e0-b043-dda3e2f456bc","exec":["pm.environment.set(\"OfferHoldID\", pm.response.json().OfferHoldID);","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"OfferHoldID\");","});","","pm.test(\"Response time is less than 750ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(750);","});","","pm.test(\"Status code is 201\", function () {","    pm.response.to.have.status(201);","});"],"type":"text/javascript"}}],"id":"368408f9-4a9c-a1e9-487f-cd7622fce7eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"body":{"mode":"raw","raw":"{\n    \"MarinaID\":\"kg\",\n    \"OfferID\":\"ZNZ\",\n    \"Dimensions\":\"imperial\",\n    \"VesselLOA\":30,\n    \"VesselBeam\":8,\n    \"VesselDraft\":2,\n    \"ArrivalDate\":\"8/7/2021 23:59\",\n\t\"DepartureDate\":\"8/8/2021 14:00\"\n}"},"url":"{{online-booking-url}}v1/api/OfferHold","description":"<h1 id=\"overview\">Overview</h1>\n<p>Use this endpoint to hold an offer when a customer begins the booking process in your system. This will hold a space in the offer for 15 minutes while the customer completes the checkout process.</p>\n<p><em>This is an important step to ensure a space is not taken away prior to a customer completing the booking in your platform.</em></p>\n<p>The following must be sent in the OfferHold.</p>\n<ol>\n<li>Marina ID - This is the Hash ID of the marina where you are holding a space.</li>\n<li>OfferID - This is the Hash ID of the Offer for which you want to hold a space.</li>\n<li>Vessel LOA - This is the Length Overall of the vessel. Up to 2 decimal places.</li>\n<li>Vessel Beam - This is the width of the vessel. Up to 2 decimal places.</li>\n<li>Vessel Draft - This is the depth below the waterline. Up to 2 decimal places.</li>\n<li>Scheduled Arrival and Departure Date/time in UTC.</li>\n<li>We expect times be military time and have the leading zero for times before 12pm. <em>(E.g. 09:30)</em></li>\n<li>Include your needs for power when asking to hold a space.</li>\n</ol>\n<h2 id=\"list-of-shore-power\">List of Shore Power</h2>\n<p>This is a list of all the strings Molo uses to identify shore power a vessel might have.</p>\n<ol>\n<li>120 V, 30 Amps</li>\n<li>120 V, 50 Amps</li>\n<li>120/240 V, 50 Amps</li>\n<li>120/240 V, 100 Amps</li>\n<li>120/208 V, 100 Amps</li>\n<li>408 V, 3 Phase</li>\n<li>480 V, Single Phase</li>\n<li>480 V, 3 Phase</li>\n<li>120/208 V, 100 Amps, 3 Phase</li>\n<li>480 V, 200 Amps, 3 Phase</li>\n<li>120 V, 20 Amps</li>\n<li>120 V /240 V 100 Amps</li>\n<li>240 V 200 Amps</li>\n</ol>\n<h2 id=\"our-response\">Our Response</h2>\n<p>Here is an explanation of the elements of our response:</p>\n<ol>\n<li>The <code>OfferHoldID</code> is the Hash ID assigned to the held space. You must save this and submit it with your <em>POST</em> to <code>Reservation</code>.</li>\n<li>The <code>ExpirationDateTime</code> is a UTC UNIX date/time stamp of when the hold will expire.</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"path":["api","OfferHold"],"host":["{{online-booking-url}}v1"],"query":[],"variable":[]}},"response":[{"id":"0aba2b3b-0625-5ac7-7ed2-3089a1033a06","name":"Hold Offer for Reservation","originalRequest":{"method":"POST","header":[{"key":"Content-Type","type":"text","name":"Content-Type","value":"application/json","disabled":false},{"key":"Ocp-Apim-Subscription-Key","value":"99297b51b5b64f0c81849d07e57d5be5","disabled":false}],"body":{"mode":"raw","raw":"{\n    \"MarinaID\":\"oA\",\n    \"OfferID\":\"JqL\",\n    \"Dimensions\":\"imperial\",\n    \"VesselLOA\":35,\n    \"VesselBeam\":4,\n    \"VesselDraft\":4,\n\t\"PowerNeed1\": [\"120 V, 30 Amps\"],\n    \"ArrivalDate\":\"03/15/2018 18:00\",\n    \"DepartureDate\":\"03/16/2018 14:00\"\n}"},"url":"https://molopublicapistage.azurewebsites.net/v1/api/OfferHold"},"status":"Created","code":201,"_postman_previewlanguage":"plain","header":[{"key":"Cache-Control","value":"no-cache","name":"Cache-Control","description":"Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds"},{"key":"Content-Length","value":"68","name":"Content-Length","description":"The length of the response body in octets (8-bit bytes)"},{"key":"Content-Type","value":"text/plain; charset=utf-8","name":"Content-Type","description":"The mime type of this content"},{"key":"Date","value":"Wed, 17 Jan 2018 15:58:12 GMT","name":"Date","description":"The date and time that the message was sent"},{"key":"Expires","value":"-1","name":"Expires","description":"Gives the date/time after which the response is considered stale"},{"key":"Pragma","value":"no-cache","name":"Pragma","description":"Implementation-specific headers that may have various effects anywhere along the request-response chain."},{"key":"Server","value":"Microsoft-IIS/10.0","name":"Server","description":"A name for the server"},{"key":"Set-Cookie","value":"ARRAffinity=eceb174a5b4e7520fd91ad1310012d0a5d1e646197e17e8d9c08b7ab0c0300aa;Path=/;HttpOnly;Domain=molopublicapistage.azurewebsites.net","name":"Set-Cookie","description":"an HTTP cookie"},{"key":"X-AspNet-Version","value":"4.0.30319","name":"X-AspNet-Version","description":"Custom header"},{"key":"X-Powered-By","value":"ASP.NET","name":"X-Powered-By","description":"Specifies the technology (ASP.NET, PHP, JBoss, e.g.) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)"}],"cookie":[{"expires":"Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)","httpOnly":true,"domain":"molopublicapistage.azurewebsites.net","path":"/","secure":false,"value":"eceb174a5b4e7520fd91ad1310012d0a5d1e646197e17e8d9c08b7ab0c0300aa","key":"ARRAffinity"}],"responseTime":"1755","body":"{\"OfferHoldID\":\"Mza\",\"ExpirationDateTime\":\"\\/Date(1516205592282)\\/\"}"},{"id":"a84c88e2-ddfd-94fb-0443-93b776f4cea0","name":"Default","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"486d58a6adf04b0ab70f250826c6b941"}],"body":{"mode":"raw","raw":"{\n  \"ArrivalDate\": \"01/15/2018 18:00\",\n  \"DepartureDate\": \"01/17/2018 14:00\",\n  \"Dimensions\": \"imperial\",\n  \"Marina_IDs\": [\n    \"oA\"\n  ],\n  \"PowerNeed1\":[\"120 V, 50 Amps\"],\n  \"VesselLOA\":35,\n  \"VesselBeam\":4,\n  \"VesselDraft\":4\n}"},"url":"https://molopublicapistage.azure-api.net/v1/api/offer"},"code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":"0","body":"[\n    {\n        \"OfferID\": \"JqL\",\n        \"MarinaLocation\": {\n            \"marina_id\": \"oA\",\n            \"name\": \"Horn Point Harbor Marina\",\n            \"address\": {\n                \"address_line_1\": \"105 Eastern Avenue\",\n                \"address_line_2\": null,\n                \"city\": \"Annapolis\",\n                \"state\": \"MD\",\n                \"zip\": \"21403\"\n            },\n            \"primary_phone_number\": \"4102630550\",\n            \"primary_fax_number\": \"1\",\n            \"default_tax_rate\": \"6.00\",\n            \"unit_system\": \"imperial\",\n            \"time_zone\": \"(UTC-05:00) Eastern Time (US & Canada)\",\n            \"latitude\": 38.969882,\n            \"longitude\": -76.47619,\n            \"marina_website\": null,\n            \"default_arrival_time\": \"2018-01-12T15:00:00\",\n            \"default_departure_time\": \"2018-01-12T11:00:00\",\n            \"amenities\": []\n        },\n        \"CustomerOfferName\": \"Transient Dockage, Single 50 Amp Electric Service\",\n        \"ExternalDescription\": null,\n        \"OfferType\": \"Transient Dockage / Slip / Berth\",\n        \"PriceMethod\": \"per foot per night\",\n        \"StandardUnitPrice\": \"2.00\",\n        \"AverageNightlyRate\": \"70.00\",\n        \"SpacesRemaining\": 4,\n        \"AddOns\": [\n            {\n                \"AddonName\": \"Electricity, 50 Amp\",\n                \"Required\": true,\n                \"PricingMethod\": \"per night\",\n                \"UnitPrice\": \"15.00\",\n                \"Total\": \"30.00\",\n                \"Id\": \"kAje\"\n            }\n        ],\n        \"StorageSubtotal\": \"140.00\",\n        \"AddOnSubtotal\": \"30.00\",\n        \"OfferSubtotal\": \"170.00\",\n        \"TotalTax\": \"0.00\",\n        \"OfferTotal\": \"170.00\",\n        \"MinimumPayment\": \"170.00\"\n    }\n]"}],"_postman_id":"368408f9-4a9c-a1e9-487f-cd7622fce7eb"},{"name":"Reservation","event":[{"listen":"prerequest","script":{"id":"82d7a21b-5f21-4a13-b56e-5c9e6fb6fa58","exec":["pm.globals.get(\"token\");"],"type":"text/javascript"}},{"listen":"test","script":{"id":"5cb91198-e271-47d0-9474-6ac5c2acbcfa","exec":["pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"ReservationID\");","});","","pm.test(\"Body matches string\", function () {","    pm.expect(pm.response.text()).to.include(\"Pending\");","});","","pm.test(\"Response time is less than 1500ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(1500);","});","","pm.test(\"Status code is 201\", function () {","    pm.response.to.have.status(201);","});"],"type":"text/javascript"}}],"id":"fdda1040-efb8-7852-51bd-738ed560f399","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"8ac3337e6c144ab0b934505d7d01a751"}],"body":{"mode":"raw","raw":" {\n    \"MarinaID\":\"kg\",\n    \"OfferID\":\"ZNZ\",\n    \"OfferHoldID\":\"p8kw0\",\n    \"ContactID\":\"NgLa5\",\n    \"BoatID\":\"qJll2\",\n    \"ScheduledArrivalDate\":\"8/7/2019 23:59\",\n    \"ScheduledDepartureDate\":\"8/8/2019 14:00\",\n    \"CustomerNotes\":\"I have two other friends docked at this Marina not sure if that matters\",\n\t\"PaymentCollected\":{\"amount\":124.00,\"method\":\"Credit Card\"}\n}"},"url":"{{online-booking-url}}v1/api/Reservation","description":"<p>Use this endpoint to make a reservation in Molo.</p>\n<p><em>Note:</em> We highly recommend you have an OfferHold in order to make a reservation. If your OfferHold is expired or missing, Molo will attempt to store your reservation but this workflow is not recommended.</p>\n<p>The following must be sent in the Reservation POST.</p>\n<ol>\n<li>Marina ID - This is the Hash ID of the marina where you are holding a space.</li>\n<li>OfferHoldID - This is the Hash ID of the Offer for which you want to hold a space.</li>\n<li>ContactID</li>\n<li>BoatID</li>\n<li>ScheduledArrivalDate - A UTC date/time stamp of the scheduled arrival date. This must be equal to the current date and time or later.</li>\n<li>ScheduledDepartureDate - A UTC date/time stamp of the scheduled departure date.</li>\n<li>Customer Notes - You can use this to store notes from the customer to the marina.</li>\n<li>Payment Block - You can use the  to tell Molo how much prepayment was already collected in US Dollars. This will show the marina how much has been paid.</li>\n<li>PowerNeed1 and PowerNeed2 should be sent that match the values you used when checking <code>Offer</code> availability. This is helpful because if the OfferHold is recently expired or missing, we can still check to make sure the appropriate power is available prior to saving a reservation.</li>\n</ol>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]},"isInherited":true,"source":{"_postman_id":"4cc83388-0106-8503-9efd-a0d07b4261b0","id":"4cc83388-0106-8503-9efd-a0d07b4261b0","name":"Molo Public Booking API","type":"collection"}},"urlObject":{"path":["api","Reservation"],"host":["{{online-booking-url}}v1"],"query":[],"variable":[]}},"response":[{"id":"05cc7f49-7cc6-1318-ca36-95a63bd02006","name":"Default","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"486d58a6adf04b0ab70f250826c6b941"}],"body":{"mode":"formdata","formdata":[]},"url":"https://molopublicapistage.azure-api.net/v1/api/Reservation"},"code":201,"_postman_previewlanguage":"","header":[],"cookie":[],"responseTime":"0","body":"{\n    \"MarinaID\":\"vg\",\n    \"OfferHoldID\":\"j6\",\n    \"OfferID\":\"R5p\",\n    \"ContactID\":\"NJv\",\n    \"BoatID\":\"52y\",\n    \"ScheduledArrivalDate\":\"9/22/2017 18:00\",\n    \"ScheduledDepartureDate\":\"9/24/2017 14:00\",\n    \"CustomerNotes\":\"I would like to be as close to the pool area as possible. Thanks!\",\n    \"PaymentCollected\":{\"amount\":5.52,\"method\":\"Credit Card\",\"reference\":\"SN2334-A\"},\n    \"PowerNeed1\":[\"120 V, 30 Amps\",\"120 V, 50 Amps\", \"480 V, 200 Amps, 3 Phase\"],\n    \"PowerNeed2\":[\"408 V, 3 Phase\", \"480 V, 200 Amps, 3 Phase\"]\n}"},{"id":"6a659e02-3f22-4fee-28ff-b0cbdf7641e4","name":"Default","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Ocp-Apim-Subscription-Key","value":"486d58a6adf04b0ab70f250826c6b941"}],"body":{"mode":"raw","raw":"{\n    \"MarinaID\": \"vg\",\n    \"OfferHoldID\": \"j6\",\n    \"OfferID\": \"R5p\",\n    \"ContactID\": \"NJv\",\n    \"BoatID\": \"52y\",\n    \"ScheduledArrivalDate\": \"9/22/2017 18:00\",\n    \"ScheduledDepartureDate\": \"9/24/2017 14:00\",\n    \"CustomerNotes\": \"I would like to be as close to the pool area as possible. Thanks!\",\n    \"PaymentCollected\": {\n        \"amount\": 5.52,\n        \"method\": \"Credit Card\",\n        \"reference\": \"SN2334-A\"\n    },\n    \"PowerNeed1\": [\n        \"120 V, 30 Amps\",\n        \"120 V, 50 Amps\",\n        \"480 V, 200 Amps, 3 Phase\"\n    ],\n    \"PowerNeed2\": [\n        \"408 V, 3 Phase\",\n        \"480 V, 200 Amps, 3 Phase\"\n    ]\n}"},"url":"https://molopublicapistage.azurewebsites.net/v1/api/OfferHold"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":"0","body":"[\n\t{\n    \t\"ReservationID\": \"87h5\",\n    \t\"Status\": \"Confirmed\"\n\t}\n]"}],"_postman_id":"fdda1040-efb8-7852-51bd-738ed560f399"}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{prod_public_api_token}}"}]}},"event":[{"listen":"prerequest","script":{"id":"93a4082c-ba35-4357-8334-aafa1faa84cb","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"88e3f528-aad4-4f8f-aa82-40718c862c0e","type":"text/javascript","exec":[""]}}]}