Lavanda Developer API

API change history

Lavanda Developer API

Import a booking

Import a booking

Try it

Request

Request URL

Request headers

  • (optional)
    string
    Media type of the body sent to the API.
  • string
    Subscription key which provides access to this API. Found in your Profile.

Request body

{
  "booking": {
    "additional_fees_total_amount": 0,
    "adults": 0,
    "booked_time": "string",
    "check_in": "string",
    "check_in_time": "string",
    "check_out": "string",
    "check_out_time": "string",
    "children": 0,
    "cleaning_fee_amount": 0,
    "confirmation_code": "string",
    "currency": "string",
    "guest_payment_status": "canceled",
    "lead_guest_email": "string",
    "lead_guest_name": "string",
    "lead_guest_phone_number": "string",
    "messaging_mode": "direct_to_guest",
    "notes": "string",
    "platform": "string",
    "property_id": "string",
    "source": "string",
    "status": "awaiting_payment",
    "total_cost": 0,
    "vetting_status": "Passed"
  }
}
{
  "type": "object",
  "required": [
    "booking"
  ],
  "properties": {
    "booking": {
      "type": "object",
      "required": [
        "additional_fees_total_amount",
        "adults",
        "check_in",
        "check_out",
        "children",
        "cleaning_fee_amount",
        "lead_guest_email",
        "lead_guest_name",
        "lead_guest_phone_number",
        "messaging_mode",
        "platform",
        "property_id",
        "status",
        "total_cost"
      ],
      "properties": {
        "additional_fees_total_amount": {
          "type": "integer",
          "description": "The total amount of all additional fees combined"
        },
        "adults": {
          "type": "integer",
          "description": "The number of adults guests"
        },
        "booked_time": {
          "type": "string",
          "format": "YYYY-MM-DDTHH:MM:SS",
          "description": "The time that the booking was confirmed (required for confirmed bookings)"
        },
        "check_in": {
          "type": "string",
          "format": "YYYY-MM-DD",
          "description": "The date that the guests arrive"
        },
        "check_in_time": {
          "type": "string",
          "format": "HH:MM",
          "description": "The hour and minutes the guests arrive"
        },
        "check_out": {
          "type": "string",
          "format": "YYYY-MM-DD",
          "description": "The date that the guests leave"
        },
        "check_out_time": {
          "type": "string",
          "format": "HH:MM",
          "description": "The hour and minutes the guests leave"
        },
        "children": {
          "type": "integer",
          "description": "The number of child guests"
        },
        "cleaning_fee_amount": {
          "type": "integer",
          "description": "The amount of the cleaning fee"
        },
        "confirmation_code": {
          "type": "string",
          "description": "The booking confirmation code"
        },
        "currency": {
          "type": "string",
          "description": "The currency code of the booking (Optional)"
        },
        "guest_payment_status": {
          "type": "string",
          "description": "The guest payment status of the booking (Optional)",
          "enum": [
            "canceled",
            "due",
            "failed",
            "success"
          ]
        },
        "lead_guest_email": {
          "type": "string",
          "description": "The email address of the lead guest"
        },
        "lead_guest_name": {
          "type": "string",
          "description": "The name of the lead guest"
        },
        "lead_guest_phone_number": {
          "type": "string",
          "description": "The phone number of the lead guest"
        },
        "messaging_mode": {
          "type": "string",
          "description": "The messaging mode of the booking",
          "enum": [
            "direct_to_guest",
            "relay_via_webhook"
          ]
        },
        "notes": {
          "type": "string",
          "description": "The booking notes (Optional)"
        },
        "platform": {
          "type": "string",
          "description": "The booking platform"
        },
        "property_id": {
          "type": "string",
          "description": "The ID of the associated property"
        },
        "source": {
          "type": "string",
          "description": "The booking source"
        },
        "status": {
          "type": "string",
          "description": "The status of the booking",
          "enum": [
            "awaiting_payment",
            "canceled",
            "checked_in",
            "checked_out",
            "closed",
            "confirmed",
            "declined",
            "expired",
            "inquiry",
            "requested",
            "reserved"
          ]
        },
        "total_cost": {
          "type": "integer",
          "description": "The total accommodation fare"
        },
        "vetting_status": {
          "type": "string",
          "description": "The vetting status of the booking (Optional)",
          "enum": [
            "Passed",
            "Failed",
            "In Process"
          ]
        }
      }
    }
  },
  "example": "{\r\n  \"booking\": {\r\n    \"additional_fees_total_amount\": 0,\r\n    \"adults\": 0,\r\n    \"booked_time\": \"string\",\r\n    \"check_in\": \"string\",\r\n    \"check_in_time\": \"string\",\r\n    \"check_out\": \"string\",\r\n    \"check_out_time\": \"string\",\r\n    \"children\": 0,\r\n    \"cleaning_fee_amount\": 0,\r\n    \"confirmation_code\": \"string\",\r\n    \"currency\": \"string\",\r\n    \"guest_payment_status\": \"canceled\",\r\n    \"lead_guest_email\": \"string\",\r\n    \"lead_guest_name\": \"string\",\r\n    \"lead_guest_phone_number\": \"string\",\r\n    \"messaging_mode\": \"direct_to_guest\",\r\n    \"notes\": \"string\",\r\n    \"platform\": \"string\",\r\n    \"property_id\": \"string\",\r\n    \"source\": \"string\",\r\n    \"status\": \"awaiting_payment\",\r\n    \"total_cost\": 0,\r\n    \"vetting_status\": \"Passed\"\r\n  }\r\n}"
}

Responses

200 OK

Success

Representations

