Travel.Stays.Accommodation (travel v0.2.0)

Copy Markdown View Source

Get, list, suggest, and review accommodations.

Endpoints

  • GET /stays/accommodation/{id} - Get accommodation
  • GET /stays/accommodation - List accommodations
  • POST /stays/accommodation/suggestions - Get suggestions
  • GET /stays/accommodation/{id}/reviews - Get reviews

Examples

# Get accommodation by ID
{:ok, response} = Travel.Stays.Accommodation.get("acc_123")

# List accommodations near a location
{:ok, response} = Travel.Stays.Accommodation.list(%{
  latitude: 51.5,
  longitude: -0.1,
  radius: 5
})

# Get suggestions for a query
{:ok, response} = Travel.Stays.Accommodation.suggestions("Hilton London")

# Get reviews for an accommodation
{:ok, response} = Travel.Stays.Accommodation.reviews("acc_123")

@link https://duffel.com/docs/api/stays/accommodation

Summary

Functions

Get an accommodation by ID.

List accommodations with optional location filtering and pagination.

Get reviews for an accommodation.

List all accommodations as a stream, handling pagination automatically.

Get accommodation suggestions for a query string.

Functions

get(accommodation_id)

@spec get(String.t()) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

Get an accommodation by ID.

Parameters

  • accommodation_id - The accommodation ID

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: %Types.StaysAccommodation{}}} on success
  • {:error, %Travel.Error{}} on failure

list(opts \\ nil)

@spec list(map() | nil) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

List accommodations with optional location filtering and pagination.

Parameters

  • opts - Optional query parameters:
    • :latitude - (required) Latitude for radius search
    • :longitude - (required) Longitude for radius search
    • :radius - (optional) Search radius in km
    • :limit - (optional) Results per page (max 200)
    • :before - (optional) Cursor for previous page
    • :after - (optional) Cursor for next page

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: [%Types.StaysAccommodation{}]}} on success
  • {:error, %Travel.Error{}} on failure

reviews(accommodation_id, opts \\ nil)

@spec reviews(String.t(), map() | nil) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

Get reviews for an accommodation.

Parameters

  • accommodation_id - The accommodation ID
  • opts - (optional) Pagination options (limit, before, after)

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: %Types.StaysAccommodationReviewResponse{}}} on success
  • {:error, %Travel.Error{}} on failure

stream(opts)

@spec stream(map()) :: Enumerable.t()

List all accommodations as a stream, handling pagination automatically.

Parameters

  • opts - Query parameters including latitude, longitude, radius

Returns

A Stream that yields %Travel.Types.DuffelResponse{} for each page.

suggestions(query, location \\ nil)

@spec suggestions(String.t(), map() | nil) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

Get accommodation suggestions for a query string.

Parameters

  • query - Search query string
  • location - (optional) Location filter with radius and geographic_coordinates

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: [%Types.StaysAccommodationSuggestion{}]}} on success
  • {:error, %Travel.Error{}} on failure