{
  "data": {
    "id": "RGM1lQouRkjxOkU3prtvE3yyDMRwMsD8aZNGXnBs6SU",
    "type": "booking",
    "attributes": {
      "booked_time": "2020-12-31T12:30:00+00:00",
      "canceled": false,
      "confirmation_code": "2J999F",
      "currency": "GBP",
      "end_date": "2022-07-03",
      "last_modified": "2020-12-03T09:04:04+00:00",
      "lead_guest_first_name": "Lewis",
      "lead_guest_last_name": "Leo",
      "lead_guest_email": "sneaky@pete.com",
      "lead_guest_phone_number": "01234567987",
      "messaging_mode": "relay_via_webhook",
      "number_of_guests": 4,
      "platform": "Airbnb",
      "source": "Google",
      "start_date": "2022-06-03",
      "status": "requested",
      "total_days": 30,
      "total_cost": 606
    },
    "relationships": {
      "property": {
        "data": {
          "id": "rgN9xze9VpaQZGAtP9GKuzCuaWPmbuMg2f5jDCYHntE",
          "type": "property"
        }
      }
    }
  }
}
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "attributes": {
          "type": "object",
          "properties": {
            "start_date": {
              "type": "string",
              "format": "date"
            },
            "end_date": {
              "type": "string",
              "format": "date"
            },
            "booked_time": {
              "type": "string",
              "format": "date-time",
              "x-nullable": true
            },
            "total_days": {
              "type": "number"
            },
            "total_cost": {
              "type": "number"
            },
            "currency": {
              "type": "string"
            },
            "canceled": {
              "type": "boolean"
            },
            "confirmation_code": {
              "type": "string",
              "x-nullable": true
            },
            "booking": {
              "type": "string"
            },
            "platform": {
              "type": "string"
            },
            "lead_guest_first_name": {
              "type": "string"
            },
            "lead_guest_last_name": {
              "type": "string"
            },
            "lead_guest_email": {
              "type": "string"
            },
            "lead_guest_phone_number": {
              "type": "string",
              "x-nullable": true
            },
            "number_of_guests": {
              "type": "number"
            },
            "messaging_mode": {
              "type": "string",
              "enum": [
                "direct_to_guest",
                "relay_via_webhook"
              ]
            },
            "source": {
              "type": "string",
              "x-nullable": true
            },
            "status": {
              "type": "string",
              "enum": [
                "awaiting_payment",
                "canceled",
                "checked_in",
                "checked_out",
                "closed",
                "confirmed",
                "declined",
                "expired",
                "inquiry",
                "requested",
                "reserved"
              ]
            },
            "last_modified": {
              "type": "string",
              "format": "date-time"
            }
          }
        },
        "relationships": {
          "type": "object",
          "properties": {
            "property": {
              "type": "object",
              "properties": {
                "data": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "included": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "attributes": {
            "type": "object"
          }
        }
      }
    }
  }
}

400 Bad Request

Bad request

Representations

{
  "errors": [
    {
      "detail": "string"
    }
  ]
}
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string"
          }
        }
      }
    }
  }
}

401 Unauthorized

Unauthorized

Representations

403 Forbidden

Forbidden

Representations

500 Internal Server Error

Server error

Representations

Code samples

@ECHO OFF

curl -v -X POST "https://lavanda.azure-api.net/import/bookings"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"

--data-ascii "{body}" 
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }
        
        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

            var uri = "https://lavanda.azure-api.net/import/bookings?" + queryString;

            HttpResponseMessage response;

            // Request body
            byte[] byteData = Encoding.UTF8.GetBytes("{body}");

            using (var content = new ByteArrayContent(byteData))
            {
               content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
               response = await client.PostAsync(uri, content);
            }

        }
    }
}	
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class JavaSample 
{
    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            URIBuilder builder = new URIBuilder("https://lavanda.azure-api.net/import/bookings");


            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);
            request.setHeader("Content-Type", "application/json");
            request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");


            // Request body
            StringEntity reqEntity = new StringEntity("{body}");
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
        };
      
        $.ajax({
            url: "https://lavanda.azure-api.net/import/bookings?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "POST",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString* path = @"https://lavanda.azure-api.net/import/bookings";
    NSArray* array = @[
                         // Request parameters
                         @"entities=true",
                      ];
    
    NSString* string = [array componentsJoinedByString:@"&"];
    path = [path stringByAppendingFormat:@"?%@", string];

    NSLog(@"%@", path);

    NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
    [_request setHTTPMethod:@"POST"];
    // Request headers
    [_request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
    // Request body
    [_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];

    if (nil != error)
    {
        NSLog(@"Error: %@", error);
    }
    else
    {
        NSError* error = nil;
        NSMutableDictionary* json = nil;
        NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
        NSLog(@"%@", dataString);
        
        if (nil != _connectionData)
        {
            json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
        }
        
        if (error || !json)
        {
            NSLog(@"Could not parse loaded json with error:%@", error);
        }
        
        NSLog(@"%@", json);
        _connectionData = nil;
    }
    
    [pool drain];

    return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://lavanda.azure-api.net/import/bookings');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'Content-Type' => 'application/json',
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_POST);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>
########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.urlencode({
})

try:
    conn = httplib.HTTPSConnection('lavanda.azure-api.net')
    conn.request("POST", "/import/bookings?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################

########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64

headers = {
    # Request headers
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.parse.urlencode({
})

try:
    conn = http.client.HTTPSConnection('lavanda.azure-api.net')
    conn.request("POST", "/import/bookings?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################
require 'net/http'

uri = URI('https://lavanda.azure-api.net/import/bookings')


request = Net::HTTP::Post.new(uri.request_uri)
# Request headers
request['Content-Type'] = 'application/json'
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"

response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(request)
end

puts response.body