diff --git a/.github/workflows/generate-and-publish-sdk-sources.yaml b/.github/workflows/generate-and-publish-sdk-sources.yaml
deleted file mode 100644
index e6140e3a2..000000000
--- a/.github/workflows/generate-and-publish-sdk-sources.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-on:
- workflow_dispatch:
- inputs:
- version:
- type: string
- description: "Version to publish. For snapshot releases, add `-SNAPSHOT` suffix to the version. For example, `1.0.0-SNAPSHOT`."
- required: true
-
-jobs:
- generate-and-publish:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-java@v3
- with:
- distribution: 'corretto'
- java-version: '21'
-
- - uses: gradle/actions/setup-gradle@v4
- with:
- gradle-version: "8.13"
-
- - name: Install Post Processor
- working-directory: generator/src/main/resources/post-processor
- run: npm ci && npm run clean && npm run compile
-
- - run: gradle build
-
- - name: Generate SDK
- working-directory: generator
- run: |
- export KOTLIN_POST_PROCESS_FILE="npm run --prefix src/main/resources/post-processor process"
- gradle openApiGenerate
-
- - name: Open PR
- uses: peter-evans/create-pull-request@v7
- working-directory: xap-sdk
- with:
- token: ${{ secrets.GITHUB_PAT }}
- commit-message: "chore: publishing code for sdk release $(date +'%Y%m%d%H%M%S')"
- title: "chore: code update on $(date +'%Y%m%d%H%M%S')"
- branch: "xap-sdk-code-update-$(date +'%Y%m%d%H%M%S')"
- add-paths: .
diff --git a/.github/workflows/integration-tests.yaml b/.github/workflows/integration-tests.yaml
deleted file mode 100644
index f75a1cda2..000000000
--- a/.github/workflows/integration-tests.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-name: Integration Test
-
-on:
- workflow_call:
- inputs:
- jdk:
- description: 'JDK version to use'
- required: true
- type: string
- distribution:
- description: 'JDK distribution to use'
- required: false
- type: string
- default: 'corretto'
- branch:
- description: 'Branch to build SDK and run integration tests from'
- required: true
- type: string
-
-jobs:
- integration-tests:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repo
- uses: actions/checkout@v4
- with:
- repository: 'ExpediaGroup/xap-java-sdk'
- ref: ${{ inputs.branch }}
- path: sdk-repo
-
- - name: Parse SDK version
- id: parse-sdk-version
- working-directory: sdk-repo/code
- shell: python -u {0}
- run: |
- import os
- import xml.etree.ElementTree as ET
-
- tree = ET.parse("pom.xml")
- root = tree.getroot()
- version = root.find("{*}version").text
-
- with open(os.getenv("GITHUB_OUTPUT"), "a") as GITHUB_OUTPUT:
- print(f"version={version}", file=GITHUB_OUTPUT)
-
- - name: Set up JDK
- uses: actions/setup-java@v4
- with:
- java-version: ${{ inputs.jdk }}
- distribution: ${{ inputs.distribution }}
-
- - name: Install SDK
- working-directory: sdk-repo/code
- run: |
- mvn clean install
-
- - name: Run Integration Tests
- working-directory: sdk-repo/tests/integration
- run: |
- mvn verify \
- -Dcom.expediagroup.xapjavasdk.apikey="${{ secrets.API_KEY }}" \
- -Dcom.expediagroup.xapjavasdk.apisecret="${{ secrets.API_SECRET }}" \
- -Dcom.expediagroup.xapjavasdk.vrbokey="${{ secrets.VRBO_KEY }}" \
- -Dcom.expediagroup.xapjavasdk.vrbosecret="${{ secrets.VRBO_SECRET }}" \
- -Dxap-java-sdk.sdk.version="${{ steps.parse-sdk-version.outputs.version }}"
diff --git a/.github/workflows/release-sdk-snapshot.yaml b/.github/workflows/release-sdk-snapshot.yaml
new file mode 100644
index 000000000..ac77b2c35
--- /dev/null
+++ b/.github/workflows/release-sdk-snapshot.yaml
@@ -0,0 +1,48 @@
+name: Snapshot Release
+
+on:
+ workflow_dispatch:
+
+jobs:
+ run-e2e-examples:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Run Examples
+ uses: ./.github/workflows/run-examples.yaml
+ with:
+ branch: 'v2-dev' # TODO: Update to main
+ jdk: '8'
+
+ run-integration-tests:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Run Examples
+ uses: ./.github/workflows/run-integration-tests.yaml
+ with:
+ branch: 'v2-dev' # TODO: Update to main
+ jdk: '8'
+
+ release:
+ runs-on: ubuntu-latest
+ needs: [run-e2e-examples, run-integration-tests]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ ref: v2-dev # TODO: Update to main
+
+ - name: Publish SDK
+ env:
+ GPG_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
+ GPG_SECRET: ${{ secrets.GPG_PRIVATE_KEY }}
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
+ run: |
+ ./gradlew :xap-sdk:publishSnapshots
diff --git a/.github/workflows/release-sdk-stable.yaml b/.github/workflows/release-sdk-stable.yaml
new file mode 100644
index 000000000..f30d9555b
--- /dev/null
+++ b/.github/workflows/release-sdk-stable.yaml
@@ -0,0 +1,48 @@
+name: Stable Release
+
+on:
+ workflow_dispatch:
+
+jobs:
+ run-e2e-examples:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Run Examples
+ uses: ./.github/workflows/run-examples.yaml
+ with:
+ branch: 'v2-dev' # TODO: Update to main
+ jdk: '8'
+
+ run-integration-tests:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Run Examples
+ uses: ./.github/workflows/run-integration-tests.yaml
+ with:
+ branch: 'v2-dev' # TODO: Update to main
+ jdk: '8'
+
+ release:
+ runs-on: ubuntu-latest
+ needs: [run-e2e-examples, run-integration-tests]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ ref: v2-dev # TODO: Update to main
+
+ - name: Publish SDK
+ env:
+ GPG_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
+ GPG_SECRET: ${{ secrets.GPG_PRIVATE_KEY }}
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
+ run: |
+ ./gradlew :xap-sdk:publishToSonatype closeAndReleaseSonatypeStagingRepository
diff --git a/.github/workflows/release-sdk.yaml b/.github/workflows/release-sdk.yaml
deleted file mode 100644
index 0ba121524..000000000
--- a/.github/workflows/release-sdk.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: Release SDK
-
-on:
- workflow_dispatch:
- inputs:
- branch:
- description: |
- Branch to release the SDK from.
- Defaults to the branch the action is being run from.
- type: string
- default: ''
-
-jobs:
- release:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
- ref: ${{ github.ref_name }}
-
- - name: Publish SDK
- working-directory: xap-sdk
- env:
- GPG_PASSPHRASE: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
- GPG_SECRET: ${{ secrets.GPG_PRIVATE_KEY }}
- SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
- SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
- run: |
- version="${{ github.event.inputs.version }}"
- version="${version// /}"
- if [[ "$version" == *"-SNAPSHOT" ]]; then
- gradle publishSnapshot -PVERSION="${version}"
- else
- gradle publishToSonatype closeAndReleaseSonatypeStagingRepository -PVERSION="${version}"
- fi
diff --git a/.github/workflows/run-examples.yaml b/.github/workflows/run-examples.yaml
index d6f30fbea..8e8a58bca 100644
--- a/.github/workflows/run-examples.yaml
+++ b/.github/workflows/run-examples.yaml
@@ -1,7 +1,8 @@
name: Run Examples
+
on:
- workflow_call:
- inputs:
+ workflow_dispatch:
+ inputs: &shared_inputs
jdk:
description: 'JDK version to use'
required: true
@@ -16,50 +17,29 @@ on:
required: true
type: string
+ workflow_call:
+ inputs: *shared_inputs
+
jobs:
run-examples:
runs-on: ubuntu-latest
steps:
- - name: Checkout repo
+ - name: Checkout Repo
uses: actions/checkout@v4
with:
- repository: 'ExpediaGroup/xap-java-sdk'
ref: ${{ inputs.branch }}
- path: sdk-repo
-
- - name: Parse SDK version
- id: parse-sdk-version
- working-directory: sdk-repo/code
- shell: python -u {0}
- run: |
- import os
- import xml.etree.ElementTree as ET
-
- tree = ET.parse("pom.xml")
- root = tree.getroot()
- version = root.find("{*}version").text
-
- with open(os.getenv("GITHUB_OUTPUT"), "a") as GITHUB_OUTPUT:
- print(f"version={version}", file=GITHUB_OUTPUT)
- - name: Set up JDK
+ - name: Setup JDK
uses: actions/setup-java@v4
with:
java-version: ${{ inputs.jdk }}
distribution: ${{ inputs.distribution }}
- - name: Install SDK
- working-directory: sdk-repo/code
- run: |
- mvn clean install
-
- name: Run Examples
- working-directory: sdk-repo/examples
+ env:
+ XAP_KEY: "${{ secrets.API_KEY }}"
+ XAP_SECRET: "${{ secrets.API_SECRET }}"
+ VRBO_KEY: "${{ secrets.VRBO_KEY }}"
+ VRBO_SECRET: "${{ secrets.VRBO_SECRET }}"
run: |
- mvn install exec:java \
- -Dexec.mainClass="com.expediagroup.sdk.xap.examples.XapSdkDemoTestRun" \
- -Dcom.expediagroup.xapjavasdk.apikey="${{ secrets.API_KEY }}" \
- -Dcom.expediagroup.xapjavasdk.apisecret="${{ secrets.API_SECRET }}" \
- -Dcom.expediagroup.xapjavasdk.vrbokey="${{ secrets.VRBO_KEY }}" \
- -Dcom.expediagroup.xapjavasdk.vrbosecret="${{ secrets.VRBO_SECRET }}" \
- -Dxap-java-sdk.sdk.version="${{ steps.parse-sdk-version.outputs.version }}"
+ ./gradlew :examples:run
diff --git a/.github/workflows/run-integration-tests.yaml b/.github/workflows/run-integration-tests.yaml
new file mode 100644
index 000000000..4ebc222d9
--- /dev/null
+++ b/.github/workflows/run-integration-tests.yaml
@@ -0,0 +1,40 @@
+name: Integration Tests
+
+on:
+ workflow_dispatch:
+ inputs: &shared_inputs
+ jdk:
+ description: 'JDK version to use'
+ required: true
+ type: string
+ distribution:
+ description: 'JDK distribution to use'
+ required: false
+ type: string
+ default: 'corretto'
+ branch:
+ description: 'Branch to build SDK and run examples from'
+ required: true
+ type: string
+
+ workflow_call:
+ inputs: *shared_inputs
+
+jobs:
+ integration-tests:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.branch }}
+
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ inputs.jdk }}
+ distribution: ${{ inputs.distribution }}
+
+ - name: Run Integration Tests
+ run: |
+ ./gradlew :integration-tests:test
diff --git a/.github/workflows/verify-examples-and-tests.yaml b/.github/workflows/verify-examples-and-tests.yaml
deleted file mode 100644
index 804e7f315..000000000
--- a/.github/workflows/verify-examples-and-tests.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-name: Verify Examples and Integration Tests
-on:
- pull_request:
- branches:
- - 'main'
-jobs:
- detect-changes:
- runs-on: ubuntu-latest
- permissions:
- pull-requests: read
- outputs:
- examples: ${{ steps.filter.outputs.examples }}
- integration-tests: ${{ steps.filter.outputs.integration-tests }}
- steps:
- - uses: dorny/paths-filter@v3
- id: filter
- with:
- filters: |
- examples:
- - 'examples/**'
- integration-tests:
- - 'tests/integration/**'
-
- verify-examples:
- needs: detect-changes
- if: ${{ needs.detect-changes.outputs.examples == 'true' }}
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@v4
- with:
- java-version: '11'
- distribution: 'temurin'
- - name: verify examples
- working-directory: examples
- run: |
- mvn verify \
- -Dcom.expediagroup.xapjavasdk.apikey="${{ secrets.API_KEY }}" \
- -Dcom.expediagroup.xapjavasdk.apisecret="${{ secrets.API_SECRET }}" \
- -Dcom.expediagroup.xapjavasdk.vrbokey="${{ secrets.VRBO_KEY }}" \
- -Dcom.expediagroup.xapjavasdk.vrbosecret="${{ secrets.VRBO_SECRET }}" \
-
- verify-integration-tests:
- needs: detect-changes
- if: ${{ needs.detect-changes.outputs.integration-tests == 'true' }}
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@v4
- with:
- java-version: '11'
- distribution: 'temurin'
- - name: verify integration tests
- working-directory: tests/integration
- run: |
- mvn verify
diff --git a/.gitignore b/.gitignore
index 8ecd06695..34312ddb9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,9 @@
.gradle
.idea
+**/node_modules/**
+**/build/**
+
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
@@ -44,4 +47,4 @@ bin/
.vscode/
### Mac OS ###
-.DS_Store
\ No newline at end of file
+.DS_Store
diff --git a/README.md b/README.md
index 92f6ab3b9..07c8e0180 100644
--- a/README.md
+++ b/README.md
@@ -12,12 +12,42 @@ You can read more about the XAP API on [Developer Hub for XAP](https://developer
The XAP SDK makes integrating simple, saving development time so you can focus more on getting your product to market
and less on the technical details of the API.
-### Code Examples
+## Installation
+Make sure you have **Java 8** or higher.
+
+**Gradle**
+```groovy
+// gradle.build
+dependencies {
+ // Add SDK transport dependency
+ implementation 'com.expediagroup:expediagroup-sdk-transport-okhttp:0.0.4-alpha'
+ implementation 'com.expediagroup:xap-sdk:1.0.0-SNAPSHOT'
+}
+```
+
+**Maven**
+```xml
+
+
+
+
+ com.expediagroup
+ expediagroup-sdk-transport
+ 0.0.4-alpha
+
+
+ com.expediagroup
+ xap-sdk
+ 1.0.0-SNAPSHOT
+
+```
+
+## Code Examples
You can find code examples for multiple use cases in the [examples](examples) directory.
-### Integration Tests
-Integration tests are placed in the [integrations](tests/integration) directory.
+## Integration Tests
+Integration tests are placed in the [integrations](integration-tests) directory.
---
diff --git a/build.gradle.kts b/build.gradle.kts
index b1506755d..af8e06ac8 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -12,12 +12,12 @@ plugins {
group = project.property("GROUP_ID") as String
-apply("$rootDir/gradle-tasks/specs.gradle.kts")
apply("$rootDir/gradle-tasks/snapshot.gradle")
allprojects {
repositories {
mavenCentral()
+ mavenLocal()
maven {
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
}
@@ -28,6 +28,7 @@ subprojects {
apply(plugin = "java")
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin = "org.jlleitschuh.gradle.ktlint")
+// apply(plugin = "com.github.hierynomus.license-base")
plugins.withId("org.jetbrains.kotlin.jvm") {
kotlin {
@@ -43,6 +44,10 @@ subprojects {
}
}
+ tasks.test {
+ useJUnitPlatform()
+ }
+
java {
withSourcesJar()
withJavadocJar()
diff --git a/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/AllowedMediaTypesLambda.kt b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/lambda/AllowedMediaTypesLambda.kt
similarity index 92%
rename from buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/AllowedMediaTypesLambda.kt
rename to buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/lambda/AllowedMediaTypesLambda.kt
index 456507725..9a78b90d7 100644
--- a/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/AllowedMediaTypesLambda.kt
+++ b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/lambda/AllowedMediaTypesLambda.kt
@@ -1,10 +1,10 @@
-package com.expediagroup.sdk.xap.generator.mustache
+package com.expediagroup.sdk.xap.generator.mustache.lambda
import com.samskivert.mustache.Mustache
import com.samskivert.mustache.Template
+import org.openapitools.codegen.CodegenResponse
import java.io.Serializable
import java.io.Writer
-import org.openapitools.codegen.CodegenResponse
class AllowedMediaTypesLambda : Mustache.Lambda, Serializable {
override fun execute(
diff --git a/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/model/LocalDateTimeModelProcessor.kt b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/model/LocalDateTimeModelProcessor.kt
new file mode 100644
index 000000000..03167e724
--- /dev/null
+++ b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/model/LocalDateTimeModelProcessor.kt
@@ -0,0 +1,50 @@
+package com.expediagroup.sdk.xap.generator.mustache.processor.model
+
+import org.openapitools.codegen.CodegenModel
+import java.io.Serializable
+
+/**
+ * Rewrites specific fields in selected models so that the generated code
+ * uses `java.time.LocalDateTime` instead of the default type.
+ *
+ * The processor checks every `CodegenModel` emitted by OpenAPI-Generator:
+ * * If the model’s simple name matches one of the entries in [targetedModelsList],
+ * * every property whose name appears in that entry’s `params` list
+ * has its `dataType` forcibly set to `"java.time.LocalDateTime"`.
+ *
+ * Usage: register the processor in the generator's config (`com.expediagroup.sdk.openapigenerator`):
+ * - `additionalProperties.put("modelProcessors", listOf(LocalDateTimeModelProcessor()))`
+ *
+ * **Note: Must be used with the default EG SDK mustache templates**
+ */
+class LocalDateTimeModelProcessor : Serializable, (CodegenModel) -> CodegenModel {
+
+ /**
+ * Declarative mapping of **model name → list of field names** that must be
+ * generated as `LocalDateTime`.
+ */
+ internal data class TargetedModel(
+ val name: String,
+ val params: List
+ ) : Serializable
+
+ private val targetedModelsList = listOf(
+ TargetedModel("ActivitiesCancellationPolicy", listOf("freeCancellationEndDateTime")),
+ TargetedModel("AvailableTimeSlot", listOf("dateTime")),
+ TargetedModel("CarsCancellationPolicy", listOf("freeCancellationEndDateTime")),
+ TargetedModel("NonCancellableDateTimeRange", listOf("startDateTime", "endDateTime")),
+ TargetedModel("PenaltyRule", listOf("startDateTime", "endDateTime")),
+ TargetedModel("VendorLocationDetails", listOf("dateTime", "endDateTime")),
+ )
+
+ /** Applies the rewrite, then returns the (potentially) modified model. */
+ override fun invoke(codegenModel: CodegenModel): CodegenModel = codegenModel.apply {
+ targetedModelsList.firstOrNull { it.name == name }?.params?.let { names ->
+ allVars.filter {
+ it.name in names
+ }.forEach {
+ it.dataType = "java.time.LocalDateTime"
+ }
+ }
+ }
+}
diff --git a/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/LocalDateTimeOperationParamsProcessor.kt b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/LocalDateTimeOperationParamsProcessor.kt
new file mode 100644
index 000000000..24c7b8b3a
--- /dev/null
+++ b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/LocalDateTimeOperationParamsProcessor.kt
@@ -0,0 +1,45 @@
+package com.expediagroup.sdk.xap.generator.mustache.processor.operation
+
+import org.openapitools.codegen.CodegenOperation
+import java.io.Serializable
+
+/**
+ * Adjusts selected operation parameters so that they’re generated as
+ * `java.time.LocalDateTime` instead of the default type.
+ *
+ * For each `CodegenOperation` emitted by OpenAPI-Generator:
+ * 1. If the operation’s `baseName` matches an entry in [targetedOperationsList],
+ * 2. Every query parameter whose `baseName` appears in that entry’s `params`
+ * list has its `dataType` set to `"java.time.LocalDateTime"`.
+ *
+ * Usage: register the processor in the generator's config (`com.expediagroup.sdk.openapigenerator`):
+ * - `additionalProperties.put("operationProcessors", listOf(LocalDateTimeOperationParamsProcessor()))`
+ *
+ * **Note: Must be used with the default EG SDK mustache templates**
+ */
+class LocalDateTimeOperationParamsProcessor : Serializable, (CodegenOperation) -> CodegenOperation {
+
+ /**
+ * Maps an operation name to the list of its query parameter names
+ * that should be generated as `LocalDateTime`.
+ */
+ internal data class TargetedOperation(
+ val name: String,
+ val params: List
+ ) : Serializable
+
+ private val targetedOperationsList = listOf(
+ TargetedOperation("GetCarsListings", listOf("pickupTime", "dropOffTime"))
+ )
+
+ /** Applies the rewrite, then returns the (potentially) modified operation. */
+ override fun invoke(operation: CodegenOperation): CodegenOperation = operation.apply {
+ targetedOperationsList.firstOrNull { it.name == baseName }?.params?.let { names ->
+ queryParams.filter {
+ it.baseName in names
+ }.forEach {
+ it.dataType = "java.time.LocalDateTime"
+ }
+ }
+ }
+}
diff --git a/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/RoomsOperationParamsProcessor.kt b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/RoomsOperationParamsProcessor.kt
new file mode 100644
index 000000000..aee6f029a
--- /dev/null
+++ b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/RoomsOperationParamsProcessor.kt
@@ -0,0 +1,108 @@
+package com.expediagroup.sdk.xap.generator.mustache.processor.operation
+
+import org.openapitools.codegen.CodegenOperation
+import java.io.Serializable
+
+/**
+ * Marks individual `roomN…` query parameters for replacement and injects
+ * a consolidated `rooms(...)` builder helper into targeted operations.
+ *
+ * For each `CodegenOperation` whose `baseName` is in [targetedOperations]:
+ * 1. Finds query parameters matching [roomRegex].
+ * 2. Flags each matched parameter with `x-replacedByBuilderHelper`.
+ * 3. If any were found, sets:
+ * - `x-needsBuilderHelper` to true, and
+ * - `x-builderHelpersCode` to the Kotlin implementation returned by [roomsHelperTextImpl].
+ *
+ * Usage: register the processor in the generator's config (`com.expediagroup.sdk.openapigenerator`):
+ * - `additionalProperties.put("operationProcessors", listOf(RoomsOperationParamsProcessor()))`
+ *
+ * **Note: Must be used with the default EG SDK mustache templates**
+ */
+class RoomsOperationParamsProcessor : Serializable, (CodegenOperation) -> CodegenOperation {
+
+ /** Regex to identify room parameters like `room1Adult`, `room2ChildAges`, etc. */
+ private val roomRegex = Regex("""^room\d+\w*$""", RegexOption.IGNORE_CASE)
+
+ /** List of operation names where the rooms helper should be applied. */
+ private val targetedOperations = listOf("GetLodgingQuotes", "GetLodgingListings")
+
+ /**
+ * Scans `queryParams` for matches against [roomRegex].
+ * Flags each match, and if any are found, injects the builder helper code.
+ *
+ * @param operation the operation to inspect and modify
+ * @return the same [CodegenOperation], with vendor extensions set as needed
+ */
+
+ override fun invoke(operation: CodegenOperation): CodegenOperation = operation.apply {
+ if (baseName in targetedOperations) {
+ queryParams.filter {
+ roomRegex.matches(it.paramName)
+ }.takeIf {
+ it.isNotEmpty()
+ }?.also { rooms ->
+ rooms.forEach { p ->
+ p.vendorExtensions["x-replacedByBuilderHelper"] = true
+ }
+ vendorExtensions["x-needsBuilderHelper"] = true
+ vendorExtensions["x-builderHelpersCode"] = roomsHelperTextImpl().plus("\n")
+ }
+ }
+ }
+
+ /**
+ * Returns the Kotlin code for the `rooms(...)` builder extension.
+ * This snippet replaces individual `roomN…` methods with a loop over a `List`.
+ */
+ private fun roomsHelperTextImpl() = """
+ fun rooms(rooms: List) =
+ apply {
+ if (rooms.size > 8) {
+ throw com.expediagroup.sdk.rest.exception.client.PropertyConstraintViolationException(
+ constraintViolations = listOf("rooms: size must be between 0 and 8")
+ )
+ }
+
+ rooms.elementAtOrNull(0)?.let {
+ this.room1Adults = it.adults
+ this.room1ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(1)?.let {
+ this.room2Adults = it.adults
+ this.room2ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(2)?.let {
+ this.room3Adults = it.adults
+ this.room3ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(3)?.let {
+ this.room4Adults = it.adults
+ this.room4ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(4)?.let {
+ this.room5Adults = it.adults
+ this.room5ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(5)?.let {
+ this.room6Adults = it.adults
+ this.room6ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(6)?.let {
+ this.room7Adults = it.adults
+ this.room7ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+
+ rooms.elementAtOrNull(7)?.let {
+ this.room8Adults = it.adults
+ this.room8ChildAges = it.childAges?.map { item -> item.toString() }
+ }
+ }
+ """.trimIndent()
+}
diff --git a/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/SegmentsOperationParamsProcessor.kt b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/SegmentsOperationParamsProcessor.kt
new file mode 100644
index 000000000..05d284b18
--- /dev/null
+++ b/buildSrc/src/main/kotlin/com/expediagroup/sdk/xap/generator/mustache/processor/operation/SegmentsOperationParamsProcessor.kt
@@ -0,0 +1,81 @@
+package com.expediagroup.sdk.xap.generator.mustache.processor.operation
+
+import org.openapitools.codegen.CodegenOperation
+import java.io.Serializable
+
+class SegmentsOperationParamsProcessor : Serializable, (CodegenOperation) -> CodegenOperation {
+
+ private val segmentsRegex = Regex("""^segment\d+\w*$""", RegexOption.IGNORE_CASE)
+ private val targetedOperations = listOf("GetFlightListings")
+
+ override fun invoke(operation: CodegenOperation): CodegenOperation {
+
+ if (targetedOperations.contains(operation.baseName)) {
+ var needsSegmentsHelperMethod = false
+
+ operation.queryParams.forEach {
+ if (segmentsRegex.matches(it.paramName)) {
+ it.vendorExtensions["x-replacedByBuilderHelper"] = true
+ needsSegmentsHelperMethod = true
+ }
+ }
+
+ if (needsSegmentsHelperMethod) {
+ operation.vendorExtensions["x-needsBuilderHelper"] = true
+ operation.vendorExtensions["x-builderHelpersCode"] = "${segmentsHelperTextImpl()} \n"
+ }
+ }
+
+ return operation
+ }
+
+ private fun segmentsHelperTextImpl() = """
+ fun segment1(segment: com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam) = apply {
+ this.segment1Origin = segment.origin
+ this.segment1Destination = segment.destination
+ this.segment1DepartureDate = segment.departureDate
+ this.segment1DepartureStartTime = segment.departureStartTime
+ this.segment1DepartureEndTime = segment.departureEndTime
+ }
+
+ fun segment2(segment: com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam) = apply {
+ this.segment2Origin = segment.origin
+ this.segment2Destination = segment.destination
+ this.segment2DepartureDate = segment.departureDate
+ this.segment2DepartureStartTime = segment.departureStartTime
+ this.segment2DepartureEndTime = segment.departureEndTime
+ }
+
+ fun segment3(segment: com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam) = apply {
+ this.segment3Origin = segment.origin
+ this.segment3Destination = segment.destination
+ this.segment3DepartureDate = segment.departureDate
+ this.segment3DepartureStartTime = segment.departureStartTime
+ this.segment3DepartureEndTime = segment.departureEndTime
+ }
+
+ fun segment4(segment: com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam) = apply {
+ this.segment4Origin = segment.origin
+ this.segment4Destination = segment.destination
+ this.segment4DepartureDate = segment.departureDate
+ this.segment4DepartureStartTime = segment.departureStartTime
+ this.segment4DepartureEndTime = segment.departureEndTime
+ }
+
+ fun segment5(segment: com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam) = apply {
+ this.segment5Origin = segment.origin
+ this.segment5Destination = segment.destination
+ this.segment5DepartureDate = segment.departureDate
+ this.segment5DepartureStartTime = segment.departureStartTime
+ this.segment5DepartureEndTime = segment.departureEndTime
+ }
+
+ fun segment6(segment: com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam) = apply {
+ this.segment6Origin = segment.origin
+ this.segment6Destination = segment.destination
+ this.segment6DepartureDate = segment.departureDate
+ this.segment6DepartureStartTime = segment.departureStartTime
+ this.segment6DepartureEndTime = segment.departureEndTime
+ }
+ """.trimIndent()
+}
diff --git a/examples/LICENSE-HEADER.txt b/examples/LICENSE-HEADER.txt
deleted file mode 100644
index 23c93f676..000000000
--- a/examples/LICENSE-HEADER.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (C) ${year} Expedia, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/examples/build.gradle.kts b/examples/build.gradle.kts
index d659be059..0a10e7211 100644
--- a/examples/build.gradle.kts
+++ b/examples/build.gradle.kts
@@ -1,7 +1,24 @@
group = project.property("GROUP_ID") as String
plugins {
+ application
checkstyle
+ id("com.github.hierynomus.license") version "0.16.1"
+}
+
+application {
+ mainClass.set("com.expediagroup.sdk.xap.examples.XapSdkDemoTestRun")
+}
+
+license {
+ header = File("$rootDir/LICENSE-HEADER.txt")
+ strictCheck = true
+ includes(
+ listOf(
+ "**/*.kt",
+ "**/*.java",
+ ),
+ )
}
checkstyle {
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/XapSdkDemoTestRun.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/XapSdkDemoTestRun.java
index 93f07515f..de6e6cbee 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/XapSdkDemoTestRun.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/XapSdkDemoTestRun.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples;
import com.expediagroup.sdk.xap.examples.scenarios.activity.ActivityDetailsQuickStartScenario;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/XapScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/XapScenario.java
index 9c4248af1..89324fbcc 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/XapScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/XapScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios;
import com.expediagroup.sdk.core.auth.basic.BasicAuthCredentials;
@@ -34,8 +33,8 @@ public interface XapScenario {
* @return XapClient
*/
default XapClient createClient() {
- String key = System.getProperty("com.expediagroup.xapjavasdk.apikey");
- String secret = System.getProperty("com.expediagroup.xapjavasdk.apisecret");
+ String key = System.getenv("XAP_KEY");
+ String secret = System.getenv("XAP_SECRET");
BasicAuthCredentials credentials = new BasicAuthCredentials(key, secret);
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityDetailsQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityDetailsQuickStartScenario.java
index d7c45b60f..60f60d46e 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityDetailsQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityDetailsQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.activity;
import com.expediagroup.sdk.rest.model.Response;
@@ -31,7 +30,6 @@
import com.expediagroup.sdk.xap.operations.GetActivityListingsOperation;
import com.expediagroup.sdk.xap.operations.GetActivityListingsOperationParams;
import java.time.LocalDate;
-import java.util.Arrays;
import java.util.Collections;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityListingsQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityListingsQuickStartScenario.java
index 68f3c8a53..7095718c6 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityListingsQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/activity/ActivityListingsQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.activity;
import com.expediagroup.sdk.xap.client.XapClient;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarDetailsQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarDetailsQuickStartScenario.java
index 385f33e2e..31f17a9d0 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarDetailsQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarDetailsQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.car;
import com.expediagroup.sdk.rest.model.Response;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarListingsQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarListingsQuickStartScenario.java
index c2ebf056b..172faad0b 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarListingsQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/car/CarListingsQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.car;
import com.expediagroup.sdk.xap.client.XapClient;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/flight/FlightDetailsExample.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/flight/FlightDetailsExample.java
new file mode 100644
index 000000000..35b72f6cd
--- /dev/null
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/flight/FlightDetailsExample.java
@@ -0,0 +1,258 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.examples.scenarios.flight;
+
+import com.expediagroup.sdk.xap.client.XapClient;
+import com.expediagroup.sdk.xap.examples.scenarios.XapScenario;
+import com.expediagroup.sdk.xap.models.FlightDetailsResponse;
+import com.expediagroup.sdk.xap.operations.GetFlightDetailsOperation;
+import com.expediagroup.sdk.xap.operations.GetFlightDetailsOperationParams;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This example demonstrates how to make Details API Call to get extended information about
+ * fare, charges, fees, other terms associated with booking an airline ticket.
+ */
+
+public class FlightDetailsExample implements XapScenario {
+
+ private static final Logger LOGGER =
+ LoggerFactory.getLogger(FlightDetailsExample.class);
+
+
+ public static void main(String[] args) {
+ new FlightDetailsExample().run();
+ System.exit(0);
+ }
+
+ @Override
+ public void run() {
+ LOGGER.info(
+ "========= Running FlightDetailsQuickStartScenario =============");
+
+ LOGGER.info(
+ "============= Executing GetFlightDetailsOperation =========");
+
+ GetFlightDetailsOperationParams detailsOperationParams = GetFlightDetailsOperationParams
+ .builder()
+ .offerToken("v5-sos-f7f6baebb159423791c2583b1dfd22b7-14-1~8.S~AQoECL"
+ + "-kBBIICNQEEAEYwB8oAlgBcAB6BXNhYnJliAHczsZQqgEHCgNMQVgQALIBB"
+ + "woDU0VBEAA~AQotCisIwaYBEgQxMzA1GIu4ASCSASiUuPoCML25-gI4T0AA"
+ + "WAFyCE9IMk9YVU1OEgoIARABGAEqAkFTGAEiBAgBEAEoAigDKAQwAg")
+ .partnerTransactionID("txn-123-4")
+ .price("123.31")
+ .locale("en_US")
+ .build();
+ XapClient xapClient = createClient();
+
+ FlightDetailsResponse flightDetailsResponse =
+ xapClient.execute(new GetFlightDetailsOperation(detailsOperationParams))
+ .getData();
+
+ LOGGER.info("========= GetFlightDetailsOperation Executed ========");
+
+ LOGGER.info("Transaction ID: {}", flightDetailsResponse.getTransactionId());
+
+ if (flightDetailsResponse.getSegments() != null) {
+ flightDetailsResponse.getSegments().forEach(segment -> {
+ LOGGER.info("======================== Flight Segment Start ========================");
+ LOGGER.info("Segment ID: {}", segment.getSegmentId());
+ LOGGER.info("Flight Duration: {}", segment.getFlightDuration());
+ LOGGER.info("Total Stops: {}", segment.getTotalStops());
+ LOGGER.info("Departure Arrival Day Difference: {}",
+ segment.getDepartureArrivalDayDifference());
+ LOGGER.info("Fare Type: {}", segment.getFareType());
+ LOGGER.info("Airport Change: {}", segment.getAirportChange());
+
+ if (segment.getLegs() != null) {
+ segment.getLegs().forEach(leg -> {
+ LOGGER.info("-------------------- Leg Start --------------------");
+
+ if (leg.getDepartureAirport() != null) {
+ LOGGER.info("Departure Airport Code: {}",
+ leg.getDepartureAirport().getCode());
+ }
+
+ if (leg.getArrivalAirport() != null) {
+ LOGGER.info("Arrival Airport Code: {}",
+ leg.getArrivalAirport().getCode());
+ }
+ LOGGER.info("Departure Date Time: {}",
+ leg.getDepartureDateTime());
+ LOGGER.info("Arrival Date Time: {}",
+ leg.getArrivalDateTime());
+ LOGGER.info("Flight Number: {}",
+ leg.getFlightNumber());
+ LOGGER.info("Marketing Airline Code: {}",
+ leg.getMarketingAirlineCode());
+ LOGGER.info("Marketing Airline Name: {}",
+ leg.getMarketingAirlineName());
+ LOGGER.info("Equipment Code: {}",
+ leg.getEquipmentCode());
+ LOGGER.info("Flight On Time Percentage: {}",
+ leg.getFlightOnTimePercentage());
+ LOGGER.info("Equipment Name: {}",
+ leg.getEquipmentName());
+ LOGGER.info("Flight Duration (Leg): {}",
+ leg.getFlightDuration());
+
+ if (leg.getFlightDistance() != null) {
+ LOGGER.info("Flight Distance Value: {}",
+ leg.getFlightDistance().getValue());
+ LOGGER.info("Flight Distance Unit: {}",
+ leg.getFlightDistance().getUnit());
+ }
+ LOGGER.info("Booking Code: {}",
+ leg.getBookingCode());
+ LOGGER.info("Cabin Class: {}",
+ leg.getCabinClass());
+ LOGGER.info("Fare Basis Code: {}",
+ leg.getFareBasisCode());
+ LOGGER.info("Meal Options: {}",
+ leg.getMealOptions());
+ LOGGER.info("Amenities: {}",
+ leg.getAmenities());
+ LOGGER.info("---------- Leg End ----------");
+ });
+ }
+ LOGGER.info("=========== Flight Segment End ============");
+ });
+ }
+
+ if (flightDetailsResponse.getOffer() != null) {
+ LOGGER.info("======================== Flight Offer Start ========================");
+
+ if (flightDetailsResponse.getOffer().getLinks() != null) {
+ flightDetailsResponse.getOffer().getLinks().forEach((key, value) ->
+ LOGGER.info("Link [{}]: {}", key, value));
+ }
+
+ LOGGER.info("Segment IDs: {}", flightDetailsResponse.getOffer().getSegmentIds());
+ LOGGER.info("Refundable: {}", flightDetailsResponse.getOffer().getRefundable());
+ LOGGER.info("International: {}", flightDetailsResponse.getOffer().getInternational());
+ LOGGER.info("UndisclosedGenderSupported: {}",
+ flightDetailsResponse.getOffer().getUndisclosedGenderSupported());
+ LOGGER.info("UnspecifiedGenderSupported: {}",
+ flightDetailsResponse.getOffer().getUnspecifiedGenderSupported());
+
+ if (flightDetailsResponse.getOffer().getOfferPrice() != null) {
+
+ if (flightDetailsResponse.getOffer().getOfferPrice().getTotalPrice() != null) {
+ LOGGER.info("Total Price Value: {}",
+ flightDetailsResponse.getOffer().getOfferPrice().getTotalPrice().getValue());
+ LOGGER.info("Total Price Currency: {}",
+ flightDetailsResponse.getOffer().getOfferPrice().getTotalPrice().getCurrency());
+ }
+
+ if (flightDetailsResponse.getOffer().getOfferPrice().getBasePrice() != null) {
+ LOGGER.info("Base Price Value: {}",
+ flightDetailsResponse.getOffer().getOfferPrice().getBasePrice().getValue());
+ LOGGER.info("Base Price Currency: {}",
+ flightDetailsResponse.getOffer().getOfferPrice().getBasePrice().getCurrency());
+ }
+
+ if (flightDetailsResponse.getOffer().getOfferPrice().getTotalTaxes() != null) {
+ LOGGER.info("Total Taxes Value: {}",
+ flightDetailsResponse.getOffer().getOfferPrice().getTotalTaxes().getValue());
+ LOGGER.info("Total Taxes Currency: {}",
+ flightDetailsResponse.getOffer().getOfferPrice().getTotalTaxes().getCurrency());
+ }
+
+ if (flightDetailsResponse.getOffer().getOfferPrice().getTotalTaxesAndFees() != null) {
+ LOGGER.info("Total Taxes and Fees Value: {}",
+ flightDetailsResponse.getOffer()
+ .getOfferPrice().getTotalTaxesAndFees().getValue());
+ LOGGER.info("Total Taxes and Fees Currency: {}",
+ flightDetailsResponse.getOffer()
+ .getOfferPrice().getTotalTaxesAndFees().getCurrency());
+ }
+
+ if (flightDetailsResponse.getOffer().getOfferPrice().getAveragePricePerTicket() != null) {
+ LOGGER.info("Average Price Per Ticket Value: {}",
+ flightDetailsResponse.getOffer()
+ .getOfferPrice().getAveragePricePerTicket().getValue());
+ LOGGER.info("Average Price Per Ticket Currency: {}",
+ flightDetailsResponse.getOffer()
+ .getOfferPrice().getAveragePricePerTicket().getCurrency());
+ LOGGER.info("Average Price Per Ticket Count: {}",
+ flightDetailsResponse.getOffer()
+ .getOfferPrice().getAveragePricePerTicket().getCount());
+ }
+
+ if (flightDetailsResponse.getOffer()
+ .getOfferPrice().getPricePerPassengerCategory() != null) {
+ flightDetailsResponse.getOffer().getOfferPrice().getPricePerPassengerCategory()
+ .forEach(categoryPrice -> {
+ LOGGER.info("---- Passenger Category Price Start ----");
+ LOGGER.info("Category: {}", categoryPrice.getCategory());
+ LOGGER.info("Count: {}", categoryPrice.getCount());
+
+ if (categoryPrice.getTotalPrice() != null) {
+ LOGGER.info("Total Price Value: {}",
+ categoryPrice.getTotalPrice().getValue());
+ LOGGER.info("Total Price Currency: {}",
+ categoryPrice.getTotalPrice().getCurrency());
+ }
+
+ if (categoryPrice.getBasePrice() != null) {
+ LOGGER.info("Base Price Value: {}",
+ categoryPrice.getBasePrice().getValue());
+ LOGGER.info("Base Price Currency: {}",
+ categoryPrice.getBasePrice().getCurrency());
+ }
+
+ if (categoryPrice.getTotalTaxes() != null) {
+ LOGGER.info("Total Taxes Value: {}",
+ categoryPrice.getTotalTaxes().getValue());
+ LOGGER.info("Total Taxes Currency: {}",
+ categoryPrice.getTotalTaxes().getCurrency());
+ }
+ LOGGER.info("---- Passenger Category Price End ----");
+ });
+ }
+ }
+
+
+ LOGGER.info("Ticket Type: {}", flightDetailsResponse.getOffer().getTicketType());
+ LOGGER.info("======================== Flight Offer End ========================");
+ }
+
+ if (flightDetailsResponse.getValidFormsOfPayment() != null) {
+ flightDetailsResponse.getValidFormsOfPayment().forEach((value) -> {
+ LOGGER.info("========== Valid Forms of Payment End [{}] ============");
+ LOGGER.info("---- Payment Method Start ----");
+ LOGGER.info("Payment Method: {}", value.getPaymentMethod());
+ LOGGER.info("Name: {}", value.getName());
+ LOGGER.info("Fee: {}", value.getFee());
+ LOGGER.info("Currency: {}", value.getCurrency());
+ LOGGER.info("---- Payment Method End ----");
+ LOGGER.info("========== Valid Forms of Payment End [{}] ============");
+ });
+ }
+
+ LOGGER.info(
+ "===================== End FlightListingsQuickStartScenario ====================");
+ }
+
+}
+
+
+
+
+
+
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/flight/FlightListingExample.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/flight/FlightListingExample.java
new file mode 100644
index 000000000..05f2674cf
--- /dev/null
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/flight/FlightListingExample.java
@@ -0,0 +1,258 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.examples.scenarios.flight;
+
+import com.expediagroup.sdk.xap.client.XapClient;
+import com.expediagroup.sdk.xap.examples.scenarios.XapScenario;
+import com.expediagroup.sdk.xap.models.FlightSearchResponse;
+import com.expediagroup.sdk.xap.models.GetFlightListingsOperationSegmentParam;
+import com.expediagroup.sdk.xap.operations.GetFlightListingsOperation;
+import com.expediagroup.sdk.xap.operations.GetFlightListingsOperationParams;
+
+import java.time.LocalDate;
+import java.util.Arrays;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * This example demonstrates how to search for flight listings for a one-way,
+ * round-trip and multi-stop with adults, seniors, and children.
+ */
+
+public class FlightListingExample implements XapScenario {
+ private static final Logger LOGGER = LoggerFactory.getLogger(FlightListingExample.class);
+
+ public static void main(String[] args) {
+ new FlightListingExample().run();
+ System.exit(0);
+ }
+
+ @Override
+ public void run() {
+ LOGGER.info("========= Running FlightListingsQuickStartScenario =============");
+
+ LOGGER.info("============= Executing GetFlightListingsOperation (One-Way) =========");
+
+ LocalDate now = LocalDate.now();
+
+ GetFlightListingsOperationParams getFlightListingsOperationParams = GetFlightListingsOperationParams
+ .builder()
+ .partnerTransactionID("txn-123-4")
+ .segment1(GetFlightListingsOperationSegmentParam.builder().origin("LAS").destination("FLL").departureDate(now.plusDays(5)).build())
+ .adult(1)
+ .senior(1)
+ .childrenAges(Arrays.asList(4, 5))
+ .build();
+
+ XapClient xapClient = createClient();
+
+ FlightSearchResponse flightListingsResponse = xapClient.execute(new GetFlightListingsOperation(getFlightListingsOperationParams)).getData();
+
+ LOGGER.info("========= GetFlightListingsOperation (One-Way) Executed ========");
+
+ if (flightListingsResponse == null || flightListingsResponse.getSegments() == null || flightListingsResponse.getSegments().isEmpty()) {
+ throw new IllegalStateException("No flight found.");
+ }
+
+ LOGGER.info("Transaction ID: {}", flightListingsResponse.getTransactionId());
+
+ if (flightListingsResponse.getSegments() != null) {
+ flightListingsResponse.getSegments().forEach(segment -> {
+ LOGGER.info("======================== Flight Segment Start ========================");
+ LOGGER.info("Segment ID: {}", segment.getSegmentId());
+ LOGGER.info("Flight Duration: {}", segment.getFlightDuration());
+ LOGGER.info("Total Stops: {}", segment.getTotalStops());
+ LOGGER.info("Departure Arrival Day Difference: {}", segment.getDepartureArrivalDayDifference());
+ LOGGER.info("Seats Left: {}", segment.getSeatsLeft());
+ LOGGER.info("Fare Type: {}", segment.getFareType());
+
+ if (segment.getLegs() != null) {
+ segment.getLegs().forEach(leg -> {
+ LOGGER.info("-------------------- Leg Start --------------------");
+
+ if (leg.getDepartureAirport() != null) {
+ LOGGER.info("Departure Airport Code: {}", leg.getDepartureAirport().getCode());
+ LOGGER.info("Departure Airport Name: {}", leg.getDepartureAirport().getName());
+ LOGGER.info("Departure City: {}", leg.getDepartureAirport().getCity());
+ LOGGER.info("Departure Province: {}", leg.getDepartureAirport().getProvince());
+ LOGGER.info("Departure Country: {}", leg.getDepartureAirport().getCountry());
+ LOGGER.info("Departure Latitude: {}", leg.getDepartureAirport().getLatitude());
+ LOGGER.info("Departure Longitude: {}", leg.getDepartureAirport().getLongitude());
+ }
+
+ if (leg.getArrivalAirport() != null) {
+ LOGGER.info("Arrival Airport Code: {}", leg.getArrivalAirport().getCode());
+ LOGGER.info("Arrival Airport Name: {}", leg.getArrivalAirport().getName());
+ LOGGER.info("Arrival City: {}", leg.getArrivalAirport().getCity());
+ LOGGER.info("Arrival Province: {}", leg.getArrivalAirport().getProvince());
+ LOGGER.info("Arrival Country: {}", leg.getArrivalAirport().getCountry());
+ LOGGER.info("Arrival Latitude: {}", leg.getArrivalAirport().getLatitude());
+ LOGGER.info("Arrival Longitude: {}", leg.getArrivalAirport().getLongitude());
+ }
+ LOGGER.info("Departure Date Time: {}", leg.getDepartureDateTime());
+ LOGGER.info("Arrival Date Time: {}", leg.getArrivalDateTime());
+ LOGGER.info("Flight Number: {}", leg.getFlightNumber());
+ LOGGER.info("Marketing Airline Code: {}", leg.getMarketingAirlineCode());
+ LOGGER.info("Marketing Airline Name: {}", leg.getMarketingAirlineName());
+ LOGGER.info("Equipment Code: {}", leg.getEquipmentCode());
+ LOGGER.info("Flight On Time Percentage: {}", leg.getFlightOnTimePercentage());
+ LOGGER.info("Equipment Name: {}", leg.getEquipmentName());
+ LOGGER.info("Flight Duration (Leg): {}", leg.getFlightDuration());
+
+ if (leg.getFlightDistance() != null) {
+ LOGGER.info("Flight Distance Value: {}", leg.getFlightDistance().getValue());
+ LOGGER.info("Flight Distance Unit: {}", leg.getFlightDistance().getUnit());
+ }
+
+ LOGGER.info("Booking Code: {}", leg.getBookingCode());
+ LOGGER.info("Cabin Class: {}", leg.getCabinClass());
+ LOGGER.info("Fare Basis Code: {}", leg.getFareBasisCode());
+ LOGGER.info("Meal Options: {}", leg.getMealOptions());
+ LOGGER.info("Amenities: {}", leg.getAmenities());
+ LOGGER.info("---------- Leg End ----------");
+ });
+ }
+ LOGGER.info("=========== Flight Segment End ============");
+ });
+ }
+
+ if (flightListingsResponse.getOffers() != null) {
+ flightListingsResponse.getOffers().forEach(offer -> {
+ LOGGER.info("======================== Flight Offer Start ========================");
+
+ if (offer.getLinks() != null) {
+ offer.getLinks().forEach((key, value) -> LOGGER.info("Link [{}]: {}", key, value));
+ }
+
+ LOGGER.info("Segment IDs: {}", offer.getSegmentIds());
+
+ if (offer.getOfferPrice() != null) {
+
+ if (offer.getOfferPrice().getTotalPrice() != null) {
+ LOGGER.info("Total Price Value: {}", offer.getOfferPrice().getTotalPrice().getValue());
+ LOGGER.info("Total Price Currency: {}", offer.getOfferPrice().getTotalPrice().getCurrency());
+ }
+
+ if (offer.getOfferPrice().getBasePrice() != null) {
+ LOGGER.info("Base Price Value: {}", offer.getOfferPrice().getBasePrice().getValue());
+ LOGGER.info("Base Price Currency: {}", offer.getOfferPrice().getBasePrice().getCurrency());
+ }
+
+ if (offer.getOfferPrice().getTotalTaxes() != null) {
+ LOGGER.info("Total Taxes Value: {}", offer.getOfferPrice().getTotalTaxes().getValue());
+ LOGGER.info("Total Taxes Currency: {}", offer.getOfferPrice().getTotalTaxes().getCurrency());
+ }
+
+ if (offer.getOfferPrice().getTotalTaxesAndFees() != null) {
+ LOGGER.info("Total Taxes and Fees Value: {}", offer.getOfferPrice().getTotalTaxesAndFees().getValue());
+ LOGGER.info("Total Taxes and Fees Currency: {}", offer.getOfferPrice().getTotalTaxesAndFees().getCurrency());
+ }
+
+ if (offer.getOfferPrice().getAveragePricePerTicket() != null) {
+ LOGGER.info("Average Price Per Ticket Value: {}", offer.getOfferPrice().getAveragePricePerTicket().getValue());
+ LOGGER.info("Average Price Per Ticket Currency: {}", offer.getOfferPrice().getAveragePricePerTicket().getCurrency());
+ LOGGER.info("Average Price Per Ticket Count: {}", offer.getOfferPrice().getAveragePricePerTicket().getCount());
+ }
+
+ if (offer.getOfferPrice().getPricePerPassengerCategory() != null) {
+ offer.getOfferPrice().getPricePerPassengerCategory().forEach(categoryPrice -> {
+ LOGGER.info("---- Passenger Category Price Start ----");
+ LOGGER.info("Category: {}", categoryPrice.getCategory());
+ LOGGER.info("Count: {}", categoryPrice.getCount());
+
+ if (categoryPrice.getTotalPrice() != null) {
+ LOGGER.info("Total Price Value: {}", categoryPrice.getTotalPrice().getValue());
+ LOGGER.info("Total Price Currency: {}", categoryPrice.getTotalPrice().getCurrency());
+ }
+
+ if (categoryPrice.getBasePrice() != null) {
+ LOGGER.info("Base Price Value: {}", categoryPrice.getBasePrice().getValue());
+ LOGGER.info("Base Price Currency: {}", categoryPrice.getBasePrice().getCurrency());
+ }
+
+ if (categoryPrice.getTotalTaxes() != null) {
+ LOGGER.info("Total Taxes Value: {}", categoryPrice.getTotalTaxes().getValue());
+ LOGGER.info("Total Taxes Currency: {}", categoryPrice.getTotalTaxes().getCurrency());
+ }
+ LOGGER.info("---- Passenger Category Price End ----");
+ });
+ }
+ }
+
+
+ LOGGER.info("Ticket Type: {}", offer.getTicketType());
+ LOGGER.info("======================== Flight Offer End ========================");
+ });
+ }
+
+ if (flightListingsResponse.getSearchCities() != null) {
+ flightListingsResponse.getSearchCities().forEach(city -> {
+ LOGGER.info("======================== Search City Start ========================");
+ LOGGER.info("City Code: {}", city.getCode());
+ LOGGER.info("City Name: {}", city.getCity());
+ LOGGER.info("Province: {}", city.getProvince());
+ LOGGER.info("Country: {}", city.getCountry());
+ LOGGER.info("======================== Search City End ========================");
+ });
+ }
+
+ if (flightListingsResponse.getValidFormsOfPayment() != null) {
+ flightListingsResponse.getValidFormsOfPayment().forEach((key, value) -> {
+ LOGGER.info("================= Valid Forms of Payment Start [{}] ============", key);
+ value.forEach(payment -> {
+ LOGGER.info("---- Payment Method Start ----");
+ LOGGER.info("Payment Method: {}", payment.getPaymentMethod());
+ LOGGER.info("Name: {}", payment.getName());
+ LOGGER.info("Fee: {}", payment.getFee());
+ LOGGER.info("Currency: {}", payment.getCurrency());
+ LOGGER.info("---- Payment Method End ----");
+ });
+ LOGGER.info("========== Valid Forms of Payment End [{}] ============", key);
+ });
+ }
+
+ LOGGER.info("===================== End FlightListingsQuickStartScenario ====================");
+
+ // --- Example for a Round Trip Search ---
+ LOGGER.info("\n======== Executing GetFlightListingsOperation (Round Trip) ========");
+
+ GetFlightListingsOperationParams roundTripParams = GetFlightListingsOperationParams.builder().partnerTransactionID("txn-123-4").segment1(GetFlightListingsOperationSegmentParam.builder().origin("EWR").destination("LAX").departureDate(now.plusDays(10)).build()).segment2(GetFlightListingsOperationSegmentParam.builder().origin("LAX").destination("EWR").departureDate(now.plusDays(10)).build()).childrenAges(Arrays.asList(4, 5)).adult(1).senior(1).build();
+
+ FlightSearchResponse roundTripResponse = xapClient.execute(new GetFlightListingsOperation(roundTripParams)).getData();
+
+ LOGGER.info("========= GetFlightListingsOperation (Round Trip) Executed ==============");
+
+ if (roundTripResponse != null && roundTripResponse.getSegments() != null && roundTripResponse.getSegments().size() == 2) {
+ LOGGER.info("Round trip search returned {} segments.", roundTripResponse.getSegments().size());
+ }
+
+ // --- Example for a Multi-Stop Search ---
+ LOGGER.info("\n========= Executing GetFlightListingsOperation (Multi-Stop) ==========");
+
+ GetFlightListingsOperationParams multiStopParams = GetFlightListingsOperationParams.builder().partnerTransactionID("txn-123-4").segment1(GetFlightListingsOperationSegmentParam.builder().origin("LAS").destination("ATL").departureDate(now.plusDays(5)).build()).segment2(GetFlightListingsOperationSegmentParam.builder().origin("ORD").destination("SEA").departureDate(now.plusDays(10)).build()).adult(1).senior(1).childrenAges(Arrays.asList(4, 5)).build();
+
+ FlightSearchResponse multiStopResponse = xapClient.execute(new GetFlightListingsOperation(multiStopParams)).getData();
+
+ LOGGER.info("============ GetFlightListingsOperation (Multi-Stop) Executed ===========");
+
+ if (multiStopResponse != null && multiStopResponse.getSegments() != null && multiStopResponse.getSegments().size() == 3) {
+ LOGGER.info("Multi-stop search returned {} segments.", multiStopResponse.getSegments().size());
+ }
+ }
+}
+
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/AvailabilityCalendarsQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/AvailabilityCalendarsQuickStartScenario.java
index 0c652a89c..ab6634a12 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/AvailabilityCalendarsQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/AvailabilityCalendarsQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.lodging;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/HotelIdsSearchEndToEndScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/HotelIdsSearchEndToEndScenario.java
index 20c1cdb62..99f8df051 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/HotelIdsSearchEndToEndScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/HotelIdsSearchEndToEndScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.lodging;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/ListingsQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/ListingsQuickStartScenario.java
index 0d453bc27..abb8c07d8 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/ListingsQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/ListingsQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.lodging;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/QuotesQuickStartScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/QuotesQuickStartScenario.java
index 1702066c2..7c5d62c57 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/QuotesQuickStartScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/QuotesQuickStartScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.lodging;
import com.expediagroup.sdk.xap.client.XapClient;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboPropertySearchEndToEndScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboPropertySearchEndToEndScenario.java
index 8c8e57c44..97cae3887 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboPropertySearchEndToEndScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboPropertySearchEndToEndScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.lodging;
import com.expediagroup.sdk.rest.model.Response;
diff --git a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboScenario.java b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboScenario.java
index 136ce9536..43c3b579f 100644
--- a/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboScenario.java
+++ b/examples/src/main/java/com/expediagroup/sdk/xap/examples/scenarios/lodging/VrboScenario.java
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.examples.scenarios.lodging;
import com.expediagroup.sdk.core.auth.basic.BasicAuthCredentials;
@@ -33,8 +32,8 @@ public interface VrboScenario extends XapScenario {
*/
@Override
default XapClient createClient() {
- String key = System.getProperty("com.expediagroup.xapjavasdk.vrbokey");
- String secret = System.getProperty("com.expediagroup.xapjavasdk.vrbosecret");
+ String key = System.getenv("VRBO_KEY");
+ String secret = System.getenv("VRBO_SECRET");
BasicAuthCredentials credentials = new BasicAuthCredentials(key, secret);
diff --git a/generator/build.gradle.kts b/generator/build.gradle.kts
index 2bffae0ac..64a14093b 100644
--- a/generator/build.gradle.kts
+++ b/generator/build.gradle.kts
@@ -1,9 +1,12 @@
-import com.expediagroup.sdk.xap.generator.mustache.AllowedMediaTypesLambda
+import com.expediagroup.sdk.xap.generator.mustache.lambda.AllowedMediaTypesLambda
+import com.expediagroup.sdk.xap.generator.mustache.processor.model.LocalDateTimeModelProcessor
+import com.expediagroup.sdk.xap.generator.mustache.processor.operation.LocalDateTimeOperationParamsProcessor
+import com.expediagroup.sdk.xap.generator.mustache.processor.operation.RoomsOperationParamsProcessor
+import com.expediagroup.sdk.xap.generator.mustache.processor.operation.SegmentsOperationParamsProcessor
import org.openapitools.codegen.CodegenConstants
plugins {
- id("com.expediagroup.sdk.openapigenerator") version "0.0.9-alpha"
- id("com.github.hierynomus.license-base") version "0.16.1"
+ id("com.expediagroup.sdk.openapigenerator") version "0.0.12-alpha"
}
group = project.property("GROUP_ID") as String
@@ -12,14 +15,23 @@ dependencies {
api("org.openapitools:openapi-generator:7.11.0")
}
+val specsDir = "$rootDir/specs"
+
+/**
+ * Configuration for OpenAPI code generation.
+ * This configures how the OpenAPI Generator will create the SDK code from the API specs.
+ */
openApiGenerate {
- inputSpec = System.getProperty("inputSpec") ?: "$projectDir/src/main/resources/transformedSpecs.yaml"
+ // Path to the transformed OpenAPI specification file
+ inputSpec = "$specsDir/transformed-specs.yaml"
+ // Java package configuration
packageName = "com.expediagroup.sdk.xap"
invokerPackage = "com.expediagroup.sdk.xap"
apiPackage = "com.expediagroup.sdk.xap.operations"
modelPackage = "com.expediagroup.sdk.xap.models"
+ // Generation behavior settings
dryRun = false
cleanupOutput = false
generateApiDocumentation = false
@@ -27,45 +39,89 @@ openApiGenerate {
generateModelTests = false
enablePostProcessFile = true
+ // Paths to resources needed for generation
templateDir = "$projectDir/src/main/resources/templates"
configFile = "$projectDir/src/main/resources/generator-config.yaml"
outputDir = "$rootDir/xap-sdk/src/main/kotlin"
+ // Additional configuration properties
additionalProperties.put(CodegenConstants.ENUM_PROPERTY_NAMING, "UPPERCASE")
additionalProperties.put("allowedMediaTypes", AllowedMediaTypesLambda())
+ additionalProperties.put(
+ "operationProcessors",
+ listOf(
+ RoomsOperationParamsProcessor(),
+ SegmentsOperationParamsProcessor(),
+ LocalDateTimeOperationParamsProcessor(),
+ ),
+ )
+
+ additionalProperties.put("modelProcessors", listOf(LocalDateTimeModelProcessor()))
configOptions.put("sourceFolder", "")
- globalProperties.put("supportingFiles", "Room.kt")
+ // Additional files to generate beyond the core API/model classes
+ globalProperties.put("supportingFiles", "Room.kt,GetFlightListingsOperationSegmentParam.kt")
}
-license {
- header = rootProject.file("LICENSE-HEADER.txt")
- skipExistingHeaders = true
- strictCheck = true
- includes(
- listOf(
- "$rootDir/xap-sdk/src/main/kotlin/**/*.kt"
- )
+/**
+ * Runs the entire code generation process in a single command:
+ * 1. Merges OpenAPI spec files into a single specs.yaml file
+ * 2. Transforms the OpenAPI spec files using EG spec transformer
+ * 3. Generates the SDK code based on the transformed spec
+ * 4. Formats license headers in the generated code
+ * 5. Applies ktlint formatting to ensure code style consistency
+ *
+ * This task is the main entry point for the SDK generation workflow.
+ */
+tasks.register("generateAll") {
+ dependsOn(":generator:transformSpecs")
+ commandLine(
+ "sh",
+ "-c",
+ """
+ ../gradlew :generator:openApiGenerate &&
+ ../gradlew :xap-sdk:licenseFormatMain &&
+ ../gradlew :xap-sdk:ktlintFormat
+ """.trimIndent(),
)
}
-tasks.named("openApiGenerate").configure {
- doLast {
- // Format code
- project.providers.exec {
- commandLine(
- "../gradlew ktlintFormat".split(" "),
- )
- workingDir = File("$rootDir/xap-sdk").absoluteFile
- }
+/**
+ * Merges all OpenAPI spec files into a single specs.yaml file.
+ * This is done using the openapi-merge-cli tool.
+ * The merged specs.yaml is used as input for the spec transformer.
+ */
+tasks.register("mergeSpecs") {
+ commandLine("npx", "openapi-merge-cli")
+ workingDir = File(specsDir)
+}
- // Add license headers
- project.providers.exec {
- commandLine(
- "../gradlew licenseFormatMain".split(" "),
- )
- workingDir = File("$rootDir/xap-sdk").absoluteFile
- }
- }
+/**
+ * Transforms the merged OpenAPI spec file using the Expedia Group spec transformer.
+ * This transformation:
+ * - Adds required headers
+ * - Converts operation IDs to tags
+ * - Sets default string type to single quotes
+ * - Processes the merged specs.yaml and outputs transformed-specs.yaml
+ */
+tasks.register("transformSpecs") {
+ dependsOn("mergeSpecs")
+ workingDir = File(specsDir)
+ commandLine(
+ "npx",
+ "--yes",
+ "-p",
+ "@expediagroup/spec-transformer",
+ "cli",
+ "--headers",
+ "accept,accept-encoding,key",
+ "--operationIdsToTags",
+ "--defaultStringType",
+ "QUOTE_SINGLE",
+ "--input",
+ "specs.yaml",
+ "--output",
+ "transformed-specs.yaml",
+ )
}
diff --git a/generator/src/main/resources/generator-config.yaml b/generator/src/main/resources/generator-config.yaml
index 8ebdd1f90..ca91f1517 100644
--- a/generator/src/main/resources/generator-config.yaml
+++ b/generator/src/main/resources/generator-config.yaml
@@ -6,3 +6,7 @@ files:
templateType: SupportingFiles
destinationFilename: Room.kt
folder: com/expediagroup/sdk/xap/models
+ get_flight_listings_operation_segment_param.mustache:
+ templateType: SupportingFiles
+ destinationFilename: GetFlightListingsOperationSegmentParam.kt
+ folder: com/expediagroup/sdk/xap/models
diff --git a/generator/src/main/resources/post-processor/.editorconfig b/generator/src/main/resources/post-processor/.editorconfig
deleted file mode 100644
index 79fe80267..000000000
--- a/generator/src/main/resources/post-processor/.editorconfig
+++ /dev/null
@@ -1,8 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-insert_final_newline = true
diff --git a/generator/src/main/resources/post-processor/.eslintignore b/generator/src/main/resources/post-processor/.eslintignore
deleted file mode 100644
index 567609b12..000000000
--- a/generator/src/main/resources/post-processor/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-build/
diff --git a/generator/src/main/resources/post-processor/.eslintrc.json b/generator/src/main/resources/post-processor/.eslintrc.json
deleted file mode 100644
index f95bb333f..000000000
--- a/generator/src/main/resources/post-processor/.eslintrc.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": "./node_modules/gts/"
-}
diff --git a/generator/src/main/resources/post-processor/.prettierrc.js b/generator/src/main/resources/post-processor/.prettierrc.js
deleted file mode 100644
index ff1548339..000000000
--- a/generator/src/main/resources/post-processor/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- ...require('gts/.prettierrc.json')
-}
diff --git a/generator/src/main/resources/post-processor/assets/rules/activities-cancellation-policy/change-builder-method-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/activities-cancellation-policy/change-builder-method-param-type.yaml
deleted file mode 100644
index 9196a5d5a..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/activities-cancellation-policy/change-builder-method-param-type.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rule:
- kind: user_type
- inside:
- kind: parameter
- regex: freeCancellationEndDateTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/activities-cancellation-policy/change-class-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/activities-cancellation-policy/change-class-param-type.yaml
deleted file mode 100644
index 8aa1ed890..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/activities-cancellation-policy/change-class-param-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: freeCancellationEndDateTime
- - kind: nullable_type
- inside:
- kind: class_parameter
- regex: freeCancellationEndDateTime
diff --git a/generator/src/main/resources/post-processor/assets/rules/available-time-slot/change-builder-method-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/available-time-slot/change-builder-method-param-type.yaml
deleted file mode 100644
index 508fadcdc..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/available-time-slot/change-builder-method-param-type.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rule:
- kind: user_type
- inside:
- kind: parameter
- regex: dateTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/available-time-slot/change-class-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/available-time-slot/change-class-param-type.yaml
deleted file mode 100644
index 63cfebce3..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/available-time-slot/change-class-param-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: dateTime
- - kind: nullable_type
- inside:
- kind: class_parameter
- regex: dateTime
diff --git a/generator/src/main/resources/post-processor/assets/rules/car-cancellation-policy/change-builder-method-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/car-cancellation-policy/change-builder-method-param-type.yaml
deleted file mode 100644
index 9196a5d5a..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/car-cancellation-policy/change-builder-method-param-type.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rule:
- kind: user_type
- inside:
- kind: parameter
- regex: freeCancellationEndDateTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/car-cancellation-policy/change-class-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/car-cancellation-policy/change-class-param-type.yaml
deleted file mode 100644
index 8aa1ed890..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/car-cancellation-policy/change-class-param-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: freeCancellationEndDateTime
- - kind: nullable_type
- inside:
- kind: class_parameter
- regex: freeCancellationEndDateTime
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/change-builder-method-params-type.yaml b/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/change-builder-method-params-type.yaml
deleted file mode 100644
index c273f8d4a..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/change-builder-method-params-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- inside:
- any:
- - kind: parameter
- regex: pickupTime
- - kind: parameter
- regex: dropOffTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/change-class-params-type.yaml b/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/change-class-params-type.yaml
deleted file mode 100644
index 606ec0fd5..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/change-class-params-type.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: pickupTime
- - kind: class_parameter
- regex: dropOffTime
- - kind: nullable_type
- inside:
- any:
- - kind: class_parameter
- regex: pickupTime
- - kind: class_parameter
- regex: dropOffTime
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/import-chrono-unit.yaml b/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/import-chrono-unit.yaml
deleted file mode 100644
index 214190f54..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/import-chrono-unit.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-rule:
- kind: "import_header"
- regex: "OperationParams"
- pattern: "$HEADER"
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/truncate-pickup-dropoff-times.yaml b/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/truncate-pickup-dropoff-times.yaml
deleted file mode 100644
index eb09ba3b3..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-cars-listings-operation-params/truncate-pickup-dropoff-times.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-rule:
- kind: value_argument
- nthChild: 2
- inside:
- kind: call_suffix
- stopBy: end
- has:
- any:
- - kind: value_arguments
- regex: pickupTime
- - kind: value_arguments
- regex: dropOffTime
- inside:
- kind: function_declaration
- stopBy: end
- regex: getQueryParams
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/add-rooms-builder-method.yaml b/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/add-rooms-builder-method.yaml
deleted file mode 100644
index 18244f782..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/add-rooms-builder-method.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rule:
- kind: 'function_declaration'
- regex: 'fun build'
- pattern: '$FUNC'
- inside:
- kind: 'class_body'
- inside:
- pattern: 'class Builder'
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/import-room.yaml b/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/import-room.yaml
deleted file mode 100644
index 214190f54..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/import-room.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-rule:
- kind: "import_header"
- regex: "OperationParams"
- pattern: "$HEADER"
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/remove-room-builder-methods.yaml b/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/remove-room-builder-methods.yaml
deleted file mode 100644
index 4590c8918..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-lodging-listings-operation-params/remove-room-builder-methods.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-utils:
- room-builder:
- kind: 'function_declaration'
- regex: 'fun room*'
- inside:
- kind: 'class_body'
- inside:
- pattern: 'class Builder'
-rule:
- any:
- - matches: room-builder
- - kind: 'multiline_comment'
- precedes:
- matches: room-builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/add-rooms-builder-method.yaml b/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/add-rooms-builder-method.yaml
deleted file mode 100644
index 18244f782..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/add-rooms-builder-method.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rule:
- kind: 'function_declaration'
- regex: 'fun build'
- pattern: '$FUNC'
- inside:
- kind: 'class_body'
- inside:
- pattern: 'class Builder'
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/import-room.yaml b/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/import-room.yaml
deleted file mode 100644
index 214190f54..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/import-room.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-rule:
- kind: "import_header"
- regex: "OperationParams"
- pattern: "$HEADER"
diff --git a/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/remove-room-builder-methods.yaml b/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/remove-room-builder-methods.yaml
deleted file mode 100644
index 4590c8918..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/get-lodging-quotes-operation-params/remove-room-builder-methods.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-utils:
- room-builder:
- kind: 'function_declaration'
- regex: 'fun room*'
- inside:
- kind: 'class_body'
- inside:
- pattern: 'class Builder'
-rule:
- any:
- - matches: room-builder
- - kind: 'multiline_comment'
- precedes:
- matches: room-builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/non-cancellable-date-time-range/change-builder-method-params-type.yaml b/generator/src/main/resources/post-processor/assets/rules/non-cancellable-date-time-range/change-builder-method-params-type.yaml
deleted file mode 100644
index d99331336..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/non-cancellable-date-time-range/change-builder-method-params-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- inside:
- any:
- - kind: parameter
- regex: startDateTime
- - kind: parameter
- regex: endDateTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/non-cancellable-date-time-range/change-class-params-type.yaml b/generator/src/main/resources/post-processor/assets/rules/non-cancellable-date-time-range/change-class-params-type.yaml
deleted file mode 100644
index a162d9560..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/non-cancellable-date-time-range/change-class-params-type.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: startDateTime
- - kind: class_parameter
- regex: endDateTime
- - kind: nullable_type
- inside:
- any:
- - kind: class_parameter
- regex: startDateTime
- - kind: class_parameter
- regex: endDateTime
diff --git a/generator/src/main/resources/post-processor/assets/rules/penalty-rule/change-builder-method-params-type.yaml b/generator/src/main/resources/post-processor/assets/rules/penalty-rule/change-builder-method-params-type.yaml
deleted file mode 100644
index d99331336..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/penalty-rule/change-builder-method-params-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- inside:
- any:
- - kind: parameter
- regex: startDateTime
- - kind: parameter
- regex: endDateTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/penalty-rule/change-class-params-type.yaml b/generator/src/main/resources/post-processor/assets/rules/penalty-rule/change-class-params-type.yaml
deleted file mode 100644
index a162d9560..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/penalty-rule/change-class-params-type.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: startDateTime
- - kind: class_parameter
- regex: endDateTime
- - kind: nullable_type
- inside:
- any:
- - kind: class_parameter
- regex: startDateTime
- - kind: class_parameter
- regex: endDateTime
diff --git a/generator/src/main/resources/post-processor/assets/rules/vendor-location-details/change-builder-method-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/vendor-location-details/change-builder-method-param-type.yaml
deleted file mode 100644
index 508fadcdc..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/vendor-location-details/change-builder-method-param-type.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-rule:
- kind: user_type
- inside:
- kind: parameter
- regex: dateTime
- stopBy:
- kind: class_declaration
- regex: Builder
diff --git a/generator/src/main/resources/post-processor/assets/rules/vendor-location-details/change-class-param-type.yaml b/generator/src/main/resources/post-processor/assets/rules/vendor-location-details/change-class-param-type.yaml
deleted file mode 100644
index 63cfebce3..000000000
--- a/generator/src/main/resources/post-processor/assets/rules/vendor-location-details/change-class-param-type.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-rule:
- kind: user_type
- pattern: $TYPE
- inside:
- any:
- - kind: class_parameter
- regex: dateTime
- - kind: nullable_type
- inside:
- kind: class_parameter
- regex: dateTime
diff --git a/generator/src/main/resources/post-processor/assets/templates/get-lodging-listings-operation-params/rooms.kt b/generator/src/main/resources/post-processor/assets/templates/get-lodging-listings-operation-params/rooms.kt
deleted file mode 100644
index 4f844ba41..000000000
--- a/generator/src/main/resources/post-processor/assets/templates/get-lodging-listings-operation-params/rooms.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-fun rooms(rooms: List) =
- apply {
- if (rooms.size > 8) {
- throw com.expediagroup.sdk.rest.exception.client.PropertyConstraintViolationException(
- constraintViolations = listOf("rooms: size must be between 0 and 8")
- )
- }
-
- rooms.elementAtOrNull(0)?.let {
- this.room1Adults = it.adults
- this.room1ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(1)?.let {
- this.room2Adults = it.adults
- this.room2ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(2)?.let {
- this.room3Adults = it.adults
- this.room3ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(3)?.let {
- this.room4Adults = it.adults
- this.room4ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(4)?.let {
- this.room5Adults = it.adults
- this.room5ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(5)?.let {
- this.room6Adults = it.adults
- this.room6ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(6)?.let {
- this.room7Adults = it.adults
- this.room7ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(7)?.let {
- this.room8Adults = it.adults
- this.room8ChildAges = it.childAges?.map { item -> item.toString() }
- }
- }
diff --git a/generator/src/main/resources/post-processor/assets/templates/get-lodging-quotes-operation-params/rooms.kt b/generator/src/main/resources/post-processor/assets/templates/get-lodging-quotes-operation-params/rooms.kt
deleted file mode 100644
index 4f844ba41..000000000
--- a/generator/src/main/resources/post-processor/assets/templates/get-lodging-quotes-operation-params/rooms.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-fun rooms(rooms: List) =
- apply {
- if (rooms.size > 8) {
- throw com.expediagroup.sdk.rest.exception.client.PropertyConstraintViolationException(
- constraintViolations = listOf("rooms: size must be between 0 and 8")
- )
- }
-
- rooms.elementAtOrNull(0)?.let {
- this.room1Adults = it.adults
- this.room1ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(1)?.let {
- this.room2Adults = it.adults
- this.room2ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(2)?.let {
- this.room3Adults = it.adults
- this.room3ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(3)?.let {
- this.room4Adults = it.adults
- this.room4ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(4)?.let {
- this.room5Adults = it.adults
- this.room5ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(5)?.let {
- this.room6Adults = it.adults
- this.room6ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(6)?.let {
- this.room7Adults = it.adults
- this.room7ChildAges = it.childAges?.map { item -> item.toString() }
- }
-
- rooms.elementAtOrNull(7)?.let {
- this.room8Adults = it.adults
- this.room8ChildAges = it.childAges?.map { item -> item.toString() }
- }
- }
diff --git a/generator/src/main/resources/post-processor/package-lock.json b/generator/src/main/resources/post-processor/package-lock.json
deleted file mode 100644
index ab72b7a21..000000000
--- a/generator/src/main/resources/post-processor/package-lock.json
+++ /dev/null
@@ -1,3307 +0,0 @@
-{
- "name": "post-processor",
- "version": "0.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "version": "0.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@ast-grep/napi": "0.33.1",
- "yaml": "2.7.0"
- },
- "devDependencies": {
- "@types/node": "22.13.5",
- "gts": "6.0.2",
- "tsc-alias": "1.8.10",
- "typescript": "5.7.3"
- }
- },
- "node_modules/@ast-grep/napi": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi/-/napi-0.33.1.tgz",
- "integrity": "sha512-AfUsqmEa8NoYq1QhY2LWKCgKRBrCW89WB2D7t4hhTwXcfBB+CWRtY11vUughpfGLrdyziPst7kpdFzI9TC9Efw==",
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- },
- "optionalDependencies": {
- "@ast-grep/napi-darwin-arm64": "0.33.1",
- "@ast-grep/napi-darwin-x64": "0.33.1",
- "@ast-grep/napi-linux-arm64-gnu": "0.33.1",
- "@ast-grep/napi-linux-arm64-musl": "0.33.1",
- "@ast-grep/napi-linux-x64-gnu": "0.33.1",
- "@ast-grep/napi-linux-x64-musl": "0.33.1",
- "@ast-grep/napi-win32-arm64-msvc": "0.33.1",
- "@ast-grep/napi-win32-ia32-msvc": "0.33.1",
- "@ast-grep/napi-win32-x64-msvc": "0.33.1"
- }
- },
- "node_modules/@ast-grep/napi-darwin-arm64": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-arm64/-/napi-darwin-arm64-0.33.1.tgz",
- "integrity": "sha512-HJcjxDhF1THn6VlUMpYFQoZBWWMk3flBJpLEDWLjH3Umk7/4tQvaJeKwhl32Snegj35p9SHGz1cS8D2k1nDsEg==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-darwin-x64": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-darwin-x64/-/napi-darwin-x64-0.33.1.tgz",
- "integrity": "sha512-Gu3dd+7RZcLyte/xwBX4ErT12GYgGeQGQh6743NffChyVnpwZpj2aWmdkD8gHRKswXz2dp5R01QMCV0G5o8rDQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-linux-arm64-gnu": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-gnu/-/napi-linux-arm64-gnu-0.33.1.tgz",
- "integrity": "sha512-4rvHBtq/0Ziwr93Mp86GQPMMySNHCMXnSIdJqJjTikt/LhJNdxmXtEVadashwxbBGWvcIy8dL6OCBHblzY/3ZQ==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-linux-arm64-musl": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-arm64-musl/-/napi-linux-arm64-musl-0.33.1.tgz",
- "integrity": "sha512-+vTHYYP8iRG9lZHhcpQRxAuD8CBYXJHFXgsevmnurS/R53r0YjNtrtj6W33e7RYXY5hehmey2Cz/5h6OhdLcJw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-linux-x64-gnu": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-gnu/-/napi-linux-x64-gnu-0.33.1.tgz",
- "integrity": "sha512-Qm42//ZHIi2XvyvHboRPaNt32v143feG2aCqxZ2qhKJCI33abtH8pW8MF90Ix85d927xYtTwZX/ovOmJ4bghFQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-linux-x64-musl": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-linux-x64-musl/-/napi-linux-x64-musl-0.33.1.tgz",
- "integrity": "sha512-+ye9d8nwgi+f9yhA0NEv5lDcpfIF7xhCcF9FerIKpksX57oI68QWNz1bOWHOuebaf9Wc0hgEtfai7lzcDWcsnA==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-win32-arm64-msvc": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-arm64-msvc/-/napi-win32-arm64-msvc-0.33.1.tgz",
- "integrity": "sha512-0IrPtvqMUJmvmbBN3JcAmUoKUxsWMmrp0VAoJ+zUBHcz3GeWDISgxrUcx1z6edMeF+Ktm0SUG2LfqrzFhUqMyw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-win32-ia32-msvc": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-ia32-msvc/-/napi-win32-ia32-msvc-0.33.1.tgz",
- "integrity": "sha512-rM6kK19Z9mknXQLZYvIGW1vR472n0dzhexWRM4O8BAL33B4NXA0qa7lX7I3ioHBTOUx0dGW10oNRm3yindUohg==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ast-grep/napi-win32-x64-msvc": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@ast-grep/napi-win32-x64-msvc/-/napi-win32-x64-msvc-0.33.1.tgz",
- "integrity": "sha512-8ATNhuU28PoUBxSgsPQnPpY+rl8DPEQCuUS55X0BLAvNQwR+Tc4MHHHX1FwjQxLLSAPfd5weiG4XQA+l7sIr0w==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.25.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz",
- "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.25.7",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
- "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.25.7",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz",
- "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.25.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.11.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
- "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
- "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
- "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
- "deprecated": "Use @eslint/config-array instead",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.3",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "deprecated": "Use @eslint/object-schema instead",
- "dev": true
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@pkgr/core": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
- "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "node_modules/@types/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "22.13.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz",
- "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "undici-types": "~6.20.0"
- }
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
- "dev": true,
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/type-utils": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
- },
- "node_modules/acorn": {
- "version": "8.12.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/builtins": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz",
- "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==",
- "dev": true,
- "dependencies": {
- "semver": "^7.0.0"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || >=14"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/debug": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
- "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dev": true,
- "dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "8.57.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
- "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
- "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.1",
- "@humanwhocodes/config-array": "^0.13.0",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
- "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
- "dev": true,
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-es": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
- "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
- "dev": true,
- "dependencies": {
- "eslint-utils": "^2.0.0",
- "regexpp": "^3.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-n": {
- "version": "15.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz",
- "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==",
- "dev": true,
- "dependencies": {
- "builtins": "^5.0.1",
- "eslint-plugin-es": "^4.1.0",
- "eslint-utils": "^3.0.0",
- "ignore": "^5.1.1",
- "is-core-module": "^2.11.0",
- "minimatch": "^3.1.2",
- "resolve": "^1.22.1",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=12.22.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-prettier": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
- "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
- "dev": true,
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0",
- "synckit": "^0.9.1"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint-plugin-prettier"
- },
- "peerDependencies": {
- "@types/eslint": ">=8.0.0",
- "eslint": ">=8.0.0",
- "eslint-config-prettier": "*",
- "prettier": ">=3.0.0"
- },
- "peerDependenciesMeta": {
- "@types/eslint": {
- "optional": true
- },
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "dependencies": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-diff": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
- "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/figures": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
- "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/figures/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/gts": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/gts/-/gts-6.0.2.tgz",
- "integrity": "sha512-lp9+eDzzm6TYqiBpgGY00EInxBHFTJiU5brsVp11qXCJEw7Q6WNNngja0spZeqSFWSquaRuHQUuWxdZLaxnKmw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/eslint-plugin": "5.62.0",
- "@typescript-eslint/parser": "5.62.0",
- "chalk": "^4.1.2",
- "eslint": "8.57.1",
- "eslint-config-prettier": "9.1.0",
- "eslint-plugin-n": "15.7.0",
- "eslint-plugin-prettier": "5.2.1",
- "execa": "^5.0.0",
- "inquirer": "^7.3.3",
- "json5": "^2.1.3",
- "meow": "^9.0.0",
- "ncp": "^2.0.0",
- "prettier": "3.3.3",
- "rimraf": "3.0.2",
- "write-file-atomic": "^4.0.0"
- },
- "bin": {
- "gts": "build/src/cli.js"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "typescript": ">=5"
- }
- },
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/inquirer": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
- "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-width": "^3.0.0",
- "external-editor": "^3.0.3",
- "figures": "^3.0.0",
- "lodash": "^4.17.19",
- "mute-stream": "0.0.8",
- "run-async": "^2.4.0",
- "rxjs": "^6.6.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "through": "^2.3.6"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
- "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
- "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
- "dev": true,
- "dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize": "^1.2.0",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
- "node_modules/mylas": {
- "version": "2.1.13",
- "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz",
- "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==",
- "dev": true,
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/raouldeheer"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node_modules/ncp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
- "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==",
- "dev": true,
- "bin": {
- "ncp": "bin/ncp"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
- "dev": true,
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.5"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/picocolors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
- "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/plimit-lit": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz",
- "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==",
- "dev": true,
- "dependencies": {
- "queue-lit": "^1.5.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
- "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
- "dev": true,
- "bin": {
- "prettier": "bin/prettier.cjs"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
- "dev": true,
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/queue-lit": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.2.tgz",
- "integrity": "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
- "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.20",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
- "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
- "dev": true
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "dependencies": {
- "min-indent": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/synckit": {
- "version": "0.9.2",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz",
- "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==",
- "dev": true,
- "dependencies": {
- "@pkgr/core": "^0.1.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- }
- },
- "node_modules/synckit/node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "dev": true
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
- },
- "node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "dependencies": {
- "os-tmpdir": "~1.0.2"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tsc-alias": {
- "version": "1.8.10",
- "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.10.tgz",
- "integrity": "sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==",
- "dev": true,
- "dependencies": {
- "chokidar": "^3.5.3",
- "commander": "^9.0.0",
- "globby": "^11.0.4",
- "mylas": "^2.1.9",
- "normalize-path": "^3.0.0",
- "plimit-lit": "^1.2.6"
- },
- "bin": {
- "tsc-alias": "dist/bin/index.js"
- }
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "5.7.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
- "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/undici-types": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
- "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
- "dev": true
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/write-file-atomic": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
- "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
- "dev": true,
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/yaml": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
- "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
- "bin": {
- "yaml": "bin.mjs"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/generator/src/main/resources/post-processor/package.json b/generator/src/main/resources/post-processor/package.json
deleted file mode 100644
index dd0f05a29..000000000
--- a/generator/src/main/resources/post-processor/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "",
- "version": "0.0.0",
- "description": "",
- "main": "build/src/index.js",
- "types": "build/src/index.d.ts",
- "files": [
- "build/src"
- ],
- "license": "Apache-2.0",
- "keywords": [],
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1",
- "lint": "gts lint",
- "clean": "gts clean",
- "compile": "tsc",
- "fix": "gts fix",
- "prepare": "npm run compile",
- "pretest": "npm run compile",
- "posttest": "npm run lint",
- "process": "node build/src/index.js"
- },
- "devDependencies": {
- "@types/node": "22.13.5",
- "gts": "6.0.2",
- "tsc-alias": "1.8.10",
- "typescript": "5.7.3"
- },
- "dependencies": {
- "@ast-grep/napi": "0.33.1",
- "yaml": "2.7.0"
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/index.ts b/generator/src/main/resources/post-processor/src/index.ts
deleted file mode 100644
index 78e401680..000000000
--- a/generator/src/main/resources/post-processor/src/index.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {CarsCancellationPolicyProcessor} from './processors/cars-cancellation-policy-processor';
-import {GetLodgingListingsOperationParamsProcessor} from './processors/get-lodging-listings-operation-params-processor';
-import {GetLodgingQuotesOperationParamsProcessor} from './processors/get-lodging-quotes-operation-params-processor';
-import {NonCancellableDateTimeRangeProcessor} from './processors/non-cancellable-date-time-range-processor';
-import {PenaltyRuleProcessor} from './processors/penalty-rule-processor';
-import {VendorLocationDetailsProcessor} from './processors/vendor-location-details-processor';
-import {GetCarsListingsOperationParamsProcessor} from './processors/get-cars-listings-operation-params-processor';
-import {ActivitiesCancellationPolicyProcessor} from './processors/activities-cancellation-policy-processor';
-import {AvailableTimeSlotProcessor} from './processors/available-time-slot-processor';
-
-import * as path from 'path';
-
-const args = process.argv.slice(2);
-const filePath = args[0];
-const fileName = path.parse(filePath).name;
-
-switch (fileName) {
- case 'CarsCancellationPolicy':
- new CarsCancellationPolicyProcessor().process(filePath);
- break;
- case 'GetLodgingListingsOperationParams':
- new GetLodgingListingsOperationParamsProcessor().process(filePath);
- break;
- case 'GetLodgingQuotesOperationParams':
- new GetLodgingQuotesOperationParamsProcessor().process(filePath);
- break;
- case 'NonCancellableDateTimeRange':
- new NonCancellableDateTimeRangeProcessor().process(filePath);
- break;
- case 'PenaltyRule':
- new PenaltyRuleProcessor().process(filePath);
- break;
- case 'VendorLocationDetails':
- new VendorLocationDetailsProcessor().process(filePath);
- break;
- case 'GetCarsListingsOperationParams':
- new GetCarsListingsOperationParamsProcessor().process(filePath);
- break;
- case 'ActivitiesCancellationPolicy':
- new ActivitiesCancellationPolicyProcessor().process(filePath);
- break;
- case 'AvailableTimeSlot':
- new AvailableTimeSlotProcessor().process(filePath);
- break;
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/activities-cancellation-policy-processor.ts b/generator/src/main/resources/post-processor/src/processors/activities-cancellation-policy-processor.ts
deleted file mode 100644
index 0e0e93289..000000000
--- a/generator/src/main/resources/post-processor/src/processors/activities-cancellation-policy-processor.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class ActivitiesCancellationPolicyProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'activities-cancellation-policy';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/available-time-slot-processor.ts b/generator/src/main/resources/post-processor/src/processors/available-time-slot-processor.ts
deleted file mode 100644
index 8f023644d..000000000
--- a/generator/src/main/resources/post-processor/src/processors/available-time-slot-processor.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class AvailableTimeSlotProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'available-time-slot';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/cars-cancellation-policy-processor.ts b/generator/src/main/resources/post-processor/src/processors/cars-cancellation-policy-processor.ts
deleted file mode 100644
index 79b6277f9..000000000
--- a/generator/src/main/resources/post-processor/src/processors/cars-cancellation-policy-processor.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class CarsCancellationPolicyProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'car-cancellation-policy';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/dummy-processor.ts b/generator/src/main/resources/post-processor/src/processors/dummy-processor.ts
deleted file mode 100644
index c42ebac7b..000000000
--- a/generator/src/main/resources/post-processor/src/processors/dummy-processor.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-import { SgNode } from '@ast-grep/napi';
-
-class DummyProcessor extends Processor {
- id = 'dummy';
- rules: RuleFunction[] = [
- (root: SgNode) => {
- // Dummy rule: No edits
- return [];
- }
- ];
-}
-
-export default DummyProcessor;
diff --git a/generator/src/main/resources/post-processor/src/processors/get-cars-listings-operation-params-processor.ts b/generator/src/main/resources/post-processor/src/processors/get-cars-listings-operation-params-processor.ts
deleted file mode 100644
index 4b5b27e45..000000000
--- a/generator/src/main/resources/post-processor/src/processors/get-cars-listings-operation-params-processor.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class GetCarsListingsOperationParamsProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'get-cars-listings-operation-params';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- this.importChronoUnit,
- this.truncatePickupDropoffTimes,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-params-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-params-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- importChronoUnit(root: SgNode): Edit[] {
- const config = this.readRule('import-chrono-unit');
-
- return root.findAll(config).map(node => {
- const room = 'import java.time.temporal.ChronoUnit';
- const header = node.getMatch('HEADER')?.text();
-
- return node.replace(`${room}\n${header}`);
- });
-
- }
-
- truncatePickupDropoffTimes(root: SgNode): Edit[] {
- const config = this.readRule('truncate-pickup-dropoff-times');
-
- return root.findAll(config).map(node => {
- return node.replace('it.truncatedTo(ChronoUnit.MINUTES).toString()');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/get-lodging-listings-operation-params-processor.ts b/generator/src/main/resources/post-processor/src/processors/get-lodging-listings-operation-params-processor.ts
deleted file mode 100644
index c750e84bb..000000000
--- a/generator/src/main/resources/post-processor/src/processors/get-lodging-listings-operation-params-processor.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as fs from 'node:fs';
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class GetLodgingListingsOperationParamsProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'get-lodging-listings-operation-params';
-
- constructor() {
- super();
- this.rules = [
- this.removeRoomBuilderMethods,
- this.importRoom,
- this.addRoomsBuilderMethod,
- ].map(rule => rule.bind(this));
- }
-
- removeRoomBuilderMethods(root: SgNode): Edit[] {
- const config = this.readRule('remove-room-builder-methods');
-
- return root.findAll(config).map(node => {
- return node.replace('');
- });
- }
-
- importRoom(root: SgNode): Edit[] {
- const config = this.readRule('import-room');
-
- return root.findAll(config).map(node => {
- const room = 'import com.expediagroup.sdk.xap.models.Room';
- const header = node.getMatch('HEADER')?.text();
-
- return node.replace(`${room}\n${header}`);
- });
- }
-
- addRoomsBuilderMethod(root: SgNode): Edit[] {
- const config = this.readRule('add-rooms-builder-method');
-
- const source = fs.readFileSync(
- './assets/templates/get-lodging-listings-operation-params/rooms.kt',
- 'utf-8'
- );
-
- return root.findAll(config).map(node => {
- const func = node.getMatch('FUNC')?.text();
- return node.replace(`${source}\n${func}`);
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/get-lodging-quotes-operation-params-processor.ts b/generator/src/main/resources/post-processor/src/processors/get-lodging-quotes-operation-params-processor.ts
deleted file mode 100644
index 93fbb390b..000000000
--- a/generator/src/main/resources/post-processor/src/processors/get-lodging-quotes-operation-params-processor.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as fs from 'node:fs';
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class GetLodgingQuotesOperationParamsProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'get-lodging-quotes-operation-params';
-
- constructor() {
- super();
- this.rules = [
- this.removeRoomBuilderMethods,
- this.importRoom,
- this.addRoomsBuilderMethod,
- ].map(rule => rule.bind(this));
- }
-
- removeRoomBuilderMethods(root: SgNode): Edit[] {
- const config = this.readRule('remove-room-builder-methods');
-
- return root.findAll(config).map(node => {
- return node.replace('');
- });
- }
-
- importRoom(root: SgNode): Edit[] {
- const config = this.readRule('import-room');
-
- return root.findAll(config).map(node => {
- const room = 'import com.expediagroup.sdk.xap.models.Room';
- const header = node.getMatch('HEADER')?.text();
-
- return node.replace(`${room}\n${header}`);
- });
- }
-
- addRoomsBuilderMethod(root: SgNode): Edit[] {
- const config = this.readRule('add-rooms-builder-method');
-
- const source = fs.readFileSync(
- './assets/templates/get-lodging-quotes-operation-params/rooms.kt',
- 'utf-8'
- );
-
- return root.findAll(config).map(node => {
- const func = node.getMatch('FUNC')?.text();
- return node.replace(`${source}\n${func}`);
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/non-cancellable-date-time-range-processor.ts b/generator/src/main/resources/post-processor/src/processors/non-cancellable-date-time-range-processor.ts
deleted file mode 100644
index 27f5b5f7a..000000000
--- a/generator/src/main/resources/post-processor/src/processors/non-cancellable-date-time-range-processor.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class NonCancellableDateTimeRangeProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'non-cancellable-date-time-range';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-params-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-params-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/penalty-rule-processor.ts b/generator/src/main/resources/post-processor/src/processors/penalty-rule-processor.ts
deleted file mode 100644
index b9fa1b69f..000000000
--- a/generator/src/main/resources/post-processor/src/processors/penalty-rule-processor.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class PenaltyRuleProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'penalty-rule';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-params-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-params-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/processor.ts b/generator/src/main/resources/post-processor/src/processors/processor.ts
deleted file mode 100644
index d7b2dac68..000000000
--- a/generator/src/main/resources/post-processor/src/processors/processor.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {PathOrFileDescriptor} from 'fs';
-import * as fs from 'node:fs';
-import {Lang, NapiConfig, parse} from '@ast-grep/napi';
-import * as yaml from 'yaml';
-import {RuleFunction} from './shared.types';
-
-export abstract class Processor {
- abstract rules: RuleFunction[];
- abstract id: String;
-
- process(filePath: PathOrFileDescriptor): void {
- const source = fs.readFileSync(filePath, 'utf-8');
- const ast = parse(Lang.Kotlin, source);
- const root = ast.root();
-
- const edits = this.rules.flatMap(func => func(root));
- const newSource = root.commitEdits(edits);
- fs.writeFileSync(filePath, newSource);
- }
-
- readRule(ruleName: string): NapiConfig {
- const rule = fs.readFileSync(
- `./assets/rules/${this.id}/${ruleName}.yaml`,
- 'utf-8'
- );
- return yaml.parse(rule);
- }
-}
diff --git a/generator/src/main/resources/post-processor/src/processors/shared.types.ts b/generator/src/main/resources/post-processor/src/processors/shared.types.ts
deleted file mode 100644
index a86cb67d3..000000000
--- a/generator/src/main/resources/post-processor/src/processors/shared.types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import {Edit, SgNode} from '@ast-grep/napi';
-
-export type RuleFunction = {(root: SgNode): Edit[]};
diff --git a/generator/src/main/resources/post-processor/src/processors/vendor-location-details-processor.ts b/generator/src/main/resources/post-processor/src/processors/vendor-location-details-processor.ts
deleted file mode 100644
index a236862c1..000000000
--- a/generator/src/main/resources/post-processor/src/processors/vendor-location-details-processor.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {Edit, NapiConfig, SgNode} from '@ast-grep/napi';
-import {Processor} from './processor';
-import {RuleFunction} from './shared.types';
-
-export class VendorLocationDetailsProcessor extends Processor {
- rules: RuleFunction[];
- id: String = 'vendor-location-details';
-
- constructor() {
- super();
- this.rules = [
- this.changeClassParamType,
- this.changeBuilderMethodParamType,
- ].map(rule => rule.bind(this));
- }
-
- changeClassParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-class-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-
- changeBuilderMethodParamType(root: SgNode): Edit[] {
- const config = this.readRule('change-builder-method-param-type');
-
- return root.findAll(config).map(node => {
- return node.replace('java.time.LocalDateTime');
- });
- }
-}
diff --git a/generator/src/main/resources/post-processor/tsconfig.json b/generator/src/main/resources/post-processor/tsconfig.json
deleted file mode 100644
index d1646f011..000000000
--- a/generator/src/main/resources/post-processor/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "extends": "./node_modules/gts/tsconfig-google.json",
- "compilerOptions": {
- "rootDir": ".",
- "outDir": "build"
- },
- "include": [
- "src/**/*.ts",
- "test/**/*.ts"
- ]
-}
diff --git a/generator/src/main/resources/templates/get_flight_listings_operation_segment_param.mustache b/generator/src/main/resources/templates/get_flight_listings_operation_segment_param.mustache
new file mode 100644
index 000000000..628dde414
--- /dev/null
+++ b/generator/src/main/resources/templates/get_flight_listings_operation_segment_param.mustache
@@ -0,0 +1,41 @@
+package com.expediagroup.sdk.xap.models
+
+data class GetFlightListingsOperationSegmentParam(
+ val origin: String,
+ val destination: String,
+ val departureDate: java.time.LocalDate,
+ val departureStartTime: String?,
+ val departureEndTime: String?
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var origin: String? = null,
+ private var destination: String? = null,
+ private var departureDate: java.time.LocalDate? = null,
+ private var departureStartTime: String? = null,
+ private var departureEndTime: String? = null
+ ) {
+ fun origin(origin: String?) = apply { this.origin = origin }
+
+ fun destination(destination: String?) = apply { this.destination = destination }
+
+ fun departureDate(departureDate: java.time.LocalDate?) = apply { this.departureDate = departureDate }
+
+ fun departureStartTime(departureStartTime: String?) = apply { this.departureStartTime = departureStartTime }
+
+ fun departureEndTime(departureEndTime: String?) = apply { this.departureEndTime = departureEndTime }
+
+ fun build(): GetFlightListingsOperationSegmentParam =
+ GetFlightListingsOperationSegmentParam(
+ origin = this.origin!!,
+ destination = this.destination!!,
+ departureDate = this.departureDate!!,
+ departureStartTime = this.departureStartTime,
+ departureEndTime = this.departureEndTime
+ )
+ }
+}
diff --git a/generator/src/main/resources/templates/operations/params/builder.mustache b/generator/src/main/resources/templates/operations/params/builder.mustache
new file mode 100644
index 000000000..0748698f2
--- /dev/null
+++ b/generator/src/main/resources/templates/operations/params/builder.mustache
@@ -0,0 +1,49 @@
+class Builder(
+{{#nonBodyParams}}
+ {{#params}}
+ @JsonProperty("{{{baseName}}}") private var {{{paramName}}}: {{>partials/datatype}}? = null
+ {{^-last}},{{/-last}}
+ {{/params}}
+{{/nonBodyParams}}
+) {
+{{#nonBodyParams}}
+ {{#params}}
+ {{^vendorExtensions.x-replacedByBuilderHelper}}
+ /**
+ * @param {{{paramName}}} {{{description}}}
+ */
+ fun {{{paramName}}}({{{paramName}}}: {{>partials/datatype}}) =
+ apply { this.{{{paramName}}} = {{{paramName}}} }
+ {{/vendorExtensions.x-replacedByBuilderHelper}}
+ {{/params}}
+
+ {{#vendorExtensions.x-needsBuilderHelper}}
+ {{{vendorExtensions.x-builderHelpersCode}}}
+ {{/vendorExtensions.x-needsBuilderHelper}}
+{{/nonBodyParams}}
+
+ fun build(): {{classname}}Params {
+ val params = {{classname}}Params(
+ {{#nonBodyParams}}
+ {{#params}}
+ {{{paramName}}} = {{{paramName}}}{{#required}}!!{{/required}}{{^-last}},{{/-last}}
+ {{/params}}
+ {{/nonBodyParams}}
+ )
+
+ return params
+ }
+
+ {{#link}}
+ {{>operations/params/link_builder_method}}
+ {{/link}}
+
+}
+
+fun toBuilder() = Builder(
+{{#nonBodyParams}}
+ {{#params}}
+ {{{paramName}}} = {{{paramName}}}{{^-last}},{{/-last}}
+ {{/params}}
+{{/nonBodyParams}}
+)
diff --git a/gradle-tasks/specs.gradle.kts b/gradle-tasks/specs.gradle.kts
deleted file mode 100644
index 3ef36cfd2..000000000
--- a/gradle-tasks/specs.gradle.kts
+++ /dev/null
@@ -1,24 +0,0 @@
-tasks.register("mergeSpecs") {
- commandLine("npx", "openapi-merge-cli")
- workingDir = File(rootDir, "specs")
-}
-
-tasks.register("transformSpecs") {
- dependsOn("mergeSpecs")
-
- commandLine(
- "npx --yes -p @expediagroup/spec-transformer cli --headers accept,accept-encoding,key --operationIdsToTags --defaultStringType QUOTE_SINGLE specs.yaml -o specs.yaml"
- .split(" ")
- )
- workingDir = File(rootDir, "specs")
-}
-
-tasks.register("prepareSpecs") {
- dependsOn("mergeSpecs", "transformSpecs")
-
- doLast {
- File("$rootDir", "specs/specs.yaml").copyTo(
- File("$rootDir", "generator/src/main/resources/transformedSpecs.yaml"),
- )
- }
-}
diff --git a/integration-tests/build.gradle.kts b/integration-tests/build.gradle.kts
new file mode 100644
index 000000000..3aced1201
--- /dev/null
+++ b/integration-tests/build.gradle.kts
@@ -0,0 +1,20 @@
+group = "com.expediagroup"
+version = "0.0.1-SNAPSHOT"
+
+dependencies {
+ testImplementation(project(":xap-sdk"))
+
+ // Testing
+ testImplementation("com.expediagroup:expediagroup-sdk-transport-okhttp:0.0.5-alpha")
+
+ testImplementation("io.hosuaby:inject-resources-junit-jupiter:1.0.0")
+ testImplementation(platform("org.junit:junit-bom:5.11.4"))
+ testImplementation("org.junit.jupiter:junit-jupiter-api")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
+ testImplementation("org.junit.jupiter:junit-jupiter-params")
+ testImplementation("io.mockk:mockk:1.13.16")
+ testImplementation("com.squareup.okhttp3:mockwebserver:4.12.0")
+ testImplementation("org.apache.commons:commons-lang3:3.17.0")
+ testImplementation("org.apache.logging.log4j:log4j-api:2.24.3")
+ testImplementation("org.apache.logging.log4j:log4j-slf4j2-impl:2.24.3")
+}
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/activity/DetailsIntegrationTests.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/activity/DetailsIntegrationTest.java
similarity index 91%
rename from tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/activity/DetailsIntegrationTests.java
rename to integration-tests/src/test/java/com/expediagroup/sdk/xap/activity/DetailsIntegrationTest.java
index aa766345c..dafb27261 100644
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/activity/DetailsIntegrationTests.java
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/activity/DetailsIntegrationTest.java
@@ -14,15 +14,14 @@
* limitations under the License.
*/
-package com.expediagroup.sdk.xap.integrations.activity;
-
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_ACTIVITY;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.AUTHORIZATION;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_KEY;
-
-import com.expediagroup.sdk.core.model.Response;
-import com.expediagroup.sdk.xap.integrations.common.Constant;
-import com.expediagroup.sdk.xap.integrations.common.XapIntegrationTests;
+package com.expediagroup.sdk.xap.activity;
+
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_ACTIVITY;
+import static com.expediagroup.sdk.xap.common.Constant.AUTHORIZATION;
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_KEY;
+import com.expediagroup.sdk.rest.model.Response;
+import com.expediagroup.sdk.xap.common.Constant;
+import com.expediagroup.sdk.xap.common.XapIntegrationTest;
import com.expediagroup.sdk.xap.models.ActivitiesCancellationPolicy;
import com.expediagroup.sdk.xap.models.ActivitiesLink;
import com.expediagroup.sdk.xap.models.ActivitiesLocation;
@@ -35,7 +34,6 @@
import com.expediagroup.sdk.xap.models.Offer;
import com.expediagroup.sdk.xap.models.Restrictions;
import com.expediagroup.sdk.xap.models.Ticket;
-import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiActivitiesErrorsException;
import com.expediagroup.sdk.xap.operations.GetActivityDetailsOperation;
import com.expediagroup.sdk.xap.operations.GetActivityDetailsOperationParams;
import io.hosuaby.inject.resources.junit.jupiter.GivenTextResource;
@@ -53,7 +51,7 @@
* This class is used to test the integration of the Lodging Listings API.
*/
@TestWithResources
-public class DetailsIntegrationTests extends XapIntegrationTests {
+public class DetailsIntegrationTest extends XapIntegrationTest {
@Test
public void testRequest(
@@ -77,10 +75,13 @@ public void testRequest(
);
xapClient.execute(new GetActivityDetailsOperation(getActivityDetailsOperationParams));
+
try {
RecordedRequest recordedRequest = mockWebServer.takeRequest();
+
// method
Assertions.assertEquals("GET", recordedRequest.getMethod());
+
// headers
Headers headers = recordedRequest.getHeaders();
Assertions.assertEquals(
@@ -90,6 +91,7 @@ public void testRequest(
Assertions.assertEquals(ACCEPT_ACTIVITY, headers.get("Accept"));
Assertions.assertEquals(MOCK_KEY, headers.get("key"));
Assertions.assertEquals(AUTHORIZATION, headers.get("Authorization"));
+
// path and query
String path = recordedRequest.getPath();
Assertions.assertNotNull(path);
@@ -128,20 +130,17 @@ public void testResponse(
xapClient.execute(new GetActivityDetailsOperation(getActivityDetailsOperationParams));
verifyResponse(detailsResponse);
} catch (Exception ex) {
- if (!(ex instanceof ExpediaGroupApiActivitiesErrorsException)) {
Assertions.fail(ex.getMessage());
- }
}
}
private void verifyResponse(Response response) {
Assertions.assertNotNull(response);
- Assertions.assertEquals(200, response.getStatusCode());
- Map> headers = response.getHeaders();
+ com.expediagroup.sdk.core.http.Headers headers = response.getHeaders();
Assertions.assertNotNull(headers);
Assertions.assertEquals(
Constant.PARTNER_TRANSACTION_ID,
- headers.get("partner-transaction-id").get(0)
+ headers.get("partner-transaction-id")
);
verifyActivityDetailsResponse(response.getData());
}
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/activity/ListingsIntegrationTests.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/activity/ListingsIntegrationTest.java
similarity index 91%
rename from tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/activity/ListingsIntegrationTests.java
rename to integration-tests/src/test/java/com/expediagroup/sdk/xap/activity/ListingsIntegrationTest.java
index 1418f5af2..6160ab538 100644
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/activity/ListingsIntegrationTests.java
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/activity/ListingsIntegrationTest.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.expediagroup.sdk.xap.integrations.activity;
+package com.expediagroup.sdk.xap.activity;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_ACTIVITY;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.AUTHORIZATION;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_KEY;
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_ACTIVITY;
+import static com.expediagroup.sdk.xap.common.Constant.AUTHORIZATION;
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_KEY;
-import com.expediagroup.sdk.core.model.Response;
-import com.expediagroup.sdk.xap.integrations.common.Constant;
-import com.expediagroup.sdk.xap.integrations.common.XapIntegrationTests;
+import com.expediagroup.sdk.rest.model.Response;
+import com.expediagroup.sdk.xap.common.Constant;
+import com.expediagroup.sdk.xap.common.XapIntegrationTest;
import com.expediagroup.sdk.xap.models.ActivitiesLink;
import com.expediagroup.sdk.xap.models.ActivitiesLocation;
import com.expediagroup.sdk.xap.models.ActivitiesMedia;
@@ -49,7 +49,7 @@
* This class is used to test the integration of the Lodging Listings API.
*/
@TestWithResources
-public class ListingsIntegrationTests extends XapIntegrationTests {
+public class ListingsIntegrationTest extends XapIntegrationTest {
@Test
public void testRequest(
@GivenTextResource("activities/GetActivityListingsResponse.json") String mockedResponse) {
@@ -102,7 +102,7 @@ public void testRequest(
Assertions
.assertTrue(query.contains("endDate=" + getActivityListingsOperationParams.getEndDate()));
Assertions.assertTrue(query.contains("locale=en_US"));
- Assertions.assertTrue(query.contains("links=WD%2CAD"));
+ Assertions.assertTrue(query.contains("links=WD,AD"));
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
@@ -142,12 +142,11 @@ public void testResponse(
private void verifyResponse(Response response) {
Assertions.assertNotNull(response);
- Assertions.assertEquals(200, response.getStatusCode());
- Map> headers = response.getHeaders();
+ com.expediagroup.sdk.core.http.Headers headers = response.getHeaders();
Assertions.assertNotNull(headers);
Assertions.assertEquals(
Constant.PARTNER_TRANSACTION_ID,
- headers.get("partner-transaction-id").get(0)
+ headers.get("partner-transaction-id")
);
verifyActivityListingsResponse(response.getData());
}
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/common/Constant.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/common/Constant.java
similarity index 96%
rename from tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/common/Constant.java
rename to integration-tests/src/test/java/com/expediagroup/sdk/xap/common/Constant.java
index eb7f5d4a5..0f20c6a28 100644
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/common/Constant.java
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/common/Constant.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.expediagroup.sdk.xap.integrations.common;
+package com.expediagroup.sdk.xap.common;
import java.util.Base64;
import java.util.UUID;
diff --git a/integration-tests/src/test/java/com/expediagroup/sdk/xap/common/XapIntegrationTest.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/common/XapIntegrationTest.java
new file mode 100644
index 000000000..82902787f
--- /dev/null
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/common/XapIntegrationTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.expediagroup.sdk.xap.common;
+
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_KEY;
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_SECRET;
+
+import com.expediagroup.sdk.core.auth.basic.BasicAuthCredentials;
+import com.expediagroup.sdk.core.auth.common.Credentials;
+import com.expediagroup.sdk.core.http.Request;
+import com.expediagroup.sdk.core.http.Response;
+import com.expediagroup.sdk.core.transport.Transport;
+import com.expediagroup.sdk.okhttp.OkHttpTransport;
+import com.expediagroup.sdk.xap.client.XapClient;
+import com.expediagroup.sdk.xap.configuration.XapClientConfiguration;
+import okhttp3.HttpUrl;
+import okhttp3.mockwebserver.MockWebServer;
+import org.jetbrains.annotations.NotNull;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInstance;
+
+/**
+ * Extension for setting up the required components for testing.
+ */
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public abstract class XapIntegrationTest {
+ protected XapClient xapClient;
+ protected MockWebServer mockWebServer;
+
+ @BeforeEach
+ void setup() {
+ mockWebServer = new MockWebServer();
+
+ Credentials credentials = new BasicAuthCredentials(MOCK_KEY, MOCK_SECRET);
+ XapClientConfiguration config = new XapClientConfiguration(credentials, new MockTransport());
+
+ xapClient = new XapClient(config);
+ }
+
+ @AfterEach
+ void tearDown() throws Exception {
+ // Clean everything after each test to ensure clear state
+ if (mockWebServer != null) {
+ mockWebServer.shutdown();
+ mockWebServer = null;
+ }
+ xapClient = null;
+ }
+
+ private class MockTransport implements Transport {
+ private final OkHttpTransport okHttpTransport = new OkHttpTransport();
+
+ @Override
+ public @NotNull Response execute(@NotNull Request request) {
+ HttpUrl original = HttpUrl.get(request.getUrl());
+ HttpUrl mockBase = mockWebServer.url("/");
+
+ assert original != null;
+
+ HttpUrl redirected = original.newBuilder()
+ .scheme(mockBase.scheme())
+ .host(mockBase.host())
+ .port(mockBase.port())
+ .build();
+
+ Request redirectedReq = request.newBuilder()
+ .url(redirected.url())
+ .build();
+
+ return okHttpTransport.execute(redirectedReq);
+ }
+
+ @Override
+ public void dispose() {
+ // no-op
+ }
+ }
+}
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/AvailabilityCalendarsIntegrationTests.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/AvailabilityCalendarsIntegrationTest.java
similarity index 86%
rename from tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/AvailabilityCalendarsIntegrationTests.java
rename to integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/AvailabilityCalendarsIntegrationTest.java
index 86b3b8386..3a46bb2f5 100644
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/AvailabilityCalendarsIntegrationTests.java
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/AvailabilityCalendarsIntegrationTest.java
@@ -14,16 +14,16 @@
* limitations under the License.
*/
-package com.expediagroup.sdk.xap.integrations.lodging;
+package com.expediagroup.sdk.xap.lodging;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_HOTEL;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_LODGING;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.AUTHORIZATION;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_KEY;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.PARTNER_TRANSACTION_ID;
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_HOTEL;
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_LODGING;
+import static com.expediagroup.sdk.xap.common.Constant.AUTHORIZATION;
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_KEY;
+import static com.expediagroup.sdk.xap.common.Constant.PARTNER_TRANSACTION_ID;
-import com.expediagroup.sdk.core.model.Response;
-import com.expediagroup.sdk.xap.integrations.common.XapIntegrationTests;
+import com.expediagroup.sdk.rest.model.Response;
+import com.expediagroup.sdk.xap.common.XapIntegrationTest;
import com.expediagroup.sdk.xap.models.AvailabilityCalendar;
import com.expediagroup.sdk.xap.models.AvailabilityCalendarResponse;
import com.expediagroup.sdk.xap.models.DateRange;
@@ -34,7 +34,6 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import okhttp3.Headers;
import okhttp3.mockwebserver.MockResponse;
@@ -47,7 +46,7 @@
* This class is used to test the integration of the Lodging Availability Calendars API.
*/
@TestWithResources
-public class AvailabilityCalendarsIntegrationTests extends XapIntegrationTests {
+public class AvailabilityCalendarsIntegrationTest extends XapIntegrationTest {
@Test
public void testRequest() {
GetLodgingAvailabilityCalendarsOperationParams availabilityCalendarsOperationParams =
@@ -80,7 +79,7 @@ public void testRequest() {
Assertions.assertNotNull(path);
Assertions.assertTrue(path.startsWith("/lodging/availabilityCalendars"));
String query = path.substring(path.indexOf("?") + 1);
- Assertions.assertTrue(query.contains("propertyIds=123%2C456%2C789"));
+ Assertions.assertTrue(query.contains("propertyIds=123,456,789"));
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
@@ -112,11 +111,9 @@ public void testResponse(
private void verifyResponse(Response response) {
Assertions.assertNotNull(response);
- Assertions.assertEquals(200, response.getStatusCode());
- Map> headers = response.getHeaders();
+ com.expediagroup.sdk.core.http.Headers headers = response.getHeaders();
Assertions.assertNotNull(headers);
- Assertions.assertEquals(PARTNER_TRANSACTION_ID, headers.get("partner-transaction-id")
- .get(0));
+ Assertions.assertEquals(PARTNER_TRANSACTION_ID, headers.get("partner-transaction-id"));
verifyAvailabilityCalendarResponse(response.getData());
}
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/ListingsIntegrationTests.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/ListingsIntegrationTest.java
similarity index 94%
rename from tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/ListingsIntegrationTests.java
rename to integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/ListingsIntegrationTest.java
index a4465edeb..633433d2f 100644
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/ListingsIntegrationTests.java
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/ListingsIntegrationTest.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.expediagroup.sdk.xap.integrations.lodging;
+package com.expediagroup.sdk.xap.lodging;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_HOTEL;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.AUTHORIZATION;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_KEY;
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_HOTEL;
+import static com.expediagroup.sdk.xap.common.Constant.AUTHORIZATION;
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_KEY;
-import com.expediagroup.sdk.core.model.Response;
-import com.expediagroup.sdk.xap.integrations.common.Constant;
-import com.expediagroup.sdk.xap.integrations.common.XapIntegrationTests;
+import com.expediagroup.sdk.rest.model.Response;
+import com.expediagroup.sdk.xap.common.Constant;
+import com.expediagroup.sdk.xap.common.XapIntegrationTest;
import com.expediagroup.sdk.xap.models.AgeClassRestriction;
import com.expediagroup.sdk.xap.models.BedType;
import com.expediagroup.sdk.xap.models.CancellationPolicy;
@@ -68,7 +68,6 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import okhttp3.Headers;
import okhttp3.mockwebserver.MockResponse;
@@ -81,7 +80,7 @@
* This class is used to test the integration of the Lodging Listings API.
*/
@TestWithResources
-public class ListingsIntegrationTests extends XapIntegrationTests {
+public class ListingsIntegrationTest extends XapIntegrationTest {
@Test
public void testRequest() {
@@ -167,11 +166,11 @@ public void testRequest() {
Assertions.assertTrue(path.startsWith("/hotels/listings"));
String query = path.substring(path.indexOf("?") + 1);
// hotel selection
- Assertions.assertTrue(query.contains("ecomHotelIds=123%2C456"));
- Assertions.assertTrue(query.contains("hcomHotelIds=135%2C246"));
+ Assertions.assertTrue(query.contains("ecomHotelIds=123,456"));
+ Assertions.assertTrue(query.contains("hcomHotelIds=135,246"));
Assertions.assertTrue(query.contains("geoLocation=47.6062%2C-122.3321"));
Assertions.assertTrue(query.contains("regionIds=1001"));
- Assertions.assertTrue(query.contains("locationKeyword=Space+Needle%2C+Seattle"));
+ Assertions.assertTrue(query.contains("locationKeyword=Space%20Needle%2C%20Seattle"));
Assertions.assertTrue(query.contains("radius=10"));
Assertions.assertTrue(query.contains("unit=km"));
// search
@@ -183,16 +182,16 @@ public void testRequest() {
Assertions.assertTrue(query.contains("currency=USD"));
Assertions.assertTrue(query.contains("room1.adults=1"));
Assertions.assertTrue(query.contains("room2.adults=2"));
- Assertions.assertTrue(query.contains("room2.childAges=10%2C12"));
+ Assertions.assertTrue(query.contains("room2.childAges=10,12"));
Assertions.assertTrue(query.contains("room3.adults=1"));
Assertions.assertTrue(query.contains("room3.childAges=5"));
Assertions.assertTrue(query.contains("room4.adults=6"));
Assertions.assertTrue(query.contains("room5.adults=2"));
- Assertions.assertTrue(query.contains("room5.childAges=3%2C4"));
+ Assertions.assertTrue(query.contains("room5.childAges=3,4"));
Assertions.assertTrue(query.contains("room6.adults=3"));
- Assertions.assertTrue(query.contains("room6.childAges=1%2C2%2C3%2C4%2C5"));
+ Assertions.assertTrue(query.contains("room6.childAges=1,2,3,4,5"));
Assertions.assertTrue(query.contains("room7.adults=2"));
- Assertions.assertTrue(query.contains("room7.childAges=1%2C2%2C3%2C4"));
+ Assertions.assertTrue(query.contains("room7.childAges=1,2,3,4"));
Assertions.assertTrue(query.contains("room8.adults=1"));
Assertions.assertFalse(query.contains("room9"));
Assertions.assertTrue(query.contains("source=browser"));
@@ -200,7 +199,7 @@ public void testRequest() {
// content detail
Assertions.assertTrue(query.contains("contentDetails=high"));
Assertions.assertTrue(query.contains("allRoomTypes=true"));
- Assertions.assertTrue(query.contains("links=WEB%2CAPI"));
+ Assertions.assertTrue(query.contains("links=WEB,API"));
// filtering
Assertions.assertTrue(query.contains("minStarRating=1.5"));
Assertions.assertTrue(query.contains("maxStarRating=5.0"));
@@ -211,9 +210,9 @@ public void testRequest() {
Assertions.assertTrue(query.contains("rateType=all"));
Assertions.assertTrue(query.contains("imageSizes=s"));
Assertions.assertTrue(query.contains("thumbnailImageSize=t"));
- Assertions.assertTrue(query.contains("includedPropertyTypeIds=1%2C2"));
- Assertions.assertTrue(query.contains("excludedPropertyTypeIds=3%2C4"));
- Assertions.assertTrue(query.contains("includedInventorySourceIds=5%2C6"));
+ Assertions.assertTrue(query.contains("includedPropertyTypeIds=1,2"));
+ Assertions.assertTrue(query.contains("excludedPropertyTypeIds=3,4"));
+ Assertions.assertTrue(query.contains("includedInventorySourceIds=5,6"));
Assertions.assertTrue(query.contains("freeCancellation=true"));
Assertions.assertTrue(query.contains("groupedAmenities=true"));
Assertions.assertTrue(query.contains("blockFullDepositRateplan=true"));
@@ -258,11 +257,9 @@ public void testResponse(
private void verifyResponse(Response response) {
Assertions.assertNotNull(response);
- Assertions.assertEquals(200, response.getStatusCode());
- Map> headers = response.getHeaders();
+ com.expediagroup.sdk.core.http.Headers headers = response.getHeaders();
Assertions.assertNotNull(headers);
- Assertions.assertEquals(Constant.PARTNER_TRANSACTION_ID, headers.get("partner-transaction-id")
- .get(0));
+ Assertions.assertEquals(Constant.PARTNER_TRANSACTION_ID, headers.get("partner-transaction-id"));
verifyHotelListingsResponse(response.getData());
}
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/QuotesIntegrationTests.java b/integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/QuotesIntegrationTest.java
similarity index 87%
rename from tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/QuotesIntegrationTests.java
rename to integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/QuotesIntegrationTest.java
index 5dbaea3c0..bc08d8ac8 100644
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/lodging/QuotesIntegrationTests.java
+++ b/integration-tests/src/test/java/com/expediagroup/sdk/xap/lodging/QuotesIntegrationTest.java
@@ -14,17 +14,17 @@
* limitations under the License.
*/
-package com.expediagroup.sdk.xap.integrations.lodging;
+package com.expediagroup.sdk.xap.lodging;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_HOTEL;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.ACCEPT_LODGING;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.AUTHORIZATION;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_KEY;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.PARTNER_TRANSACTION_ID;
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_HOTEL;
+import static com.expediagroup.sdk.xap.common.Constant.ACCEPT_LODGING;
+import static com.expediagroup.sdk.xap.common.Constant.AUTHORIZATION;
+import static com.expediagroup.sdk.xap.common.Constant.MOCK_KEY;
+import static com.expediagroup.sdk.xap.common.Constant.PARTNER_TRANSACTION_ID;
-import com.expediagroup.sdk.core.model.Response;
-import com.expediagroup.sdk.xap.integrations.common.Constant;
-import com.expediagroup.sdk.xap.integrations.common.XapIntegrationTests;
+import com.expediagroup.sdk.rest.model.Response;
+import com.expediagroup.sdk.xap.common.Constant;
+import com.expediagroup.sdk.xap.common.XapIntegrationTest;
import com.expediagroup.sdk.xap.models.LodgingCancellationPolicy;
import com.expediagroup.sdk.xap.models.LodgingQuotesResponse;
import com.expediagroup.sdk.xap.models.LodgingRatePlan;
@@ -42,7 +42,6 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
import okhttp3.Headers;
@@ -55,7 +54,7 @@
* This class is used to test the integration of the Lodging Quotes API.
*/
@TestWithResources
-public class QuotesIntegrationTests extends XapIntegrationTests {
+public class QuotesIntegrationTest extends XapIntegrationTest {
@Test
public void testRequest() {
ArrayList rooms = new ArrayList<>();
@@ -103,7 +102,7 @@ public void testRequest() {
Assertions.assertNotNull(path);
Assertions.assertTrue(path.startsWith("/lodging/quotes"));
String query = path.substring(path.indexOf("?") + 1);
- Assertions.assertTrue(query.contains("propertyIds=123%2C456%2C789"));
+ Assertions.assertTrue(query.contains("propertyIds=123,456,789"));
Assertions.assertTrue(query.contains(
"checkIn=" + getLodgingQuotesOperationParams.getCheckIn()));
Assertions.assertTrue(query.contains(
@@ -112,16 +111,16 @@ public void testRequest() {
Assertions.assertTrue(query.contains("links=WEB"));
Assertions.assertTrue(query.contains("room1.adults=1"));
Assertions.assertTrue(query.contains("room2.adults=2"));
- Assertions.assertTrue(query.contains("room2.childAges=10%2C12"));
+ Assertions.assertTrue(query.contains("room2.childAges=10,12"));
Assertions.assertTrue(query.contains("room3.adults=1"));
Assertions.assertTrue(query.contains("room3.childAges=5"));
Assertions.assertTrue(query.contains("room4.adults=6"));
Assertions.assertTrue(query.contains("room5.adults=2"));
- Assertions.assertTrue(query.contains("room5.childAges=3%2C4"));
+ Assertions.assertTrue(query.contains("room5.childAges=3,4"));
Assertions.assertTrue(query.contains("room6.adults=3"));
- Assertions.assertTrue(query.contains("room6.childAges=1%2C2%2C3%2C4%2C5"));
+ Assertions.assertTrue(query.contains("room6.childAges=1,2,3,4,5"));
Assertions.assertTrue(query.contains("room7.adults=2"));
- Assertions.assertTrue(query.contains("room7.childAges=1%2C2%2C3%2C4"));
+ Assertions.assertTrue(query.contains("room7.childAges=1,2,3,4"));
Assertions.assertTrue(query.contains("room8.adults=1"));
Assertions.assertFalse(query.contains("room9"));
Assertions.assertTrue(query.contains("travelWithPets=true"));
@@ -157,11 +156,9 @@ public void testResponse(
private void verifyResponse(Response response) {
Assertions.assertNotNull(response);
- Assertions.assertEquals(200, response.getStatusCode());
- Map> headers = response.getHeaders();
+ com.expediagroup.sdk.core.http.Headers headers = response.getHeaders();
Assertions.assertNotNull(headers);
- Assertions.assertEquals(Constant.PARTNER_TRANSACTION_ID, headers.get("partner-transaction-id")
- .get(0));
+ Assertions.assertEquals(Constant.PARTNER_TRANSACTION_ID, headers.get("partner-transaction-id"));
verifyLodgingQuotesResponse(response.getData());
}
diff --git a/tests/integration/src/test/resources/activities/GetActivityDetailsResponse.json b/integration-tests/src/test/resources/activities/GetActivityDetailsResponse.json
similarity index 100%
rename from tests/integration/src/test/resources/activities/GetActivityDetailsResponse.json
rename to integration-tests/src/test/resources/activities/GetActivityDetailsResponse.json
diff --git a/tests/integration/src/test/resources/activities/GetActivityListingsResponse.json b/integration-tests/src/test/resources/activities/GetActivityListingsResponse.json
similarity index 100%
rename from tests/integration/src/test/resources/activities/GetActivityListingsResponse.json
rename to integration-tests/src/test/resources/activities/GetActivityListingsResponse.json
diff --git a/tests/integration/src/test/resources/lodging/GetLodgingAvailabilityCalendarsResponse.json b/integration-tests/src/test/resources/lodging/GetLodgingAvailabilityCalendarsResponse.json
similarity index 100%
rename from tests/integration/src/test/resources/lodging/GetLodgingAvailabilityCalendarsResponse.json
rename to integration-tests/src/test/resources/lodging/GetLodgingAvailabilityCalendarsResponse.json
diff --git a/tests/integration/src/test/resources/lodging/GetLodgingListingsResponse.json b/integration-tests/src/test/resources/lodging/GetLodgingListingsResponse.json
similarity index 100%
rename from tests/integration/src/test/resources/lodging/GetLodgingListingsResponse.json
rename to integration-tests/src/test/resources/lodging/GetLodgingListingsResponse.json
diff --git a/tests/integration/src/test/resources/lodging/GetLodgingQuotesResponse.json b/integration-tests/src/test/resources/lodging/GetLodgingQuotesResponse.json
similarity index 100%
rename from tests/integration/src/test/resources/lodging/GetLodgingQuotesResponse.json
rename to integration-tests/src/test/resources/lodging/GetLodgingQuotesResponse.json
diff --git a/integration-tests/src/test/resources/log4j2.xml b/integration-tests/src/test/resources/log4j2.xml
new file mode 100644
index 000000000..950475ab9
--- /dev/null
+++ b/integration-tests/src/test/resources/log4j2.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 8f2875932..ddd9d8240 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -17,3 +17,4 @@ rootProject.name = "xap-java-sdk"
include("xap-sdk")
include("generator")
include("examples")
+include("integration-tests")
diff --git a/specs/specs.yaml b/specs/specs.yaml
new file mode 100644
index 000000000..5aa4f7437
--- /dev/null
+++ b/specs/specs.yaml
@@ -0,0 +1,15423 @@
+openapi: 3.0.3
+info:
+ title: EWSHotel API
+ description: >
+ The XAP Lodging Search APIs can be used by partners both booking via an
+ Expedia website, or by partners that
+
+ will be booking via the XAP APIs. Each API also provides pre-configured
+ links to the Expedia website,
+
+ the XAP Booking API, or both.
+ version: v3
+ x-eg-lifecycle: LIVE
+ x-eg-tags:
+ - Partner
+ - EWS
+ - XAP
+ - EWSHotel
+ - Hotel
+ - Lodging
+ - LodgingListings
+ - LodgingDetails
+ - LodgingRateCalendar
+servers:
+ - url: 'https://apim.expedia.com'
+ description: Production Server
+security:
+ - BasicAuth: []
+tags:
+ - name: Lodging Listing
+ - name: Lodging Details
+ - name: Lodging Rate Calendar
+ - name: Lodging Quotes
+ - name: Lodging Availability Calendars
+ - name: Cars Listings
+ - name: Cars Detail
+ - name: download-url
+ - name: Activities List
+ - name: Activities Details
+ - name: Flight FareRules
+ - name: Flight BaggageFee
+ - name: Flight SeatMap
+ - name: Flight Links
+ - name: Flight Listings
+ - name: Flight Details
+ - name: Flight FlexSearch
+ - name: Flight FareCalendar
+paths:
+ '/hotels/details/{offerToken}':
+ get:
+ tags:
+ - Lodging Details
+ summary: Get Extended information with a single property offer
+ description: >-
+ Extended information about the rate, charges, fees, and financial terms
+ associated with booking a single lodging rate plan offer.
+ operationId: get-lodging-details
+ parameters:
+ - name: Key
+ in: header
+ description: >
+ The partner API key is a case-sensitive, alphanumeric string that
+ looks something like this:
+
+
+ **X99X9X9-99XX-9XX9-X999-99XX99X9X999X**
+
+
+ The API Key is assigned and configured as part of the API
+ on-boarding process.
+
+ It will be sent to the partner by their Expedia Account Manager or
+ representative.
+ required: true
+ schema:
+ type: string
+ - name: Partner-Transaction-Id
+ in: header
+ description: >
+ The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner's choosing.
+ required: true
+ schema:
+ type: string
+ example: Partner123
+ - name: offerToken
+ in: path
+ description: >
+ A Hotel Natural Key from the Lodging Search API -> Hotels ->
+ RoomTypes -> OfferId. It is a concatenated
+
+ string of multiple values that defines a hotel offer.
+ required: true
+ schema:
+ type: string
+ - name: price
+ in: query
+ description: >
+ The total price of the selected property.
+
+
+ This value will be used to determine if there is a price change
+ between the details and booking request.
+
+
+ The `price` element will be automatically included in the ApiDetails
+ HATEOAS link which is returned
+
+ along with the Lodging Details API response.
+ schema:
+ type: string
+ - name: currency
+ in: query
+ description: >
+ Value should be a standard ISO 3 letter currency code.
+
+
+ The currency code that is associated to the `TotalPrice` element for
+ the selected property's rate plan from
+
+ the Lodging Listing API response.
+
+
+ The `currency` element will be automatically included in the
+ ApiDetails HATEOAS link which is returned
+
+ along with the Lodging Details response.
+ schema:
+ type: string
+ - name: locale
+ in: query
+ description: >
+ `locale` is composed of language identifier and region identifier,
+ connected by "_" that specifies the
+
+ language in which the response will be returned.
+
+
+ The `locale` value used in the Lodging Details API query should
+ match the `locale` value that was used in
+
+ the Lodging Search API query.
+ schema:
+ type: string
+ - name: imageSizes
+ in: query
+ description: >
+ Indicate what size of image will be returned.
+
+
+ The available image sizes are:
+
+ - t : Thumbnail
+
+ - s : Small
+
+ - b : Big
+
+ - y : 500x500v
+
+ - z : 1000x1000v
+
+
+ Resolution from smallest to largest is t < s < b < y < z.
+
+
+ If no `imageSizes` is specified, the t size images will be returned.
+
+
+ If an image is missing in one size, we will try to fall back to the
+ same image with lower resolution.
+
+
+ (If image "_z" is not available, we will try to return image "_y",
+ and if it is also unavailable, we will return image "_b", and so
+ on.)
+
+
+ Only one image size is allowed.
+ schema:
+ type: string
+ enum:
+ - t
+ - s
+ - b
+ - 'y'
+ - z
+ default: t
+ - name: groupedAmenities
+ in: query
+ description: >
+ Specifies whether to return the grouped amenities. If
+ `groupedAmenities` is true, `DescriptiveAmenities`
+
+ node will be returned in response, otherwise `Amenities` node will
+ be returned.
+ schema:
+ type: boolean
+ responses:
+ '200':
+ description: Normal Response
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/HotelDetailsResponse'
+ '400':
+ description: User Fault
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: INVALID_NATURAL_KEY
+ Description: Invalid natural key. Malformed hotel natural key detected.
+ TransactionId: e883f530-9776-4011-a14d-3cc089feb6cf
+ '401':
+ description: Invalid authentication credentials.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Unauthorized
+ '403':
+ description: You cannot consume this service.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: You cannot consume this service
+ '429':
+ description: API rate limit exceeded.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: API rate limit exceeded.
+ '500':
+ description: Service Error
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: APPLICATION_ERROR
+ Description: Application error.
+ TransactionId: 1f497fa0-a996-4796-b97e-3ad269bf7624
+ '503':
+ description: Service unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Name resolution failed.
+ '504':
+ description: API time out.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: The upstream server is timing out
+ security:
+ - Authorization: []
+ /hotels/listings:
+ get:
+ tags:
+ - Lodging Listing
+ summary: Search lodging inventory
+ description: >
+ Search Expedia lodging inventory by Location Keyword, Region ID,
+ Lat/Long, or Hotel ID(s) and return
+
+ up to 1,000 offers in response.
+
+
+ Provides deeplink to Expedia site to book, or rate plan info to enable
+ API booking.
+ operationId: get-lodging-listings
+ parameters:
+ - name: Key
+ in: header
+ description: >
+ The partner API key is a case-sensitive, alphanumeric string that
+ looks something like this:
+
+
+ **X99X9X9-99XX-9XX9-X999-99XX99X9X999X**
+
+
+ The API Key is assigned and configured as part of the API
+ on-boarding process.
+
+ It will be sent to the partner by their Expedia Account Manager or
+ representative.
+ required: true
+ schema:
+ type: string
+ - name: Partner-Transaction-Id
+ in: header
+ description: >
+ The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner's choosing.
+ required: true
+ schema:
+ type: string
+ example: Partner123
+ - name: ecomHotelIds
+ in: query
+ description: >-
+ Comma-separated list of Expedia hotel IDs. There can be no spaces
+ between parameters.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ example:
+ - 28082
+ - 11133
+ - name: hcomHotelIds
+ in: query
+ description: >-
+ Comma-separated list of Hotels.com hotel IDs. There can be no spaces
+ between parameters.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: geoLocation
+ in: query
+ description: >
+ The latitude and longitude values identifying the center point of a
+ search radius (circle).
+
+
+ North latitude will be represented by a positive value. South
+ latitude by a negative value.
+
+
+ East longitude will be represented by a positive value. West
+ longitude by a negative value.
+
+
+ The latitude and longitude values are joined together with a comma
+ (,) character.
+
+ There can be no spaces between parameters.
+
+
+ This parameter should be used in combination with the radius and
+ unit parameters below.
+ schema:
+ type: string
+ - name: radius
+ in: query
+ description: >
+ The size of the search radius around a specified point when
+ searching by
+
+ `geoLocation`, `locationKeyword`, or `regionids`.
+
+
+ `radius` is optional and the default value is 25 km for
+ `geoLocation` and `locationKeyword`
+
+ if not specified. `radius` must be less than 200 km or 124 mi.
+
+
+ This parameter should be used in combination with the `unit` and
+ `geoLocation`, `locationKeyword`,
+
+ or `regionids` parameters."
+ schema:
+ type: integer
+ format: int64
+ default: 25
+ - name: unit
+ in: query
+ description: >
+ The unit of measure for searches performed via `geoLocation`,
+ `locationKeyword`, or `regionids`.
+
+
+ Valid units are `km` and `mi`.
+
+
+ This parameter should be used in combination with the `radius` and
+ `geoLocation`, `locationKeyword`,
+
+ or `regionids`.
+ schema:
+ type: string
+ default: km
+ enum:
+ - km
+ - mi
+ - name: locationKeyword
+ in: query
+ description: >
+ A keyword search for a location. The keyword can be a city, address,
+ airport or a landmark.
+
+
+ This parameter should be used in combination with the `radius` and
+ `unit` parameters above to define
+
+ a circle around the landmark.
+
+
+ The default radius value is 25 if not specified.
+
+
+ Combined search is not supported, if more than one search method is
+ included in the request, an error
+
+ will be returned.
+ schema:
+ type: string
+ - name: regionIds
+ in: query
+ description: >
+ Comma-separated list of Expedia Region IDs. There can be no spaces
+ between parameters.
+
+ Search returns set of all hotels in the combined regions.
+
+
+ You may search using a string of 1 - 10 Region ID's.
+
+ More than 10 Region ID's are not supported and will generate and
+ error.
+
+
+ You can get the complete list of Expedia Region IDs from
+
+ [Static Data Platform ALL_REGIONS
+ file](https://developers.expediagroup.com/xap/products/xap/static-data-platform/download-url-api/download-url-api-v1).
+
+
+ This parameter could be used in combination with the `radius` and
+ `unit` parameters above to define
+
+ a circle around the `regionIds`. The default radius value is 0 if
+ not specified.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: checkIn
+ in: query
+ description: >
+ Check-in date for hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the `checkOut`
+ parameter.
+
+
+ If `checkIn` and `checkOut` are not included, a dateless search will
+ be conducted which returns
+
+ a `Featured Offer` for each of the hotels found.
+
+
+ If one of `checkIn` and `checkOut` is not included, an error will be
+ returned.
+
+
+ The maximum advanced search window is 500 days in the future, and
+ the maximum length of stay is 28.
+ schema:
+ type: string
+ format: date
+ example: '2023-09-12'
+ - name: checkOut
+ in: query
+ description: >
+ Checkout date for hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the `checkIn`
+ parameter.
+
+
+ If `checkIn` and `checkOut` are not included, a dateless search will
+ be conducted which returns
+
+ a `Featured Offer` for each of the hotels found.
+
+
+ If one of `checkIn` and `checkOut` is not included, an error will be
+ returned.
+
+
+ The maximum advanced search window is 500 days in the future, and
+ the maximum length of stay is 28.
+ schema:
+ type: string
+ format: date
+ example: '2023-09-14'
+ - name: locale
+ in: query
+ description: >
+ `locale` is composed of language identifier and region identifier,
+ connected by "_" that specifies
+
+ the language in which the response will be returned.
+
+
+ You can find a link to the complete list of `locales` along with the
+ Point of Sale List in [Supported Points of
+ Sale](https://developers.expediagroup.com/xap/products/xap/lodging/references/supported-points-of-sale).
+ Note that even though the Listings API supports localization for all
+ `locales` listed in the list, all `locales` are not valid for all
+ Points of Sale.
+
+
+ For example, Ecom US POS supports `en_US`, `es_MX` and `zh_CN`. For
+ Ecom US POS, the Listings API will respond with content in Spanish
+ for requests with either `locale=es_MX` or `es_US`. However, only
+ the deeplinks for `locale=es_MX` should work properly and switch the
+ website to Spanish, while the ones for locale=es_US will be fallen
+ back to English.
+
+
+ If not specified in the query, the native language for that POS will
+ be returned.
+
+ And if more than one language is supported, the response will be
+ returned in the first language
+
+ depending on the language setting of the POS.
+ schema:
+ type: string
+ example: en_US
+ - name: currency
+ in: query
+ description: Value should be a standard ISO 3 letter currency code.
+ schema:
+ type: string
+ example: USD
+ - name: source
+ in: query
+ description: Indicate the source where the request is coming from.
+ schema:
+ type: string
+ enum:
+ - browser
+ - mobileapp
+ default: browser
+ - name: travelWithPets
+ in: query
+ description: >
+ Indicates if the search should include pet-friendly properties.
+
+
+ If set to "True" only properties that allow pets are returned. Pet
+ fees, if available, are included in TaxesAndFees.
+
+
+ The parameter is only applicable to the Vrbo brand.
+ schema:
+ type: boolean
+ default: false
+ - name: contentDetails
+ in: query
+ description: >
+ This parameter is optional and can be specified as the following
+ values.
+
+ - lowest
+
+ - low (default)
+
+ - medium
+
+ - high
+
+
+ ### *lowest*
+
+ Returns the absolute minimum response for up to 1,000 hotels:
+
+ - Count(Count of hotels that are actually returned)
+
+ - TotalHotelCount(Count of hotels that are requested)
+
+ - TransactionId
+
+ - StayDates
+
+ - LengthOfStay
+
+ - NumberOfRooms
+
+ - Occupants
+
+ - ***Hotels***
+ - Id
+ - Status
+ - Links
+ - ***RoomTypes***
+ - RoomKey [Deprecated]
+ - OfferId
+ - RatePlanType
+ - ***RatePlans***
+ - RoomTypeId
+ - RatePlanId
+ - RateRuleId
+ - InventorySourceId
+ - RemainingCount
+ - Price
+ - MemberOnlyDeal
+ - Promotions
+ - PaymentMethod
+ - FullDepositUponBooking
+ - PaymentSchedule
+ - CancellationPolicy
+ - Price
+ - BaseRate
+ - TaxesAndFees
+ - TotalPrice
+ - TotalStrikeOutPrice
+ - AvgNightlyRate
+ - AvgNightlyStrikeOutRate
+ - AvgNightlyRateWithFees
+ - AvgNightlyStrikeOutRateWithFees
+ - HotelMandatoryFees
+ - TotalPriceWithHotelFees
+ - NightlyRates
+ - TaxesAndFeesDetails
+ - RefundableDamageDeposit
+
+ This minimal response is the best for partners that store static
+ hotel location data locally,
+
+ and who would like to have the smallest and fastest API response.
+
+
+ ### *low*
+
+ Returns basic hotel information in response for up to 1,000 hotels.
+
+
+ Includes all elements returned when `contentDetails=lowest` plus:
+
+ - ***Hotels***
+ - Name
+ - PropertyType
+ - PropertyDetails
+ - LocalCurrencyCode
+ - Location
+ - Distance
+ - Description(may not be localized)
+ - ChainAndBrandInfo
+ - ThumbnailUrl
+ - StarRating
+ - GuestRating
+ - GuestReviewCount
+ - PetFriendly
+ - LgbtqiaFriendly
+ - ImportantNotices
+ - ***RoomTypes***
+ - Description
+ - ***RatePlans***
+ - InventorySourceCode
+ - PaymentTime
+ - ReserveWithDeposit
+ - FreeInternet
+ - FreeWiFi
+ - FreeParking
+ - FreeBreakfast
+
+ ### *medium*
+
+ Returns more complete hotel information in response for up to 200
+ hotels.
+
+
+ Includes all elements returned when `contentDetails=low` plus:
+
+ - ***Hotels***
+ - HotelAmenities
+ - RoomAmenities
+ - ***RoomTypes***
+ - ***RatePlans***
+ - FreeInternetDetails
+ - FreeBreakfastDetails
+ - Amenities
+ - Amenities
+
+ **Note**: Setting the `contentDetails` to `medium` will
+ automatically limit your response size to 200 hotels.
+
+
+ ### *high*
+
+ Returns extended hotel information in response for up to 5 hotels.
+
+
+ Includes all elements returned when `contentDetails=medium` plus:
+
+ - ***Hotels***
+ - RenovationsAndClosures
+ - Policies
+ - OptionalExtras
+ - Media
+ - Accessibility
+ - ***RoomTypes***
+ - SmokingOption
+ - BedTypeOptions
+ - RoomOccupancyPolicy
+ - Media
+
+ **Note**: Setting the `contentDetails` to `high` will automatically
+ limit your response size to 5 hotels.
+ schema:
+ type: string
+ enum:
+ - lowest
+ - low
+ - medium
+ - high
+ default: low
+ - name: allRoomTypes
+ in: query
+ description: >
+ Returns all available rate plans for the selected hotels.
+
+
+ This parameter requires that a `checkIn` date and `checkOut` date be
+ supplied, as the API cannot return additional room rates on a
+ dateless search.
+
+
+ Including `allRoomTypes=true` in your query will automatically limit
+ your response size to no more than 200 hotels.
+
+
+ Including `allRoomTypes=true` and `contentDetails=high` will limit
+ your response size to no more than 5 hotels.
+ schema:
+ type: boolean
+ default: false
+ - name: links
+ in: query
+ description: >
+
+ Comma-separated list to specify the types of deep links.
+
+ - WD (link to Web Details site)
+
+ - WS (link to Web Search Result page)
+
+ - AD (link for Details API)
+
+ - RC (link for RateCalendar API)
+
+ - WEB (include all website links)
+
+ - API (links for Details and RateCalendar API)
+
+
+ There are two level of links returned in the API response:
+ Property-level deeplinks and room-level deeplinks.
+
+
+ When requesting API deeplinks you will receive both a RateCalendar
+ API link at the property level,
+
+ and Details API links at the room level, since the Lodging Details
+ API only displays information
+
+ on rate plan offers.
+
+
+ When requesting AD deeplinks, you will only receive Details
+ API links at the room level.
+
+ `Links` node in property-level will be omitted.
+
+
+ If you are looking for more complete details on a single property
+ via the API, you should do another search
+
+ in the Lodging API for the single Hotel ID, with
+ `contentDetails=high` to get all details back in return
+
+ (note that you can only get back a maximum of 5 hotels when
+ `contentDetails` is set to `high`).
+
+
+ **NOTE**: dateless searches will not return Details API links, since
+ the Lodging Details API will only
+
+ return details on a specific room offer for specific dates.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - WD
+ - WS
+ - AD
+ - RC
+ - WEB
+ - API
+ - name: minStarRating
+ in: query
+ description: The minimum star rating for hotels returned in the response.
+ schema:
+ type: string
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ - name: maxStarRating
+ in: query
+ description: The maximum star rating for hotels returned in the response.
+ schema:
+ type: string
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ - name: limit
+ in: query
+ description: >
+ The maximum number of hotels returned in the response. Must be an
+ integer greater than 0.
+
+
+ If the value is greater than 1000, only the first 1000 hotels are
+ returned.
+
+
+ Settings on `contentDetails` and `allRoomTypes` parameters may cause
+ this value to be overridden
+
+ and a lower number of hotels to be returned.
+
+
+ The `limit` parameter is intended to be used to control the response
+ size, but partners should be careful
+
+ about combining it with other filter parameters, as each parameter
+ that you add will shrink the response,
+
+ even to the point where you may even get a "no hotel found" error if
+ none of the hotels in the base response
+
+ meet the combined filter requirements.
+
+
+ Filters are cumulative in effect, and results must meet all filter
+ requirements to be displayed.
+ schema:
+ type: integer
+ format: int64
+ - name: queryText
+ in: query
+ description: >
+ Query text is used for a full text search of hotel data.
+
+
+ Text search based on hotel name, description, address, promotion
+ description, amenities description.
+ schema:
+ type: string
+ - name: availOnly
+ in: query
+ description: >
+ Specifies whether to return only available hotels in the search
+ results.
+
+
+ If the value of this parameter is true, the search results will only
+ return hotels that have availability
+
+ during the requested dates.
+
+
+ If there are no hotels with availability in your search then an
+ empty record set will be returned.
+
+
+ This parameter is ignored for dateless searches.
+ schema:
+ type: boolean
+ - name: smokingPreference
+ in: query
+ description: Specifies smoking preference.
+ schema:
+ type: string
+ enum:
+ - smoking
+ - nonsmoking
+ - both
+ - name: rateType
+ in: query
+ description: >-
+ Indicate which type of `paymentMethod` for each room will be
+ returned.
+ schema:
+ type: string
+ enum:
+ - payonline
+ - payhotel
+ - all
+ - name: imageSizes
+ in: query
+ description: >
+ Indicates what size images will be displayed for `hotelPhotos` and
+ `roomPhotos` are returned when
+
+ `contentDetails=high`.
+
+
+ The available image sizes are:
+
+ - t : Thumbnail
+
+ - s : Small
+
+ - b : Big
+
+ - y : 500x500v
+
+ - z : 1000x1000v
+
+
+ Resolution from smallest to largest is t < s < b < y < z.
+
+
+ If no `imageSizes` is specified, the t size images will be returned.
+
+
+ If an image is missing in one size, we will try to fall back to the
+ same image with lower resolution.
+
+
+ (If image "_z" is not available, we will try to return image "_y",
+ and if it is also unavailable, we will return image "_b", and so
+ on.)
+
+
+ Only one image size is allowed.
+ schema:
+ type: string
+ enum:
+ - t
+ - s
+ - b
+ - 'y'
+ - z
+ - name: thumbnailImageSize
+ in: query
+ description: >
+ Indicate what size of image will be used for the single `thumbnail`
+ image that is returned when
+
+ `contentDetails` is set to `low`, `medium` or `high`.
+
+
+ The available thumbnail image sizes are:
+
+ - t : Thumbnail
+
+ - s : Small
+
+ - b : Big
+
+ - y : 500x500v
+
+ - z : 1000x1000v
+
+
+ Resolution from smallest to largest is t < s < b < y < z.
+
+
+ If no `thumbnailImageSize` is specified, the t size images will be
+ returned.
+
+
+ if no thumbnail image found, it would not return thumbnail image.
+
+
+ Only one thumbnail image size is allowed.
+ schema:
+ type: string
+ enum:
+ - t
+ - s
+ - b
+ - 'y'
+ - z
+ - name: includedPropertyTypeIds
+ in: query
+ description: >
+ Only return hotels where the `PropertyType` ID is one of the IDs in
+ the `includedPropertyTypeIds` field.
+
+
+ If the API query includes the parameter `contentDetail=lowest` the
+ `PropertyType` parameter will not
+
+ be returned in the response. Even in this case, the filtering is
+ still being applied, even though there is
+
+ no `PropertyType` parameter in the response with which to validate.
+
+
+ `includedPropertyTypeIds` and `excludedPropertyTypeIds` fields are
+ mutually exclusive - which means that
+
+ each query may contain **one** of the parameters, or **neither** of
+ the parameters, but the query may not
+
+ contain **both** of the parameters.
+
+
+ A complete list of supported Expedia Property Types can be found in
+ [Lodging Property
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/property-types).
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: excludedPropertyTypeIds
+ in: query
+ description: >
+ Return all hotels **except** those whose `PropertyType` ID is in the
+ `excludedPropertyTypeIds` field.
+
+
+ If the API query includes the parameter `contentDetail=lowest` the
+ `PropertyType` parameter will not
+
+ be returned in the response. Even in this case, the filtering is
+ still being applied, even though there is
+
+ no `PropertyType` parameter in the response with which to validate.
+
+
+ `includedPropertyTypeIds` and `excludedPropertyTypeIds` fields are
+ mutually exclusive - which means that
+
+ each query may contain **one** of the parameters, or **neither** of
+ the parameters, but the query may not
+
+ contain **both** of the parameters.
+
+
+ A complete list of supported Expedia Property Types can be found in
+ [Lodging Property
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/property-types).
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: includedInventorySourceIds
+ in: query
+ description: >
+ Querying with no `includedInventorySourceIds` parameter will return
+ listings from all available inventory
+
+ sources.
+
+
+ Query with the `includedInventorySourceIds` parameter included will
+ only return listings from the requested
+
+ inventory sources. All others will be left out.
+
+
+ `includedInventorySourceId=24` will return only Expedia lodging
+ inventory.
+
+
+ `includedInventorySourceId=83` will return only Vrbo lodging
+ inventory.
+
+
+ `includedInventorySourceId=24,83` will return both Expedia and Vrbo
+ lodging inventory.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: freeCancellation
+ in: query
+ description: >
+ Specifies whether to return only free cancelable room rates in the
+ search results.
+
+
+ If the value of this parameter is true, the search results will only
+ return hotels that have free cancelable room rates during the
+ requested dates.
+
+
+ If there are no hotels with free cancelable room rates in your
+ search then an empty record set will be returned.
+
+
+ Default value is false, if query without this parameter or the value
+ of this parameter is false, all available room rates will be
+ returned.
+
+
+ This parameter is ignored for dateless searches.
+ schema:
+ type: boolean
+ - name: groupedAmenities
+ in: query
+ description: >
+ Specifies whether to return the grouped amenities. If
+ `groupedAmenities` is true, `DescriptiveAmenities`
+
+ node will be returned in response, otherwise `Amenities` node will
+ be returned.
+ schema:
+ type: boolean
+ - name: blockFullDepositRateplan
+ in: query
+ description: >
+ Specifies whether to return `rateplan` with `FullDepositUponBooking`
+ as true.
+
+
+ If `blockFullDepositRateplans` is true, the search results will not
+ return `rateplan` with `FullDepositUponBooking` as true.
+
+
+ The default value is false, if query without this parameter or the
+ value of this parameter is false, all available rateplan will be
+ returned.
+
+
+ This parameter is ignored for dateless search.
+ schema:
+ type: boolean
+ default: false
+ - name: ratePlanType
+ in: query
+ description: >
+ **Note**: This parameter is visible to partners only by
+ configuration. Please contact your Expedia Account
+
+ Manager if you need this parameter.
+
+
+ To specify the desired rate plan types. The options are:
+
+ - standalone : Ask for standalone rates
+
+ - package : Ask for package rates, but standalone rate also may be
+ returned if available.
+
+
+ Otherwise only standalone rate plans will be returned.
+
+
+ `WebSearchResult` and `WebDetails` links won't be returned for
+ package rate.
+ schema:
+ type: string
+ enum:
+ - standalone
+ - package
+ - name: sortType
+ in: query
+ description: >
+ Specifies the field that the search results will be ordered by.
+
+
+ To be used in conjunction with sortOrder parameter below.
+
+
+ **CMA Compliance Note (UK)**: partners doing business in the UK
+ should be sorting their search results using
+
+ the `totalpricewithfees` parameter in their query string so that the
+ sorting complies with CMA regulations.
+ schema:
+ type: string
+ enum:
+ - price
+ - starrating
+ - avgrate
+ - deals
+ - guestrating
+ - hotelname
+ - distance
+ - totalpricewithfees
+ - name: sortOrder
+ in: query
+ description: >
+ Specifies the sort order of search results.
+
+
+ If no sort order is specified, the default is `asc`. But for deals
+ sorting, it only supports `desc`.
+
+
+ To be used in conjunction with the `sortType` parameter above.
+ schema:
+ type: string
+ enum:
+ - asc
+ - desc
+ default: asc
+ - name: room1.adults
+ in: query
+ description: >
+ Specifies the number of adults staying in a specific room.
+
+
+ Default value is one room with 2 adults.
+
+
+ Example: `room1.adults` is used to specify the number of adults in
+ the first room.
+ schema:
+ type: integer
+ format: int64
+ example: 2
+ - name: room1.childAges
+ in: query
+ description: >
+ Comma-separated list that specifies the age(s) for each of the
+ children in each of the rooms.
+
+
+ Example: `room2.childAges=1,3` means two children (1-year old and
+ 3-year old) are staying in room #2.
+
+
+ Children must be accompanied by an adult.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ example:
+ - 8
+ - 10
+ - name: room2.adults
+ in: query
+ description: Specifies the number of adults staying in second room.
+ schema:
+ type: integer
+ format: int64
+ - name: room2.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in second room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room3.adults
+ in: query
+ description: Specifies the number of adults staying in third room.
+ schema:
+ type: integer
+ format: int64
+ - name: room3.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in third room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room4.adults
+ in: query
+ description: Specifies the number of adults staying in fourth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room4.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in fourth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room5.adults
+ in: query
+ description: Specifies the number of adults staying in fifth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room5.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in fifth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room6.adults
+ in: query
+ description: Specifies the number of adults staying in sixth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room6.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in sixth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room7.adults
+ in: query
+ description: Specifies the number of adults staying in seventh room.
+ schema:
+ type: integer
+ format: int64
+ - name: room7.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in seventh room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room8.adults
+ in: query
+ description: Specifies the number of adults staying in eighth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room8.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in eighth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: Normal Response
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/HotelListingsResponse'
+ '400':
+ description: User Fault or DisambiguationResponse Fault
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ examples:
+ DisambiguationResponse:
+ description: DisambiguationResponse
+ value:
+ TransactionId: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ Errors:
+ - Code: AMBIGUOUS_LOCATION
+ DetailCode: MULTIPLE_AMBIGUOUS_LOCATION
+ Description: More than one location found
+ LocationKeyword: dublin
+ LocationOptions:
+ - Type: MULTICITY
+ RegionID: 178256
+ ShortName: Dublin (and vicinity)
+ AirportCode: DUB
+ Address: 'Dublin (and vicinity), Ireland'
+ Country:
+ Name: Ireland
+ IsoCode2: IE
+ IsoCode3: IRL
+ GeoLocation:
+ Latitude: 53.34402
+ Longitude: -6.26146
+ - Type: POI
+ RegionID: 553248621563220200
+ ShortName: Market On Madison
+ AirportCode: MCN
+ Address: >-
+ Market On Madison, Dublin, Georgia, United States
+ of America
+ Country:
+ Name: United States of America
+ IsoCode2: US
+ IsoCode3: USA
+ GeoLocation:
+ Latitude: 32.539313
+ Longitude: -82.902537
+ UserFault:
+ description: UserFault
+ value:
+ Errors:
+ - Code: COMBINED_HOTEL_SELECT_CRITERIA
+ Description: >
+ Combined hotel search is not supported. Please specify
+ either one of the following search
+
+ criteria: [geoLocation, regionIds, ecomHotelIds,
+ hcomHotelIds, locationKeyword, hnk, offerId].
+ TransactionId: 242d7a77-4063-439b-a9d0-12da0ff5116e
+ '401':
+ description: Invalid authentication credentials.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Unauthorized
+ '403':
+ description: You cannot consume this service.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: You cannot consume this service
+ '429':
+ description: API rate limit exceeded.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: API rate limit exceeded.
+ '500':
+ description: Service Error
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: APPLICATION_ERROR
+ Description: Application error.
+ TransactionId: 1490a74b-4c90-4e78-983d-4ede360ce52a
+ '503':
+ description: Service unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: name resolution failed
+ '504':
+ description: API time out.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: The upstream server is timing out
+ security:
+ - Authorization: []
+ /hotels/rateCalendar:
+ get:
+ tags:
+ - Lodging Rate Calendar
+ summary: Get rate calendar of a property
+ description: >-
+ The Rate Calendar API will return the lowest rate plan for a range of
+ days for one selected Expedia lodging property.
+ operationId: get-lodging-rate-calendar
+ parameters:
+ - name: Key
+ in: header
+ description: >
+ The partner API key is a case-sensitive, alphanumeric string that
+ looks something like this:
+
+
+ **X99X9X9-99XX-9XX9-X999-99XX99X9X999X**
+
+
+ The API Key is assigned and configured as part of the API
+ on-boarding process.
+
+ It will be sent to the partner by their Expedia Account Manager or
+ representative.
+ required: true
+ schema:
+ type: string
+ - name: Partner-Transaction-Id
+ in: header
+ description: >
+ The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner's choosing.
+ required: true
+ schema:
+ type: string
+ example: Partner123
+ - name: ecomHotelId
+ in: query
+ description: >
+ The Expedia hotel ID for which the calendar is being requested.
+
+
+ **Note**: Either an Expedia Hotel ID or a Hotels.com Hotel ID must
+ be included in the request.
+
+ You may use one or the other, but not both.
+ schema:
+ type: string
+ - name: hcomHotelId
+ in: query
+ description: >
+ The Hotel.com hotel ID for which the calendar is being requested.
+
+
+ **Note**: Either an Expedia Hotel ID or a Hotels.com Hotel ID must
+ be included in the request.
+
+ You may use one or the other, but not both.
+ schema:
+ type: string
+ - name: startDate
+ in: query
+ description: >
+ Start date for check-in search range in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ **Note**: The start date may not be in the past.
+ required: true
+ schema:
+ type: string
+ format: date
+ example: '2022-09-12T00:00:00.000Z'
+ - name: endDate
+ in: query
+ description: >
+ End date for check-in search range in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ **Note**: The end date must be after the start date. The maximum
+ supported search range is 180 days.
+ required: true
+ schema:
+ type: string
+ format: date
+ example: '2022-09-14T00:00:00.000Z'
+ - name: lengthOfStay
+ in: query
+ description: The length of stay to retrieve the lowest price for.
+ schema:
+ type: integer
+ format: int32
+ default: 1
+ - name: currency
+ in: query
+ description: The requested currency expressed according to ISO 4217.
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Normal Response
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/RateCalendarResponse'
+ '400':
+ description: User Fault
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: INVALID_HCOMHOTELID
+ Description: >-
+ The hcomHotelId is invalid. Please specify correct Hcom
+ hotel id.
+ TransactionId: 97da7aa5-175e-4fdf-8bbd-32e997b6faa8
+ '401':
+ description: Invalid authentication credentials.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Unauthorized
+ '403':
+ description: You cannot consume this service.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: You cannot consume this service
+ '409':
+ description: NO_RESULTS_FOUND
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: NO_RESULTS_FOUND
+ Description: >
+ Sorry, your query appears to be correctly formatted, but
+ the inventory for which you are seeking
+
+ details is now unavailable.
+ TransactionId: 2423025a-916f-4994-972a-68ee2e6b1e92
+ '429':
+ description: API rate limit exceeded.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: API rate limit exceeded.
+ '500':
+ description: Service Error
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: APPLICATION_ERROR
+ Description: Application error.
+ TransactionId: b2f16375-9fe3-43e3-b524-fb5e0498460b
+ '503':
+ description: Service unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Name resolution failed.
+ '504':
+ description: API time out.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: The upstream server is timing out.
+ security:
+ - Authorization: []
+ /lodging/quotes:
+ get:
+ tags:
+ - Lodging Quotes
+ summary: Get properties price and availability information
+ description: >
+ The Lodging Quotes API will return the price and availability
+ information for given Expedia lodging property ID(s).
+ operationId: get-lodging-quotes
+ parameters:
+ - name: Key
+ in: header
+ description: >
+ The partner API key is a case-sensitive, alphanumeric string that
+ looks something like this:
+
+
+ **X99X9X9-99XX-9XX9-X999-99XX99X9X999X**
+
+
+ The API Key is assigned and configured as part of the API
+ on-boarding process.
+
+ It will be sent to the partner by their Expedia Account Manager or
+ representative.
+ required: true
+ schema:
+ type: string
+ - name: Partner-Transaction-Id
+ in: header
+ description: >
+ The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner's choosing.
+ required: true
+ schema:
+ type: string
+ example: Partner123
+ - name: propertyIds
+ in: query
+ description: >
+ Comma-separated list of Expedia Property IDs.
+
+
+ ***NOTE**: This API supports Expedia property IDs only by
+ design – HCOM and Vrbo property IDs are
+
+ not supported.*
+
+
+ *For optimal performance, limiting your request to a maximum of 200
+ properties is recommended.*
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: checkIn
+ in: query
+ description: >
+ Check-in date for property stay in an ISO 8601 Date format.
+
+
+ This parameter should be used in combination with the checkOut
+ parameter.
+
+
+ The maximum advanced search window is 1000 days in the future, and
+ the maximum length of stay is 732.
+ schema:
+ type: string
+ format: date
+ example: '2023-10-12'
+ - name: checkOut
+ in: query
+ description: >
+ Check-out date for property stay in an ISO 8601 Date format
+
+
+ This parameter should be used in combination with the checkIn
+ parameter.
+
+
+ The maximum advanced search window is 1000 days in the future, and
+ the maximum length of stay is 732.
+ schema:
+ type: string
+ format: date
+ example: '2023-10-14'
+ - name: currency
+ in: query
+ description: >
+ The requested currency expressed according to ISO 4217.
+
+
+ PoS default currency will be passed if another currency is not
+ specified in the request.
+ schema:
+ type: string
+ - name: links
+ in: query
+ description: |
+ Comma-separated list to specify the types of deep links.
+ - WD (link to web infosite)
+ - WS (link to web search result page)
+ - WEB (include all website links)
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - WD
+ - WS
+ - WEB
+ - name: travelWithPets
+ in: query
+ description: >
+ Indicates if the search should include pet-friendly properties.
+
+
+ If set to "True" only properties that allow pets are returned. Pet
+ fees, if available, are included in TaxesAndFees.
+
+
+ The parameter is only applicable to the Vrbo brand.
+ schema:
+ type: boolean
+ default: false
+ - name: room1.adults
+ in: query
+ description: >
+ Specifies the number of adults staying in a specific room.
+
+
+ Example: `room1.adults` is used to specify the number of adults in
+ the first room.
+
+
+ ***NOTE***: multiple room request is only supported for conventional
+ lodging hotels. Request for Vrbo
+
+ properties should only include one room. e.g. 3 adults in room 1 and
+ 3 in room 2, "room1.adults" is 6.
+ schema:
+ type: integer
+ format: int64
+ example: 2
+ - name: room1.childAges
+ in: query
+ description: >
+ Comma-separated list that specifies the age(s) for each of the
+ children in each of the rooms.
+
+
+ Example: `room2.childAges=1,3` means two children (1-year old and
+ 3-year old) are staying in room #2.
+
+
+ Children must be accompanied by an adult.
+
+
+ Total number of children is indicated by the number of childAges
+ included.
+
+
+ If there are no children in the party then this value should not be
+ included.
+
+
+ ***NOTE***: multiple room request is only supported for conventional
+ lodging hotels. Request for Vrbo
+
+ properties should include the ages of all the children in the first
+ room. e.g. 1 child age 10 in room #1
+
+ and 1 child age 11 in room #2, "room1.childAges" is 10,11.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ example:
+ - 8
+ - 10
+ - name: room2.adults
+ in: query
+ description: Specifies the number of adults staying in second room.
+ schema:
+ type: integer
+ format: int64
+ - name: room2.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in second room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room3.adults
+ in: query
+ description: Specifies the number of adults staying in third room.
+ schema:
+ type: integer
+ format: int64
+ - name: room3.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in third room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room4.adults
+ in: query
+ description: Specifies the number of adults staying in fourth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room4.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in fourth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room5.adults
+ in: query
+ description: Specifies the number of adults staying in fifth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room5.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in fifth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room6.adults
+ in: query
+ description: Specifies the number of adults staying in sixth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room6.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in sixth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room7.adults
+ in: query
+ description: Specifies the number of adults staying in seventh room.
+ schema:
+ type: integer
+ format: int64
+ - name: room7.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in seventh room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: room8.adults
+ in: query
+ description: Specifies the number of adults staying in eighth room.
+ schema:
+ type: integer
+ format: int64
+ - name: room8.childAges
+ in: query
+ description: >-
+ Comma-separated list that specifies the age(s) for each of the
+ children in eighth room.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: Normal Response
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingQuotesResponse'
+ examples:
+ Lodging Quotes Response:
+ value: |-
+ {
+ "Count": 1,
+ "TotalPropertyCount": 1,
+ "TransactionId": "0e1d7193-2289-481c-bdf9-b7ac0b0b3bfe",
+ "StayDates": {
+ "CheckInDate": "2024-11-29",
+ "CheckOutDate": "2024-12-04"
+ },
+ "LengthOfStay": 5,
+ "Occupants": [
+ {
+ "Adults": 2
+ }
+ ],
+ "Properties": [
+ {
+ "Id": "87704892",
+ "Status": "AVAILABLE",
+ "RoomTypes": [
+ {
+ "RatePlans": [
+ {
+ "CancellationPolicy": {
+ "Refundable": true,
+ "FreeCancellation": true,
+ "FreeCancellationEndDateTime": "2024-11-15T23:59:00-08:00",
+ "CancellationPenaltyRules": [
+ {
+ "PenaltyPercentOfStay": "50.00",
+ "PenaltyStartDateTime": "2024-11-15T23:59:00-08:00",
+ "PenaltyEndDateTime": "2024-11-22T23:59:00-08:00"
+ },
+ {
+ "PenaltyPercentOfStay": "100",
+ "PenaltyStartDateTime": "2024-11-22T23:59:00-08:00",
+ "PenaltyEndDateTime": "2024-11-29T00:00:00-08:00"
+ }
+ ]
+ }
+ }
+ ],
+ "Price": {
+ "BaseRate": {
+ "Value": "790.00",
+ "Currency": "USD"
+ },
+ "TaxesAndFees": {
+ "Value": "348.48",
+ "Currency": "USD"
+ },
+ "TotalPrice": {
+ "Value": "1138.48",
+ "Currency": "USD"
+ },
+ "AvgNightlyRate": {
+ "Value": "158.00",
+ "Currency": "USD"
+ },
+ "AvgNightlyRateWithFees": {
+ "Value": "198.80",
+ "Currency": "USD"
+ },
+ "TotalPriceWithPropertyFees": {
+ "Value": "1138.48",
+ "Currency": "USD"
+ }
+ },
+ "Links": {
+ "WebSearchResult": {
+ "Method": "GET",
+ "Href": "https://www.vrbo.com/search?selected=87704892&startDate=2024-11-29&endDate=2024-12-04&adults=2&tpid=9001&eapid=1&mpa=790.00&mpb=348.48&mpd=USD&mctc=15"
+ },
+ "WebDetails": {
+ "Method": "GET",
+ "Href": "https://www.vrbo.com/3032772?adults=2&startDate=2024-11-29&endDate=2024-12-04&mpa=790.00&mpb=348.48&mpd=USD&mpe=1721730597"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ '400':
+ description: User Fault
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: INVALID_PROPERTYID
+ Description: >-
+ The PropertyIds is invalid. Which should be comma
+ separated list of property IDs.
+ TransactionId: 97da7aa5-175e-4fdf-8bbd-32e997b6faa8
+ '401':
+ description: Invalid authentication credentials.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Unauthorized
+ '403':
+ description: You cannot consume this service.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: You cannot consume this service
+ '429':
+ description: API rate limit exceeded.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: API rate limit exceeded.
+ '500':
+ description: Service Error
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: APPLICATION_ERROR
+ Description: Application error.
+ TransactionId: b2f16375-9fe3-43e3-b524-fb5e0498460b
+ '503':
+ description: Service unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Name resolution failed.
+ '504':
+ description: API time out.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: The upstream server is timing out.
+ security:
+ - Authorization: []
+ /lodging/availabilityCalendars:
+ get:
+ tags:
+ - Lodging Availability Calendars
+ summary: Get availability calendars of properties
+ description: >-
+ Returns the availability of each day for a range of dates for given
+ Expedia lodging properties.
+ operationId: get-lodging-availability-calendars
+ parameters:
+ - name: Key
+ in: header
+ description: >
+ The partner API key is a case-sensitive, alphanumeric string that
+ looks something like this:
+
+
+ **X99X9X9-99XX-9XX9-X999-99XX99X9X999X**
+
+
+ The API Key is assigned and configured as part of the API
+ on-boarding process.
+
+ It will be sent to the partner by their Expedia Account Manager or
+ representative.
+ required: true
+ schema:
+ type: string
+ - name: Partner-Transaction-Id
+ in: header
+ description: >
+ The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner's choosing.
+ required: true
+ schema:
+ type: string
+ example: Partner123
+ - name: propertyIds
+ in: query
+ description: >
+ Comma-separated list of Expedia Property IDs.
+
+
+ The API request supports a maximum of 50 Property IDs in a single
+ request.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ responses:
+ '200':
+ description: Normal Response
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/AvailabilityCalendarResponse'
+ '400':
+ description: User Fault
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: INVALID_PROPERTYIDS
+ Description: >-
+ The propertyIds is invalid. Which should be comma
+ separated list of Expedia property IDs.
+ TransactionId: 97da7aa5-175e-4fdf-8bbd-32e997b6faa8
+ '401':
+ description: Unauthorized or Invalid authentication credentials.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Unauthorized
+ '403':
+ description: cannot consume this service.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: You cannot consume this service
+ '429':
+ description: API rate limit exceeded.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: API rate limit exceeded.
+ '500':
+ description: Service Error
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: APPLICATION_ERROR
+ Description: Application error.
+ TransactionId: b2f16375-9fe3-43e3-b524-fb5e0498460b
+ '503':
+ description: Service unavailable.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: Name resolution failed.
+ '504':
+ description: API time out.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: The upstream server is timing out.
+ security:
+ - Authorization: []
+ /cars/listings:
+ get:
+ tags:
+ - Cars Listings
+ summary: Search Expedia car inventory
+ description: >-
+ Search Expedia car inventory by date, pickup, and dropoff location to
+ return a listing of available cars for hire.
+ operationId: get-cars-listings
+ parameters:
+ - name: key
+ in: header
+ description: Unique identifier assigned to partner.
+ required: true
+ schema:
+ type: string
+ example: 11111111-2222-3333-4444-555555555555
+ - name: Partner-Transaction-Id
+ in: header
+ description: '[Not consumed by Expedia] Partner-generated identifier.'
+ required: true
+ schema:
+ type: string
+ example: BestTravel-123456-798101112
+ - name: pickup.airport
+ in: query
+ description: >-
+ Three letter code for the airport at which the customer would like
+ to pick up the car.Supported values: standard 3 letter IATA Airport
+ Code.Please see a full list of Car Vendor Codes and Airport Codes in
+ the Related Links Section below.Cannot coexist with other pickup
+ parameters, only one pickup parameter is allowed per request.
+ schema:
+ type: string
+ example: SEA
+ - name: pickup.city
+ in: query
+ description: >-
+ The name of the city in which the customer would like to pick up the
+ car.Search results will include up to 40 rental locations that are
+ closest to the center point of the search.Cannot coexist with other
+ pickup parameters, only one pickup parameter is allowed per request.
+ schema:
+ type: string
+ - name: pickup.address
+ in: query
+ description: >-
+ The address of a car rental location where the customer would like
+ to pick up the car.Cannot coexist with other pickup parameters, only
+ one pickup parameter is allowed per request.
+ schema:
+ type: string
+ example: Seattle
+ - name: pickup.geoLocation
+ in: query
+ description: >-
+ The latitude and longitude that defines where the customer would
+ like to pick up the car.Latitude and longitude are separated by
+ comma.South latitudes and West longitudes are represented by
+ negative values.Cannot coexist with other pickup parameters, only
+ one pickup parameter is allowed per request.
+ schema:
+ type: string
+ example: '111.00,-22.00'
+ - name: pickup.radius
+ in: query
+ description: >-
+ Radius used in conjunction with a point to define the search area
+ when searching by lat/ long, city or address.See ' unit' parameter
+ below to select miles or kilometers.If no value is specified a
+ default value of 25 will be assumed.
+ schema:
+ type: integer
+ example: 10
+ - name: dropOff.airport
+ in: query
+ description: >-
+ Three letter code for the airport at which the customer would like
+ to drop off the car.Supported values: standard 3 letter IATA Airport
+ Code.Please see a full list of Car Vendor Codes and Airport Codes in
+ the Related Links Section below.Cannot coexist with other drop off
+ parameters, only one drop off parameter is allowed per request.If no
+ drop off location is specified, it is assumed that the customer will
+ be dropping the car off at the same location at which they picked it
+ up.
+ schema:
+ type: string
+ example: SEA
+ - name: dropOff.city
+ in: query
+ description: >-
+ City name for the location at which the customer would like to drop
+ off the car.Cannot coexist with other drop off parameters, only one
+ drop off parameter is allowed in a request.If no drop off location
+ is specified, it is assumed that the customer will be dropping the
+ car off at the same location at which they picked it up.
+ schema:
+ type: string
+ - name: dropOff.address
+ in: query
+ description: >-
+ Address for the location at which the customer would like to drop
+ off the car.Cannot coexist with other drop off parameters, only one
+ drop off parameter is allowed in a request.If no drop off location
+ is specified, it is assumed that the customer will be dropping the
+ car off at the same location at which they picked it up.
+ schema:
+ type: string
+ example: Seattle
+ - name: dropOff.geoLocation
+ in: query
+ description: >-
+ Latitude and longitude for the location at which the customer would
+ like to drop off the car.Latitude and longitude are separated by
+ comma.South latitudes and West longitudes are represented by
+ negative values.Cannot coexist with other drop off parameters, only
+ one drop off parameter is allowed per request.If no drop off
+ location is specified, it is assumed that the customer will be
+ dropping the car off at the same location at which they picked it
+ up.
+ schema:
+ type: string
+ example: '111.00,-22.00'
+ - name: dropOff.radius
+ in: query
+ description: >-
+ Radius used in conjunction with a point to define the search area
+ when searching by lat/ long, city or address.See ' unit' parameter
+ below to select miles or kilometers.If no value is specified a
+ default value of 25 will be assumed.Note: The pickup radius value
+ will be used (instead of the the drop-off radius) when the requested
+ pickup and drop-off city/address are exactly the same.
+ schema:
+ type: integer
+ example: 10
+ - name: pickupTime
+ in: query
+ description: >-
+ Requested car pickup date and time.Date should be ISO8601 Date
+ format.The default TIME is 10:30:00.The supported search window is
+ today to 330 days in the future.(Note that each rental counter has
+ different hours of operation. If you select a time in the middle of
+ the night there may be no inventory available as all locations may
+ be closed.)
+ required: true
+ schema:
+ type: string
+ format: date-time
+ example: '2021-06-05T10:00'
+ - name: dropOffTime
+ in: query
+ description: >-
+ Requested car drop off date and time. Date should be ISO8601 Date
+ format.The supported search window is today to 330 days in the
+ future.Note: The dropOffTime must be at least 2 hours later than the
+ pickupTime for the request to be valid.
+ required: true
+ schema:
+ type: string
+ format: date-time
+ example: '2021-06-06T10:00'
+ - name: sortType
+ in: query
+ description: >-
+ Method of sorting the car search results.Supported value: Price.If
+ no value is present a sort by 'price' will be assumed.
+ schema:
+ type: string
+ enum:
+ - Price
+ - name: sortOrder
+ in: query
+ description: >-
+ Order of sorting the car search results.Supported values: ASC,
+ DESCIf no value is present a sort order of 'ascending' will be
+ assumed.
+ schema:
+ type: string
+ enum:
+ - ASC
+ - DESC
+ - name: limit
+ in: query
+ description: >-
+ The maximum number of search results that will be returned by the
+ query.
+ schema:
+ type: integer
+ example: 100
+ - name: suppliers
+ in: query
+ description: >-
+ A list of supplier ids or supplier names to be used to filter search
+ results.Multiple supplier names or ids may be separated by
+ comma.Please see a full list of Expedia Vendor Codes & Names in the
+ Related Links Section below.The max count of suppliers requested is
+ limited to 20.Note: while you may filter using either supplier name
+ or supplier ID, it is recommended that you use supplier ID, as this
+ value will remain consistent in the event of a merger or other name
+ change by the supplier.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ example:
+ - 11
+ - 12
+ - name: carClasses
+ in: query
+ description: >-
+ A list of car classes to be used to filter search results.Multiple
+ car classes may be separated by comma.Please see Class List in the
+ Related Links Section below for all options.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ example: economy
+ - name: discount1.supplier
+ in: query
+ description: >-
+ Name or ID of the supplier who issued a coupon or discount
+ code.NOTE: Only ONE discount code per transaction is currently
+ supported by the API. If you enter more than one discount code, only
+ the first one will be honored.Please see a full list of Expedia
+ Vendor Codes & Names in the Related Links Section below.
+ schema:
+ type: string
+ example: Avis
+ - name: discount1.type
+ in: query
+ description: >-
+ The type of discount to be applied.Supported values: CorpDiscount |
+ Coupon.
+ schema:
+ type: string
+ enum:
+ - CorpDiscount
+ - Coupon
+ - name: discount1.code
+ in: query
+ description: The code of the discount to be applied.
+ schema:
+ type: string
+ example: GB1234
+ - name: transmissions
+ in: query
+ description: >-
+ A list of car transmission drive codes to be used to filter search
+ results.Multiple car classes may be separated by a comma.Please see
+ a full list of Transmission Drive Codes in the Related Links Section
+ below.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ - name: airConditioning
+ in: query
+ description: >-
+ Specify whether to filter for cars that include or exclude air
+ conditioning.
+ schema:
+ type: boolean
+ - name: carTypes
+ in: query
+ description: >-
+ A list of car types to be used to filter search results.Multiple car
+ types may be separated by comma.Please see a full list of Car Type
+ Codes in the Related Links Section below.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ uniqueItems: true
+ example: 'C,E'
+ - name: unit
+ in: query
+ description: >-
+ The distance unit for the radius of a location-based search, or the
+ distance between the center point of a search and the vendor
+ location.Supported values: KM | MI.Default value: KM.
+ schema:
+ type: string
+ enum:
+ - KM
+ - MI
+ - name: driverAge
+ in: query
+ description: >-
+ The age of the driver that will be renting the car.This value is
+ required in the UK and optional elsewhere.
+ schema:
+ type: integer
+ example: 18
+ - name: links
+ in: query
+ description: 'WS = WebSearch, AD = ApiDetails, WD = WebDetails'
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - WS
+ - AD
+ - WD
+ - name: source
+ in: query
+ description: >-
+ Indicates the source where the request is coming from.The available
+ values for the source as below:browser - The value "browser"
+ represents that the client is traditional website.mobile - The value
+ "mobile" represents that the client is mobile.all - The value "all"
+ indicates that the client includes both browser and mobile.Only one
+ source value may be used at a time.
+ schema:
+ type: string
+ enum:
+ - browser
+ - mobile
+ - all
+ responses:
+ '200':
+ description: car listing response
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarListingsResponse'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarListingsResponse'
+ '400':
+ description: errors response
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ examples:
+ Errors:
+ description: Errors
+ value:
+ Errors:
+ - Code: INVALID_LINKS
+ Description: 'Invalid links. Allowed value are:[WS, AD, WD].'
+ TransactionId: 583b7277-772a-4802-8ac7-bcdf978abbdb
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/DisambiguationResponse'
+ examples:
+ DisambiguationResponse:
+ description: DisambiguationResponse
+ value:
+ Errors:
+ - Code: AMBIGUOUS_LOCATION
+ DetailCode: MULTIPLE_AMBIGUOUS_PICKUP_LOCATION
+ Description: Multiple pickup locations found.
+ LocationKeyword: portland
+ LocationOptions:
+ - Type: MULTICITY
+ RequestedLocation: Portland (and vicinity)
+ Locations:
+ - Name: Portland (and vicinity)
+ LocationId: seat001
+ RegionId: '178299'
+ ShortName: Portland (and vicinity)
+ AirportCode: PDX
+ Address: >-
+ Portland (and vicinity), Oregon, United States Of
+ America
+ Country:
+ Name: United States of America
+ IsoCode2: US
+ IsoCode3: USA
+ GeoLocation:
+ Latitude: '45.516740'
+ Longitude: '-122.680950'
+ - Type: CITY
+ RequestedLocation: Portland (and vicinity)
+ Locations:
+ - Name: Portland (and vicinity)
+ LocationId: seat001
+ RegionId: '6174134'
+ ShortName: Downtown Portland
+ AirportCode: PWM
+ Address: >-
+ Downtown Portland, Portland, Maine, United States
+ of America
+ Country:
+ Name: United States of America
+ IsoCode2: US
+ IsoCode3: USA
+ GeoLocation:
+ Latitude: '43.655764'
+ Longitude: '-70.255458'
+ TransactionId: 81e0a6d6-8ca9-4adf-a1c8-08ba0d11dcef
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: '{message":"Unauthorized"}'
+ Invalid authentication credentials:
+ value: '{"message":"Invalid authentication credentials"}'
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: '{"message":"You cannot consume this service"}'
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: '{"message":"no Route matched with those values"}'
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: '{"message":"API rate limit exceeded"}'
+ '503':
+ description: service unavailable
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: '{"message":"name resolution failed"}'
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicAuth: []
+ '/cars/details/{offerToken}':
+ get:
+ tags:
+ - Cars Detail
+ summary: Get Extended information with a single car offer
+ description: >-
+ Extended information about the rates, charges, fees, and other terms
+ associated with a single car offer.
+ operationId: get-car-details
+ parameters:
+ - name: key
+ in: header
+ description: Unique identifier assigned to partner.
+ required: true
+ schema:
+ type: string
+ example: 11111111-2222-3333-4444-555555555555
+ - name: Partner-Transaction-Id
+ in: header
+ description: '[Not consumed by Expedia] Partner-generated identifier.'
+ required: true
+ schema:
+ type: string
+ example: BestTravel-123456-798101112
+ - name: price
+ in: query
+ description: The total price for the product.
+ required: true
+ schema:
+ type: string
+ - name: currency
+ in: query
+ description: Price currency code
+ required: true
+ schema:
+ type: string
+ example: USD
+ - name: source
+ in: query
+ description: >-
+ source mobile - The value mobile represents that the client is
+ mobile.
+ schema:
+ type: string
+ example: mobile
+ - name: offerToken
+ in: path
+ description: car offer token
+ required: true
+ schema:
+ type: string
+ example: OFHSDJSJDFLJSDLKFJSDLJFLSDJFLSJDFL
+ responses:
+ '200':
+ description: car details successful response
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarDetailsResponse'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarDetailsResponse'
+ '400':
+ description: car details user fault response
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: '{message":"Unauthorized"}'
+ Invalid authentication credentials:
+ value: '{"message":"Invalid authentication credentials"}'
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: '{"message":"You cannot consume this service"}'
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: '{"message":"no Route matched with those values"}'
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: '{"message":"API rate limit exceeded"}'
+ '500':
+ description: car details application error response
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ '503':
+ description: service unavailable
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: '{"message":"name resolution failed"}'
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicAuth: []
+ /feed/v1/download-url:
+ get:
+ tags:
+ - download-url
+ operationId: get-feed-download-url
+ description: Get the Download URL and other details of the static files.
+ parameters:
+ - name: Key
+ in: header
+ description: >-
+ Indicates a unique identifier assigned to every user of this API.
+ This attribute will help uniquely identify the caller.
+ required: true
+ deprecated: false
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999
+ - name: type
+ in: query
+ description: 'The type of file, used to get files by type.'
+ deprecated: false
+ required: true
+ schema:
+ type: string
+ enum:
+ - DESTINATION
+ - VENDORLOGO
+ - SUMMARY
+ - LISTINGS
+ - IMAGES
+ - AMENITIES
+ - LOCATIONS
+ - DESCRIPTIONS
+ - POLICIES
+ - GUEST_REVIEW
+ - VACATION_RENTAL
+ - ALL_REGIONS
+ - BOUNDING_POLYGON
+ - HOTEL_TO_REGION_HIERARCHY
+ - ROOM_DETAILS
+ example: SUMMARY
+ - name: locale
+ in: query
+ description: >-
+ Follow ISO-3166 Country Codes and ISO-639 Language Codes, format:
+ "{LanguageCode}-{CountryCode}".Support multiple values, for the feed
+ files that support localization, Use this parameter to help filter
+ out the localization files you want to download. If not using this
+ parameter, then this API will return all locales files for specified
+ type. If the specified type of file is not supported localization,
+ there is no file will be returned.
+ deprecated: false
+ required: false
+ schema:
+ type: string
+ example: en-US
+ - name: pointOfSupply
+ in: query
+ description: >-
+ The point of supply means a country generally. The downloadable
+ files provided after specifying will only contain properties'
+ information for that country.
+ deprecated: false
+ required: false
+ schema:
+ type: string
+ enum:
+ - US
+ - AT
+ - BR
+ - CA
+ - FR
+ - DE
+ - GR
+ - IT
+ - JA
+ - KR
+ - MX
+ - PT
+ - ES
+ - TR
+ - AE
+ - GB
+ example: AT
+ - name: lodgingType
+ in: query
+ description: >-
+ The lodging type also means structure type, it only can be
+ `CL`(Conventional Lodging) and `VR`(Vacation Rental). The
+ downloadable files provided after specifying will only contain
+ property information for that lodging type.
+ deprecated: false
+ required: false
+ schema:
+ type: string
+ enum:
+ - CL
+ - VR
+ example: CL
+ - name: brand
+ in: query
+ description: >-
+ The downloadable files provided after specifying will only contain
+ property information for that brand.
+ deprecated: false
+ required: false
+ schema:
+ type: string
+ enum:
+ - VRBO
+ responses:
+ '200':
+ content:
+ application/vnd.exp-lodging.v1+json:
+ schema:
+ $ref: '#/components/schemas/PresignedUrlResponse'
+ examples:
+ SDP-Summary:
+ value:
+ transactionId: c12dcd5d-4d05-42ed-8119-0e97e11f7deb
+ bestMatchedFile:
+ fileContentType: Summary
+ locale: de-DE
+ fileName: expedia-lodging-summary-en_us-all.jsonl.zip
+ fileSize:
+ unit: MB
+ value: 198.12
+ fileLastUpdated: 'Tue Mar 28 08:38:14 UTC 2023'
+ downloadUrl: >-
+ https://lpdp-data-test.s3.us-west-2.amazonaws.com/hotels/common/summary/expedia-lodging-summary-en_us-all.jsonl.zip?X-Client-Key=DD0CFD5B-4CE6-474C-934C-C2ABC250D72B&X-Amz-Security-Token=FwoGZXIvYXdzEJD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDDgCq3hfh2uzzkVrdiL0AbJ2Mr51BioDJbfW66%2F7QGFKQ5PPAcq3TprAoBGMBJVeafZ%2BvsrkKOdAUrxDGnheLNwmRBlE%2B2HS7f3pK6rE3XnnY6rEJKLe1EE2DmmNe3qIarJVVogurZumYcZ9SDPBvWwX4IGsNolFS5Qu8vtyur93xqg5%2BHnoPxLEJsP1yztRMGAiWKz9O1V79C6ZiFI5HtVOt4jYXSXdvtPKz9E6DA0ebXTpbAsm4T8PIvl30I5nNBdesXv8ap4Uie2fE6ALtUgWyJrKs%2Fy333aT6iV8Kau%2BNX3V3NW3LHh7rECgTtr5nySSxMJ2UFfQx8w7e9K8aAm098covbOPoQYyK5UIm%2BjPE%2FMbJqmroHqhzbKwbn7JFK5NnkXRmpPuGxn%2Bxmt%2Fe8Bg327adJ0%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230329T063549Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=ASIASWURL3BTL5JH6TPD%2F20230329%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=58714cc22181faea3243d689741ba0e7f1a43ae8cab172984778ca5f8b963f1f
+ downloadUrlExpires: 'Wed Mar 29 07:35:49 UTC 2023'
+ otherFileOptions:
+ - fileContentType: Summary
+ locale: en-US
+ fileName: >-
+ expedia-lodging-summary_filtered_by_canada_en_us.jsonl.zip
+ fileSize:
+ unit: MB
+ value: 18.12
+ fileLastUpdated: 'Tue Mar 28 06:37:36 UTC 2023'
+ downloadUrl: >-
+ https://lpdp-data-test.s3.us-west-2.amazonaws.com/hotels/common/summary/filtered/expedia-lodging-summary_filtered_by_canada_en_us.jsonl.zip?X-Client-Key=DD0CFD5B-4CE6-474C-934C-C2ABC250D72B&X-Amz-Security-Token=FwoGZXIvYXdzEJD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDDgCq3hfh2uzzkVrdiL0AbJ2Mr51BioDJbfW66%2F7QGFKQ5PPAcq3TprAoBGMBJVeafZ%2BvsrkKOdAUrxDGnheLNwmRBlE%2B2HS7f3pK6rE3XnnY6rEJKLe1EE2DmmNe3qIarJVVogurZumYcZ9SDPBvWwX4IGsNolFS5Qu8vtyur93xqg5%2BHnoPxLEJsP1yztRMGAiWKz9O1V79C6ZiFI5HtVOt4jYXSXdvtPKz9E6DA0ebXTpbAsm4T8PIvl30I5nNBdesXv8ap4Uie2fE6ALtUgWyJrKs%2Fy333aT6iV8Kau%2BNX3V3NW3LHh7rECgTtr5nySSxMJ2UFfQx8w7e9K8aAm098covbOPoQYyK5UIm%2BjPE%2FMbJqmroHqhzbKwbn7JFK5NnkXRmpPuGxn%2Bxmt%2Fe8Bg327adJ0%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230329T063549Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIASWURL3BTL5JH6TPD%2F20230329%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=ac4389b81d4b9e6563fd234b16dafceaab5fcbe2931454da2fe9956b1e3f5919
+ filterConditions:
+ pointOfSupply: CA
+ bestMatchedLink:
+ href: >-
+ https://localhost:8443/feed/v1/download-url?type=SUMMARY&pointOfSupply=CA
+ method: GET
+ - fileContentType: Summary
+ locale: en-US
+ fileName: >-
+ expedia-lodging-summary_filtered_by_conventional_en_us.jsonl.zip
+ fileSize:
+ unit: MB
+ value: 98.12
+ fileLastUpdated: 'Tue Mar 28 06:38:11 UTC 2023'
+ downloadUrl: >-
+ https://lpdp-data-test.s3.us-west-2.amazonaws.com/hotels/common/summary/filtered/expedia-lodging-summary_filtered_by_conventional_en_us.jsonl.zip?X-Client-Key=DD0CFD5B-4CE6-474C-934C-C2ABC250D72B&X-Amz-Security-Token=FwoGZXIvYXdzEJD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDDgCq3hfh2uzzkVrdiL0AbJ2Mr51BioDJbfW66%2F7QGFKQ5PPAcq3TprAoBGMBJVeafZ%2BvsrkKOdAUrxDGnheLNwmRBlE%2B2HS7f3pK6rE3XnnY6rEJKLe1EE2DmmNe3qIarJVVogurZumYcZ9SDPBvWwX4IGsNolFS5Qu8vtyur93xqg5%2BHnoPxLEJsP1yztRMGAiWKz9O1V79C6ZiFI5HtVOt4jYXSXdvtPKz9E6DA0ebXTpbAsm4T8PIvl30I5nNBdesXv8ap4Uie2fE6ALtUgWyJrKs%2Fy333aT6iV8Kau%2BNX3V3NW3LHh7rECgTtr5nySSxMJ2UFfQx8w7e9K8aAm098covbOPoQYyK5UIm%2BjPE%2FMbJqmroHqhzbKwbn7JFK5NnkXRmpPuGxn%2Bxmt%2Fe8Bg327adJ0%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230329T063549Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIASWURL3BTL5JH6TPD%2F20230329%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=9364ec533e909c2cb3331f16a449feee41a968492e61bcdd5761e56e7bbad73a
+ downloadUrlExpires: 'Wed Mar 29 07:35:49 UTC 2023'
+ filterConditions:
+ structureType: CONVENTIONAL
+ bestMatchedLink:
+ href: >-
+ https://localhost:8443/feed/v1/download-url?type=SUMMARY&loadgingType=CL
+ method: GET
+ VendorLogo:
+ value:
+ transactionId: c12dcd5d-4d05-42ed-8119-0e97e11f7deb
+ bestMatchedFile:
+ fileName: VendorLogos.json
+ fileSize:
+ unit: MB
+ value: 1.32
+ fileLastUpdated: 'Tue Mar 28 06:38:11 UTC 2023'
+ downloadUrl: >-
+ https://ews-generated-feeds-prod-p.s3.us-west-2.amazonaws.com/vendor-logos/VendorLogos.json?response-content-disposition=inline&X-Amz-Security-Token=XXX
+ downloadUrlExpires: 'Wed Mar 29 07:35:49 UTC 2023'
+ description: Download URLs successfully generated for the feed files.
+ '400':
+ content:
+ application/vnd.exp-lodging.v1+json:
+ schema:
+ $ref: '#/components/schemas/PresignedUrlResponse'
+ example:
+ transactionId: 38dc7269-12b1-58c9-a381-4963c274cdfe
+ error:
+ code: INVALID_TYPE_ATTR
+ description: Invalid type provided.
+ description: Invalid request from the client.
+ '401':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ unauthorized:
+ value:
+ message: Unauthorized
+ Invalid authentication credentials:
+ value:
+ message: Invalid authentication credentials
+ description: Unauthorized or Invalid authentication credentials.
+ '403':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ cannot consume this service:
+ value:
+ message: You cannot consume this service
+ description: Cannot consume this service.
+ '404':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ no Route matched:
+ value:
+ message: no Route matched with those values
+ description: No Route matched.
+ '429':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ API rate limit exceeded:
+ value:
+ message: API rate limit exceeded
+ description: API rate limit exceeded.
+ '500':
+ content:
+ application/vnd.exp-lodging.v1+json:
+ schema:
+ $ref: '#/components/schemas/PresignedUrlResponse'
+ example:
+ transactionId: 38dc7269-12b1-58c9-a381-4963c274cdfe
+ error:
+ code: SERVER_ERROR
+ description: An error has occurred while processing the request.
+ description: >-
+ Server side error like backend service has some issues or some
+ issues in EWS Feed service. The Error code is SERVER_ERROR.
+ '503':
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ service unavailable:
+ value:
+ message: name resolution failed
+ description: Service unavailable.
+ /activities/listings:
+ get:
+ tags:
+ - Activities List
+ description: >-
+ The Activities Search API allows partners to search for Expedia Activity
+ inventory.
+ operationId: get-activity-listings
+ parameters:
+ - name: location
+ in: query
+ description: >-
+ Can be a city name, street address, three-letter IATA Airport Code
+ or a landmark name.
+
+ (If the value submitted does not clearly identify a single location
+ the API may returne a disambiguation response that lists possible
+ options)
+ schema:
+ type: string
+ example: shenzhen
+ - name: geoLocation
+ in: query
+ description: >-
+ The latitude and longitude values identifying the center point of a
+ search radius (circle).
+
+ North latitude will be represented by a positive value. South
+ latitude by a negative value.
+
+ East longitude will be represented by a positive value. West
+ longitude by a negative value.
+
+ The latitude and longitude values are joined together with a comma
+ (,) character.
+ schema:
+ type: string
+ example: '25.070062,-121.538306'
+ - name: startDate
+ in: query
+ description: |-
+ Start date for the activity window in YYY-MM-DD format.
+ If an endDate value is supplied there must also be a startDate.
+ default: currentDate
+ schema:
+ type: string
+ format: date
+ example: '2021-10-01T00:00:00.000Z'
+ - name: endDate
+ in: query
+ description: |-
+ End date for the activity window in YYY-MM-DD format.
+ default: "startDate+14"
+ schema:
+ type: string
+ format: date
+ example: '2021-10-10T00:00:00.000Z'
+ - name: locale
+ in: query
+ description: >-
+ locale is composed of language identifier and region identifier,
+ connected by "_" that specifies the language in which the response
+ will be returned.
+
+ example: "fr_FR" refers to French as spoken in France, while "fr_CA"
+ refers to French as spoken in Canada.
+
+ For a full list of supported locales please refer to the link at the
+ bottom of the page.
+ schema:
+ type: string
+ example: en_US
+ - name: links
+ in: query
+ description: >-
+ Comma-separated list to specify the types of HATEAOS links returned
+ in the API Response.
+
+ WD (deep link URL to web infosite)
+
+ AD (details API query)
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - WD
+ - AD
+ example: WD
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-Id
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: BestTravel-123456-798101112
+ responses:
+ '200':
+ description: successful
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivityListingsResponse'
+ example:
+ TransactionId: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ Count: 1
+ Location: 'shenzhen, gd'
+ StartDate: '2021-08-01T00:00:00.000Z'
+ EndDate: '2021-08-08T00:00:00.000Z'
+ Categories:
+ - Count: 1
+ CategoryName: Cruises & Water Tours
+ CategoryDisplayName: Cruises & Water Tours
+ GroupName: Tours
+ GroupDisplayName: Tours
+ Activities:
+ - Id: 166597
+ Title: >-
+ Faster Than Skip-the-Line: Vatican, Sistine Chapel & St.
+ Peter's Tour
+ Description: >-
+ Enjoy 5 of Seattle's most popular attractions with a
+ multi-ticket booklet that’s valid for 9 consecutive days.
+ This pass is perfect if you want to explore the city on
+ your schedule, craft your own itinerary, and visit the
+ city’s can’t-miss museums and most iconi..
+ Media:
+ - Type: '1'
+ Size: t
+ Url: >-
+ http://a.travel-assets.com/ lxweb/ media-vault/
+ 166597_m.jpeg? v=104741
+ Categories:
+ - Walking & Bike Tours
+ Duration: PT3H0M
+ CancellationPolicy:
+ FreeCancellation: true
+ Price:
+ Category: Adult
+ TotalRate:
+ Value: 100
+ Currency: USD
+ ReferencePrice:
+ Category: Adult
+ TotalRate:
+ Value: 110
+ Currency: USD
+ Savings:
+ percentage: 42
+ amount:
+ Value: '9'
+ Currency: USD
+ Redemption:
+ Type: Voucherless
+ Locations:
+ - Address:
+ Address1: 99 Union St
+ City: Seattle
+ PostalCode: '431625'
+ Province: WA
+ Country: USA
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Locations:
+ - Address:
+ Address1: 99 Union St
+ City: Seattle
+ PostalCode: '431625'
+ Province: WA
+ Country: USA
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Supplier:
+ Name: City Wonders
+ RecommendationScore: 90
+ ReviewCount: 100
+ Links:
+ WebDetails:
+ Href: >-
+ https://www.expedia.com/things-to-do/space-needle-observation-deck-admission.a193678.activity-details?srp=true&location=sea
+ ApiDetails:
+ Accept: application/vnd.exp-activity.v3+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/activities/details/CgUyMDIzMBIyCgkyMDEzMDQ1OTYSCTIwOTc3MjcwOBoCMjQqCjIwMTctMTEtMTkyCjIwMTctMTEtMjUqAwoBMg
+ '400':
+ description: >-
+ Client side error while providing the request i.e bad / invalid
+ input parameters. The server responds back with "
+ + "this Http response code and with the appropriate JSON error response.
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ example:
+ Errors:
+ - Code: AMBIGUOUS_LOCATION
+ Description: Multiple search locations found.
+ LocationKeyword: 99UnionSt
+ LocationOptions:
+ - ShortName: 'Union Grove, Wisconsin, United States of America'
+ Address: >-
+ Milwaukee (and vicinity), Wisconsin, United States of
+ America
+ RequestedLocation: United States
+ Locations:
+ - Name: Portland (and vicinity)
+ LocationId: seat001
+ TransactionId: cecf62c8-c103-4181-b09d-53c7190d1c48
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >-
+ Server side error i.e connection timeout while talking to downstream
+ services, downstream returned error. The server responds back with
+ this Http "
+ + "response code and with the appropriate JSON error response.
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicSchema: []
+ '/activities/details/{offerToken}':
+ get:
+ tags:
+ - Activities Details
+ description: >-
+ The Activity Details API provides detailed information about one
+ selected activity.
+ operationId: get-activity-details
+ parameters:
+ - name: offerToken
+ in: path
+ description: the offerToken of a activity
+ required: true
+ schema:
+ type: string
+ example: CgY0NzY2NzgSCjIwMjEtMDUtMDIaCjIwMjEtMDUtMDc
+ - name: locale
+ in: query
+ description: >-
+ locale is composed of language identifier and region identifier,
+ connected by "_" that specifies the language
+
+ in which the response will be returned.
+
+ example: "fr_FR" refers to French as spoken in France, while "fr_CA"
+ refers to French as spoken in Canada.
+
+ For a full list of supported locales please refer to the link at the
+ bottom of the page.
+ schema:
+ type: string
+ example: en_US
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-Id
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: BestTravel-123456-798101112
+ responses:
+ '200':
+ description: successful
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivityDetailsResponse'
+ example:
+ TransactionId: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ Count: 1
+ Location: 'shenzhen, gd'
+ StartDate: '2021-08-01T00:00:00.000Z'
+ EndDate: '2021-08-08T00:00:00.000Z'
+ Categories:
+ - Count: 1
+ CategoryName: Cruises & Water Tours
+ CategoryDisplayName: Cruises & Water Tours
+ GroupName: Tours
+ GroupDisplayName: Tours
+ Activities:
+ - Id: 166597
+ Title: >-
+ Faster Than Skip-the-Line: Vatican, Sistine Chapel & St.
+ Peter's Tour
+ Description: >-
+ Enjoy 5 of Seattle's most popular attractions with a
+ multi-ticket booklet that’s valid for 9 consecutive days.
+ This pass is perfect if you want to explore the city on
+ your schedule, craft your own itinerary, and visit the
+ city’s can’t-miss museums and most iconi..
+ Media:
+ - Type: '1'
+ Size: t
+ Url: >-
+ http://a.travel-assets.com/ lxweb/ media-vault/
+ 166597_m.jpeg? v=104741
+ Categories:
+ - Walking & Bike Tours
+ Duration: PT3H0M
+ CancellationPolicy:
+ FreeCancellation: true
+ Price:
+ Category: Adult
+ TotalRate:
+ Value: 100
+ Currency: USD
+ ReferencePrice:
+ Category: Adult
+ TotalRate:
+ Value: 110
+ Currency: USD
+ Savings:
+ percentage: 42
+ amount:
+ Value: '9'
+ Currency: USD
+ Redemption:
+ Type: Voucherless
+ Locations:
+ - Address:
+ Address1: 99 Union St
+ City: Seattle
+ PostalCode: '431625'
+ Province: WA
+ Country: USA
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Locations:
+ - Address:
+ Address1: 99 Union St
+ City: Seattle
+ PostalCode: '431625'
+ Province: WA
+ Country: USA
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Supplier:
+ Name: City Wonders
+ RecommendationScore: 90
+ ReviewCount: 100
+ Links:
+ WebDetails:
+ Href: >-
+ https://www.expedia.com/things-to-do/space-needle-observation-deck-admission.a193678.activity-details?srp=true&location=sea
+ ApiDetails:
+ Accept: application/vnd.exp-activity.v3+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/activities/details/CgUyMDIzMBIyCgkyMDEzMDQ1OTYSCTIwOTc3MjcwOBoCMjQqCjIwMTctMTEtMTkyCjIwMTctMTEtMjUqAwoBMg
+ '400':
+ description: >-
+ Client side error while providing the request i.e bad / invalid
+ input parameters. The server responds back with "
+ + "this Http response code and with the appropriate JSON error response.
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ example:
+ Errors:
+ - Code: INVALID_LINKS
+ Description: 'Invalid links. Allowed value are:[WS, AD, WD].'
+ TransactionId: 583b7277-772a-4802-8ac7-bcdf978abbdb
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >-
+ Server side error i.e connection timeout while talking to downstream
+ services, downstream returned error. The server responds back with
+ this Http "
+ + "response code and with the appropriate JSON error response.
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicSchema: []
+ '/flights/baggagefees/{offerToken}':
+ get:
+ tags:
+ - Flight BaggageFee
+ description: request for baggage fee information
+ operationId: get-flight-bagaggefee
+ parameters:
+ - name: offerToken
+ in: path
+ description: The offerToken from the Flight Listings API
+ required: true
+ schema:
+ type: string
+ example: >-
+ ClsKAkFBGhcyMDIxLTA0LTIxVDE0OjU1OjAwLjAwMCIDU0VBKhcyMDIxLTA0LTIxVDE3OjUxOjAwLjAwMDIDUEhYOgFOQghOVkFIWlNONUoHRUNPTk9NWVIDNzEwClwKAkFBGhcyMDIxLTA0LTIxVDIxOjQxOjAwLjAwMCIDUEhYKhcyMDIxLTA0LTIxVDIyOjUwOjAwLjAwMDIDTEFTOgFOQghOVkFIWlNONUoHRUNPTk9NWVIEMjEwNhIDVVNEGgJLRw
+ - name: locale
+ in: query
+ description: >-
+ Locale information to provide airline name.
+
+ If this information is not provided, the locale corresponding for
+ that partners default will be selected.
+ schema:
+ type: string
+ example: en_US
+ - name: currency
+ in: query
+ description: >-
+ Specifies currency code for baggage fees to be returned in. Format
+ should be ISO 4217 currency code (3 letter).
+
+ If this information is not provided, the currency corresponding for
+ that partners default will be selected.
+ schema:
+ type: string
+ example: USD
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v1+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ responses:
+ '200':
+ description: >
+ Baggage fee information returned successfully (this can also include
+ Warnings in some cases).Possible warning codes are
+
+ NO_RESULTS_FOUND
+
+ NO_FEE_INFO
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightBaggageFeesResponse'
+ example:
+ FlightBaggageFees:
+ - FlightSegment:
+ AirlineCode: AA
+ AirlineName: American Airlines
+ DepartureAirport:
+ Code: SEA
+ ArrivalAirport:
+ Code: LAS
+ Links:
+ WebBaggageFees:
+ Method: GET
+ Href: >-
+ https://www.aa.com/i18n/travelInformation/baggage/baggageAllowance.jsp
+ BaggageFees:
+ - BagType: FIRST_BAG
+ WeightUnit: kg
+ Weight: '23'
+ Application: upto
+ FixedCharge:
+ Value: '30.0'
+ Currency: USD
+ - BagType: SECOND_BAG
+ WeightUnit: kg
+ Weight: '23'
+ Application: upto
+ FixedCharge:
+ Value: '40.0'
+ Currency: USD
+ - BagType: CARRY_ON
+ FixedCharge:
+ Value: '0.0'
+ Currency: USD
+ - BagType: PREPAID_CARRY_ON
+ FixedCharge:
+ Value: '0.0'
+ Currency: USD
+ TransactionId: 6e3c782e-54e4-4f48-a909-d4f2e4fd31c4
+ '400':
+ description: >
+ The locale provided in the request is not supported by
+ API(INVALID_LOCALE).
+
+ The accept header provided is not as per the
+ documentation(INVALID_ACCEPT_HEADER).
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: INVALID_ACCEPT_HEADER
+ Description: Please provide a valid Accept header
+ TransactionId: c38d0183-5c90-4db6-8c5e-31b7294cd06f
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >
+ Server side error like backend service has some issues or some
+ issues in EWS Air service. The Error code is SERVER_ERROR
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: SERVER_ERROR
+ Description: An error has occurred while processing the request
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicSchema: []
+ '/flights/farerules/{offerToken}':
+ get:
+ tags:
+ - Flight FareRules
+ description: request for farerule information
+ operationId: get-flight-farerules
+ parameters:
+ - name: offerToken
+ in: path
+ description: An offerToken from a Flight API responses.
+ required: true
+ schema:
+ type: string
+ example: 599be702-d354-4065-bd52-348af7c728d2
+ - name: locale
+ in: query
+ description: >-
+ locale information
+
+ (Even though locale may be requested, the majority of the
+ information in the response comes directly from the GDS systems and
+ does NOT have any localization to languages other than English)
+ schema:
+ type: string
+ example: en_US
+ - name: Source
+ in: header
+ description: >-
+ Accepts any single-word value that describes the source from which
+ the API is being called.
+
+ Example: 'Details', 'Book', 'Itin', etc.
+ schema:
+ type: string
+ example: Details
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v1+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ responses:
+ '200':
+ description: >
+ FareRules information returned successfully (in some cases this can
+ have warnings).
+ Warning messages are:
+ NO_FARE_RULES_FOUND
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightFareRulesResponse'
+ example:
+ FlightFareRule:
+ - FlightSegment:
+ AirlineCode: AA
+ DepartureAirport:
+ Code: LAS
+ ArrivalAirport:
+ Code: LAX
+ FareRules:
+ - FareBasisCode: OUALZNN3
+ Rules:
+ - Category: RULE APPLICATION AND OTHER CONDITIONS
+ Description: >
+ NOTE - THE FOLLOWING TEXT IS INFORMATIONAL AND
+ NOT VALIDATED FOR AUTOPRICING.
+
+ NORMAL/EXCURSION FARES
+
+ APPLICATION
+ CLASS OF SERVICE
+ THESE FARES APPLY FOR FIRST/BUSINESS/ECONOMY/PREMIUM ECONOMY CLASS SERVICE.
+ CAPACITY LIMITATIONS
+ SEATS ARE LIMITED.
+ - Category: ELIGIBILITY
+ Description: |
+ NO ELIGIBILITY REQUIREMENTS APPLY.
+ - Category: DAY/TIME
+ Description: |
+ NO DAY/TIME TRAVEL RESTRICTIONS APPLY.
+ - Category: SEASONALITY
+ Description: |
+ NO SEASONAL TRAVEL RESTRICTIONS APPLY.
+ - Category: FLIGHT APPLICATION
+ Description: >
+ THE FARE COMPONENT MUST NOT BE ON ONE OR MORE OF
+ THE FOLLOWING
+ ANY AA FLIGHT OPERATED BY AS.
+ AND
+
+ THE FARE COMPONENT MUST BE ON ONE OR MORE OF THE
+ FOLLOWING
+ ANY AA FLIGHT.
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '400':
+ description: |
+ Bad request from client.Possible error codes are:
+ INVALID_ACCEPT_HEADER
+ INVALID_FARE_RULES_KEY
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: INVALID_ACCEPT_HEADER
+ Description: Please provide a valid Accept header
+ TransactionId: aedfd328-797a-43c9-9584-e901ea1f589d
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >
+ Server side error like backend service has some issues or some
+ issues in EWS Air service.Possible error codes are:
+
+ SERVER_ERROR
+
+ NO_FARE_RULES_FOUND
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: SERVER_ERROR
+ Description: An error has occurred while processing the request
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicSchema: []
+ '/flights/seatmaps/{offerToken}':
+ get:
+ tags:
+ - Flight SeatMap
+ description: request for seatmap information
+ operationId: get-flight-seatmap
+ parameters:
+ - name: offerToken
+ in: path
+ description: An Air offerToken from a Flight Search or Flight Details.
+ required: true
+ schema:
+ type: string
+ example: >-
+ CgFOEgNTRUEaAkFBIhFBbWVyaWNhbiBBaXJsaW5lcyoOQm9laW5nIDczNy04MDAyAzczODodMjAyMS0wNC0yMVQxNzo1MTowMC4wMDAtMDc6MDBCHTIwMjEtMDQtMjFUMTQ6NTU6MDAuMDAwLTA3OjAwSgM3MTBSA1BIWFoHRUNPTk9NWQ
+ - name: locale
+ in: query
+ description: The language in which the response content should be displayed.
+ schema:
+ type: string
+ example: en_US
+ - name: loyaltyProgramNumber
+ in: query
+ description: A Traveler's Loyalty Program number for a specified carrier.
+ schema:
+ type: string
+ example: F263M74
+ - name: travelerFirstName
+ in: query
+ description: >-
+ Traveler's first name of whose loyalty information is passed
+ (mandatory if you are entering a loyalty number).
+ schema:
+ type: string
+ example: SAM
+ - name: travelerLastName
+ in: query
+ description: >-
+ Traveler's last name of whose loyalty information is passed
+ (mandatory if you are entering a loyalty number).
+ schema:
+ type: string
+ example: JOHN
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v2+json
+ responses:
+ '200':
+ description: >
+ Seatmap information returned successfully (in some cases this can
+ have warnings).
+ Warning messages are:
+ NO_RESULTS_FOUND
+
+ MISSING_LOYALTY_INFORMATION
+ content:
+ application/vnd.exp-flight.v2+json:
+ schema:
+ $ref: '#/components/schemas/SeatMapResponse'
+ example:
+ FlightNumber: '710'
+ DepartureDate: '2021-04-21T00:00:00.000Z'
+ MarketingAirLineCode: AA
+ MarketingAirLineName: American Airlines
+ EquipmentCode: '738'
+ EquipmentName: Boeing 737-800
+ DepartureAirport:
+ Code: SEA
+ ArrivalAirport:
+ Code: PHX
+ SeatMap:
+ CabinClass: ECONOMY
+ Rows:
+ - RowNumber: 8
+ Seats:
+ - SeatNumber: 8A
+ SeatToken: >-
+ AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE
+ SeatOccupancy: AVAILABLE
+ Column: A
+ SeatCharacteristics:
+ - Code: W
+ Name: WINDOW
+ - Code: M
+ Name: MAINCABINEXTRA
+ PaidSeat: true
+ SeatPrice:
+ Value: 38.55
+ Currency: USD
+ - RowNumber: 33
+ Seats:
+ - SeatNumber: 33A
+ SeatToken: >-
+ AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE
+ SeatOccupancy: OCCUPIED
+ Column: A
+ SeatCharacteristics:
+ - Code: W
+ Name: WINDOW
+ PaidSeat: true
+ SeatPrice:
+ Value: 38.55
+ Currency: USD
+ - SeatNumber: 33B
+ SeatToken: >-
+ AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE
+ SeatOccupancy: OCCUPIED
+ Column: B
+ PaidSeat: true
+ SeatPrice:
+ Value: 35.2
+ Currency: USD
+ Warnings:
+ - Code: MISSING_LOYALTY_INFORMATION
+ Description: 'travelerFirstName,travelerLastName missing in request'
+ TransactionId: 7b8a36d9-c920-40da-999d-5eddd53318b2
+ '400':
+ description: >
+ Error shown when accept header or partner transaction ID is missing
+ or invalid.
+ Possible error codes are:
+ INVALID_ACCEPT_HEADER
+
+ INVALID_ARGUMENT
+ content:
+ application/vnd.exp-flight.v2+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV2Errors'
+ example:
+ Errors:
+ - Code: INVALID_ACCEPT_HEADER
+ Description: Please provide a valid Accept header
+ TransactionId: aedfd328-797a-43c9-9584-e901ea1f589d
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >
+ There is either no seat map data available for the request or supply
+ failed to provide seat map information due to internal failure.
+ Possible error codes are:
+ SEATMAP_NOT_AVAILABLE
+
+ SERVER_ERROR
+ content:
+ application/vnd.exp-flight.v2+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV2Errors'
+ example:
+ Errors:
+ - Code: SERVER_ERROR
+ Description: An error has occurred while processing the request
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ security:
+ - basicSchema: []
+ /flights/links:
+ post:
+ tags:
+ - Flight Links
+ parameters:
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v3+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ summary: Request for flight links
+ operationId: post-flight-links
+ description: >-
+ The API inputs define a particular flight itinerary. The API response
+ will include deeplinks to Expedia Flight Infosite and/or an API query
+ for details for the selected flight.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightLinksRequest'
+ example:
+ Flights:
+ - FlightId: abc
+ SplitTicket: false
+ Segments:
+ - FareType: PUBLISHED
+ Provider: Amadeus
+ LowCost: false
+ Legs:
+ - DepartureAirport:
+ Code: COK
+ ArrivalAirport:
+ Code: DOH
+ DepartureDateTime: '2021-05-06T03:35:00+05:30'
+ ArrivalDateTime: '2021-05-06T05:35:00+03:00'
+ FlightNumber: '517'
+ MarketingAirlineCode: QR
+ BookingCode: W
+ CabinClass: ECONOMY
+ - DepartureAirport:
+ Code: DOH
+ ArrivalAirport:
+ Code: ORD
+ DepartureDateTime: '2021-05-06T08:50:00+03:00'
+ ArrivalDateTime: '2021-05-06T14:55:00-05:00'
+ FlightNumber: '725'
+ MarketingAirlineCode: QR
+ BookingCode: W
+ CabinClass: ECONOMY
+ TotalPrice:
+ Value: '2576.68'
+ Currency: USD
+ - FlightId: def
+ SplitTicket: false
+ Segments:
+ - FareType: PUBLISHED
+ Provider: Sabre
+ LowCost: false
+ Legs:
+ - DepartureAirport:
+ Code: COK
+ ArrivalAirport:
+ Code: AUH
+ DepartureDateTime: '2021-05-06T21:25:00+05:30'
+ ArrivalDateTime: '2021-05-06T23:55:00+04:00'
+ FlightNumber: '6528'
+ MarketingAirlineCode: 9W
+ BookingCode: H
+ CabinClass: ECONOMY
+ - DepartureAirport:
+ Code: AUH
+ ArrivalAirport:
+ Code: ORD
+ DepartureDateTime: '2021-05-07T03:20:00+04:00'
+ ArrivalDateTime: '2021-05-07T08:55:00-05:00'
+ FlightNumber: '6405'
+ MarketingAirlineCode: 9W
+ BookingCode: H
+ CabinClass: ECONOMY
+ TotalPrice:
+ Value: '3266.52'
+ Currency: USD
+ Passengers:
+ Adult: '1'
+ Senior: '1'
+ ChildrenAges: '2,14'
+ Links:
+ - WD
+ - AD
+ responses:
+ '200':
+ description: Links returned successfully
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightLinksResponse'
+ '400':
+ description: Bad Request
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponse'
+ '401':
+ description: Unauthorized
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: Invalid authentication credentials
+ '403':
+ description: Forbidden
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: You cannot consume this service
+ '404':
+ description: Not Found
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: The server can't find the requested resource
+ '405':
+ description: Method Not Allowed
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: >-
+ The request method is known by the server but is not
+ supported by the target resource
+ '429':
+ description: Too Many Requests
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: >-
+ The user has sent too many requests in a given amount of
+ time
+ '500':
+ description: Internal Server Error
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponse'
+ '503':
+ description: Service Unavailable
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: The server is not ready to handle the request
+ '504':
+ description: Gateway Timeout
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - message
+ properties:
+ message:
+ type: string
+ example: >-
+ The server, while acting as a gateway or proxy, did not
+ get a response in time from the upstream server that it
+ needed in order to complete the request
+ /flights/listings:
+ get:
+ tags:
+ - Flight Listings
+ description: search flight products
+ operationId: get-flight-listings
+ parameters:
+ - name: adult
+ in: query
+ description: |-
+ Number of Adult Travelers.
+ Either one adult or one senior per itinerary is mandatory
+ schema:
+ type: integer
+ example: 1
+ - name: senior
+ in: query
+ description: Number of Senior (age > 65) Travelers
+ schema:
+ type: integer
+ example: 1
+ - name: childrenAges
+ in: query
+ description: >-
+ Comma-separated list of the ages of all child travelers (ages 2 -
+ 17).
+ explode: false
+ schema:
+ type: array
+ items:
+ type: integer
+ example: '4,5'
+ - name: infantInLap
+ in: query
+ description: |-
+ Number of Infant travelers without a reserved seat.
+ Age should be less than 2
+ schema:
+ type: integer
+ example: 1
+ - name: infantInSeat
+ in: query
+ description: |-
+ Number of Infant travelers with reserved seat.
+ Age should be less than 2
+ schema:
+ type: integer
+ example: 1
+ - name: segment1.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ departing.
+ required: true
+ schema:
+ type: string
+ example: LAS
+ - name: segment1.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ arriving.
+ required: true
+ schema:
+ type: string
+ example: LAX
+ - name: segment1.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ required: true
+ schema:
+ type: string
+ format: date
+ example: '2021-07-01'
+ - name: segment1.departureStartTime
+ in: query
+ description: >-
+ Lower limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ example: '07:00:00'
+ - name: segment1.departureEndTime
+ in: query
+ description: >-
+ Upper limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ example: '09:00:00'
+ - name: segment2.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ departing.
+ schema:
+ type: string
+ - name: segment2.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ arriving.
+ schema:
+ type: string
+ - name: segment2.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ schema:
+ type: string
+ format: date
+ - name: segment2.departureStartTime
+ in: query
+ description: >-
+ Lower limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment2.departureEndTime
+ in: query
+ description: >-
+ Upper limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment3.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ departing.
+ schema:
+ type: string
+ - name: segment3.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ arriving.
+ schema:
+ type: string
+ - name: segment3.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ schema:
+ type: string
+ format: date
+ - name: segment3.departureStartTime
+ in: query
+ description: >-
+ Lower limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment3.departureEndTime
+ in: query
+ description: >-
+ Upper limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment4.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ departing.
+ schema:
+ type: string
+ - name: segment4.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ arriving.
+ schema:
+ type: string
+ - name: segment4.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ schema:
+ type: string
+ format: date
+ - name: segment4.departureStartTime
+ in: query
+ description: >-
+ Lower limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment4.departureEndTime
+ in: query
+ description: >-
+ Upper limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment5.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ departing.
+ schema:
+ type: string
+ - name: segment5.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ arriving.
+ schema:
+ type: string
+ - name: segment5.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ schema:
+ type: string
+ format: date
+ - name: segment5.departureStartTime
+ in: query
+ description: >-
+ Lower limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment5.departureEndTime
+ in: query
+ description: >-
+ Upper limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment6.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ departing.
+ schema:
+ type: string
+ - name: segment6.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code/Location name from where the passenger is
+ arriving.
+ schema:
+ type: string
+ - name: segment6.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ schema:
+ type: string
+ format: date
+ - name: segment6.departureStartTime
+ in: query
+ description: >-
+ Lower limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: segment6.departureEndTime
+ in: query
+ description: >-
+ Upper limit of desired departure time window, expressed in the local
+ time of the departure location, in standard ISO format.
+ schema:
+ type: string
+ - name: locale
+ in: query
+ description: >-
+ Indicates the language and country with which the user would like to
+ see any translated information.
+ schema:
+ type: string
+ example: en_US
+ - name: cabinClass
+ in: query
+ description: >-
+ The desired cabin classes that the user would like to see offers
+ for.
+
+ Options can be: economy | first | business | premiumeconomy
+ schema:
+ type: string
+ enum:
+ - economy
+ - first
+ - business
+ - premiumeconomy
+ example: economy
+ - name: numberOfStops
+ in: query
+ description: >-
+ Filter for the number of stops the user would like to see offers
+ for.
+
+ A value of 0 returns only non-stop flights in the search response,
+ and a value of 1 returns offers
+ schema:
+ type: integer
+ example: 0
+ - name: sortType
+ in: query
+ description: |-
+ Sort the search results according to one selected category.
+ Only sort by price is supported at this time.
+ Note: default = Price
+ schema:
+ type: string
+ example: Price
+ - name: limit
+ in: query
+ description: |-
+ The maximum number of Flight offers returned in the response.
+ Must be an integer value greater than 0.Note: default = 1600
+ schema:
+ type: integer
+ example: 100
+ - name: selectedCarriers
+ in: query
+ description: >-
+ Adding comma-separated list of IATA or Expedia airline codes will
+ limit the search results to include flight offers only with the
+ selected carriers.
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ example: AS
+ - name: accountCodes
+ in: query
+ description: AlphaNumeric characters. Different codes separated by comma
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ example: AXP01
+ - name: agent
+ in: query
+ description: >-
+ Designates whether a telesales agent was involved in the
+ transaction.
+
+ true = telesales agent involved
+
+ false = no telesales agent involved
+ schema:
+ type: boolean
+ example: true
+ - name: links
+ in: query
+ description: >-
+ Comma-separated list that indicates which HATEOAS links should be
+ included in the response.
+
+ WD (Website Details Page - included by default)
+
+ AD (Details API link)
+
+ ABF (Baggage Fee API)
+
+ ASM (Seat Map API)
+
+ WPS (Web Package Search)
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - WD
+ - AD
+ - ABF
+ - ASM
+ - WPS
+ example: WD
+ - name: refundable
+ in: query
+ description: >-
+ Refundable solutions will be returned if and only if we pass
+ refundable as true in the request.(refundable=true).
+
+ (Not Yet Supported in Production)
+ schema:
+ type: boolean
+ example: true
+ - name: filterNearByAirport
+ in: query
+ description: >-
+ Filters nearby airports ensuring only results from the requests
+ airport code are returned.
+
+ This request param is valid only for AirportCode-based searches.
+
+ Note: default = false
+ schema:
+ type: boolean
+ example: true
+ - name: filterBasicEconomy
+ in: query
+ description: >-
+ Filters out all the Basic Economy fare solutions in the flight
+ search response.
+
+ Note: default = false
+ schema:
+ type: boolean
+ example: true
+ - name: anchorBy
+ in: query
+ description: >-
+ Designates that the user is doing a Multi-step Search.
+
+ Possible values are: segment1 | segment2 | segment3 | segment4 |
+ segment5
+ schema:
+ type: string
+ enum:
+ - segment1
+ - segment2
+ - segment3
+ - segment4
+ - segment5
+ example: segment1
+ - name: selectedOffer
+ in: query
+ description: >
+ Captures the previously selected flight segments during a Multi-step
+ Search.
+ schema:
+ type: string
+ example: >-
+ AQojCiEIwYIBEgM1MDQYi5ABIIu4ASihu5wBMPa7nAE4QkAAWAESCggBEAEYASoCQUEYASIECAEQASgCKAMoBDAC%2BAQokCiIIxJgBEgQyOTkyGIu4ASCLkAEovNycATCG3ZwBOEVAAFgBEgoIARABGAEqAkRMGAEiBAgBEAEoAigDKAQwAQ
+ - name: filterNonFlightOffers
+ in: query
+ description: >-
+ If set to true, this parameter filters out all non-Flight Offers
+ (offers with any of the legs comprising transit via Train, Bus or
+ Boat) from flight search response.
+
+ If the parameter is not present or is set to false, then Flight
+ Offers may contain travel legs via means other than flight (Train,
+ Bus or Boat).
+
+ Default value is false
+ schema:
+ type: boolean
+ example: true
+ - name: enableSplitTicket
+ in: query
+ description: >-
+ if set to false, this parameter will filter out all the split ticket
+ solutions from the Flight Offers.
+
+ If set to true (by default it will be true), API response will
+ include split ticket solutions if split ticket is enabled at key
+ configuration level as well.
+ schema:
+ type: boolean
+ example: true
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v3+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ responses:
+ '200':
+ description: Success Response
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightSearchResponse'
+ example:
+ Segments:
+ - SegmentId: MTRfUHVibGlzaGVk
+ FlightDuration: PT4H34M
+ TotalStops: 0
+ DepartureArrivalDayDifference: 1
+ AirportChange: false
+ SeatsLeft: 10
+ FareType: PUBLISHED
+ Legs:
+ - DepartureAirport:
+ Code: LAS
+ Name: McCarran Intl.
+ City: Las Vegas
+ Province: NV
+ Country: USA
+ Latitude: '36.085393'
+ Longitude: '-115.150098'
+ ArrivalAirport:
+ Code: FLL
+ Name: Fort Lauderdale - Hollywood Intl.
+ City: Fort Lauderdale
+ Province: FL
+ Country: USA
+ Latitude: '26.071529'
+ Longitude: '-80.1449'
+ DepartureDateTime: '2021-11-02T05:40:00.000Z'
+ ArrivalDateTime: '2021-11-02T10:14:00.000Z'
+ FlightNumber: '954'
+ MarketingAirlineCode: NK
+ MarketingAirlineName: Spirit Airlines
+ EquipmentCode: 32A
+ FlightOnTimePercentage: '80'
+ EquipmentName: AIRBUS INDUSTRIE A320 SHARKLETS
+ FlightDuration: PT4H34M
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '2161'
+ Unit: MI
+ BookingCode: R
+ CabinClass: ECONOMY
+ FareBasisCode: R7XSNR
+ MealOptions:
+ - FOOD_FOR_PURCHASE
+ Amenities:
+ Entertaintment:
+ Available: 'YES'
+ Wifi:
+ Available: 'YES'
+ Power:
+ Available: 'YES'
+ Offers:
+ - offerToken: >-
+ v5-sos-42b700553889490c9e966329ac528b67-3-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI+AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI
+ SplitTicket: false
+ OpaqueFlight: false
+ Free24HourCancellation: false
+ Links:
+ WebDetails:
+ Method: GET
+ Href: >-
+ https://www.expedia.com/go/udp?CCheck=1&NumAdult=1&NumSenior=1&NumChild=2&ChildrenAges=2|3&Class=3&Sort=10&TripType=OneWay&ProductType=air&eapid=0-1&ServiceVersion=V5&MessageGuid=80f50380-34fa-11e9-9415-0a6b914daa30&langid=1033&piid=v5-sos-42b700553889490c9e966329ac528b67-3-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI&Price=545.16&CurrencyCode=USD�cy=USD&DepartureTLA=L1:LAS&ArrivalTLA=L1:FLL&DepartureDate=L1:2021-11-01&ArrivalDate=L1:2021-11-02&RefundableFlightsOnly=N
+ SegmentIds:
+ - MTRfUHVibGlzaGVk
+ OfferPrice:
+ TotalPrice:
+ Value: '545.16'
+ Currency: USD
+ BasePrice:
+ Value: '453.92'
+ Currency: USD
+ TotalTaxes:
+ Value: '91.24'
+ Currency: USD
+ TotalTaxesAndFees:
+ Value: '91.24'
+ Currency: USD
+ AveragePricePerTicket:
+ Value: '136.29'
+ Currency: USD
+ Count: 4
+ PricePerPassengerCategory:
+ - Category: ADULT
+ Count: 1
+ TotalPrice:
+ Value: '136.29'
+ Currency: USD
+ BasePrice:
+ Value: '113.48'
+ Currency: USD
+ TotalTaxes:
+ Value: '22.81'
+ Currency: USD
+ - Category: CHILD
+ Count: 2
+ TotalPrice:
+ Value: '136.29'
+ Currency: USD
+ BasePrice:
+ Value: '113.48'
+ Currency: USD
+ TotalTaxes:
+ Value: '22.81'
+ Currency: USD
+ - Category: SENIOR
+ Count: 1
+ TotalPrice:
+ Value: '136.29'
+ Currency: USD
+ BasePrice:
+ Value: '113.48'
+ Currency: USD
+ TotalTaxes:
+ Value: '22.81'
+ Currency: USD
+ Refundable: false
+ RefundPenalty:
+ - SegmentIds:
+ - MTRfUHVibGlzaGVk
+ PreTripChange:
+ Allow: 'YES'
+ International: false
+ TicketType: ETicket
+ SearchCities:
+ - Code: FLL
+ City: Fort Lauderdale
+ Province: FL
+ Country: USA
+ ValidFormsOfPayment:
+ UG9pbnRzRXhwZWRpYVJld2FyZHMwLjAw:
+ - PaymentMethod: CREDITCARD
+ Name: AMERICANEXPRESS
+ Fee: '0.00'
+ Currency: USD
+ TransactionId: 80f50380-34fa-11e9-9415-0a6b914daa30
+ '400':
+ description: >-
+ Client side error while providing the request i.e bad / invalid
+ input parameters.
+ Possible Error codes { MISSING_ADULT_OR_SENIOR
+ INFANT_IN_LAP_ACCOMPANIED_BY_ADULT_OR_SENIOR
+ INVALID_CHILD_AGE
+ INVALID_ACCEPT_HEADER
+ INVALID_PASSENGER_COUNT
+ ORIGIN_REQUIRED
+ INVALID_ORIGIN
+ DESTINATION_REQUIRED
+ INVALID_DESTINATION
+ INVALID_DEPARTURE_DATE
+ INVALID_DEPARTURE_TIME
+ DEPARTURE_TIME_DEPARTURE_TIMESPAN_NOT_ALLOWED_TOGETHER
+ DEPARTURE_DATE_OUT_OF_RANGE
+ DEPARTURE_DATE_OUT_OF_RANGE
+ INVALID_LOCALE
+ INVALID_ADULT_COUNT
+ INVALID_SENIOR_COUNT
+ INVALID_CHILD_COUNT
+ INVALID_INFANT_IN_LAP_COUNT
+ INVALID_INFANT_IN_SEAT_COUNT
+ INVALID_SELECTED_CARRIERS
+ INVALID_SELECTED_CARRIERS
+ INVALID_NUMBER_OF_STOPS
+ INVALID_SORT_TYPE
+ INVALID_NUMBER_OF_FLIGHTS
+ SELECTED_FLIGHT_DETAILS_NOT_AVAILABLE
+ INVALID_ANCHOR
+ INVALID_CABIN_CLASS
+ INVALID_DEPARTURE_TIMESPAN
+ MISSING_MANDATORY_SEGMENT_DETAILS
+ ORIGIN_DESTINATION_SAME
+ INVALID_DEPARTURE_DATE
+ INVALID_LINKS
+ INVALID_AGENT
+ }
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: INVALID_ACCEPT_HEADER
+ Description: Please provide a valid Accept header
+ TransactionId: c38d0183-5c90-4db6-8c5e-31b7294cd06f
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '409':
+ description: >-
+ There are no flights for a requested criteria during flight search
+ API
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: NO_RESULTS_FOUND
+ Description: No flights solutions found for the request.
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >
+ Server side error like backend service has some issues or some
+ issues in EWS Air service. The Error code is SERVER_ERROR
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: SERVER_ERROR
+ Description: An error has occurred while processing the request
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ '/flights/details/{offerToken}':
+ get:
+ tags:
+ - Flight Details
+ description: >-
+ The Flight Details API will return validated pricing on the itinerary
+ passed in on the request.
+
+ It's a GET request with the transaction secured over HTTPS.
+
+ This message supports response in JSON and XML format.
+ operationId: get-flight-details
+ parameters:
+ - name: offerToken
+ in: path
+ description: a valid offerToken from the Flight Search API
+ required: true
+ schema:
+ type: string
+ example: >-
+ v5-sos-41e0c0266d6b4329a76e5d04f82c200a-23-39-2~2.S~AQoECL-kBBIICNQEEAEYwB8gASAMIAcgDSgCWAJwAA~AQoqCigIwYIBEgQyNzg1GIu4ASCLkAEo383sATCmzuwBOFFAAFgBagRNQUlOCioKKAjBggESBDI0NzkYi5ABIIu4ASiBgu0BMNWC7QE4UUAAWAFqBE1BSU4SCggCEAEYAioCQUEYASIECAEQASgCKAwoAygEMAI
+ - name: price
+ in: query
+ description: >-
+ Included to determine whether there is a price change between the
+ original search and the details response.
+ schema:
+ type: string
+ example: '94.8'
+ - name: locale
+ in: query
+ description: Defines request language and country for response.
+ schema:
+ type: string
+ example: en_US
+ - name: agent
+ in: query
+ description: >-
+ True means that a telesales agent is involved and the response
+ should include a telesales fee.
+ schema:
+ type: boolean
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v3+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ responses:
+ '200':
+ description: >-
+ Successful response from server. Include warning in some cases like
+ price change
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightDetailsResponse'
+ example:
+ Warnings:
+ - Code: PRICE_DECREASE
+ Description: A price change was detected
+ OriginalPrice:
+ Value: '127.59'
+ Currency: USD
+ NewPrice:
+ Value: '120.60'
+ Currency: USD
+ ChangedAmount:
+ Value: '6.99'
+ Currency: USD
+ Segments:
+ - SegmentId: >-
+ UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU=
+ FlightDuration: PT4H49M
+ TotalStops: 1
+ DepartureArrivalDayDifference: 0
+ AirportChange: false
+ FareType: PUBLISHED
+ Links:
+ ApiBaggageFees:
+ Accept: application/vnd.exp-flight.v1+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/flights/baggagefees/Cl8KAkFBEgJBQRoXMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAiA1NFQSoXMjAyMS0wNS0xNVQxOToxMDowMC4wMDAyA1BIWDoBUUIIUVZBSFpTTjVKB0VDT05PTVlSAzcxMApgCgJBQRICQUEaFzIwMjEtMDUtMTVUMTk6NDY6MDAuMDAwIgNQSFgqFzIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwMgNMQVM6AVFCCFFWQUhaU041SgdFQ09OT01ZUgQyMTA2GgJLRw
+ Price:
+ TotalPrice:
+ Value: '57.20'
+ Currency: USD
+ BasePrice:
+ Value: '31.63'
+ Currency: USD
+ TotalTaxes:
+ Value: '25.57'
+ Currency: USD
+ TotalTaxesAndFees:
+ Value: '25.57'
+ Currency: USD
+ AveragePricePerTicket:
+ Value: '57.20'
+ Currency: USD
+ Count: 1
+ PricePerPassengerCategory:
+ - Category: ADULT
+ Count: 1
+ TotalPrice:
+ Value: '57.20'
+ Currency: USD
+ BasePrice:
+ Value: '31.63'
+ Currency: USD
+ TotalTaxes:
+ Value: '25.57'
+ Currency: USD
+ Legs:
+ - Links:
+ ApiSeatMap:
+ Accept: application/vnd.exp-flight.v2+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/flights/seatmaps/CgFREgNTRUEaAkFBIhFBbWVyaWNhbiBBaXJsaW5lcyoLQWlyYnVzIEEzMjEyAzMyMTodMjAyMS0wNS0xNVQxOToxMDowMC4wMDAtMDc6MDBCHTIwMjEtMDUtMTVUMTY6MTA6MDAuMDAwLTA3OjAwSgM3MTBSA1BIWFoHRUNPTk9NWWICQUE
+ DepartureAirport:
+ Code: SEA
+ Name: Seattle - Tacoma Intl.
+ City: Seattle
+ Province: WA
+ Country: USA
+ Latitude: '47.44363'
+ Longitude: '-122.30175'
+ ArrivalAirport:
+ Code: PHX
+ Name: Sky Harbor Intl.
+ City: Phoenix
+ Province: AZ
+ Country: USA
+ Latitude: '33.43512'
+ Longitude: '-112.01034'
+ DepartureDateTime: '2021-05-15T23:10:00.000Z'
+ ArrivalDateTime: '2021-05-16T02:10:00.000Z'
+ FlightNumber: '710'
+ MarketingAirlineCode: AA
+ MarketingAirlineName: American Airlines
+ OperatingAirlineCode: AA
+ OperatingAirlineName: American Airlines
+ EquipmentCode: '321'
+ EquipmentName: Airbus A321
+ FlightDuration: PT3H
+ ConnectionTime: PT0H36M
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '1108'
+ Unit: MI
+ BookingCode: Q
+ CabinClass: ECONOMY
+ LoungeKeys:
+ - SEACENTURION
+ FareBasisCode: QVAHZSN5
+ - Links:
+ ApiSeatMap:
+ Accept: application/vnd.exp-flight.v2+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/flights/seatmaps/CgFREgNQSFgaAkFBIhFBbWVyaWNhbiBBaXJsaW5lcyoOQm9laW5nIDczNy04MDAyAzczODodMjAyMS0wNS0xNVQyMDo1OTowMC4wMDAtMDc6MDBCHTIwMjEtMDUtMTVUMTk6NDY6MDAuMDAwLTA3OjAwSgQyMTA2UgNMQVNaB0VDT05PTVliAkFB
+ DepartureAirport:
+ Code: PHX
+ Name: Sky Harbor Intl.
+ City: Phoenix
+ Province: AZ
+ Country: USA
+ Latitude: '33.43512'
+ Longitude: '-112.01034'
+ ArrivalAirport:
+ Code: LAS
+ Name: McCarran Intl.
+ City: Las Vegas
+ Province: NV
+ Country: USA
+ Latitude: '36.085393'
+ Longitude: '-115.150098'
+ DepartureDateTime: '2021-05-16T02:46:00.000Z'
+ ArrivalDateTime: '2021-05-16T03:59:00.000Z'
+ FlightNumber: '2106'
+ MarketingAirlineCode: AA
+ MarketingAirlineName: American Airlines
+ OperatingAirlineCode: AA
+ OperatingAirlineName: American Airlines
+ EquipmentCode: '738'
+ EquipmentName: Boeing 737-800
+ FlightDuration: PT1H13M
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '247'
+ Unit: MI
+ BookingCode: Q
+ CabinClass: ECONOMY
+ EquipmentChange: true
+ LoungeKeys:
+ - PHXCENTURION
+ FareBasisCode: QVAHZSN5
+ - SegmentId: >-
+ UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE=
+ FlightDuration: PT2H45M
+ TotalStops: 0
+ DepartureArrivalDayDifference: 0
+ AirportChange: false
+ FareType: PUBLISHED
+ Links:
+ ApiBaggageFees:
+ Accept: application/vnd.exp-flight.v1+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/flights/baggagefees/Cl8KAkRMEgJETBoXMjAyMS0wNS0yMFQxODoyNTowMC4wMDAiA0xBUyoXMjAyMS0wNS0yMFQyMToxMDowMC4wMDAyA1NFQToBVkIIVkFWU0EwTTFKB0VDT05PTVlSAzQ3NRoCS0c
+ Price:
+ TotalPrice:
+ Value: '63.40'
+ Currency: USD
+ BasePrice:
+ Value: '45.58'
+ Currency: USD
+ TotalTaxes:
+ Value: '17.82'
+ Currency: USD
+ TotalTaxesAndFees:
+ Value: '17.82'
+ Currency: USD
+ AveragePricePerTicket:
+ Value: '63.40'
+ Currency: USD
+ Count: 1
+ PricePerPassengerCategory:
+ - Category: ADULT
+ Count: 1
+ TotalPrice:
+ Value: '63.40'
+ Currency: USD
+ BasePrice:
+ Value: '45.58'
+ Currency: USD
+ TotalTaxes:
+ Value: '17.82'
+ Currency: USD
+ Legs:
+ - Links:
+ ApiSeatMap:
+ Accept: application/vnd.exp-flight.v2+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/flights/seatmaps/CgFWEgNMQVMaAkRMIgVEZWx0YSoLQWlyYnVzIEEzMjAyAzMyMDodMjAyMS0wNS0yMFQyMToxMDowMC4wMDAtMDc6MDBCHTIwMjEtMDUtMjBUMTg6MjU6MDAuMDAwLTA3OjAwSgM0NzVSA1NFQVoHRUNPTk9NWWICREw
+ DepartureAirport:
+ Code: LAS
+ Name: McCarran Intl.
+ City: Las Vegas
+ Province: NV
+ Country: USA
+ Latitude: '36.085393'
+ Longitude: '-115.150098'
+ ArrivalAirport:
+ Code: SEA
+ Name: Seattle - Tacoma Intl.
+ City: Seattle
+ Province: WA
+ Country: USA
+ Latitude: '47.44363'
+ Longitude: '-122.30175'
+ DepartureDateTime: '2021-05-21T01:25:00.000Z'
+ ArrivalDateTime: '2021-05-21T04:10:00.000Z'
+ FlightNumber: '475'
+ MarketingAirlineCode: DL
+ MarketingAirlineName: Delta
+ OperatingAirlineCode: DL
+ OperatingAirlineName: Delta
+ EquipmentCode: '320'
+ FlightOnTimePercentage: '90'
+ EquipmentName: Airbus A320
+ FlightDuration: PT2H45M
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '875'
+ Unit: MI
+ BookingCode: V
+ CabinClass: ECONOMY
+ LoungeKeys:
+ - LASCENTURION
+ FareBasisCode: VAVSA0M1
+ Offer:
+ offerToken: >-
+ 4c3d825f95074cbdbdf1daecc4fa3011-0-1-st-4309de795593486e99dfa6e3bc2e9280-0-1~2.D~AQoECL-kBBIICNQEEAEYwB8gASgCWAJwAHAA~AQpSCiYIwYIBEgM3MTAYkgEg77kBKM7M7AEwgs7sAThRQABYAWoETUFJTgooCMGCARIEMjEwNhjvuQEgi5ABKKbO7AEw787sAThRQAFYAWoETUFJThIKCAEQARgBKgJBQRgBIgQIARABKAIoAygEMAI.AQotCisIxJgBEgM0NzUYi5ABIJIBKPWF7QEwmoftAThWQABYAWoJTUFJTkNBQklOEgoIARABGAEqAkRMGAEiBAgBEAEoAigDKAQwAg
+ SplitTicket: true
+ OpaqueFlight: false
+ Free24HourCancellation: true
+ MerchantName: Delta*American Airlines
+ Links:
+ ApiFareRules:
+ Accept: application/vnd.exp-flight.v1+json
+ Method: GET
+ Href: >-
+ https://apim.expedia.com/flights/farerules/CgVjb2FjaBoJUHVibGlzaGVkIgd1bmtub3duKgl1bml2ZXJzYWwyAkFBQksIARIZMjAyMS0wNS0xNVQxNjoxMDowMC0wNzowMBoDUEhYIgNTRUEqAkFBMghRVkFIWlNONUIGU0VBTEFTSgVTYWJyZWoFQURVTFRCSwgCEhkyMDIxLTA1LTE1VDE5OjQ2OjAwLTA3OjAwGgNMQVMiA1BIWCoCQUEyCFFWQUhaU041QgZTRUFMQVNKBVNhYnJlagVBRFVMVA+CgVjb2FjaBoJUHVibGlzaGVkIgd1bmtub3duKgl1bml2ZXJzYWwyAkRMQksIARIZMjAyMS0wNS0yMFQxODoyNTowMC0wNzowMBoDU0VBIgNMQVMqAkRMMghWQVZTQTBNMUIGTEFTU0VBSgVTYWJyZWoFQURVTFQ
+ ApiBooking:
+ Accept: application/vnd.exp-flight.v3+json
+ Method: POST
+ Href: >-
+ https://apim.expedia.com/flights/bookings/4c3d825f95074cbdbdf1daecc4fa3011-0-1-st-4309de795593486e99dfa6e3bc2e9280-0-1~2.D~AQoECL-kBBIICNQEEAEYwB8gASgCWAJwAHAA~AQpSCiYIwYIBEgM3MTAYkgEg77kBKM7M7AEwgs7sAThRQABYAWoETUFJTgooCMGCARIEMjEwNhjvuQEgi5ABKKbO7AEw787sAThRQAFYAWoETUFJThIKCAEQARgBKgJBQRgBIgQIARABKAIoAygEMAI.AQotCisIxJgBEgM0NzUYi5ABIJIBKPWF7QEwmoftAThWQABYAWoJTUFJTkNBQklOEgoIARABGAEqAkRMGAEiBAgBEAEoAigDKAQwAg?price=120.60¤cy=USD
+ SegmentIds:
+ - >-
+ UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU=
+ - >-
+ UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE=
+ OfferPrice:
+ TotalPrice:
+ Value: '120.60'
+ Currency: USD
+ BasePrice:
+ Value: '77.21'
+ Currency: USD
+ Fees:
+ - Value: '0.00'
+ Currency: USD
+ Name: Service
+ TotalTaxes:
+ Value: '43.39'
+ Currency: USD
+ TotalTaxesAndFees:
+ Value: '43.39'
+ Currency: USD
+ AveragePricePerTicket:
+ Value: '120.60'
+ Currency: USD
+ Count: 1
+ PricePerPassengerCategory:
+ - Category: ADULT
+ Count: 1
+ TotalPrice:
+ Value: '120.60'
+ Currency: USD
+ BasePrice:
+ Value: '77.21'
+ Currency: USD
+ TotalTaxes:
+ Value: '43.39'
+ Currency: USD
+ Refundable: false
+ RefundPenalty:
+ - SegmentIds:
+ - >-
+ UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU=
+ PreTripChange:
+ Allow: 'YES'
+ Penalty:
+ Value: '0.00'
+ Currency: USD
+ PreTripCancel:
+ Allow: 'NO'
+ EnrouteChange:
+ Allow: 'YES'
+ Penalty:
+ Value: '0.00'
+ Currency: USD
+ EnrouteCancel:
+ Allow: 'NO'
+ Transferable: 'NO'
+ NameChangeAllowed: 'NO'
+ - SegmentIds:
+ - >-
+ UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE=
+ PreTripChange:
+ Allow: 'YES'
+ Penalty:
+ Value: '0.00'
+ Currency: USD
+ PreTripCancel:
+ Allow: 'NO'
+ EnrouteChange:
+ Allow: 'NO'
+ EnrouteCancel:
+ Allow: 'NO'
+ Transferable: 'NO'
+ NameChangeAllowed: 'NO'
+ International: false
+ TicketType: ETicket
+ UndisclosedGenderSupported: false
+ UnspecifiedGenderSupported: false
+ FareOptions:
+ - FareName: Comfort+
+ SegmentIds:
+ - >-
+ UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU=
+ - >-
+ UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE=
+ Included:
+ - CARRY_ON_BAG
+ FeeApplied:
+ - Meals
+ ValidFormsOfPayment:
+ - PaymentMethod: DebitCard
+ Name: Visa
+ Fee: '0.00'
+ Currency: USD
+ - PaymentMethod: CreditCard
+ Name: AmericanExpress
+ Fee: '0.00'
+ Currency: USD
+ - PaymentMethod: CreditCard
+ Name: MasterCard
+ Fee: '0.00'
+ Currency: USD
+ - PaymentMethod: DebitCard
+ Name: MasterCard
+ Fee: '0.00'
+ Currency: USD
+ - PaymentMethod: DebitCard
+ Name: AmericanExpress
+ Fee: '0.00'
+ Currency: USD
+ - PaymentMethod: CreditCard
+ Name: Visa
+ Fee: '0.00'
+ Currency: USD
+ Lounges:
+ PHXCENTURION:
+ - Name: The Centurion Lounge
+ IsConferenceRoomAvailable: false
+ PhoneNumber: N/A
+ Description: >-
+ Terminal 4, across from Gate B22 on the upper level, 9
+ am - 5 pm
+ SEACENTURION:
+ - Name: The Centurion Lounge
+ IsConferenceRoomAvailable: false
+ PhoneNumber: N/A
+ Description: 'Concourse B, opposite Gate B3'
+ LASCENTURION:
+ - Name: The Centurion Lounge
+ IsConferenceRoomAvailable: true
+ PhoneNumber: N/A
+ Description: 'Concourse D opposite Gate D1, 5am to 11pm'
+ TransactionId: e883fc9a-2cfa-4b13-b7b1-4bcee3a5dea6
+ '400':
+ description: >-
+ Invalid accept header. Please provide a valid Accept header, The
+ accept header provided is not as per the documentation.
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: INVALID_ACCEPT_HEADER
+ Description: Please provide a valid Accept header
+ TransactionId: 5737a450-4a04-4b16-b803-54ca5f651093
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '409':
+ description: Flight not available. The request flight is not longer available
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: FLIGHT_NOT_AVAILABLE
+ Description: Requested flight is not available.
+ TransactionId: d15e3738-c4ce-436f-a1a5-7033856981c4
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >-
+ Server side error, An error has occurred while processing the
+ request. There is a server-side issue that has resulted in a
+ failure.
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: SERVER_ERROR
+ Description: No flights solutions found for the request.
+ TransactionId: cf4bc542-1f0f-4312-a20e-b99926e25946
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ /flights/flexsearch:
+ get:
+ tags:
+ - Flight FlexSearch
+ description: request for flexsearch information
+ operationId: get-flight-flexsearch
+ parameters:
+ - name: segment1.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name from where the passenger
+ is departing.
+ required: true
+ schema:
+ type: string
+ example: LAS
+ - name: segment1.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name to where the passenger
+ is arriving.
+ required: true
+ schema:
+ type: string
+ example: LAX
+ - name: segment1.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ required: true
+ schema:
+ type: string
+ format: date
+ example: '2021-07-01'
+ - name: segment2.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name from where the passenger
+ is departing.
+ schema:
+ type: string
+ - name: segment2.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name to where the passenger
+ is arriving.
+ schema:
+ type: string
+ - name: segment2.departureDate
+ in: query
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.'
+ schema:
+ type: string
+ format: date
+ - name: includeSegmentDetails
+ in: query
+ description: |-
+ If included, the response will included all segment and leg details.
+ By default, the value of this parameter will be false.
+ schema:
+ type: boolean
+ example: true
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v3+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ responses:
+ '200':
+ description: flexsearch information returned successfully
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlexSearchResponse'
+ example:
+ Offers:
+ - DepartureDates:
+ - '2021-03-31T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '100.39'
+ Currency: USD
+ - DepartureDates:
+ - '2021-04-01T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '100.39'
+ Currency: USD
+ - DepartureDates:
+ - '2021-04-02T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '95.39'
+ Currency: USD
+ - DepartureDates:
+ - '2021-04-03T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '95.39'
+ Currency: USD
+ - DepartureDates:
+ - '2021-04-04T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '100.39'
+ Currency: USD
+ - DepartureDates:
+ - '2021-04-05T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '105.39'
+ Currency: USD
+ - DepartureDates:
+ - '2021-04-06T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '95.39'
+ Currency: USD
+ TransactionId: 75989c80-7299-11ea-81fa-aad83eab0074
+ '400':
+ description: Disambiguation Response
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ type: object
+ required:
+ - Errors
+ - TransactionId
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ type: object
+ properties:
+ Error:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ LocationOptions:
+ type: array
+ description: >-
+ Container for list of matching locations
+ corresponding to the value entered in the
+ location keyword search.
+ items:
+ type: object
+ properties:
+ LocationOption:
+ required:
+ - Locations
+ - RequestedLocation
+ type: object
+ properties:
+ RequestedLocation:
+ type: string
+ description: Location used in partner request.
+ example: Paris
+ Locations:
+ type: array
+ description: >-
+ Container for list of possible locations
+ that could be used to disambiguate the
+ query.
+ items:
+ type: object
+ properties:
+ Location:
+ required:
+ - LocationId
+ - Name
+ type: object
+ properties:
+ Type:
+ type: string
+ description: >-
+ The type of location code (MULTICITY |
+ METROCODE).
+ example: MULTICITY
+ Id:
+ type: string
+ description: >-
+ Expedia Region ID of the specified
+ airport.
+ example: '6139103'
+ Name:
+ type: string
+ description: Location Name
+ example: Seattle-Tacoma International Airport
+ Code:
+ type: string
+ description: Location Code
+ example: SEA
+ Address:
+ type: string
+ description: >-
+ Street address of the location (if
+ available)
+ example: 'Paris, France (PAR-All Airports)'
+ GeoLocation:
+ $ref: >-
+ #/components/schemas/FlightsV3GeoLocation
+ Country:
+ type: object
+ properties:
+ Country:
+ type: object
+ properties:
+ Code:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ description: >-
+ Container for disambiguation country
+ information
+ description: >-
+ Container for list of possible locations
+ that could be used to disambiguate the
+ query.
+ description: >-
+ List for possible locations from which the
+ customer must choose the best one to be
+ re-submitted in the request.
+ description: Container for error list.
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ example:
+ Errors:
+ - Code: MULTIPLE_AMBIGUOUS_LOCATION
+ Description: >-
+ No or multiple available airport(s) was found which match
+ your city name, please check the details.
+ TransactionId: aedfd328-797a-43c9-9584-e901ea1f589d
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: No flights solutions found for the request.
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ type: object
+ required:
+ - Errors
+ - TransactionId
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ type: object
+ properties:
+ Error:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ LocationOptions:
+ type: array
+ description: >-
+ Container for list of matching locations
+ corresponding to the value entered in the
+ location keyword search.
+ items:
+ type: object
+ properties:
+ LocationOption:
+ required:
+ - Locations
+ - RequestedLocation
+ type: object
+ properties:
+ RequestedLocation:
+ type: string
+ description: Location used in partner request.
+ example: Paris
+ Locations:
+ type: array
+ description: >-
+ Container for list of possible locations
+ that could be used to disambiguate the
+ query.
+ items:
+ type: object
+ properties:
+ Location:
+ required:
+ - LocationId
+ - Name
+ type: object
+ properties:
+ Type:
+ type: string
+ description: >-
+ The type of location code (MULTICITY |
+ METROCODE).
+ example: MULTICITY
+ Id:
+ type: string
+ description: >-
+ Expedia Region ID of the specified
+ airport.
+ example: '6139103'
+ Name:
+ type: string
+ description: Location Name
+ example: Seattle-Tacoma International Airport
+ Code:
+ type: string
+ description: Location Code
+ example: SEA
+ Address:
+ type: string
+ description: >-
+ Street address of the location (if
+ available)
+ example: 'Paris, France (PAR-All Airports)'
+ GeoLocation:
+ $ref: >-
+ #/components/schemas/FlightsV3GeoLocation
+ Country:
+ type: object
+ properties:
+ Country:
+ type: object
+ properties:
+ Code:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ description: >-
+ Container for disambiguation country
+ information
+ description: >-
+ Container for list of possible locations
+ that could be used to disambiguate the
+ query.
+ description: >-
+ List for possible locations from which the
+ customer must choose the best one to be
+ re-submitted in the request.
+ description: Container for error list.
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ example:
+ Errors:
+ - Code: SERVER_ERROR
+ Description: No flights solutions found for the request.
+ TransactionId: 68bce810-5af7-40c1-bea7-07a823b6f1f0
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+ /flights/farecalendar:
+ get:
+ tags:
+ - Flight FareCalendar
+ description: >-
+ API that will return the lowest fares for multiple days so that the same
+ can be displayed as a booking widget calendar.
+ operationId: get-flights-farecalendar
+ parameters:
+ - name: segment1.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name from where the passenger
+ is departing.
+ required: true
+ schema:
+ type: string
+ example: LAS
+ - name: segment1.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name from where the passenger
+ is arriving.
+ required: true
+ schema:
+ type: string
+ example: LAX
+ - name: segment2.origin
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name from where the passenger
+ is departing in the second segment.
+ schema:
+ type: string
+ - name: segment2.destination
+ in: query
+ description: >-
+ 3-letter IATA Airport code or location name from where the passenger
+ is arriving in the second segment.
+ schema:
+ type: string
+ - name: departureDate
+ in: query
+ description: >-
+ Designates the date which decides the fare calendar response.
+
+ For One Way trips, the response shows offers with price from
+ departureDate till departureDate + 60 days
+
+ For RoundTrip,
+
+ If the trip=outbound, then the response shows offers with price from
+ departureDate of outbound segment till departureDate + 60 days.
+
+ If the trip=inbound, then the response shows offers with price from
+ departureDate of inbound segment till departureDate + 14 days.
+ required: true
+ schema:
+ type: string
+ format: date
+ example: '2021-10-01'
+ - name: trip
+ in: query
+ description: >
+ Required for RoundTrip for identifying whether we are requesting for
+ inbound or outbound.
+ Possible values :
+ inbound
+ outbound
+ schema:
+ type: string
+ enum:
+ - inbound
+ - outbound
+ - name: includeSegmentDetails
+ in: query
+ description: >-
+ If the user wants to know the segment details of the offer then they
+ can send this param as true and will get the segment and leg level
+ details in the response. By default this will be set as false.
+ schema:
+ type: boolean
+ - name: Key
+ in: header
+ description: |-
+ Unique identifier assigned to partner.
+ Required for all requests.
+ Obtained from Expedia Account Manager or representative.
+ required: true
+ schema:
+ type: string
+ example: X99X9X9-99XX-9XX9-X999-99XX99X9X999X
+ - name: Partner-Transaction-ID
+ in: header
+ description: Partner-generated identifier.
+ required: true
+ schema:
+ type: string
+ example: 123456-798101112
+ - name: Accept
+ in: header
+ description: Accept header for the request.
+ required: true
+ schema:
+ type: string
+ example: application/vnd.exp-flight.v3+json
+ - name: Accept-Encoding
+ in: header
+ description: Accept encoding for the request.
+ required: false
+ schema:
+ type: string
+ example: gzip
+ responses:
+ '200':
+ description: Farecalendar response returned successfully.
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FareCalendarResponse'
+ example:
+ Offers:
+ - DepartureDate: '2021-05-24T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '128.39'
+ Currency: USD
+ - DepartureDate: '2021-05-25T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '202.19'
+ Currency: USD
+ - DepartureDate: '2021-05-26T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '137.19'
+ Currency: USD
+ - DepartureDate: '2021-05-27T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '123.41'
+ Currency: USD
+ TransactionId: 0f2bc850-62bd-11ea-9e71-0aae9a66c99a
+ '400':
+ description: Bad request from client.
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: ORIGIN_REQUIRED
+ Description: Origin Airport is not set properly
+ TransactionId: 05d400eb-3601-418c-9830-591014e39182
+ '401':
+ description: Unauthorized or Invalid authentication credentials
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: |-
+ {
+ "message": "Unauthorized"
+ }
+ Invalid authentication credentials:
+ value: |-
+ {
+ "message": "Invalid authentication credentials"
+ }
+ '403':
+ description: cannot consume this service
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: |-
+ {
+ "message": "You cannot consume this service"
+ }
+ '404':
+ description: No Route matched
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: |-
+ {
+ "message": "no Route matched with those values"
+ }
+ '429':
+ description: API rate limit exceeded
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: |-
+ {
+ "message": "API rate limit exceeded"
+ }
+ '500':
+ description: >-
+ Either supply or EWSAir failed to provide fare calendar response due
+ to internal failure.
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: AMBIGUOUS_LOCATION
+ DetailCode: NO_AIRPORT_RETURNED
+ Description: >-
+ No or multiple available airport(s) was found which match
+ your city name, please check the details.
+ LocationOptions:
+ - RequestedLocation: BLGQW
+ TransactionId: d7203acc-b124-438d-9948-9ea95d81bb1d
+ '503':
+ description: name resolution failed
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: |-
+ {
+ "message": "name resolution failed"
+ }
+ '504':
+ description: upstream server is timing out
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: The upstream server is timing out
+components:
+ schemas:
+ Address:
+ type: object
+ properties:
+ Address1:
+ type: string
+ description: 'Street Number, Street Name, or PO Box'
+ example: 724 Pine St
+ Address2:
+ type: string
+ description: >-
+ Apartment, Floor, Suite, Bldg or more specific information about
+ Address1.
+ example: Second Floor
+ City:
+ type: string
+ description: The city
+ example: New York
+ Province:
+ type: string
+ description: The state or province
+ example: NY
+ Country:
+ type: string
+ description: 3-letter code for the country
+ example: USA
+ PostalCode:
+ type: string
+ description: Zip/postal code
+ example: '98004'
+ description: The address information of the location.
+ AgeClassRestriction:
+ type: object
+ properties:
+ AgeClass:
+ type: string
+ description: 'Categories for hotel guests, based on age.'
+ example: Senior
+ enum:
+ - All Ages
+ - Senior
+ - Adult
+ - Child
+ - Infant
+ - Other
+ AgeMinimum:
+ type: integer
+ description: The minimum age defined in a particular `AgeClass`.
+ format: int32
+ example: 2
+ AgeMaximum:
+ type: integer
+ description: |
+ The maximum age defined in a particular `AgeClass`.
+
+ If not specified, the `AgeClass` has no upper bound.
+ format: int32
+ example: 17
+ MaxGuestCount:
+ type: integer
+ description: The max guest count allowed in a particular `AgeClass`.
+ format: int32
+ example: 3
+ description: Container for room occupancy rules based on the age of the guests.
+ BedType:
+ type: object
+ properties:
+ Id:
+ type: string
+ description: The bed type ID
+ example: '40'
+ Description:
+ type: string
+ description: The bed type description.
+ example: 1 bed
+ description: >
+ Statement of bed types available for this offer. A room may have several
+ bed type options available.
+
+
+ **NOTE**: due to the large number of bed type options available, we no
+ longer publish a list of available
+
+ bed types. More information is available in
+
+ [Lodging Bed
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/bed-types).
+ CancellationPenaltyRule:
+ type: object
+ properties:
+ PenaltyNightCount:
+ type: integer
+ description: >
+ Specifies the per-stay cancellation fee charged in terms of the cost
+ of the number of nights listed, in
+
+ addition to any other penalties. The rate charged is based on the
+ earliest night(s) of the stay.
+ format: int32
+ example: 1
+ PenaltyPercentOfStay:
+ type: string
+ description: >
+ Specifies the per-stay cancellation fee charged as a percentage of
+ the total rate, in addition to any other
+
+ penalties listed.
+ example: '100'
+ PenaltyPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: >-
+ Specifies the cancellation fee in terms of a set fee, in
+ addition to any other penalties listed.
+ PenaltyStartDateTime:
+ type: string
+ description: >
+ The beginning of the window of time when the
+ `CancellationPenaltyRule` is in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the hotel.
+ format: date-time
+ example: '2022-07-23T23:00:00.000Z'
+ PenaltyEndDateTime:
+ type: string
+ description: >
+ The end of the window of time when the `CancellationPenaltyRule` is
+ in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the hotel.
+ format: date-time
+ example: '2022-07-25T23:00:00.000Z'
+ WaiverPolicy:
+ type: object
+ properties:
+ WaiverPolicyDescription:
+ type: string
+ description: >
+ The localized waiver policy description, which could be put in front
+ of cancellation policy description.
+ example: >
+ You can cancel for a full refund up to 24 hours after booking (not
+ applicable to bookings made within 72 hours of check-in time). After
+ 24 hours:
+ CancellationPolicy:
+ type: object
+ properties:
+ WaiverPolicy:
+ $ref: '#/components/schemas/WaiverPolicy'
+ CancellableOnline:
+ type: boolean
+ description: >-
+ Boolean value to identify if the reservation can be cancelled
+ online.
+
+ If false, the customer will only be able to cancel a refundable room
+ by calling Expedia Customer Service.
+ example: true
+ Refundable:
+ type: boolean
+ description: Indicate whether the rate is refundable or not.
+ example: true
+ FreeCancellation:
+ type: boolean
+ description: Indicate whether the room can be cancelled free of charge.
+ example: true
+ FreeCancellationEndDateTime:
+ type: string
+ description: >
+ The date and time until which the room can be cancelled free of
+ charge.
+
+
+ This is expressed in the local time of the Hotel.
+ format: date-time
+ CancellationPenaltyRules:
+ type: array
+ description: Container for cancellation penalty details.
+ items:
+ $ref: '#/components/schemas/CancellationPenaltyRule'
+ CancelPolicyDescription:
+ type: string
+ description: Additional cancellation policy information available as static text.
+ example: 'Free cancellation available before 2022-07-18T16:00:00-08:00'
+ NonRefundableDateRanges:
+ type: array
+ description: >
+ A list of dates ranges that are non-refundable.
+
+
+ **Note**: The stay dates in those date ranges will always be charged
+ whenever there is any cancellation
+
+ penalty rule.
+ items:
+ $ref: '#/components/schemas/NonRefundableDateRange'
+ description: Container for room cancellation policy.
+ ChainAndBrandInfo:
+ type: object
+ properties:
+ ChainId:
+ type: integer
+ description: The chain id.
+ format: int32
+ example: -5
+ ChainName:
+ type: string
+ description: The name of the chain.
+ example: Hilton Worldwide
+ BrandId:
+ type: integer
+ description: The brand id.
+ format: int32
+ example: 33
+ BrandName:
+ type: string
+ description: The name of the brand.
+ example: Doubletree
+ description: >
+ The chain and brand information of hotel.
+
+
+ Only visible by configuration. Please contact your Expedia Account
+ Manager if you need this node.
+ Country:
+ type: object
+ properties:
+ Name:
+ type: string
+ description: country name
+ example: Ireland
+ IsoCode2:
+ type: string
+ description: 2-letter code for the country
+ example: IE
+ IsoCode3:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ description: Container for disambiguation country information
+ DepositDetail:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: >-
+ Should be one of the following values:
+
+ PERCENT
+
+ The deposit amount is calculated as a percentage of the total
+ booking cost.
+
+ NIGHT
+
+ The deposit amount is calculated in terms of nights plus tax.
+
+ AMOUNT
+
+ The deposit amount in USD.
+
+ REMAINDER
+
+ The deposit amount is equal to the booking cost minus any deposits
+ that have been made before this point.
+ example: NIGHT
+ enum:
+ - PERCENT
+ - NIGHT
+ - AMOUNT
+ - REMAINDER
+ Value:
+ type: string
+ description: >-
+ Value to indicate how many/much of the type listed above is going to
+ be charged as a deposit.
+ example: '1'
+ When:
+ $ref: '#/components/schemas/When'
+ description: Container for deposit policy details
+ DepositPolicy:
+ type: object
+ properties:
+ Description:
+ type: array
+ items:
+ type: string
+ Details:
+ type: array
+ description: Container for deposit policy details
+ items:
+ $ref: '#/components/schemas/DepositDetail'
+ description: Container for deposit policy details
+ Description:
+ type: object
+ properties:
+ LocationTeaser:
+ type: string
+ description: A description of the property's location.
+ example: Built on the original site of the University of Washington
+ HotelTeaser:
+ type: string
+ description: A description of the features and amenities of the property itself.
+ example: A top-notch fitness club and spa features a pool
+ RoomTeaser:
+ type: string
+ description: The common description for all of the rooms in the property.
+ example: 'Renovated in May 2016, guest rooms feature upholstered chairs'
+ description: Container for the descriptions of the property.
+ Distance:
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The distance between the center of the search and the hotel.
+ example: '75'
+ Unit:
+ type: string
+ description: The unit of distance.
+ example: km
+ enum:
+ - km
+ - mi
+ Direction:
+ type: string
+ description: The direction to the hotel from the center point of the search.
+ example: 'N'
+ enum:
+ - 'N'
+ - S
+ - W
+ - E
+ - NW
+ - NE
+ - SW
+ - SE
+ description: >
+ Container for distance information.
+
+
+ Only returned for city/address search or `geoLocation` search or single
+ `regionId` search.
+ GeoLocation:
+ type: object
+ properties:
+ Latitude:
+ type: string
+ description: Latitude of the location.
+ example: '38.184978'
+ Longitude:
+ type: string
+ description: Longitude of the location.
+ example: '85.7412'
+ Obfuscated:
+ type: boolean
+ description: Container for Geo location.
+ Hotel:
+ type: object
+ properties:
+ Id:
+ type: string
+ description: >-
+ The unique, Expedia-specific hotel property identifier used to
+ designate a single hotel.
+ example: '14747'
+ HcomId:
+ type: string
+ description: >
+ The unique, Hotels.com-specific hotel property identifier used to
+ designate a single hotel.
+
+
+ This will only be returned if searching via hcomHotelIds in request.
+ example: '10532'
+ Name:
+ type: string
+ description: The common name of the hotel
+ example: Four Seasons Hotel Seattle
+ PropertyType:
+ $ref: '#/components/schemas/HotelPropertyType'
+ PropertyDetails:
+ $ref: '#/components/schemas/PropertyDetails'
+ LocalCurrencyCode:
+ type: string
+ description: >-
+ The Local Currency Code for Hotel (which will be used for any fees
+ that must be paid at the hotel)
+ example: USD
+ Location:
+ allOf:
+ - $ref: '#/components/schemas/Location'
+ - description: Container for information about the location of the hotel.
+ PhoneInfos:
+ type: array
+ description: >
+ Container for property phone numbers.
+
+
+ Note: PhoneInfos section will not return for Vrbo Vacation Rental
+ properties.
+ items:
+ $ref: '#/components/schemas/Phone'
+ Distance:
+ $ref: '#/components/schemas/Distance'
+ Description:
+ $ref: '#/components/schemas/Description'
+ Status:
+ type: string
+ description: >
+ Indicates whether there are available offers at the property during
+ the dates requested, as well as
+
+ information as to why.
+
+
+ Note that pricing will only be present in the API response
+ for a status of `AVAILABLE`.
+
+
+ If there are no rooms available at the property for the dates
+ requested, then `NOT_AVAILABLE` will be
+
+ returned.
+
+
+ If there are available rooms, but none that meet the specific
+ parameters of the search request,
+
+ then one of the other messages will be returned.
+ example: AVAILABLE
+ enum:
+ - AVAILABLE
+ - NOT_AVAILABLE
+ - ERROR
+ - NUMBER_OF_ADULTS_NOT_ACCEPTED
+ - NUMBER_OF_CHILDREN_NOT_ACCEPTED
+ - NUMBER_OF_INFANTS_NOT_ACCEPTED
+ - NUMBER_OF_PERSONS_NOT_ACCEPTED
+ - CHECK_IN_AGE_NOT_ACCEPTED
+ RenovationsAndClosures:
+ type: array
+ description: The information about renovations and closures
+ example:
+ - The following facilities are closed seasonally each year...
+ items:
+ type: string
+ description: The information about renovations and closures
+ example: The following facilities are closed seasonally each year...
+ ChainAndBrandInfo:
+ $ref: '#/components/schemas/ChainAndBrandInfo'
+ ThumbnailUrl:
+ type: string
+ description: >
+ URL of the thumbnail image of the hotel.
+
+
+ Note that other images sizes are available - You can find a link to
+ the complete list of Supported
+
+ Hotel Image Sizes in [Lodging Image Captions, IDs, and
+ Sizes](https://developers.expediagroup.com/xap/products/xap/lodging/references/image-captions-ids-and-sizes).
+ example: >-
+ https://images.trvl-media.com/hotels/3000000/2170000/2163100/2163007/2163007_15_t.jpg
+ StarRating:
+ type: string
+ description: Star rating value of the hotel property.
+ example: '5.0'
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ GuestRating:
+ type: string
+ description: |
+ Average overall guest rating of the hotel.
+
+ The value is between 1.0 and 5.0 in 0.1 increments.
+
+ Higher is better.
+ example: '4.5'
+ GuestReviewCount:
+ type: integer
+ description: >-
+ The total count of guest reviews used to create the average
+ `GuestRating` above.
+ format: int32
+ example: 240
+ PetFriendly:
+ type: boolean
+ description: >
+ Indicates whether the property allows certain pets under certain
+ circumstances.
+
+
+ Prior to booking, guests should review the PetPolicies information
+ in the Lodging Details API to find out
+
+ whether a particular pet will be permitted to stay at the property.
+ example: true
+ LgbtqiaFriendly:
+ type: boolean
+ description: >-
+ This value is returned if the property owner has specifically
+ designated this property as LGBTQIA-friendly.
+ example: true
+ Links:
+ type: object
+ properties:
+ WebSearchResult:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: Link to web search result page.
+ ApiRateCalendar:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: Link for Rate Calendar API.
+ additionalProperties:
+ $ref: '#/components/schemas/Link'
+ description: >
+ Container for list of **HATEOAS** links to Expedia website to
+ complete booking.
+
+
+ This links section will only return a deeplink to the Website Search
+ Results page by default.
+
+
+ If you have selected AD deeplinks they will only appear
+ within the `RoomTypes` section of the
+
+ response, as the Lodging Details API returns details at the room
+ offer level, and not at the property level.
+ Policies:
+ $ref: '#/components/schemas/HotelPolicies'
+ CleanlinessAndSafety:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: string
+ description: >
+ Container for all cleanliness and safety measures.
+
+
+ The key is the measures category, the values are the information.
+ The category will be:
+
+ - CLEANLINESS
+
+ - SOCIAL_DISTANCING
+
+ - SAFETY
+
+ - DISCLAIMER
+ example:
+ CLEANLINESS:
+ - Disinfectant is used to clean the property
+ - High-touch surfaces are cleaned and disinfected
+ - Sheets and towels are washed at 60°C/140°F or hotter
+ SOCIAL_DISTANCING:
+ - Contactless check-in and check-out
+ - Social distancing measures in place
+ OptionalExtras:
+ type: array
+ description: The optional extras info.
+ items:
+ type: string
+ description: The optional extras info.
+ ImportantNotices:
+ type: array
+ description: The important notices for hotel.
+ example:
+ - >-
+ This property can only accept bookings for essential travel or
+ stays. You may be asked to provide evidence of this on arrival.
+ For more information, check local advisories before you book.
+ items:
+ type: string
+ description: The important notices for hotel.
+ example: >-
+ This property can only accept bookings for essential travel or
+ stays. You may be asked to provide evidence of this on arrival.
+ For more information, check local advisories before you book.
+ Media:
+ type: array
+ description: Container for hotel images
+ items:
+ $ref: '#/components/schemas/Media'
+ HotelAmenities:
+ type: array
+ description: Container for all hotel amenities.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: Container for all hotel amenities.
+ - properties:
+ Id:
+ description: The identification number for a hotel amenity.
+ Name:
+ description: The description of a hotel amenity.
+ HotelDescriptiveAmenities:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: string
+ description: >
+ Container for all hotel amenities in group.
+
+
+ The key is amenity category, the values are the amenity information.
+ The category for grouped amenities in hotel level for conventional
+ lodging hotel will be:
+
+ - PARKING
+
+ - FOOD_AND_DRINK
+
+ - INTERNET
+
+ - THINGS_TO_DO
+
+ - FAMILY_FRIENDLY
+
+ - CONVENIENCES
+
+ - GUEST_SERVICES
+
+ - BUSINESS_SERVICE
+
+ - OUTDOOR
+
+ - ACCESSIBILITY
+
+ - SPA
+
+ - ACTIVITIES_NEARBY
+
+ - LANGS_SPOKEN
+
+ - MORE
+
+
+ The category for grouped amenities in hotel level for Vacation
+ Rental hotel will be:
+
+ - BEACH
+
+ - SKI
+
+ - POOL/SPA
+
+ - INTERNET
+
+ - PARKING
+
+ - FAMILY_FRIENDLY
+
+ - KITCHEN
+
+ - DINING
+
+ - BEDROOM
+
+ - BATHROOMS
+
+ - LIVING_SPACES
+
+ - ENTERTAINMENT
+
+ - OUTDOORS
+
+ - LAUNDRY
+
+ - WORKSPACES
+
+ - CLIMATE_CONTROL
+
+ - PETS
+
+ - SUITABILITY/ACCESSIBILITY
+
+ - SERVICES_AND_CONVENIENCES
+
+ - LOCATION_HIGHLIGHTS
+
+ - THINGS_TO_DO
+
+ - GENERAL
+
+ - SAFETY
+ example:
+ FAMILY_FRIENDLY:
+ - Refrigerator
+ GUEST_SERVICES:
+ - 24-hour front desk
+ - Housekeeping (on request)
+ - Luggage storage
+ - Multilingual staff
+ MORE:
+ - At least 80% lighting from LEDs
+ - Communal living room
+ - Comprehensive food waste policy
+ RoomAmenities:
+ type: array
+ description: Container for all room amenities.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: Container for all room amenities.
+ - properties:
+ Id:
+ description: The identification number for a room amenity.
+ Name:
+ description: The description of a room amenity.
+ RoomDescriptiveAmenities:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: string
+ description: >
+ Container for all common room amenities in group.
+
+
+ The key is amenity category, the values are the amenity information.
+ The category for grouped amenities in common room level will be:
+
+ - BEDROOM
+
+ - BATHROOM
+
+ - FOOD_AND_DRINK
+
+ - ENTERTAINMENT
+
+ - OUTDOOR_SPACE
+
+ - MORE
+ example:
+ ENTERTAINMENT:
+ - Flat-screen TV
+ - iPad
+ - iPod dock
+ - Satellite channels
+ FOOD_AND_DRINK:
+ - Free bottled water
+ - Refrigerator
+ MORE:
+ - Desk
+ - Eco-friendly cleaning products provided
+ - Energy-saving switches
+ Accessibility:
+ type: array
+ description: |
+ The accessibility options available for the room.
+
+ Possible accessibility include:
+ - Accessible path of travel
+ - Accessible bathroom
+ - Roll-in shower
+ - Handicapped parking
+ - In-room accessibility
+ - Accessibility equipment for the deaf
+ - Braille or raised signage
+ example:
+ - Wheelchair-accessible on-site restaurant
+ - Wheelchair-accessible lounge
+ - Well-lit path to entrance
+ - Stair-free path to entrance
+ - Wheelchair accessible (may have limitations)
+ - Wheelchair accessible path of travel
+ - Accessible bathroom (in select rooms)
+ - Wheelchair-accessible public washroom
+ - In-room accessibility (in select rooms)
+ - Wheelchair-accessible registration desk
+ - Wheelchair-accessible fitness center
+ - Wheelchair-accessible meeting spaces/business center
+ items:
+ type: string
+ description: The accessibility options available for the room.
+ example: Wheelchair-accessible on-site restaurant
+ MemberOnlyDealAvailable:
+ type: boolean
+ description: Indicates whether the property has member only deal rates available.
+ example: true
+ RoomTypes:
+ type: array
+ description: Container for all of available room types.
+ items:
+ $ref: '#/components/schemas/RoomType'
+ description: Container for information on each offered hotel.
+ HotelDetailsResponse:
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: >
+ There were some errors or events during the transaction, but the API
+ has still returned a response.
+
+
+ Container for all warnings.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/Warning'
+ - properties:
+ Code:
+ description: >
+ The code of the warning.
+
+
+ Available values are:
+
+ - PRICE_DECREASED: The price decreased after shopping.
+
+ - PRICE_INCREASED: The price increased after shopping.
+
+ - CURRENCY_CHANGE: You will be charged in a different
+ currency.
+ OriginalPrice:
+ description: The original price from the Lodging Search API response.
+ NewPrice:
+ description: The new price.
+ ChangedAmount:
+ description: The difference between `OriginalPrice` and `NewPrice`.
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ StayDates:
+ allOf:
+ - $ref: '#/components/schemas/StayDates'
+ - description: Dates of the requested property stay.
+ - properties:
+ CheckInDate:
+ description: >
+ Check-in date for property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the
+ `checkOut` parameter.
+
+
+ The maximum advanced search window is 330 days in the
+ future.
+
+
+ The maximum length of stay is 28 days.
+ CheckOutDate:
+ description: >
+ Checkout date for property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the
+ `checkIn` parameter.
+
+
+ The maximum advanced search window is 330 days in the
+ future.
+
+
+ The maximum length of stay is 28 days.
+ LengthOfStay:
+ type: integer
+ description: The number of stay nights.
+ format: int32
+ example: 3
+ NumberOfRooms:
+ type: integer
+ description: Number of rooms requested.
+ format: int32
+ example: 3
+ Occupants:
+ type: array
+ description: |
+ Container for the list of rooms requested by the traveler.
+
+ Occupancy for each room is specified in this node.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/Occupant'
+ - description: |
+ Container for the list of rooms requested by the traveler.
+
+ Occupancy for each room is specified in this node.
+ - properties:
+ Adults:
+ description: Specifies the number of adults staying in each room.
+ ChildAges:
+ description: >-
+ Specifies the age(s) of each of the children staying in
+ the room, as well as the number of children in the room.
+ ValidFormsOfPayment:
+ type: array
+ description: Container for payment information.
+ items:
+ $ref: '#/components/schemas/ValidFormsOfPayment'
+ HotelDetails:
+ $ref: '#/components/schemas/Hotel'
+ HotelPolicies:
+ type: object
+ properties:
+ CheckInStartTime:
+ type: string
+ description: >-
+ Beginning of the standard check-in window on the check in date, and
+ in the local time of the hotel.
+ example: 3 PM
+ CheckInEndTime:
+ type: string
+ description: >-
+ End of the standard check-in window on the check in date, and in the
+ local time of the hotel.
+ example: 5 PM
+ SpecialCheckInInstructions:
+ type: array
+ description: Some special instructions needed care by customer when check in.
+ example:
+ - >-
+ Special Instructions: The check-in location differs from the
+ property location. To check in, go to 301 N Water St.
+ items:
+ type: string
+ description: >
+ Any special instructions that the guest would need to know in
+ order to check in.
+
+
+ Particularly important in a vacation rental property, as many of
+ these do not have a hosted front desk as
+
+ a hotel would.
+ example: >-
+ Special Instructions: The check-in location differs from the
+ property location. To check in, go to 301 N Water St.
+ CheckOutTime:
+ type: string
+ description: >-
+ Customers must check out before this time on the check out date,
+ expressed in the local time of the hotel.
+ example: noon
+ PetPolicies:
+ type: array
+ description: The policy of the property toward having pets stay with guests.
+ example:
+ - 'Pets allowed, Up to 20 lb'
+ items:
+ type: string
+ description: The policy of the property toward having pets stay with guests.
+ example: 'Pets allowed, Up to 20 lb'
+ ChildrenAndExtraBedsPolicies:
+ type: array
+ description: >-
+ The policy of the hotel for having children stay at the hotel, as
+ well as for including extra beds in the room.
+ example:
+ - 'Children are welcome, Cribs/infant beds (surcharge)'
+ items:
+ type: string
+ description: Container for Hotel policy information.
+ HotelPropertyType:
+ type: object
+ properties:
+ Id:
+ type: integer
+ description: The id of hotel property type.
+ format: int32
+ example: 13
+ Name:
+ type: string
+ description: The name of hotel property type.
+ example: Ranch
+ description: >
+ Container for information on hotel property type.
+
+
+ You can find a complete list of Lodging Property Types in [Lodging
+ Property
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/property-types).
+ Link:
+ type: object
+ properties:
+ Accept:
+ type: string
+ description: >-
+ The Accept request header (for API queries only - not included for
+ page URLs).
+ Method:
+ type: string
+ description: Method of request.
+ Href:
+ type: string
+ description: The URL of the destination web page or API query.
+ Location:
+ type: object
+ properties:
+ Address:
+ $ref: '#/components/schemas/Address'
+ GeoLocation:
+ allOf:
+ - $ref: '#/components/schemas/GeoLocation'
+ - description: >-
+ Container for information on the geographic location of the
+ hotel.
+ - properties:
+ Latitude:
+ type: string
+ description: >
+ The geographic coordinates of the hotel property, based on a
+ horizontal angular measurement relative to The Equator.
+
+
+ North latitude will be represented by a positive value.
+
+
+ South latitude will be represented by a negative value.
+ example: '38.184978'
+ Longitude:
+ type: string
+ description: >
+ The geographic coordinates of the hotel property, based on a
+ vertical angular measurement relative to the universal Prime
+ Meridian (Royal Observatory, Greenwich).
+
+
+ East longitude will be represented by a positive value.
+
+
+ West longitude will be represented by a negative value.
+ example: '85.7412'
+ Obfuscated:
+ type: boolean
+ description: >
+ Indicates whether the displayed Latitude/Longitude
+ information is obfuscated.
+
+
+ Note: Exact Lat/Long values for Vacation Rental properties
+ will not be shown in either XAPv3 Search
+
+ or Details responses to respect the security of the
+ homeowner. Instead an 'obfuscated' Lat/Long
+
+ value will be returned that will indicate the general area
+ within which the property is located,
+
+ but not the exact location of the property itself.
+ Neighborhood:
+ $ref: '#/components/schemas/Neighborhood'
+ description: >-
+ Container for list of possible locations that could be used to
+ disambiguate the query.
+ LodgingAmenity:
+ type: object
+ properties:
+ Id:
+ type: string
+ example: '2065'
+ Name:
+ type: string
+ example: Business center
+ MandatoryFeesDetail:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: Type of mandatory fee.
+ enum:
+ - City_LocalTax_Amt
+ - City_LocalTax_Pcnt
+ - CleaningFee_Amt
+ - CleaningFee_Pcnt
+ - ClubCardAdult
+ - ClubCardChild
+ - DestinationFee_Amt
+ - DestinationFee_Pcnt
+ - GalaDinnerAdult
+ - GalaDinnerChild
+ - GalaDinnerChineseNYAdult
+ - GalaDinnerChineseNYChild
+ - GalaDinnerNYDayAdult
+ - GalaDinnerNYDayChild
+ - GalaDinnerNYEveAdult
+ - GalaDinnerNYEveChild
+ - GalaDinnerValentinesDayAdult
+ - GalaDinnerValentinesDayChild
+ - GalaDinnerXMASDayAdult
+ - GalaDinnerXMASDayChild
+ - GalaDinnerXMASEveAdult
+ - GalaDinnerXMASEveChild
+ - ResortFee_Amt
+ - ResortFee_Pcnt
+ - SanitationFee
+ - SeasonalHeatingFee
+ - TourismFee_Amt
+ - TourismFee_Pcnt
+ - TowelSheetsFee_Amt
+ - TransferFee_Amt_Adult
+ - TransferFee_Amt_Child
+ - UtilitySurcharge
+ example: TransferFee_Amt_Child
+ Amount:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: Value of hotel mandatory fee.
+ description: The breakdown for the taxes and fees that must be paid at the property.
+ Media:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: |
+ Supported type of media.
+
+ 1=Image.
+
+ Only 1 is supported now.
+ example: '1'
+ enum:
+ - 1
+ Title:
+ type: string
+ description: Image title
+ example: Guestroom
+ Size:
+ type: string
+ description: >
+ Image size.
+
+ You can find a link to the complete list of Supported Images Sizes
+ in
+
+ [Lodging Image Captions, IDs, and
+ Sizes](https://developers.expediagroup.com/xap/products/xap/lodging/references/image-captions-ids-and-sizes).
+ example: t
+ Url:
+ type: string
+ description: Image URL
+ example: >-
+ https://images.trvl-media.com/hotels/1000000/30000/20300/20230/20230_159_t.jpg
+ description: Container for hotel images
+ Money:
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/Money'
+ description: Pricing information of the stat date
+ Neighborhood:
+ type: object
+ properties:
+ Id:
+ type: string
+ description: Neighborhood id.
+ example: '6160232'
+ Name:
+ type: string
+ description: Neighborhood name.
+ example: Le Pharo
+ description: >-
+ Geography entities which are typically contained within a city. This
+ includes the categories neighborhood and point of interest. Low level
+ regions are not a formally defined concept in the geography model.
+ NightlyRates:
+ type: object
+ properties:
+ StayDate:
+ type: string
+ format: date
+ example: '2022-07-19T00:00:00.000Z'
+ BaseRate:
+ $ref: '#/components/schemas/Money'
+ NonRefundableDateRange:
+ type: object
+ properties:
+ StartDate:
+ type: string
+ description: Start date of a non-refundable date range.
+ format: date
+ example: '2022-07-04T00:00:00.000Z'
+ EndDate:
+ type: string
+ description: End date of a non-refundable date range.
+ format: date
+ example: '2022-07-05T00:00:00.000Z'
+ Occupant:
+ type: object
+ properties:
+ Adults:
+ type: integer
+ description: |
+ The number of adults in a room.
+ format: int32
+ example: 1
+ ChildAges:
+ type: array
+ description: |
+ The ages of children in a room.
+ example:
+ - 2
+ - 3
+ - 5
+ items:
+ type: integer
+ description: |
+ The age of children in a room.
+ format: int32
+ description: Container for the list of room occupants.
+ PaymentSchedule:
+ type: object
+ properties:
+ Due:
+ type: string
+ description: Date/Time stamp when this installment/deposit should be paid by.
+ format: date
+ example: '2022-09-03T00:00:00.000Z'
+ Price:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: >-
+ The monetary amount of the install/deposit required to book the
+ hotel and product.
+ description: Contains information on the payment schedule.
+ Phone:
+ type: object
+ properties:
+ CountryCode:
+ type: string
+ description: The designated country calling code.
+ example: '1'
+ AreaCode:
+ type: string
+ description: The phone's area code.
+ example: '614'
+ Number:
+ type: string
+ description: The phone's local number.
+ example: '9288472'
+ ExtensionNumber:
+ type: string
+ description: 'Optional extension number, if required to reach the hotel.'
+ example: '3114'
+ Promotion:
+ type: object
+ properties:
+ Description:
+ type: string
+ description: The description of the promotion.
+ example: 20%Off
+ Amount:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: >
+ The value of the promotion.
+
+
+ **CMA Compliance Note (UK)**: Both standard room rates and
+ promotional rates are set and managed by the
+
+ hoteliers and not Expedia.
+ PropertyDetails:
+ type: object
+ properties:
+ PropertyRegistryNumber:
+ type: string
+ description: The registry number of property.
+ example: P-20131
+ HostLanguages:
+ type: array
+ description: The languages the host of property will speak.
+ example:
+ - English
+ - Chinese
+ items:
+ type: string
+ MaxOccupancy:
+ type: integer
+ description: The maximum number of guests allowed to stay in the property.
+ format: int32
+ example: 12
+ NumberOfBedrooms:
+ type: integer
+ description: The number of bedrooms in the property.
+ format: int32
+ example: 4
+ NumberOfBathrooms:
+ type: integer
+ description: The number of bathrooms in the property.
+ format: int32
+ example: 1
+ SquareFeet:
+ type: string
+ description: Property area in square feet.
+ example: '123.5'
+ PropertyManager:
+ $ref: '#/components/schemas/PropertyManager'
+ description: >
+ Container for information about the hotel property detail. It will be
+ shown for Vacation Rental hotel only.
+ PropertyManager:
+ type: object
+ properties:
+ Name:
+ type: string
+ description: The name of the property manager.
+ example: Mike
+ CalendarLastUpdated:
+ type: string
+ description: The latest updated date.
+ format: date
+ PhotoUrl:
+ type: string
+ description: The URL for property manager's photo.
+ example: >-
+ https://imagesus-ssl.homeaway.com/mda01/ff30bc14-157c-43fc-ad8c-d2ce36bc7e83.4.1
+ description: >-
+ Container for information about the property manager. It will be shown
+ for Vacation Rental hotel only.
+ RatePlan:
+ type: object
+ properties:
+ RoomTypeId:
+ type: string
+ description: The room type identifier.
+ example: '200287452'
+ RatePlanId:
+ type: string
+ description: The rate plan identifier.
+ example: '201714191'
+ RateRuleId:
+ type: string
+ description: The identifier of rate rule.
+ example: '213544817'
+ InventorySourceId:
+ type: string
+ description: The identification number of the source that provides the rate plan.
+ example: '24'
+ InventorySourceCode:
+ type: string
+ description: The source name that provided the rate plan.
+ example: JT
+ StayDates:
+ $ref: '#/components/schemas/StayDates'
+ RemainingCount:
+ type: integer
+ description: >
+ The number of rooms remaining through Expedia for this room type.
+
+
+ **NOTE**: This value does NOT represent the total number of
+ rooms remaining at the hotel property,
+
+ only the number of rooms allocated to Expedia for sale by the
+ property that currently remain in Expedia's
+
+ inventory.
+
+
+ When a hotel is listed as 'sold out' by Expedia there may still be
+ rooms available for sale by the hotel
+
+ through other channels.
+
+
+ Also note that the `RemainingCount` response element has a maximum
+ returned value of 100, even if there are
+
+ more than 100 rooms available within bookable Expedia inventory.
+
+
+ **CMA Compliance Note (UK)**: websites in the UK that display
+ `remainingCount` should make it clear to
+
+ consumers that this count refers to the number of rooms remaining
+ within Expedia inventory - NOT the number
+
+ remaining at the property.
+ format: int32
+ example: 3
+ Price:
+ type: object
+ description: Container for all price components of the rate plan.
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The price of the rate plan for all occupants, excluding taxes
+ and fees.
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The total rate of taxes and fees of the rate plan for all
+ occupants.
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total price of the rate plan, which is equal to the sum of
+ `BaseRate` + `TaxesAndFees`.
+
+ Hotel mandatory fees are not included in this value as these are
+ paid at the hotel at checkout.
+
+ Promotion amount have been deducted from the `TotalPrice` value.
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total amount to strikeout price. This value is the sum of
+ the pre-discount `BaseRate` + the
+
+ pre-discount `TaxesAndFees`.
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average nightly base rate per night per room of the rate
+ plan, which is equal to the `BaseRate`
+
+ divided by `StayDates` and by `room number`.
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average nightly strike out price per night per room of the
+ rate plan, which is equal to the
+
+ strike out of `BaseRate` divided by `StayDates` and by `room
+ number`.
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The total mandatory fees which will be charged at the hotel for
+ the rate plan.
+ RefundableDamageDeposit:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The refundable damage deposit.
+ NightlyRates:
+ type: array
+ items:
+ allOf:
+ - $ref: '#/components/schemas/NightlyRates'
+ - properties:
+ StayDate:
+ description: A single night during the requested stay.
+ BaseRate:
+ description: Container for nightly base rate.
+ description: Nightly base rate of the rate plan.
+ TaxesAndFeesDetails:
+ type: array
+ items:
+ allOf:
+ - $ref: '#/components/schemas/TaxesAndFeesDetail'
+ - properties:
+ CategoryCode:
+ description: Category ID of this specific tax or fee.
+ Amount:
+ description: The value of this specific tax or fee.
+ description: >
+ Container for taxes and fees detail information.
+
+ Only visible by configuration. Please contact your Expedia
+ Account Manager if you need this node.
+ RoomRates:
+ type: array
+ items:
+ allOf:
+ - $ref: '#/components/schemas/RoomRates'
+ description: >-
+ Container for the rate information of all rooms. This is only
+ returned in Lodging Details API.
+ MemberOnlyDeal:
+ type: boolean
+ description: >
+ Indicates whether the rate is for member only.
+
+
+ Only visible by configuration. Please contact your Expedia Account
+ Manager if you need this node.
+ example: true
+ Promotions:
+ type: array
+ description: All promotion information of the `ratePlan`.
+ items:
+ $ref: '#/components/schemas/Promotion'
+ StandalonePrice:
+ type: object
+ description: >
+ The corresponded standalone price to the package rate plan (to show
+ the `strikethrough`).
+
+
+ Only returned when the returned `rateplan` is being used as part of
+ a package.
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The standalone price of the rate plan for all occupants,
+ excluding taxes and fees.
+ StrikeOutBaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The base rate strikeout in the standalone shopping path.
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The total standalone rate of taxes and fees of the rate plan for
+ all occupants.
+ StrikeOutTaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The taxes and fees strikeout in the standalone shopping path.
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total standalone price of the rate plan, which is equal to
+ the sum of `BaseRate` and `TaxesAndFees`.
+
+ Hotel mandatory fees are not included as these are paid at the
+ hotel at checkout.
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total strikeout in the standalone shopping path, which is
+ equal to the sum of `StrikeOutBaseRate` and
+ `StrikeOutTaxesAndFees`.
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average standalone nightly base rate per night per room of
+ the rate plan, which is equal to the
+
+ `BaseRate` divided by `StayDates` and by `room number`.
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average strikeout of the base rate in the standalone
+ shopping path, which is per night per room and is equal to
+
+ `StrikeOutBaseRate` divided by `StayDates` and by `room number`.
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The total standalone mandatory fees.
+ StrikeOutHotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The strikeout of the mandatory fees in the standalone shopping
+ path.
+ TaxesAndFeesInclusive:
+ type: boolean
+ description: Indicates whether taxes and fees are included in base rate.
+ example: false
+ GuaranteeText:
+ type: string
+ description: >-
+ Text description for any deposit information provide by the property
+ (if applicable).
+ example: Price Guarantee
+ PaymentMethod:
+ type: string
+ description: >
+ Room payment information. The available options are:
+
+ - Online: Pay at the time of booking
+
+ - Hotel: Could either be paid at the hotel during the time of stay
+ or paid at the time indicated by `PaymentTime` and `PaymentSchedule`
+ example: Online
+ enum:
+ - Online
+ - Hotel
+ PaymentTime:
+ type: string
+ description: >
+ The time when the booking amount will be charged on the traveler’s
+ credit card. Valid values are as follows:
+
+ - UponBooking
+
+ - PayLater
+
+ - SupplierDiscretion
+ example: PayLater
+ enum:
+ - UponBooking
+ - PayLater
+ - SupplierDiscretion
+ FullDepositUponBooking:
+ type: boolean
+ description: >
+ It will be true if PaymentSchedule has one installment and the value
+ of "Due" is booking date, otherwise,
+
+ it will be false.
+ example: true
+ PaymentSchedule:
+ type: array
+ description: Contains information on the payment schedule.
+ items:
+ $ref: '#/components/schemas/PaymentSchedule'
+ ReserveWithDeposit:
+ type: boolean
+ description: Indicates whether this rate plan need deposit to reserve.
+ example: true
+ FreeInternet:
+ type: boolean
+ description: >-
+ Indicates whether the price of the room includes free Internet.
+ (either wireless or wired)
+ example: true
+ FreeWiFi:
+ type: boolean
+ description: >-
+ Indicates whether the price of the room includes free wireless
+ Internet access.
+ example: true
+ FreeInternetDetails:
+ type: array
+ description: >
+ The localized details for the free internet amenity (only shown when
+ FreeInternet = true).
+
+
+ You can find a link to the complete list of Free Internet Details in
+
+ [Lodging Free Breakfast and Internet
+ Details](https://developers.expediagroup.com/xap/products/xap/lodging/references/free-breakfast-and-internet-details).
+ example:
+ - 'Free Wireless Internet, Wired high-speed Internet-comp'
+ items:
+ type: string
+ description: >-
+ The localized details for the free internet amenity (only shown
+ when FreeInternet = true).
+ example: 'Free Wireless Internet, Wired high-speed Internet-comp'
+ FreeParking:
+ type: boolean
+ description: Indicates whether the price of the room includes free parking.
+ example: true
+ FreeBreakfast:
+ type: boolean
+ description: Indicates whether the price of the room includes free breakfast.
+ example: true
+ FreeBreakfastDetails:
+ type: array
+ description: >
+ The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).
+
+
+ You can find a link to the complete list of Free Breakfast Details
+ in
+
+ [Lodging Free Breakfast and Internet
+ Details](https://developers.expediagroup.com/xap/products/xap/lodging/references/free-breakfast-and-internet-details).
+ example:
+ - Full Breakfast
+ - Full Board
+ items:
+ type: string
+ description: >-
+ The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).
+ example: Full Breakfast
+ HcomRewardsEarn:
+ type: boolean
+ description: >-
+ Indicate whether the room qualifies for Hcom Rewards Earn.
+ (Hotels.com partners only)
+ example: true
+ HcomRewardsBurn:
+ type: boolean
+ description: >-
+ Indicate whether the room qualifies for Hcom Rewards Burn.
+ (Hotels.com partners only)
+ example: true
+ CancellationPolicy:
+ $ref: '#/components/schemas/CancellationPolicy'
+ Amenities:
+ type: array
+ description: The amenities of the `rateplan`.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: The amenities of the `rateplan`.
+ - properties:
+ Id:
+ description: Amenity ID.
+ Name:
+ description: Amenity Name.
+ description: Container for information on each rate plan.
+ RoomOccupancyPolicy:
+ type: object
+ properties:
+ MaxGuestCount:
+ type: integer
+ description: The maximum number of guests allowed to stay in a room.
+ format: int32
+ example: 3
+ MinCheckInAge:
+ type: integer
+ description: The minimum age required for check-in.
+ format: int32
+ example: 19
+ IncludedGuestCount:
+ type: integer
+ description: The number of guests included in base rate.
+ format: int32
+ example: 2
+ MinGuestAge:
+ type: integer
+ description: The minimum age required for any guest staying in the room.
+ format: int32
+ example: 0
+ AgeClassRestrictions:
+ type: array
+ description: Container for room occupancy rules based on the age of the guests.
+ items:
+ $ref: '#/components/schemas/AgeClassRestriction'
+ description: Room occupancy policy.
+ RoomPreference:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: |-
+ The type of preference. Options are:
+ SmokingPreference
+ Bed
+ example: SmokingPreference
+ enum:
+ - SmokingPreference
+ - Bed
+ Value:
+ type: string
+ description: >-
+ The value of the room preference.
+
+
+ For SmokingPreference, options are
+
+
+ SmokingOrNonSmoking
+
+ Smoking
+
+ NonSmoking
+
+ For supported Bed Types, please refer to the Related Links section
+ at the bottom of the page.
+ example: NonSmoking
+ description: Container for room preferences.
+ RoomRates:
+ type: object
+ properties:
+ RoomIndex:
+ type: integer
+ description: Index of which of the requested rooms this entry refers to.
+ format: int32
+ example: 1
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'The price of the room, excluding taxes and fees.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: The total rate of taxes and fees of the room.
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: >
+ The total price of the room, which is equal to the sum of the
+ `BaseRate` and `TaxesAndFees`.
+
+
+ Hotel mandatory fees are not included as these are paid at the
+ property at checkout.
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: >
+ The total strike out price of the room, which is equal to the
+ sum of the `BaseRate`'s totalStrikeOut
+
+ and `TaxesAndFees`'s totalStrikeOut.
+ TaxesAndFeesDetails:
+ type: array
+ description: >
+ The breakdown for taxes and fees for this room for the entire stay.
+
+
+ Only visible by configuration. Please contact your Expedia Account
+ Manager if you need this node.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/TaxesAndFeesDetail'
+ - properties:
+ CategoryCode:
+ description: Tax or fee category code.
+ Amount:
+ description: Tax or fee value.
+ MandatoryFeesDetails:
+ type: array
+ description: >-
+ The breakdown for the taxes and fees that must be paid at the
+ property.
+ items:
+ $ref: '#/components/schemas/MandatoryFeesDetail'
+ NightlyRates:
+ type: array
+ description: Container for the nightly rate of current room.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/NightlyRates'
+ - description: Container for the nightly rate of current room.
+ - properties:
+ StayDate:
+ description: One date of the property stay
+ BaseRate:
+ description: Nightly Base Rate for the selected date of stay.
+ RoomType:
+ type: object
+ properties:
+ Description:
+ type: string
+ description: Text description of the room type.
+ example: 'Room, 1 King Bed, City View (Seattle V)'
+ RoomKey:
+ type: string
+ description: >
+ An encrypted string which includes the information that could be
+ used to address the current room type.
+
+
+ `RoomKey` has been renamed as `OfferId`.
+ deprecated: true
+ OfferId:
+ type: string
+ description: >-
+ An encrypted string which includes the information that could be
+ used to address the current room type.
+ example: wMRoCMjQqCDIwMTcwN
+ MerchantName:
+ type: string
+ description: Name of Merchant that did the initial Authentication.
+ example: EXPEDIA
+ RatePlanType:
+ type: string
+ description: |
+ Indicate the room type is sold as package or standalone.
+ example: package
+ enum:
+ - standalone
+ - package
+ - wholesale
+ RatePlans:
+ type: array
+ description: Container for rate plan information.
+ items:
+ $ref: '#/components/schemas/RatePlan'
+ Price:
+ type: object
+ description: Container of all price components of the room.
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The price of the rate plan for all occupants, excluding taxes
+ and fees.
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The total rate of taxes and fees of the rate plan for all
+ occupants.
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total price of the rate plan, which is equal to the sum of
+ `BaseRate` and `TaxesAndFees`. Hotel
+
+ mandatory fees are not included as these are paid at the hotel
+ at checkout.
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total strike out price of the rate plan, which is equal to
+ the sum of `BaseRate`'s
+
+ `totalStrikeOut` and `TaxesAndFees`'s `totalStrikeOut`.
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average nightly base rate per night per room of the room
+ type, which is equal to the `BaseRate`
+
+ divided by `StayDates` and by `room number`.
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average nightly strike out rate per night per room of the
+ room type, which is equal to the
+
+ strike out of `BaseRate` divided by `StayDates` and by `room
+ number`.
+ AvgNightlyRateWithFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average nightly rate per night per room of the room type,
+ including all fees except those imposed by the government.
+ AvgNightlyStrikeoutRateWithFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average nightly strike out rate per night per room of the
+ room type, including all fees except those imposed by the
+ government.
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The total mandatory fees which will be charged at the hotel for
+ the rate plan.
+ TotalPriceWithHotelFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total combined price that includes `TotalPrice` that will be
+ charged by Expedia (`BaseRate` +
+
+ `TaxesAndFees`) combined with any `HotelMandatoryFees` that will
+ be charged at hotel.
+
+ **NOTE**: Since UK regulations require that `HotelMandatoryFees`
+ be included in this price, the
+
+ quoted price will only be accurate for the day of quote.
+ This is due to the fact that
+
+ currency exchange fluctuations will change the exact amount of
+ any `HotelMandatoryFees` that are to
+
+ be collected at the hotel during the guest's stay if the cost is
+ converted into any other currency.
+
+ **CMA Compliance Note (UK)**: Websites doing business in the UK
+ should be displaying this value to
+
+ be compliant with CMA requirements.
+ RefundableDamageDeposit:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The refundable damage deposit for the rate plan.
+ StandalonePrice:
+ type: object
+ description: >
+ The corresponded standalone price to the package rate plan (to show
+ the `strikethrough`).
+
+
+ Only returned when this is a package rate plan.
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The standalone price of the rate plan for all occupants,
+ excluding taxes and fees.
+ StrikeOutBaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The base rate strikeout in the standalone shopping path.
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The total standalone rate of taxes and fees of the rate plan for
+ all occupants.
+ StrikeOutTaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The taxes and fees strikeout in the standalone shopping path.
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total standalone price of the rate plan, which is equal to
+ the sum of `BaseRate` and `TaxesAndFees`.
+
+ Hotel mandatory fees are not included as these are paid at the
+ hotel at checkout.
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The total strikeout in the standalone shopping path, which is
+ equal to the sum of `StrikeOutBaseRate` and
+ `StrikeOutTaxesAndFees`.
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average standalone nightly base rate per night per room of
+ the rate plan, which is equal to the
+
+ `BaseRate` divided by `StayDates` and by `room number`.
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >
+ The average strikeout of the base rate in the standalone
+ shopping path, which is per night per room and is equal to
+
+ `StrikeOutBaseRate` divided by `StayDates` and by `room number`.
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: The total standalone mandatory fees.
+ StrikeOutHotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: >-
+ The strikeout of the mandatory fees in the standalone shopping
+ path.
+ 'Promotions [deprecated]':
+ type: array
+ description: >
+ All promotion information of the room.
+
+
+ **Note**: The node has been moved to `RatePlan` node, and will be
+ deprecated soon.
+ deprecated: true
+ items:
+ $ref: '#/components/schemas/Promotion'
+ Links:
+ type: object
+ properties:
+ WebSearchResult:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: Link to web search result page.
+ WebDetails:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: Link to web infosite.
+ ApiDetails:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: Link for details API.
+ additionalProperties:
+ $ref: '#/components/schemas/Link'
+ description: >
+ Container for list of HATEOAS links to either Expedia website or
+ additional Expedia APIs to complete booking
+
+ of the selected offer.
+
+
+ Which links are returned in this section are defined by the `links`
+ parameter in the Search API query.
+
+
+ Available links are:
+
+ - WebSearchResult (link to web search result page)
+
+ - WebDetails (link to web infosite)
+
+ - ApiDetails (link for details API)
+ SmokingOption:
+ type: string
+ description: The smoking options available for the room type.
+ example: SmokingOrNonSmoking
+ enum:
+ - SmokingOrNonSmoking
+ - Smoking
+ - NonSmoking
+ BedTypeOptions:
+ type: array
+ description: >
+ Statement of bed types available for this offer. A room may have
+ several bed type options available.
+
+
+ **NOTE**: due to the large number of bed type options available, we
+ no longer publish a list of available
+
+ bed types. More information is available in
+
+ [Lodging Bed
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/bed-types).
+ items:
+ $ref: '#/components/schemas/BedType'
+ RoomOccupancyPolicy:
+ $ref: '#/components/schemas/RoomOccupancyPolicy'
+ Amenities:
+ type: array
+ description: Container for all room amenities.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: The amenity of the room.
+ - properties:
+ Id:
+ description: Amenity id
+ Name:
+ description: Amenity name
+ DescriptiveAmenities:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: string
+ description: >
+ Container for all room amenities in group.
+
+
+ The key is amenity category, the values are the amenity information.
+ The category for grouped amenities in room level will be:
+
+ - ACCESSIBILITY
+
+ - BATHROOM
+
+ - BEDROOM
+
+ - CLUB_EXEC
+
+ - FAMILY_FRIENDLY
+
+ - ENTERTAINMENT
+
+ - FOOD_AND_DRINK
+
+ - INTERNET
+
+ - MORE
+
+ - OUTDOOR_SPACE
+
+ - SAFETY
+ example:
+ FOOD_AND_DRINK:
+ - 2 restaurants
+ - Coffee/tea in common area(s)
+ Media:
+ type: array
+ description: Container for Media elements.
+ items:
+ allOf:
+ - $ref: '#/components/schemas/Media'
+ - description: Media elements.
+ StayDates:
+ type: object
+ properties:
+ CheckInDate:
+ type: string
+ description: >-
+ The initial day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ format: date
+ CheckOutDate:
+ type: string
+ description: >-
+ The final day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ format: date
+ description: Container for information for the stay dates of the rate plan.
+ TaxesAndFeesDetail:
+ type: object
+ properties:
+ CategoryCode:
+ type: string
+ example: '401'
+ Amount:
+ $ref: '#/components/schemas/Money'
+ ValidFormsOfPayment:
+ type: object
+ properties:
+ PaymentMethod:
+ type: string
+ description: The payment method.
+ example: DebitCard
+ Name:
+ type: string
+ description: >-
+ The brand name of the payment sub-method to be displayed to the
+ customer.
+ example: Visa
+ PaymentSubMethod:
+ type: string
+ description: The payment sub-method.
+ example: Visa
+ deprecated: true
+ BrandName:
+ type: string
+ description: >
+ The brand name of the payment sub-method to be displayed to the
+ customer.
+
+
+ In many cases it will be the same as the payment sub-method, but
+ "Visa/Carte Blanche" and "Visa/Delta" are some of the exceptions.
+ example: Visa
+ deprecated: true
+ description: Container for hotel supported payment information.
+ Warning:
+ type: object
+ properties:
+ Code:
+ type: string
+ description: The code of a warning.
+ example: INVALID_CORPORATE_DISCOUNT_CODE
+ Description:
+ type: string
+ description: A detail information of what happened.
+ example: >-
+ The Corporate DiscountCode '811490' is unavailable, but we found
+ other rates for you.
+ OriginalPrice:
+ $ref: '#/components/schemas/Money'
+ NewPrice:
+ $ref: '#/components/schemas/Money'
+ ChangedAmount:
+ $ref: '#/components/schemas/Money'
+ ChangedPercentage:
+ type: string
+ description: |-
+ The changed percentage.
+ In the sample 2.97 means the changed percentage is 2.97%.
+ example: '2.97'
+ description: >
+ There were some errors or events during the transaction, but the API has
+ still returned a response.
+
+
+ Container for all warnings.
+ When:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: >-
+ Indicates the time of the deposit collection.
+
+ Options are:
+
+ UPON_BOOKING
+
+ The customer must pay the deposit when booking the property.
+
+ DAYS_PRIOR
+
+ The customer must pay the deposit a number of days before arriving
+ at the property.
+
+ UPON_ARRIVAL
+
+ The customer must pay the deposit upon arriving at the property.
+ example: UPON_BOOKING
+ enum:
+ - UPON_BOOKING
+ - DAYS_PRIOR
+ - UPON_ARRIVAL
+ Value:
+ type: string
+ description: >-
+ This value will only be shown when Deposit Type is DAYS_PRIOR to
+ indicate the number of days prior to check in when the deposit will
+ be collected.
+ example: '1'
+ description: Indicate when to pay.
+ Error:
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ DetailCode:
+ type: string
+ description: Detailed error code describing the issue.
+ example: MULTIPLE_AMBIGUOUS_LOCATION
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: More than one location found
+ LocationKeyword:
+ type: string
+ description: The requested location that caused the error.
+ example: Portland
+ LocationOptions:
+ type: array
+ description: >-
+ Container for possible matches to your ambiguous `locationKeyword`
+ query.
+ items:
+ $ref: '#/components/schemas/LocationOption'
+ description: Container for error list.
+ Errors:
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/Error'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ LocationOption:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: Type of the location.
+ example: TRAINSTATION
+ RegionId:
+ type: string
+ description: RegionId the location resides in.
+ example: '6200275'
+ ShortName:
+ type: string
+ description: The name of the location which matches the location keyword.
+ example: Dublin Connolly Station
+ AirportCode:
+ type: string
+ description: Indicates the nearest major airport to the location.
+ example: DUB
+ Address:
+ type: string
+ description: The address of the location.
+ example: 'Dublin Connolly Station, Ireland'
+ Country:
+ $ref: '#/components/schemas/Country'
+ GeoLocation:
+ $ref: '#/components/schemas/GeoLocation'
+ description: >-
+ Container for possible matches to your ambiguous `locationKeyword`
+ query.
+ APIGatewayError:
+ type: object
+ properties:
+ message:
+ type: string
+ HotelListingsResponse:
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: >
+ There were some errors or events during the transaction, but the API
+ has still returned a response.
+
+
+ Container for all warnings.
+ items:
+ $ref: '#/components/schemas/Warning'
+ Count:
+ type: integer
+ description: The number of hotels actually returned in the response.
+ format: int32
+ example: 99
+ TotalHotelCount:
+ type: integer
+ description: The number of hotels present in the location.
+ format: int32
+ example: 230
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ StayDates:
+ allOf:
+ - $ref: '#/components/schemas/StayDates'
+ - description: Container for requested dates of stay.
+ LengthOfStay:
+ type: integer
+ description: The number of stay nights.
+ format: int32
+ example: 3
+ NumberOfRooms:
+ type: integer
+ description: The number of the rooms requested on behalf of the user.
+ format: int32
+ example: 3
+ Occupants:
+ type: array
+ description: >-
+ Container of occupants. It is an array including occupants of each
+ room.
+ items:
+ $ref: '#/components/schemas/Occupant'
+ Hotels:
+ type: array
+ description: Container for all hotels.
+ items:
+ $ref: '#/components/schemas/Hotel'
+ HotelRateCalendar:
+ type: object
+ properties:
+ EcomHotelId:
+ type: string
+ description: >-
+ The unique, Expedia-specific hotel property identifier used to
+ designate a single hotel.
+ example: '14747'
+ HcomHotelId:
+ type: string
+ description: >
+ The unique, Hotels.com-specific hotel property identifier used to
+ designate a single hotel.
+
+
+ This will be returned if searching via `hcomHotelId` in request or
+ the request is coming from Hcom partner.
+ example: '10532'
+ RateCalendar:
+ type: array
+ description: Container for all rate calendar data.
+ items:
+ $ref: '#/components/schemas/RateCalendar'
+ description: Container for all hotel rate calendar data.
+ RateCalendar:
+ type: object
+ properties:
+ StayDate:
+ type: string
+ description: Stay date for which the price is returned.
+ format: date
+ example: '2022-09-02T00:00:00.000Z'
+ Price:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: Container for pricing information.
+ - properties:
+ Value:
+ description: The total price of the corresponding date.
+ Currency:
+ description: >
+ The ISO 4217 Currency Code that the Value is expressed in.
+
+
+ See [Global Currency
+ Codes](https://developers.expediagroup.com/xap/products/xap/lodging/references/global-currency-codes)
+
+ for a full list of supported currencies.
+ PriceLevel:
+ type: string
+ description: >
+ Indicates how that day's price compares to the other lowest price
+ for that hotel over the searched date
+
+ range. Prices will be bucketed into LOW/MEDIUM/HIGH. Here are the
+ details for each `PriceLevel`:
+
+ - HIGH: 65th percentile+
+
+ - MEDIUM: 30th Percentile+
+
+ - LOW: Anything lower than 30th percentile
+ example: MEDIUM
+ enum:
+ - HIGH
+ - MEDIUM
+ - LOW
+ Status:
+ type: string
+ description: Represents whether the offer is currently available.
+ enum:
+ - AVAILABLE
+ - NOT_AVAILABLE
+ example: AVAILABLE
+ description: The lowest rate information of requested days
+ RateCalendarResponse:
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: >
+ There were some errors or events during the transaction, but the API
+ has still returned a response.
+
+
+ Container for all warnings.
+ items:
+ $ref: '#/components/schemas/Warning'
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ RateCalendars:
+ type: array
+ description: Container for all hotel rate calendar data.
+ items:
+ $ref: '#/components/schemas/HotelRateCalendar'
+ LodgingCancellationPenaltyRule:
+ type: object
+ properties:
+ PenaltyPercentOfStay:
+ type: string
+ description: >
+ Specifies the per-stay cancellation fee charged as a percentage of
+ the total rate, in addition to any other
+
+ penalties listed.
+ example: '100'
+ PenaltyStartDateTime:
+ type: string
+ description: >
+ The beginning of the window of time when the
+ `CancellationPenaltyRule` is in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the property.
+ format: date-time
+ example: '2022-07-23T23:00:00.000Z'
+ PenaltyEndDateTime:
+ type: string
+ description: >
+ The end of the window of time when the `CancellationPenaltyRule` is
+ in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the property.
+ format: date-time
+ example: '2022-07-25T23:00:00.000Z'
+ description: Container for cancellation penalty details.
+ LodgingCancellationPolicy:
+ type: object
+ properties:
+ Refundable:
+ type: boolean
+ description: Indicate whether the rate is refundable or not.
+ example: true
+ FreeCancellation:
+ type: boolean
+ description: Indicate whether the room can be cancelled free of charge.
+ example: true
+ FreeCancellationEndDateTime:
+ type: string
+ description: >-
+ The date and time until which the room can be cancelled free of
+ charge.
+ format: date-time
+ CancellationPenaltyRules:
+ type: array
+ description: Container for Cancellation Penalty Rules information.
+ items:
+ $ref: '#/components/schemas/LodgingCancellationPenaltyRule'
+ description: Container for Cancellation Policy information.
+ Property:
+ type: object
+ properties:
+ Id:
+ type: string
+ description: The unique property identifier used to designate a single property.
+ example: '14747'
+ Status:
+ type: string
+ description: Represents whether the offer is currently available.
+ example: AVAILABLE
+ enum:
+ - AVAILABLE
+ - NOT_AVAILABLE
+ - ERROR
+ - NUMBER_OF_ADULTS_NOT_ACCEPTED
+ - NUMBER_OF_CHILDREN_NOT_ACCEPTED
+ - NUMBER_OF_INFANTS_NOT_ACCEPTED
+ - NUMBER_OF_PERSONS_NOT_ACCEPTED
+ - CHECK_IN_AGE_NOT_ACCEPTED
+ RoomTypes:
+ type: array
+ description: Container for all of available room types.
+ items:
+ $ref: '#/components/schemas/LodgingRoomType'
+ description: Container for information on each offered hotel.
+ LodgingLink:
+ type: object
+ properties:
+ Accept:
+ type: string
+ description: >
+ The Accept request header for API queries only.
+
+
+ Note: this value will only be returned if the link is an API query,
+ as website URLs do not require an
+
+ `Accept` header.
+ Method:
+ type: string
+ description: Method of request.
+ example: GET
+ Href:
+ type: string
+ description: The URL of the destination web page or API query.
+ LodgingMoney:
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ description: Pricing information of the stat date
+ LodgingOccupant:
+ type: object
+ properties:
+ Adults:
+ type: integer
+ description: The number of adults in a room.
+ format: int32
+ example: 1
+ ChildAges:
+ type: array
+ description: The ages of children in a room.
+ example:
+ - 2
+ - 3
+ - 5
+ items:
+ type: integer
+ format: int32
+ LodgingPromotion:
+ type: object
+ properties:
+ Description:
+ type: string
+ description: The description of the promotion.
+ example: 20%Off
+ Amount:
+ $ref: '#/components/schemas/LodgingMoney'
+ LodgingRatePlan:
+ type: object
+ properties:
+ CancellationPolicy:
+ $ref: '#/components/schemas/LodgingCancellationPolicy'
+ Promotions:
+ type: array
+ description: All promotion information of the ratePlan.
+ items:
+ $ref: '#/components/schemas/LodgingPromotion'
+ description: Container for rate plan information.
+ LodgingRoomType:
+ type: object
+ properties:
+ RatePlans:
+ type: array
+ description: Container for rate plan information.
+ items:
+ $ref: '#/components/schemas/LodgingRatePlan'
+ Price:
+ type: object
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >-
+ The price of the rate plan for all occupants, excluding taxes
+ and fees.
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >-
+ The total amount of taxes and fees of the rate plan for all
+ occupants.
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >
+ The total price of the rate plan, which is equal to the sum of
+ `BaseRate` + `TaxesAndFees`.
+
+ Property mandatory fees are not included in this value as
+ these are paid at the property at
+
+ checkout.
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >
+ The average nightly base rate per night per room of the rate
+ plan, which is equal to the `BaseRate`
+
+ divided by `StayDates` and by `room number`.
+ AvgNightlyRateWithFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >
+ The average nightly rate per night per room of the room type,
+ including all fees except those imposed by the government.
+ PropertyMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >-
+ The total mandatory fees which will be charged at the property
+ for the rate plan.
+ TotalPriceWithPropertyFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: >
+ The total price of the rate plan include property mandatory
+ fees, which is equal to the sum of
+
+ `BaseRate` + `TaxesAndFees` + `PropertyMandatoryFees`.
+
+ **NOTE**: Since UK regulations require that
+ `PropertyMandatoryFees` be included in this price, the
+
+ quoted price will only be accurate for the day of quote.
+ This is due to the fact that
+
+ currency exchange fluctuations will change the exact amount of
+ any `PropertyMandatoryFees` that are to
+
+ be collected at the hotel during the guest's stay if the cost is
+ converted into any other currency.
+
+ **CMA Compliance Note (UK)**: Websites doing business in the UK
+ should be displaying this value to
+
+ be compliant with CMA requirements.
+ RefundableDamageDeposit:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: The refundable damage deposit.
+ description: Container for Price information.
+ Links:
+ type: object
+ properties:
+ WebSearchResult:
+ allOf:
+ - $ref: '#/components/schemas/LodgingLink'
+ - description: Link to web search result page.
+ WebDetails:
+ allOf:
+ - $ref: '#/components/schemas/LodgingLink'
+ - description: Link to web infosite.
+ additionalProperties:
+ $ref: '#/components/schemas/LodgingLink'
+ description: >
+ Container for list of HATEOAS links to either Expedia website or
+ additional Expedia APIs to complete booking of the selected offer.
+
+
+ Which links are returned in this section are defined by the links
+ parameter in the Search API query.
+
+ Available links are:
+
+ - WebDetails (link to web infosite)
+
+ - WebSearchResult (link to web search result page)
+ LodgingStayDates:
+ type: object
+ properties:
+ CheckInDate:
+ type: string
+ description: >-
+ The initial day of the property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ format: date
+ CheckOutDate:
+ type: string
+ description: >-
+ The final day of the property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ format: date
+ description: |
+ Container for requested dates of stay.
+ LodgingWarning:
+ type: object
+ properties:
+ Code:
+ type: string
+ description: The code of a warning.
+ example: NO_RESULTS_FOUND
+ Description:
+ type: string
+ description: A description of what caused the issues.
+ example: >
+ Sorry, your query completed successfully, but did not return any
+ inventory. Please adjust your
+
+ search parameters and try again.
+ LodgingError:
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: 'Multiple pickup locations found. '
+ description: Container for error list.
+ LodgingErrors:
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/LodgingError'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ LodgingQuotesResponse:
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: >
+ There were some errors or events during the transaction, but the API
+ has still returned a response.
+
+
+ Container for all warnings.
+ items:
+ $ref: '#/components/schemas/LodgingWarning'
+ Count:
+ type: integer
+ description: The number of properties actually returned in the response.
+ format: int32
+ example: 99
+ TotalPropertyCount:
+ type: integer
+ description: The number of properties requested.
+ format: int32
+ example: 230
+ TransactionId:
+ type: string
+ description: Unique identifier for the API transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ StayDates:
+ $ref: '#/components/schemas/LodgingStayDates'
+ LengthOfStay:
+ type: integer
+ description: The number of stay nights.
+ format: int32
+ example: 3
+ Occupants:
+ type: array
+ description: Container for the list of room occupants.
+ items:
+ $ref: '#/components/schemas/LodgingOccupant'
+ Properties:
+ type: array
+ description: Container for all properties.
+ items:
+ $ref: '#/components/schemas/Property'
+ DateRange:
+ type: object
+ description: The actual date range for the shown availability.
+ properties:
+ StartDate:
+ type: string
+ description: >-
+ The initial day of the date range in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ example: '2022-07-05'
+ format: date
+ EndDate:
+ type: string
+ description: >-
+ The final day of the date range in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ example: '2023-07-05'
+ format: date
+ AvailabilityCalendar:
+ type: object
+ properties:
+ PropertyId:
+ type: string
+ description: The unique property identifier that designates a single property.
+ example: '74041788'
+ DateRange:
+ $ref: '#/components/schemas/DateRange'
+ Availability:
+ type: string
+ description: >
+ A string of codes that shows property availability, one for every
+ day in the specified date range.
+
+
+ Valid values include Y (available) and N (unavailable).
+
+
+ ***Note**: The first code stands for availability on the `StartDate`
+ in the `DateRange` and the last one stands
+
+ for the `EndDate`.*
+ example: YYYYYYNNNNNN
+ ChangeOver:
+ type: string
+ description: >
+ A string of codes that shows changeover action, one for every day in
+ the specified date range.
+
+
+ Valid values include
+
+ - X (no action possible)
+
+ - C (check-in, checkout)
+
+ - O (checkout only)
+
+ - I (check-in only)
+
+ ***Note**: The first code stands for possible action on the
+ `StartDate` in the `DateRange` and the last one
+
+ stands for the `EndDate`. All actions are possible if not returned.*
+ example: XXIIICCCOOCC
+ MinPriorNotify:
+ type: string
+ description: >
+ A comma-separated list of numbers that shows how many days before a
+ reservation the booking must occur, one
+
+ for every day in the specified date range. Valid values include
+ 0-999, and 0 indicates no prior notification
+
+ required for a given day. The unit is always day.
+
+
+ ***Note**: The first number stands for the minimum advance booking
+ days on the `StartDate` in the `DateRange`
+
+ and the last one stands for the `EndDate`. No limitation if not
+ returned.*
+ example: '1,1,1,1,1,1,1,1,1,1,1,1,1'
+ MinStay:
+ type: string
+ description: >
+ A comma-separated list of numbers that show the minimum number of
+ days a traveler can stay, one for every
+
+ day in the specified date range.
+
+
+ Valid values include 0-999, and 0 indicates no minimum for a given
+ day. The unit is always day.
+
+
+ ***Note**: The first number stands for the minimum stay on the
+ `StartDate` in the `DateRange` and the last
+
+ one stands for the `EndDate`. No limitation if not returned.*
+ example: '0,0,0,3,3,3,3,3,3,7,7,7,7,7,21,21,21'
+ MaxStay:
+ type: string
+ description: >
+ A comma-separated list of numbers that show the maximum number of
+ days a traveler can stay, one for every
+
+ day in the specified date range.
+
+
+ Valid values include 0-999, and 0 indicates no maximum for a given
+ day. The unit is always day.
+
+
+ ***Note**: The first number stands for the maximum stay on the
+ `StartDate` in the `DateRange` and the
+
+ last one stands for the `EndDate`. No limitation if not returned.
+ example: '0,0,0,31,31,31,371,370'
+ AvailabilityCalendarResponse:
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: >
+ There were some errors or events during the transaction, but the API
+ has still returned a response.
+
+
+ Container for all warnings.
+ items:
+ $ref: '#/components/schemas/LodgingWarning'
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ AvailabilityCalendars:
+ type: array
+ description: A list of the calendar entities.
+ items:
+ $ref: '#/components/schemas/AvailabilityCalendar'
+ example: |-
+ {
+ "TransactionId": "f06edfa3-27f4-44e6-838c-b8dd3d0a3210",
+ "AvailabilityCalendars": [
+ {
+ "PropertyId": "74041788",
+ "DateRange": {
+ "StartDate": "2022-02-25",
+ "EndDate": "2025-02-24"
+ },
+ "Availability":"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY",
+ "ChangeOver": "OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC",
+ "MinStay": "3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3",
+ "MaxStay": "379,378,377,376,375,374,373,372,371,370,369,368,367,731,730,729,728,727,726,725,724,723,722,721,720,719,718,717,716,715,714,713,712,711,710,709,708,707,706,705,704,703,702,701,700,699,698,697,696,695,694,693,692,691,690,689,688,687,686,685,684,683,682,681,680,679,678,677,676,675,674,673,672,671,670,669,668,667,666,665,664,663,662,661,660,659,658,657,656,655,654,653,652,651,650,649,648,647,646,645,644,643,642,641,640,639,638,637,636,635,634,633,632,631,630,629,628,627,626,625,624,623,622,621,620,619,618,617,616,615,614,613,612,611,610,609,608,607,606,605,604,603,602,601,600,599,598,597,596,595,594,593,592,591,590,589,588,587,586,585,584,583,582,581,580,579,578,577,576,575,574,573,572,571,570,569,568,567,566,565,564,563,562,561,560,559,558,557,556,555,554,553,552,551,550,549,548,547,546,545,544,543,542,541,540,539,538,537,536,535,534,533,532,531,530,529,528,527,526,525,524,523,522,521,520,519,518,517,516,515,514,513,512,511,510,509,508,507,506,505,504,503,502,501,500,499,498,497,496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481,480,479,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,461,460,459,458,457,456,455,454,453,452,451,450,449,448,447,446,445,444,443,442,441,440,439,438,437,436,435,434,433,432,431,430,429,428,427,426,425,424,423,422,421,420,419,418,417,416,415,414,413,412,411,410,409,408,407,406,405,404,403,402,401,400,399,398,397,396,395,394,393,392,391,390,389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373,372,371,370,369,368,367,731,730,729,728,727,726,725,724,723,722,721,720,719,718,717,716,715,714,713,712,711,710,709,708,707,706,705,704,703,702,701,700,699,698,697,696,695,694,693,692,691,690,689,688,687,686,685,684,683,682,681,680,679,678,677,676,675,674,673,672,671,670,669,668,667,666,665,664,663,662,661,660,659,658,657,656,655,654,653,652,651,650,649,648,647,646,645,644,643,642,641,640,639,638,637,636,635,634,633,632,631,630,629,628,627,626,625,624,623,622,621,620,619,618,617,616,615,614,613,612,611,610,609,608,607,606,605,604,603,602,601,600,599,598,597,596,595,594,593,592,591,590,589,588,587,586,585,584,583,582,581,580,579,578,577,576,575,574,573,572,571,570,569,568,567,566,565,564,563,562,561,560,559,558,557,556,555,554,553,552,551,550,549,548,547,546,545,544,543,542,541,540,539,538,537,536,535,534,533,532,531,530,529,528,527,526,525,524,523,522,521,520,519,518,517,516,515,514,513,512,511,510,509,508,507,506,505,504,503,502,501,500,499,498,497,496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481,480,479,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,461,460,459,458,457,456,455,454,453,452,451,450,449,448,447,446,445,444,443,442,441,440,439,438,437,436,435,434,433,432,431,430,429,428,427,426,425,424,423,422,421,420,419,418,417,416,415,414,413,412,411,410,409,408,407,406,405,404,403,402,401,400,399,398,397,396,395,394,393,392,391,390,389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373,372,371,370,369,368,367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
+ "MinPriorNotify": "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
+ },
+ {
+ "PropertyId": "1",
+ "DateRange": {
+ "StartDate": "2022-02-27",
+ "EndDate": "2023-11-04"
+ },
+ "Availability": "NNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
+ },
+ {
+ "PropertyId": "123",
+ "DateRange": {
+ "StartDate": "2022-02-27",
+ "EndDate": "2023-11-04"
+ },
+ "Availability": "NNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY",
+ "ChangeOver": "XXXXXXIIICCCCCCCCCCCCCCCCCCCCXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCOOOXXXXXIIICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCOOO",
+ "MinStay": "0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,7,6,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,5,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,9,8,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0",
+ "MaxStay": "0,0,0,0,0,0,21,21,20,19,18,17,16,21,20,19,18,17,16,15,21,20,19,18,17,16,15,21,20,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,0,0,0,0,0,0,0,0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,19,18,17,16,15,21,20,19,18,17,16,15,21,20,19,18,17,16,15,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,0,0,0",
+ "MinPriorNotify": "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
+ }
+ ]
+ }
+ AdditionalFee:
+ required:
+ - Amount
+ - FinanceCategory
+ - FinanceSubCategory
+ - IsRequired
+ type: object
+ properties:
+ IsRequired:
+ type: boolean
+ description: Indicates whether this additional fee is mandatory.
+ example: true
+ FinanceCategory:
+ type: string
+ description: Category of the fee / Coverages
+ example: Fee
+ FinanceSubCategory:
+ type: string
+ description: Sub category of the fee / Coverages .
+ example: Drop
+ Amount:
+ $ref: '#/components/schemas/CarsMoney'
+ Description:
+ type: string
+ description: Description of the fee.
+ example: DropOffCharge
+ Deductible:
+ $ref: '#/components/schemas/Deductible'
+ description: >-
+ List of additional fees including both mandatory and optional fees.such
+ as young driver fee/drop off fee /CollisionDamageWaiver
+ CarsAddress:
+ required:
+ - Address1
+ - City
+ - Country
+ type: object
+ properties:
+ Address1:
+ type: string
+ description: 'Street Number, Street Name, or PO Box'
+ example: 724 Pine St
+ Address2:
+ type: string
+ description: >-
+ Apartment, Floor, Suite, Bldg # or more specific information about
+ Address1.
+ example: Second Floor
+ Suite:
+ type: string
+ description: Suite/apartment number
+ example: '123'
+ City:
+ type: string
+ description: The city
+ example: New York
+ Province:
+ type: string
+ description: The state or province
+ example: NY
+ Country:
+ type: string
+ description: 3-letter code for the country
+ example: USA
+ PostalCode:
+ type: string
+ description: Zip/postal code
+ example: '98004'
+ description: Address information
+ CarsCancellationPolicy:
+ type: object
+ properties:
+ Cancellable:
+ type: boolean
+ description: >-
+ Indicates if this car can be cancelled (free cancel or penalty
+ cancel)
+ example: true
+ FreeCancellation:
+ type: boolean
+ description: Indicates if this car may be cancelled without a penalty.
+ example: true
+ FreeCancellationEndDateTime:
+ type: string
+ description: Indicates the latest time that the car can be cancelled for free.
+ format: date-time
+ PenaltyRules:
+ type: array
+ description: Container for penalty rules
+ items:
+ $ref: '#/components/schemas/PenaltyRule'
+ NonCancellableDateTimeRange:
+ $ref: '#/components/schemas/NonCancellableDateTimeRange'
+ description: Cancellation Policy Container.
+ Capacity:
+ required:
+ - AdultCount
+ type: object
+ properties:
+ AdultCount:
+ type: integer
+ description: The typical number of adults that can fit comfortably in the car.
+ format: int64
+ example: 4
+ ChildCount:
+ type: integer
+ description: The typical number of children that can fit comfortably in the car.
+ format: int64
+ example: 0
+ SmallLuggageCount:
+ type: integer
+ description: >-
+ The typical number of small pieces of luggage that fit in the cargo
+ space.
+ format: int64
+ example: 2
+ LargeLuggageCount:
+ type: integer
+ description: >-
+ The typical number of large pieces of luggage that fit in the cargo
+ space.
+ format: int64
+ example: 2
+ description: Capacity for car's properties.
+ Car:
+ required:
+ - CancellationPolicy
+ - DropOffDetails
+ - Id
+ - PickupDetails
+ - Price
+ - Supplier
+ - VehicleDetails
+ type: object
+ properties:
+ Id:
+ type: string
+ description: >-
+ Uniquely identifies a Car Offer.Note: since pay-online and
+ pay-at-the-counter Car Offers have the same associated Rate Code,
+ the Offer ID is the only unique identifier to differentiate between
+ the two offers when referencing or booking.
+ example: ECAR-39--1Trip-SEAC005-SEAC005
+ DataTimeStamp:
+ type: string
+ description: DataTimeStamp
+ format: date-time
+ example: '2021-03-09T07:08:00Z'
+ OnlineCheckIn:
+ type: boolean
+ description: Indicate whether the supplier supports online checkin
+ example: true
+ SkipTheCounter:
+ type: boolean
+ description: Indicate whether the supplier supports skip the counter
+ example: true
+ VehicleDetails:
+ $ref: '#/components/schemas/VehicleDetails'
+ Supplier:
+ $ref: '#/components/schemas/Supplier'
+ PickupDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ DropOffDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/CarsLink'
+ description: A map of links to other Car APIs or Expedia websites.
+ xml:
+ wrapped: true
+ RateDetails:
+ $ref: '#/components/schemas/RateDetails'
+ Price:
+ $ref: '#/components/schemas/Price'
+ ReferencePrice:
+ $ref: '#/components/schemas/CarsMoney'
+ AdditionalFees:
+ type: array
+ description: >-
+ List of additional fees including both mandatory and optional
+ fees.such as young driver fee/drop off fee /CollisionDamageWaiver
+ items:
+ $ref: '#/components/schemas/AdditionalFee'
+ CancellationPolicy:
+ $ref: '#/components/schemas/CarsCancellationPolicy'
+ NoShowPenalty:
+ $ref: '#/components/schemas/PenaltyType'
+ Images:
+ type: array
+ description: List of image resources of the car product.
+ items:
+ $ref: '#/components/schemas/Image'
+ Rating:
+ $ref: '#/components/schemas/RatingWithoutDetails'
+ description: List of cars matching the search criteria.
+ CarCategory:
+ required:
+ - Code
+ - Value
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Car category code.
+ example: M
+ Value:
+ type: string
+ description: Car category value.
+ example: Mini
+ description: >-
+ Car category. Please find list of Car Type Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115008631767
+ CarListingsResponse:
+ required:
+ - CarCount
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for warning codes
+ items:
+ $ref: '#/components/schemas/CarsWarning'
+ TransactionId:
+ type: string
+ description: A unique identifier for this transaction.
+ example: 1111111-2222-3333-4444-55555555555
+ CarCount:
+ type: integer
+ description: The number of cars offers returned in the response.
+ format: int64
+ example: 1
+ Cars:
+ type: array
+ description: List of cars matching the search criteria.
+ items:
+ $ref: '#/components/schemas/Car'
+ xml:
+ name: CarListingsResponse
+ CarType:
+ required:
+ - Code
+ - Value
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Car type code.
+ example: C
+ Value:
+ type: string
+ description: Car type value.
+ example: 2/4 Door
+ description: >-
+ Car type. Please find list of Car Type Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115002516708
+ CarsCountry:
+ required:
+ - IsoCode2
+ - IsoCode3
+ - Name
+ type: object
+ properties:
+ Name:
+ type: string
+ description: country name
+ example: Ireland
+ Code:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ IsoCode2:
+ type: string
+ description: 2-letter code for the country
+ example: IE
+ IsoCode3:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ description: Container for disambiguation country information
+ CarsDateRange:
+ required:
+ - EndDate
+ - StartDate
+ type: object
+ properties:
+ StartDate:
+ type: string
+ description: Start date at pickup location of the period.
+ format: date
+ example: '2021-06-27'
+ EndDate:
+ type: string
+ description: End date at pickup location of the period.
+ format: date
+ example: '2021-06-28'
+ description: Date range of the period.
+ DateTimePeriod:
+ required:
+ - DateRange
+ type: object
+ properties:
+ DateRange:
+ $ref: '#/components/schemas/CarsDateRange'
+ TimeRanges:
+ type: array
+ description: >-
+ A list of time range to indicate the operation hours of the date
+ range.
+ items:
+ $ref: '#/components/schemas/TimeRange'
+ description: >-
+ A List of date time periods to indicate the vendor business hours for
+ the pickup time.
+ Deductible:
+ type: object
+ properties:
+ ExcessAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ LiabilityAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ DeductibleAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ description: Indicate whether it is deductible
+ Discount:
+ required:
+ - Code
+ - Type
+ type: object
+ properties:
+ Type:
+ type: string
+ description: 'Discount type. Supported values : CorpDiscount | Coupon.'
+ example: CorpDiscount
+ Code:
+ type: string
+ description: Discount code.
+ example: G811490
+ description: List of discount information.
+ CarsDistance:
+ required:
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: >-
+ The number of miles/kilometers of the distance (specified by the
+ Unit).
+ example: '75'
+ Unit:
+ type: string
+ description: The unit (KM or MI) for the distance.
+ example: KM
+ Direction:
+ type: string
+ description: >-
+ The direction of the location from the search 'center'.Possible
+ values are: N,S,W,E,NW,NE,SW,SE
+ example: 'N'
+ description: The extra distance information.
+ ExtraCostPerDistance:
+ required:
+ - Cost
+ - Distance
+ type: object
+ properties:
+ Distance:
+ $ref: '#/components/schemas/CarsDistance'
+ Cost:
+ $ref: '#/components/schemas/CarsMoney'
+ description: Extra cost for each increment of distance used.
+ FuelAC:
+ required:
+ - Code
+ - Value
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Car FuelAC code.
+ example: D
+ Value:
+ type: string
+ description: Car FuelAC value.
+ example: Diesel Air
+ description: >-
+ Car fuel type and whether Air Conditioning is included. Please find list
+ of Car Fuel AC Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115005378328
+ CarsGeoLocation:
+ required:
+ - Latitude
+ - Longitude
+ type: object
+ properties:
+ Latitude:
+ type: string
+ description: Latitude of the location.
+ example: '38.184978'
+ Longitude:
+ type: string
+ description: Longitude of the location.
+ example: '85.7412'
+ Obfuscated:
+ type: boolean
+ description: Container for Geo location.
+ Image:
+ required:
+ - Href
+ - Size
+ - Type
+ type: object
+ properties:
+ Type:
+ type: string
+ description: >-
+ Resource typeSupported values :Thumbnail - (70 pixels wide)Image -
+ (165 pixels wide)
+ Size:
+ type: string
+ description: >-
+ Size of imageSupported values :s - (165 pixels wide)t - (70 pixels
+ wide)
+ Href:
+ type: string
+ description: URL for the image.
+ description: List of image resources of the car product.
+ CarsLink:
+ required:
+ - Href
+ type: object
+ properties:
+ Accept:
+ type: string
+ description: Accept header.
+ Method:
+ type: string
+ description: HTTP method to connect.
+ example: GET
+ Href:
+ type: string
+ description: HATEOAS URL to fetch details.
+ description: 'A map of links to other Car APIs. possible link name: ApiBooking'
+ CarsLocation:
+ required:
+ - LocationId
+ type: object
+ properties:
+ Type:
+ type: string
+ description: The type of location code (MULTICITY | METROCODE).
+ example: MULTICITY
+ Id:
+ type: string
+ description: Expedia Region ID of the specified airport.
+ example: '6139103'
+ Name:
+ type: string
+ description: Location Name
+ example: Seattle-Tacoma International Airport
+ Code:
+ type: string
+ description: Location Code
+ example: SEA
+ LocationId:
+ type: string
+ description: Location id.
+ example: SEAT001
+ Address:
+ $ref: '#/components/schemas/CarsAddress'
+ PointOfInterest:
+ type: string
+ GeoLocation:
+ $ref: '#/components/schemas/CarsGeoLocation'
+ Neighborhood:
+ $ref: '#/components/schemas/CarsNeighborhood'
+ RegionId:
+ type: integer
+ description: RegionId the location resides in.
+ format: int64
+ example: 6200275
+ Country:
+ $ref: '#/components/schemas/CarsCountry'
+ description: >-
+ Container for list of possible locations that could be used to
+ disambiguate the query.
+ Mileage:
+ required:
+ - FreeDistance
+ - FreeDistanceRatePeriod
+ type: object
+ properties:
+ FreeDistance:
+ $ref: '#/components/schemas/CarsDistance'
+ FreeDistanceRatePeriod:
+ type: string
+ description: Rate period for free distance.
+ example: Daily
+ ExtraCostPerDistance:
+ $ref: '#/components/schemas/ExtraCostPerDistance'
+ description: A list of charges to be levied based on the mileage driven.
+ CarsMoney:
+ required:
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ description: Price of Special equipment.
+ CarsNeighborhood:
+ required:
+ - Id
+ - Name
+ type: object
+ properties:
+ Id:
+ type: string
+ description: Neighborhood id.
+ example: '6160232'
+ Name:
+ type: string
+ description: Neighborhood name.
+ example: Le Pharo
+ description: >-
+ Geography entities which are typically contained within a city. This
+ includes the categories neighborhood and point of interest. Low level
+ regions are not a formally defined concept in the geography model.
+ NonCancellableDateTimeRange:
+ required:
+ - EndDateTime
+ - StartDateTime
+ type: object
+ properties:
+ StartDateTime:
+ type: string
+ description: The time of this non-cancellable window starts
+ format: date-time
+ EndDateTime:
+ type: string
+ description: The time of this non-cancellable window ends
+ format: date-time
+ description: Container for non-cancellable date and time range element
+ PenaltyRule:
+ required:
+ - EndDateTime
+ - Penalty
+ - StartDateTime
+ type: object
+ properties:
+ Penalty:
+ $ref: '#/components/schemas/PenaltyType'
+ StartDateTime:
+ type: string
+ description: The time when this penalty window starts
+ format: date-time
+ EndDateTime:
+ type: string
+ description: The time when this penalty window ends
+ format: date-time
+ description: Container for penalty rules
+ PenaltyType:
+ required:
+ - Currency
+ - Type
+ - Value
+ type: object
+ properties:
+ Type:
+ type: string
+ description: >-
+ What the penalty amount is based on. should be one of the following
+ values:AMOUNT : it means the user is charged a fixed amount
+ specified in the value node. Say 50$ for example.PERCENT : it means
+ the user is charged a percentage of the base rate/total rate.PERDAY
+ : it means the user is charged Per Day Price. For eg.., if the value
+ is 2, it means the penalty amount will the Per day price of 2 days.
+ Value:
+ type: string
+ description: >-
+ Value to indicate how many/much of the type listed above is going to
+ be charged as a penalty.
+ example: '20.0'
+ Currency:
+ type: string
+ description: 'The currency of the amount, only valid when Type=AMOUNT'
+ example: USD
+ description: Container for no show penalty element
+ Price:
+ required:
+ - TotalPrice
+ type: object
+ properties:
+ RatePeriodUnitPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ BasePrice:
+ $ref: '#/components/schemas/CarsMoney'
+ TaxesAndFees:
+ $ref: '#/components/schemas/CarsMoney'
+ TotalPriceDueAtBooking:
+ $ref: '#/components/schemas/CarsMoney'
+ TotalPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ description: Pricing information for the rental.
+ RateDetails:
+ required:
+ - PrePay
+ - RatePeriod
+ type: object
+ properties:
+ RatePeriod:
+ type: string
+ description: 'Rate period. Supported values: Daily,Weekly,Monthly,Trip,Weekend'
+ example: Daily
+ RateCode:
+ type: string
+ description: Rate plan identifier.
+ example: A3D10
+ PrePay:
+ type: boolean
+ description: >-
+ Indicates whether this reservation should be paid at the time of
+ booking (true) or at time of rental return (false).
+ example: false
+ CreditCardRequired:
+ type: boolean
+ description: Indicates whether credit card is required for booking.
+ example: false
+ Discounts:
+ type: array
+ description: List of discount information.
+ items:
+ $ref: '#/components/schemas/Discount'
+ Mileages:
+ type: array
+ description: A list of charges to be levied based on the mileage driven.
+ items:
+ $ref: '#/components/schemas/Mileage'
+ MobileRate:
+ type: boolean
+ description: Indicates whether car offer is mobile rate.
+ example: true
+ description: The rate detail information for a car offer.
+ Rating:
+ required:
+ - RatingPercentage
+ - RatingCount
+ type: object
+ properties:
+ RatingPercentage:
+ type: string
+ description: The percentage of rating.
+ example: 87%
+ RatingCount:
+ type: string
+ description: The total count of rating.
+ example: '2092'
+ RatingDetails:
+ type: array
+ description: List of all the details of rating.
+ items:
+ $ref: '#/components/schemas/RatingDetails'
+ description: The rating of the car being offered.
+ RatingWithoutDetails:
+ required:
+ - RatingPercentage
+ - RatingCount
+ type: object
+ properties:
+ RatingPercentage:
+ type: string
+ description: The percentage of rating.
+ example: 87%
+ RatingCount:
+ type: string
+ description: The total count of rating.
+ example: '2092'
+ description: The rating of the car being offered.
+ RatingDetails:
+ required:
+ - Category
+ - Percentage
+ type: object
+ properties:
+ Category:
+ type: string
+ description: The category of rating detail.
+ example: Pick-up location
+ Percentage:
+ type: string
+ description: The percentage of rating detail category.
+ example: '98'
+ description: List of all the details of rating.
+ Supplier:
+ required:
+ - Code
+ - Id
+ - Name
+ type: object
+ properties:
+ Id:
+ type: string
+ description: Supplier ID.
+ example: '3'
+ Name:
+ type: string
+ description: Supplier Name.
+ example: Advantage Rent-A-Car
+ Code:
+ type: string
+ description: Supplier Code.
+ example: AD
+ LogoImageUrl:
+ type: string
+ description: Supplier Logo Image Url.
+ example: 'https://media.int.expedia.com/int/cars/logos/NU.png'
+ description: The supplier of the car being offered.
+ TimeRange:
+ required:
+ - EndTime
+ - StartTime
+ type: object
+ properties:
+ StartTime:
+ type: string
+ description: Start time at pickup location of the date range.
+ format: time
+ example: '07:00:00'
+ EndTime:
+ type: string
+ description: End time at pickup location of the date range.
+ format: time
+ example: '17:00:00'
+ description: A list of time range to indicate the operation hours of the date range.
+ TransmissionDrive:
+ required:
+ - Code
+ - Value
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Car transmission and drive code.
+ example: M
+ Value:
+ type: string
+ description: Car transmission and drive value.
+ example: Manual AWD
+ description: >-
+ Car transmission and drive. Please find list of Car Transmission Drive
+ Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115005380028
+ VehicleDetails:
+ required:
+ - CarCategory
+ - CarClass
+ - CarType
+ - FuelAC
+ - TransmissionDrive
+ type: object
+ properties:
+ Make:
+ type: string
+ description: Car manufacturer and model.
+ example: Kia Rio
+ CarClass:
+ type: string
+ description: Car category and type.
+ example: Economy 2/4Door Car
+ MinDoors:
+ type: integer
+ description: Minimal car door count.
+ format: int32
+ example: 2
+ MaxDoors:
+ type: integer
+ description: Maximal car door count.
+ format: int32
+ example: 4
+ FuelLevel:
+ type: string
+ description: Car fuel information.
+ example: Full to Full
+ CarCategory:
+ $ref: '#/components/schemas/CarCategory'
+ CarType:
+ $ref: '#/components/schemas/CarType'
+ TransmissionDrive:
+ $ref: '#/components/schemas/TransmissionDrive'
+ FuelAC:
+ $ref: '#/components/schemas/FuelAC'
+ Capacity:
+ $ref: '#/components/schemas/Capacity'
+ description: Specific information for a car.
+ VendorLocationDetails:
+ required:
+ - DateTime
+ - Location
+ type: object
+ properties:
+ DateTime:
+ type: string
+ description: Pickup date and time.
+ format: date-time
+ ShuttleCategory:
+ type: string
+ description: >-
+ The category of shuttle from the terminal to the rental car counter.
+ Please find list of Shuttle Categories in the Related Links Section
+ below.
+ example: AirportShuttleToCounterAndCar
+ Location:
+ $ref: '#/components/schemas/CarsLocation'
+ Distance:
+ $ref: '#/components/schemas/CarsDistance'
+ OpenSchedule:
+ type: array
+ description: >-
+ A List of date time periods to indicate the vendor business hours
+ for the pickup time.
+ items:
+ $ref: '#/components/schemas/DateTimePeriod'
+ description: Drop off information
+ CarsWarning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Standardized warning code.
+ example: INVALID_CORPORATE_DISCOUNT_CODE
+ Description:
+ type: string
+ description: Standardized warning description message.
+ example: >-
+ The Corporate DiscountCode '811490' is unavailable, but we found
+ other rates for you.
+ OriginalPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ NewPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ ChangedAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ ChangedPercentage:
+ type: string
+ description: |-
+ The changed percentage.
+ In the sample 2.97 means the changed percentage is 2.97%.
+ example: '2.97'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/CarsLink'
+ xml:
+ wrapped: true
+ description: Container for warning codes
+ CarsError:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ DetailCode:
+ type: string
+ description: Detailed error code describing the issue.
+ example: MULTIPLE_AMBIGUOUS_LOCATION
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: 'Multiple pickup locations found. '
+ LocationKeyword:
+ type: string
+ description: The requested location that caused the error.
+ example: 'Portland. '
+ LocationOptions:
+ type: array
+ description: >-
+ List for possible locations from which the customer must choose the
+ best one to be re-submitted in the request.
+ items:
+ $ref: '#/components/schemas/CarsLocationOption'
+ description: Container for error list.
+ CarsErrors:
+ required:
+ - Errors
+ - TransactionId
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/CarsError'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ CarsLocationOption:
+ required:
+ - Locations
+ - RequestedLocation
+ type: object
+ properties:
+ RequestedLocation:
+ type: string
+ description: Location used in partner request.
+ example: Paris
+ Locations:
+ type: array
+ description: >-
+ Container for list of possible locations that could be used to
+ disambiguate the query.
+ items:
+ $ref: '#/components/schemas/CarsLocation'
+ Type:
+ type: string
+ description: Type of the location.
+ example: TRAINSTATION
+ RegionId:
+ type: string
+ description: RegionId the location resides in.
+ example: '6200275'
+ ShortName:
+ type: string
+ description: The name of the location which matches the location keyword.
+ example: Dublin Connolly Station
+ AirportCode:
+ type: string
+ description: Indicates the nearest major airport to the location.
+ example: DUB
+ Address:
+ type: string
+ description: The address of the location.
+ example: 'Dublin Connolly Station, Ireland'
+ Country:
+ $ref: '#/components/schemas/CarsCountry'
+ GeoLocation:
+ $ref: '#/components/schemas/CarsGeoLocation'
+ description: >-
+ List for possible locations from which the customer must choose the best
+ one to be re-submitted in the request.
+ DisambiguationResponse:
+ required:
+ - Errors
+ - TransactionId
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/CarsError'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: ec007d1c-8d9d-4ed5-a880-da5b477d8c6c
+ xml:
+ name: DisambiguationResponse
+ CarDetails:
+ required:
+ - CancellationPolicy
+ - DropOffDetails
+ - PickupDetails
+ - Price
+ - Supplier
+ - VehicleDetails
+ type: object
+ properties:
+ OnlineCheckIn:
+ type: boolean
+ description: Indicate whether the supplier supports online checkin
+ example: true
+ SkipTheCounter:
+ type: boolean
+ description: Indicate whether the supplier supports skip the counter
+ example: true
+ VehicleDetails:
+ $ref: '#/components/schemas/VehicleDetails'
+ Supplier:
+ $ref: '#/components/schemas/Supplier'
+ PickupDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ DropOffDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ RateDetails:
+ $ref: '#/components/schemas/RateDetails'
+ Price:
+ $ref: '#/components/schemas/Price'
+ ReferencePrice:
+ $ref: '#/components/schemas/CarsMoney'
+ AdditionalFees:
+ type: array
+ description: >-
+ List of additional fees including both mandatory and optional
+ fees.such as young driver fee/drop off fee /CollisionDamageWaiver
+ items:
+ $ref: '#/components/schemas/AdditionalFee'
+ TaxesAndFeesDetails:
+ type: array
+ description: List of TaxesAndFees Details
+ items:
+ $ref: '#/components/schemas/TaxesAndFees'
+ ExtraFeesDetails:
+ type: array
+ description: List of ExtraFeesDetails
+ items:
+ $ref: '#/components/schemas/ExtraFees'
+ SpecialEquipments:
+ type: array
+ description: >-
+ Description and costs of any optional special equipment that may be
+ rented with the car.
+ items:
+ $ref: '#/components/schemas/Equipment'
+ RentalLimits:
+ $ref: '#/components/schemas/RentalLimits'
+ CancellationPolicy:
+ $ref: '#/components/schemas/CarsCancellationPolicy'
+ NoShowPenalty:
+ $ref: '#/components/schemas/PenaltyType'
+ CarPolicies:
+ type: array
+ description: A list of policies that apply to this car rental.
+ items:
+ $ref: '#/components/schemas/CarPolicy'
+ Images:
+ type: array
+ description: List of image resources of the car product.
+ items:
+ $ref: '#/components/schemas/Image'
+ Rating:
+ $ref: '#/components/schemas/Rating'
+ description: Details of requested car.
+ CarDetailsResponse:
+ required:
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for warning codes
+ items:
+ $ref: '#/components/schemas/CarsWarning'
+ TransactionId:
+ type: string
+ description: A unique identifier for this transaction.
+ example: 1111111-2222-3333-4444-55555555555
+ CarDetails:
+ $ref: '#/components/schemas/CarDetails'
+ ValidFormsOfPayment:
+ type: array
+ description: >-
+ List of all the forms of payment that will be accepted for the
+ booking of this rental transaction.
+ items:
+ $ref: '#/components/schemas/CarsValidFormsOfPayment'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/CarsLink'
+ description: 'A map of links to other Car APIs. possible link name: ApiBooking'
+ xml:
+ wrapped: true
+ xml:
+ name: CarDetailsResponse
+ CarPolicy:
+ required:
+ - CategoryCode
+ type: object
+ properties:
+ CategoryCode:
+ type: string
+ description: >-
+ The category that this policy applies to (e.g. cancellation, drivers
+ license requirements, driver age requirements)
+ example: Guarantee
+ PolicyText:
+ type: string
+ description: >-
+ The raw text of the policy.This is generally localized into the
+ requested language, but may be English if no other translations are
+ available.
+ example: Credit card required.
+ description: A list of policies that apply to this car rental.
+ Duration:
+ required:
+ - Count
+ - Unit
+ type: object
+ properties:
+ Unit:
+ type: string
+ description: The unit for minimum amount of time for a rental.
+ example: Day
+ Count:
+ type: integer
+ description: >-
+ The minimum number of units that qualify for minimum amount of time
+ for a rental.
+ format: int64
+ example: 1
+ description: >-
+ The maximum amount of time for a rental that still qualifies for this
+ rate.This may or may not be the same as the current rental duration.
+ Equipment:
+ required:
+ - Code
+ - Name
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Special equipment code
+ example: BabyChildSeat
+ Name:
+ type: string
+ description: Special equipment name
+ example: Baby Child Seat
+ RatePeriod:
+ type: string
+ description: >-
+ Unit indicating the price of special equipment. Support
+ value:Trip,Daily
+ example: Trip
+ Price:
+ $ref: '#/components/schemas/CarsMoney'
+ description: >-
+ Description and costs of any optional special equipment that may be
+ rented with the car.
+ ExtraFees:
+ required:
+ - Amount
+ - Unit
+ - UnitCount
+ type: object
+ properties:
+ Unit:
+ type: string
+ description: >-
+ Rate period beyond the base rate. Supported values: ExtraHourly,
+ ExtraDaily
+ example: ExtraHourly
+ UnitCount:
+ type: integer
+ description: Numbers of period
+ format: int64
+ example: 2
+ Amount:
+ $ref: '#/components/schemas/CarsMoney'
+ description: List of ExtraFeesDetails
+ RentalLimits:
+ required:
+ - MaxDuration
+ - MinDuration
+ type: object
+ properties:
+ MinDuration:
+ $ref: '#/components/schemas/Duration'
+ MaxDuration:
+ $ref: '#/components/schemas/Duration'
+ description: Limitations that are part of this rental agreement.
+ TaxesAndFees:
+ required:
+ - Amount
+ - Description
+ type: object
+ properties:
+ Description:
+ type: string
+ description: TaxesAndFees description
+ example: "Rental, CONSOLIDATED FACILITY CHG 4.00/DAY\t"
+ Amount:
+ $ref: '#/components/schemas/CarsMoney'
+ description: List of TaxesAndFees Details
+ CarsValidFormsOfPayment:
+ required:
+ - BrandName
+ - PaymentMethod
+ - PaymentSubMethod
+ type: object
+ properties:
+ PaymentMethod:
+ type: string
+ description: Method of payment
+ example: CreditCard
+ PaymentSubMethod:
+ type: string
+ description: Sub method of payment
+ example: American Express
+ BrandName:
+ type: string
+ description: >-
+ The brand name of the payment sub-method to be displayed to the
+ customer. In many cases it will be the same as the payment
+ sub-method, but "Visa/Carte Bleue" and "Visa/Delta are some of the
+ exceptions.
+ example: American Express
+ description: >-
+ List of all the forms of payment that will be accepted for the booking
+ of this rental transaction.
+ APIMError:
+ title: APIMError
+ properties:
+ message:
+ type: string
+ PresignedUrlResponse:
+ type: object
+ properties:
+ transactionId:
+ type: string
+ description: Unique identifier for each API response.
+ error:
+ $ref: '#/components/schemas/Fault'
+ warning:
+ $ref: '#/components/schemas/Fault'
+ bestMatchedFile:
+ $ref: '#/components/schemas/FileInfo'
+ otherFileOptions:
+ type: array
+ items:
+ $ref: '#/components/schemas/FileInfo'
+ description: Container for file Pre-signed download URL and informations.
+ FileInfo:
+ type: object
+ properties:
+ partner:
+ nullable: true
+ type: string
+ description: >-
+ The partner associated with the file. List of partners: `Bing`,
+ `Criteo`, `Facebook`, `Google`, `Retarget`, `Snapchat`.
+ brand:
+ nullable: true
+ type: string
+ description: >-
+ The brand associated with the file content. List of brand:
+ `Expedia`, `Hotels`, `Hotwire`, `Vrbo`, `HomeAway`, `Abritel`,
+ `Bookabach`, `Stayz`, `Ebbokers`, `Travalocity`, `Orbitz`, `Wotif`.
+ fileContentType:
+ nullable: true
+ type: string
+ description: >-
+ The type associated with the file content. List of types:
+ `Amenities`, `Descriptions`, `Images`, `Listings`, `Locations`,
+ `Policies`, `Regions`, `Reviews`, `Summary`, `VacationRental`
+ locale:
+ nullable: true
+ type: string
+ description: The locale associated with the file content.
+ fileName:
+ type: string
+ description: File name.
+ size:
+ $ref: '#/components/schemas/FileSize'
+ fileLastUpdated:
+ type: string
+ description: >-
+ The time about the file last updated. The format is
+ uuuu-MM-dd'T'HH:mm:ss.SSSX
+ downloadUrl:
+ type: string
+ description: >-
+ Pre-signed URL is a self signed URL generated for a resource in S3
+ with a set expiration time.
+ downloadUrlExpires:
+ type: string
+ description: >-
+ The time about the download Url expires. The format is
+ uuuu-MM-dd'T'HH:mm:ss.SSSX
+ filterConditions:
+ $ref: '#/components/schemas/FilterConditions'
+ bestMatchedLink:
+ $ref: '#/components/schemas/SdpLink'
+ Fault:
+ type: object
+ description: API returned information.
+ properties:
+ code:
+ type: string
+ description: Fault code.
+ description:
+ type: string
+ description: Fault description.
+ FileSize:
+ type: object
+ description: The information about the file size.
+ properties:
+ unit:
+ type: string
+ enum:
+ - KB
+ - MB
+ - GB
+ description: The unit about the file size.
+ value:
+ type: integer
+ format: int64
+ description: The value about the file size.
+ FilterConditions:
+ nullable: true
+ type: object
+ description: >-
+ Container filter condition for the filtered file.
+ [Filters](https://confluence.expedia.biz/display/EWS/Filtered+Feed+File+Generation+Schedule+and+Access#FilteredFeedFileGenerationScheduleandAccess-Filters)
+ properties:
+ pointOfSupply:
+ type: string
+ description: >-
+ List of filter condition for PointOfSupplies: `US`,
+ `AT`,`BR`,`CA`,`FR`,`DE`,`GR`,`IT`, `JP`,`KR`,`MX`,`PT`,`ES`,`TR`,
+ `AE`,`GB`.
+ brand:
+ type: string
+ description: 'List of filter condition for Brands: `VRBO`.'
+ structureType:
+ type: string
+ description: 'List of filter condition for StructureTypes: `VR`, `CONVENTIONAL`.'
+ SdpLink:
+ nullable: true
+ type: object
+ description: >-
+ Contains link information, including link address, request method. Only
+ provided if FileInfo is in OtherFileOptions.
+ properties:
+ href:
+ type: string
+ description: a link address.
+ method:
+ type: string
+ description: >-
+ Request method, it will support `GET`, `POST`, `DELETE` and `PUT`
+ etc...
+ SdpAPIMError:
+ type: object
+ description: Error from the APIM.
+ properties:
+ message:
+ type: string
+ description: Error from the APIM.
+ ActivitiesMoney:
+ required:
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ description: Container for the discount amount.
+ ActivitiesPrice:
+ required:
+ - TotalRate
+ type: object
+ properties:
+ Category:
+ type: string
+ description: |-
+ Type of passenger.
+ Values supported are:
+ ADULT | SENIOR | CHILD
+ example: ADULT
+ TotalRate:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalTaxesAndFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ ReferencePrice:
+ $ref: '#/components/schemas/ReferencePrice'
+ Savings:
+ $ref: '#/components/schemas/Savings'
+ description: The price of the offer
+ ReferencePrice:
+ required:
+ - TotalRate
+ type: object
+ properties:
+ TotalRate:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalTaxesAndFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ description: Container for the reference price used for strike out display.
+ Restrictions:
+ required:
+ - Max
+ - Min
+ - Type
+ type: object
+ properties:
+ Type:
+ type: string
+ description: Type of the Restriction.
+ example: AGE
+ Max:
+ type: string
+ description: Maximum value allowed for the restriction type.
+ example: '255'
+ Min:
+ type: string
+ description: Minimum value allowed for the restriction type.
+ example: '9'
+ Description:
+ type: string
+ description: The text to describe the restriction.
+ example: 9+ years
+ description: Container of the Restrictions associated to this ticket.
+ Savings:
+ required:
+ - Amount
+ - Percentage
+ type: object
+ properties:
+ Percentage:
+ type: integer
+ description: >-
+ The percentage of the price that has been discounted off the regular
+ price for the current activity.
+ format: int32
+ example: 10
+ Amount:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ description: Container of savings information.
+ Ticket:
+ required:
+ - Code
+ - Count
+ - Id
+ - TicketPrice
+ type: object
+ properties:
+ Id:
+ type: integer
+ description: The numerical identifier for the ticket.
+ format: int32
+ example: 6429
+ Code:
+ type: string
+ description: |-
+ The code for the ticket.
+ Values supported are:
+ Adult
+ Traveler
+ Child
+ Group
+ Senior
+ Infant
+ Student
+ example: Adult
+ Count:
+ type: integer
+ description: The number of each ticket type to be booked.
+ format: int32
+ example: 1
+ Restrictions:
+ $ref: '#/components/schemas/Restrictions'
+ TicketPrice:
+ $ref: '#/components/schemas/ActivitiesPrice'
+ description: The list of Ticket information.
+ ActivitiesAddress:
+ type: object
+ properties:
+ Address1:
+ type: string
+ description: 'Street Number, Street Name, or PO Box.'
+ example: 724 Pine St
+ Address2:
+ type: string
+ description: 'Apartment, Floor, Suite, Bldg'
+ example: Second Floor
+ Suite:
+ type: string
+ description: Suite/apartment number
+ example: '123'
+ City:
+ type: string
+ description: The city
+ example: New York
+ Province:
+ type: string
+ description: The state or province.
+ example: NY
+ Country:
+ type: string
+ description: 3-letter code for the country.
+ example: USA
+ PostalCode:
+ type: string
+ description: Zip/postal code.
+ example: '98004'
+ description: Address information
+ ActivitiesCountry:
+ required:
+ - IsoCode2
+ - IsoCode3
+ - Name
+ type: object
+ properties:
+ Name:
+ type: string
+ description: country name
+ example: Ireland
+ Code:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ IsoCode2:
+ type: string
+ description: 2-letter code for the country
+ example: IE
+ IsoCode3:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ description: Container for disambiguation country information
+ ActivitiesError:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ DetailCode:
+ type: string
+ description: Detailed error code describing the issue.
+ example: MULTIPLE_AMBIGUOUS_LOCATION
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: 'Multiple pickup locations found. '
+ LocationKeyword:
+ type: string
+ description: The requested location that caused the error.
+ example: 'Portland. '
+ LocationOptions:
+ type: array
+ description: >-
+ List for possible locations from which the customer must choose the
+ best one to be re-submitted in the request.
+ items:
+ $ref: '#/components/schemas/ActivitiesLocationOption'
+ description: Container for error list.
+ ActivitiesErrors:
+ required:
+ - Errors
+ - TransactionId
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/ActivitiesError'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ ActivitiesGeoLocation:
+ required:
+ - Latitude
+ - Longitude
+ type: object
+ properties:
+ Latitude:
+ type: string
+ description: Latitude of the location.
+ example: '38.184978'
+ Longitude:
+ type: string
+ description: Longitude of the location.
+ example: '85.7412'
+ Obfuscated:
+ type: boolean
+ description: Geographic information
+ ActivitiesLocation:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: The type of location code (MULTICITY | METROCODE).
+ example: MULTICITY
+ Id:
+ type: string
+ description: Expedia Region ID of the specified airport.
+ example: '6139103'
+ Name:
+ type: string
+ description: Location Name
+ example: Seattle-Tacoma International Airport
+ Code:
+ type: string
+ description: Location Code
+ example: SEA
+ LocationId:
+ type: string
+ description: Location id.
+ example: SEAT001
+ Address:
+ $ref: '#/components/schemas/ActivitiesAddress'
+ PointOfInterest:
+ type: string
+ GeoLocation:
+ $ref: '#/components/schemas/ActivitiesGeoLocation'
+ Neighborhood:
+ $ref: '#/components/schemas/ActivitiesNeighborhood'
+ RegionId:
+ type: integer
+ description: RegionId the location resides in.
+ format: int64
+ example: 6200275
+ Country:
+ $ref: '#/components/schemas/ActivitiesCountry'
+ description: List of location(s) where the activity will happen.
+ ActivitiesLocationOption:
+ required:
+ - Locations
+ - RequestedLocation
+ type: object
+ properties:
+ RequestedLocation:
+ type: string
+ description: Location used in partner request.
+ example: Paris
+ Locations:
+ type: array
+ description: >-
+ Container for list of possible locations that could be used to
+ disambiguate the query.
+ items:
+ $ref: '#/components/schemas/ActivitiesLocation'
+ Type:
+ type: string
+ description: Type of the location.
+ example: TRAINSTATION
+ RegionId:
+ type: string
+ description: RegionId the location resides in.
+ example: '6200275'
+ ShortName:
+ type: string
+ description: The name of the location which matches the location keyword.
+ example: Dublin Connolly Station
+ AirportCode:
+ type: string
+ description: Indicates the nearest major airport to the location.
+ example: DUB
+ Address:
+ type: string
+ description: The address of the location.
+ example: 'Dublin Connolly Station, Ireland'
+ Country:
+ $ref: '#/components/schemas/ActivitiesCountry'
+ GeoLocation:
+ $ref: '#/components/schemas/ActivitiesGeoLocation'
+ description: >-
+ List for possible locations from which the customer must choose the best
+ one to be re-submitted in the request.
+ ActivitiesNeighborhood:
+ required:
+ - Id
+ - Name
+ type: object
+ properties:
+ Id:
+ type: string
+ description: Neighborhood id.
+ example: '6160232'
+ Name:
+ type: string
+ description: Neighborhood name.
+ example: Le Pharo
+ description: >-
+ Geography entities which are typically contained within a city. This
+ includes the categories neighborhood and point of interest. Low level
+ regions are not a formally defined concept in the geography model.
+ Activity:
+ required:
+ - Categories
+ - Description
+ - Duration
+ - FreeCancellation
+ - Id
+ - Media
+ - Price
+ - Supplier
+ - Title
+ type: object
+ properties:
+ Id:
+ type: integer
+ description: The numerical identifier for this particular activity
+ format: int32
+ example: 166597
+ Title:
+ type: string
+ description: The display title for this activity.
+ example: >-
+ Faster Than Skip-the-Line: Vatican, Sistine Chapel & St. Peter's
+ Tour
+ Description:
+ type: string
+ description: The description of the Activity.
+ example: >-
+ Enjoy 5 of Seattle's most popular attractions with a multi-ticket
+ booklet that’s valid for 9 consecutive days. This pass is perfect if
+ you want to explore the city on your schedule, craft your own
+ itinerary, and visit the city’s can’t-miss museums and most iconi...
+ Media:
+ type: array
+ description: List of activity Media.
+ items:
+ $ref: '#/components/schemas/ActivitiesMedia'
+ Categories:
+ type: array
+ description: >-
+ A list of the Activity categories to which this particular activity
+ belongs.
+
+ Possible values are:
+
+ Adventures
+
+ Air, Balloon & Helicopter Tours
+
+ Attractions
+
+ Cruises & Water Tours
+
+ Day Trips & Excursions
+
+ Food & Drink
+
+ Hop-on Hop-off
+
+ Multi-Day & Extended Tours
+
+ Nightlife
+
+ Private Tours
+
+ Private Transfers
+
+ Shared Transfers
+
+ Show & Sport Tickets
+
+ Sightseeing Passes
+
+ Theme Parks
+
+ Tours & Sightseeing
+
+ Walking & Bike Tours
+
+ Water Activities
+
+ Wedding Ceremonies
+
+ Winter Activities
+ example:
+ - Walking & Bike Tours
+ items:
+ type: string
+ description: >-
+ A list of the Activity categories to which this particular
+ activity belongs.
+ example: Walking & Bike Tours
+ xml:
+ name: Categories
+ Duration:
+ type: string
+ description: |-
+ The anticipated time duration for the activity.
+ Using java jdk Duration parsing.
+ example: PT1H0M
+ FreeCancellation:
+ type: boolean
+ description: >-
+ A boolean value describing whether or not this activity reservation
+ can be cancelled without incurring a penalty.
+ example: true
+ Price:
+ $ref: '#/components/schemas/ActivitiesPrice'
+ Redemption:
+ $ref: '#/components/schemas/Redemption'
+ ActivityLocations:
+ type: array
+ description: Container of location information where activity happens.
+ items:
+ $ref: '#/components/schemas/ActivitiesLocation'
+ Supplier:
+ $ref: '#/components/schemas/ActivitiesSupplier'
+ ReviewScore:
+ type: integer
+ description: The overall Expedia score for the activity.
+ format: int32
+ example: 72
+ ReviewCount:
+ type: integer
+ description: >-
+ The number of Expedia reviews that went into the calculation of the
+ ReviewScore.
+ format: int32
+ example: 19
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/ActivitiesLink'
+ description: HATEOAS links included in this response.
+ xml:
+ wrapped: true
+ CancellationPolicy:
+ $ref: '#/components/schemas/ActivitiesCancellationPolicy'
+ Highlights:
+ type: array
+ description: Web formatted statement of the Highlight(s) for the activity.
+ items:
+ type: string
+ description: Web formatted statement of the Highlight(s) for the activity.
+ xml:
+ name: Highlights
+ TermsAndConditions:
+ type: array
+ description: Terms and Conditions for the Activity.
+ items:
+ type: string
+ description: Terms and Conditions for the Activity.
+ xml:
+ name: TermsAndConditions
+ Inclusions:
+ type: array
+ description: Web formatted statement of what is included in the activity
+ items:
+ type: string
+ description: Web formatted statement of what is included in the activity
+ xml:
+ name: Inclusions
+ Exclusions:
+ type: array
+ description: Web formatted statement of what is NOT included in the activity
+ items:
+ type: string
+ description: Web formatted statement of what is NOT included in the activity
+ xml:
+ name: Exclusions
+ KnowBeforeYouBook:
+ type: array
+ description: >-
+ Web formatted statement of things that a purchaser should be aware
+ of BEFORE they book this activity.
+ items:
+ type: string
+ description: >-
+ Web formatted statement of things that a purchaser should be aware
+ of BEFORE they book this activity.
+ xml:
+ name: KnowBeforeYouBook
+ KnowBeforeYouGo:
+ type: array
+ description: >-
+ Web formatted statement of things that a purchaser should be aware
+ of BEFORE they go to this activity.
+ items:
+ type: string
+ description: >-
+ Web formatted statement of things that a purchaser should be aware
+ of BEFORE they go to this activity.
+ xml:
+ name: KnowBeforeYouGo
+ Offers:
+ type: array
+ description: Offers for the activity.
+ items:
+ $ref: '#/components/schemas/Offer'
+ description: Detailed information on the Activity.
+ AvailableTimeSlot:
+ required:
+ - AllDayActivity
+ - CancellationPolicy
+ - DateTime
+ - Tickets
+ type: object
+ properties:
+ DateTime:
+ type: string
+ description: The date and time when the activity happens.
+ format: date-time
+ AllDayActivity:
+ type: boolean
+ description: Indicates whether the activity is an all-day activity.
+ example: true
+ CancellationPolicy:
+ $ref: '#/components/schemas/ActivitiesCancellationPolicy'
+ Tickets:
+ type: array
+ description: Container for ticket information.
+ items:
+ $ref: '#/components/schemas/Ticket'
+ description: The list of available Time Slots for the activity.
+ ActivitiesCancellationPolicy:
+ required:
+ - FreeCancellation
+ type: object
+ properties:
+ FreeCancellation:
+ type: boolean
+ description: >-
+ Indicates whether the activity can be canceled free of charge within
+ the cancellation window or not.
+ example: true
+ CancelPolicyDescription:
+ type: string
+ description: The description of Cancellation Policy.
+ example: 72 hours
+ FreeCancellationMinHours:
+ type: integer
+ description: >-
+ The minimum number of hours before activity when the activity can
+ still be cancelled for free.
+ format: int32
+ example: 72
+ FreeCancellationEndDateTime:
+ type: string
+ description: >-
+ The date and time after which the activity will not be able to be
+ cancelled for free, stated in the local time to where the activity
+ takes place.
+ format: date-time
+ description: Container for the Cancellation Policy information.
+ ActivitiesLink:
+ required:
+ - Href
+ type: object
+ properties:
+ Accept:
+ type: string
+ description: Accept header.
+ Method:
+ type: string
+ description: HTTP method to connect.
+ example: GET
+ Href:
+ type: string
+ description: HATEOAS URL to fetch details.
+ description: Container of HATEOAS URL's
+ ActivitiesMedia:
+ required:
+ - Size
+ - Type
+ - Url
+ type: object
+ properties:
+ Type:
+ type: string
+ description: |-
+ type of the media. So far there is only one option:
+ 1: Image
+ example: '1'
+ Title:
+ type: string
+ description: Image title
+ example: Guestroom
+ Size:
+ type: string
+ description: >-
+ Image size
+
+ You can find a link to the complete list of Supported Images Sizes
+ in the Related Links section at the bottom of the page.
+ example: t
+ Url:
+ type: string
+ description: Image URL
+ example: >-
+ https://images.trvl-media.com/hotels/1000000/30000/20300/20230/20230_159_t.jpg
+ description: List of activity Media.
+ Offer:
+ required:
+ - AvailableTimeSlots
+ - Duration
+ - Id
+ - OfferPrice
+ - Title
+ type: object
+ properties:
+ Id:
+ type: integer
+ description: The numerical identifier for the offer.
+ format: int32
+ example: 166597
+ Title:
+ type: string
+ description: A descriptive title for this offer.
+ example: '8:30 AM, Tour in English'
+ Description:
+ type: string
+ description: Description of this offer.
+ Duration:
+ type: string
+ description: >-
+ The anticipated time duration for the activity, e xpressed using
+ Java JDK duration format.
+ AvailableTimeSlots:
+ type: array
+ description: The list of available Time Slots for the activity.
+ items:
+ $ref: '#/components/schemas/AvailableTimeSlot'
+ OfferPrice:
+ $ref: '#/components/schemas/ActivitiesPrice'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/ActivitiesLink'
+ description: Container of HATEOAS URL's
+ xml:
+ wrapped: true
+ description: Offers for the activity.
+ ActivitiesPhone:
+ required:
+ - CountryCode
+ - Number
+ type: object
+ properties:
+ CountryCode:
+ type: string
+ description: Country code of traveler's phone number; only digits allowed.
+ example: '1'
+ AreaCode:
+ type: string
+ description: Area code of traveler's phone number; only digits allowed.
+ example: '614'
+ Number:
+ type: string
+ description: Traveler's phone number; only digits allowed.
+ example: '9288472'
+ ExtensionNumber:
+ type: string
+ description: The phone of the company providing the activity.
+ Redemption:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: The type of redemption process associated to the activity.
+ example: Voucherless
+ RedemptionLocations:
+ type: array
+ description: >-
+ List of redemption locations where the activity will take place,
+ please refer to Location Section below.
+ items:
+ $ref: '#/components/schemas/ActivitiesLocation'
+ description: Container of redemption information.
+ ActivitiesSupplier:
+ required:
+ - Name
+ type: object
+ properties:
+ Name:
+ type: string
+ description: The name of the company providing the activity.
+ example: City Wonders
+ Phone:
+ $ref: '#/components/schemas/ActivitiesPhone'
+ description: The details information of company providing the activity.
+ ActivitiesWarning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Standardized warning code.
+ example: INVALID_CORPORATE_DISCOUNT_CODE
+ Description:
+ type: string
+ description: Standardized warning description message.
+ example: >-
+ The Corporate DiscountCode '811490' is unavailable, but we found
+ other rates for you.
+ OriginalPrice:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ NewPrice:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ ChangedAmount:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ ChangedPercentage:
+ type: string
+ description: |-
+ The changed percentage.
+ In the sample 2.97 means the changed percentage is 2.97%.
+ example: '2.97'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/ActivitiesLink'
+ xml:
+ wrapped: true
+ description: Container for all warnings generated during the transaction.
+ ActivityListingsResponse:
+ required:
+ - Count
+ - Location
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for all warnings generated during the transaction.
+ items:
+ $ref: '#/components/schemas/ActivitiesWarning'
+ TransactionId:
+ type: string
+ description: A unique identifier for this transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ Count:
+ type: integer
+ description: The number of activities returned in the response.
+ format: int64
+ example: 100
+ Location:
+ type: string
+ description: >-
+ The location that the user searched, expressed in the exact format
+ that the inventory system uses to designate the location.
+ example: 'shenzhen, dg'
+ StartDate:
+ type: string
+ description: >-
+ The startDate of the returned group of activities in YYYY-MM-DD
+ format.
+ format: date
+ example: '2021-08-01T00:00:00.000Z'
+ EndDate:
+ type: string
+ description: The endDate of returned group of activities in YYYY-MM-DD format.
+ format: date
+ example: '2021-08-10T00:00:00.000Z'
+ Activities:
+ type: array
+ description: List of activities matching the search criteria.
+ items:
+ $ref: '#/components/schemas/Activity'
+ Categories:
+ type: array
+ description: >-
+ Container for a breakdown of how many of each type of Activity have
+ been returned in the API response.
+ items:
+ $ref: '#/components/schemas/CategoryGroup'
+ CategoryGroup:
+ required:
+ - CategoryName
+ - Count
+ - GroupDisplayName
+ - GroupName
+ type: object
+ properties:
+ Count:
+ type: integer
+ description: >-
+ The count of the number of categories the returned set of activities
+ map to.
+ format: int32
+ example: 10
+ GroupName:
+ type: string
+ description: |-
+ The group which the category belongs
+ Possible value is:
+ Recommendations
+ Tours
+ Activities
+ Transportation
+ Promotions
+ Duration
+ example: Tours
+ GroupDisplayName:
+ type: string
+ description: The localized value for category name.
+ example: Wander- und Fahrradtouren
+ CategoryName:
+ type: string
+ description: The name of one of the categories.
+ example: Walking & Bike Tours
+ CategoryDisplayName:
+ type: string
+ description: >-
+ Container for a breakdown of how many of each type of Activity have been
+ returned in the API response.
+ ActivityDetailsResponse:
+ required:
+ - Location
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for all warnings generated during the transaction.
+ items:
+ $ref: '#/components/schemas/ActivitiesWarning'
+ TransactionId:
+ type: string
+ description: A unique identifier for this transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ Location:
+ type: string
+ description: >-
+ The location user searched, translated into the full, unambiguous
+ format.
+ example: 'shenzhen, dg'
+ StartDate:
+ type: string
+ description: The startDate of activities in YYY-MM-DD format.
+ format: date
+ example: '2021-08-01T00:00:00.000Z'
+ EndDate:
+ type: string
+ description: The endDate of activities in YYY-MM-DD format.
+ format: date
+ example: '2021-08-01T00:00:00.000Z'
+ ActivityDetails:
+ $ref: '#/components/schemas/Activity'
+ FlightsV1Error:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: 'Multiple pickup locations found. '
+ description: Container for error list.
+ FlightsV1Errors:
+ required:
+ - Errors
+ - TransactionId
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/FlightsV1Error'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ Airport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Three-letter IATA airport code for departure location
+ example: SFO
+ Name:
+ type: string
+ description: Name of departure airport
+ example: San Francisco International Airport
+ City:
+ type: string
+ description: City where departure airport resides
+ example: San Francisco
+ Province:
+ type: string
+ description: Province or State where departure airport resides
+ example: CA
+ Country:
+ type: string
+ description: Country where departure airport resides
+ example: USA
+ description: Container for arrival airport details.
+ xml:
+ name: Airport
+ BaggageFee:
+ required:
+ - BagType
+ type: object
+ properties:
+ BagType:
+ type: string
+ description: Specifies the type of baggage.
+ example: FIRST_BAG
+ enum:
+ - PREPAID_CARRY_ON
+ - PREPAID_FIRST_BAG
+ - PREPAID_SECOND_BAG
+ - CARRY_ON
+ - FIRST_BAG
+ - SECOND_BAG
+ WeightUnit:
+ type: string
+ description: >-
+ Specifies weight unit for this bagType. This will always be
+ kilograms.
+ example: kg
+ Weight:
+ type: string
+ description: Weight of the bag.
+ example: '23'
+ Application:
+ type: string
+ description: >-
+ This element specifies descriptive text useful in displaying baggage
+ fees.
+ example: per
+ enum:
+ - upto
+ - per
+ FixedCharge:
+ $ref: '#/components/schemas/Fee'
+ MaxCharge:
+ $ref: '#/components/schemas/Fee'
+ MinCharge:
+ $ref: '#/components/schemas/Fee'
+ description: >-
+ Container for baggage fee information of each bag type.
+
+ The baggage fee can vary for each bag type. The amount can be zero,
+ fixed amount or will be in a range
+ xml:
+ name: BaggageFees
+ Fee:
+ required:
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Name:
+ type: string
+ description: >-
+ This is used when a fee range is returned. It specifies the highest
+ value of bag fee.
+ FlightBaggageFee:
+ required:
+ - BaggageFees
+ - FlightSegment
+ type: object
+ properties:
+ FlightSegment:
+ $ref: '#/components/schemas/BaggageFeeFlightSegment'
+ BaggageFees:
+ type: array
+ description: >-
+ Container for baggage fee information of each bag type.
+
+ The baggage fee can vary for each bag type. The amount can be zero,
+ fixed amount or will be in a range
+ items:
+ $ref: '#/components/schemas/BaggageFee'
+ description: Container for information on Baggage fee information of each Segment.
+ xml:
+ name: FlightBaggageFees
+ FlightBaggageFeesResponse:
+ required:
+ - FlightBaggageFees
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for Warning messages.
+ items:
+ $ref: '#/components/schemas/FlightsV1Warning'
+ FlightBaggageFees:
+ type: array
+ description: >-
+ Container for information on Baggage fee information of each
+ Segment.
+ items:
+ $ref: '#/components/schemas/FlightBaggageFee'
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ xml:
+ name: FlightBaggageFeesResponse
+ FareRule:
+ required:
+ - FareBasisCode
+ - Rules
+ type: object
+ properties:
+ FareBasisCode:
+ type: string
+ description: Fare Basis Code to which the rules are applied.
+ example: W7EB
+ Rules:
+ type: array
+ description: Container for fare rules.
+ items:
+ $ref: '#/components/schemas/Rule'
+ description: Contains the list of fare rule details
+ Rule:
+ required:
+ - Category
+ - Description
+ type: object
+ properties:
+ Category:
+ type: string
+ description: Category name of the rule.
+ example: ELIGIBILITY
+ Description:
+ type: string
+ description: Rule description.
+ example: NO ELIGIBILITY REQUIREMENTS APPLY
+ description: Container for fare rules.
+ FlightFareRuleItem:
+ required:
+ - FlightSegment
+ type: object
+ properties:
+ FlightSegment:
+ required:
+ - AirlineCode
+ - ArrivalAirport
+ - DepartureAirport
+ type: object
+ properties:
+ AirlineCode:
+ type: string
+ description: >-
+ Specifies the 2 letter IATA airline code of the Most Significant
+ Carrier for the flight. In the case of flights with multiple
+ airlines involves this is the airline who will be charging for
+ the baggage.
+ example: VX
+ DepartureAirport:
+ $ref: '#/components/schemas/Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/Airport'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV1Link'
+ description: Contains the deeplink URLs of api services and websites
+ xml:
+ wrapped: true
+ FareRules:
+ type: array
+ description: Contains the list of fare rule details
+ xml:
+ wrapped: true
+ items:
+ $ref: '#/components/schemas/FareRule'
+ description: Container for flight segment information.
+ description: Container for segment and corresponding fare rules.
+ xml:
+ name: FlightFareRules
+ FlightFareRulesResponse:
+ required:
+ - FlightFareRule
+ - TransactionId
+ type: object
+ properties:
+ FlightFareRule:
+ type: array
+ description: Container for segment and corresponding fare rules.
+ items:
+ $ref: '#/components/schemas/FlightFareRuleItem'
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ BaggageFeeFlightSegment:
+ required:
+ - AirlineCode
+ - ArrivalAirport
+ - DepartureAirport
+ type: object
+ properties:
+ AirlineCode:
+ type: string
+ description: >-
+ Specifies the 2 letter IATA airline code of the most significant
+ carrier for the flight. In the case of flights with multiple
+ airlines involves this is the airline who will be charging for the
+ baggage.
+ example: VX
+ AirlineName:
+ type: string
+ description: >-
+ Specifies the name of the airline. Where possible this is localized
+ to the LangID supplied in the request.
+ example: Virgin America
+ DepartureAirport:
+ $ref: '#/components/schemas/Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/Airport'
+ CabinClass:
+ type: string
+ description: Cabin class name of airline.
+ example: Economy
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV1Link'
+ description: >-
+ Links to airline's baggage policies.
+
+ Where possible this is localized to the LangID supplied in the
+ request.
+
+ It is possible that special characters will be present in the URL
+ xml:
+ wrapped: true
+ description: Container for information of Segment.
+ xml:
+ name: FlightSegment
+ FlightsV1Link:
+ required:
+ - Href
+ - Method
+ type: object
+ properties:
+ Accept:
+ type: string
+ description: Accept header.
+ Method:
+ type: string
+ description: HTTP method to connect.
+ example: GET
+ Href:
+ type: string
+ description: HATEOAS URL to fetch details.
+ description: Contains the deeplink URLs of api services and websites
+ FlightsV1Money:
+ required:
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ description: Container for showing price.
+ FlightsV1Warning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Standardized warning code.
+ example: NO_FEE_INFO
+ Description:
+ type: string
+ description: Standardized warning description message.
+ example: Fee Information is not available.
+ description: Container for Warning messages.
+ FlightsV2Airport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Three-letter IATA airport code for departure location
+ example: SFO
+ Name:
+ type: string
+ description: Name of departure airport
+ example: San Francisco International Airport
+ City:
+ type: string
+ description: City where departure airport resides
+ example: San Francisco
+ Province:
+ type: string
+ description: Province or State where departure airport resides
+ example: CA
+ Country:
+ type: string
+ description: Country where departure airport resides
+ example: USA
+ Latitude:
+ type: string
+ description: Latitude where departure airport resides
+ example: '33.641'
+ Longitude:
+ type: string
+ description: Longitude where departure airport resides
+ example: '84.4429'
+ description: Container for showing the arrival airport details
+ xml:
+ name: Airport
+ Row:
+ required:
+ - RowNumber
+ type: object
+ properties:
+ RowNumber:
+ type: integer
+ description: Specific row number.
+ format: int32
+ example: 37
+ RowCharacteristics:
+ type: array
+ description: Container for row characteristics.
+ items:
+ $ref: '#/components/schemas/RowCharacteristic'
+ Seats:
+ type: array
+ description: |-
+ Container for seat information in that particular row.
+ It can be null if it is empty row.
+ items:
+ $ref: '#/components/schemas/Seat'
+ description: Container for list of seat row information.
+ xml:
+ name: Row
+ RowCharacteristic:
+ required:
+ - Code
+ - Name
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Code of Row
+ example: E
+ enum:
+ - E
+ - X
+ - S
+ - 'N'
+ - U
+ - W
+ Name:
+ type: string
+ description: |-
+ Corresponding name for the row code
+ Same response will have upper deck and lower deck information if any
+ example: EMPTY
+ enum:
+ - EMPTY
+ - EXIT
+ - SMOKING
+ - NONSMOKING
+ - UPPERDECK
+ - OVERWING
+ description: Container for row characteristics.
+ xml:
+ name: RowCharacteristic
+ Seat:
+ type: object
+ properties:
+ SeatNumber:
+ type: string
+ description: |-
+ Seat Number
+ It can be null if there is no physical seat in the location
+ example: 37A
+ SeatToken:
+ type: string
+ description: Token used by the Booking service to reserve seats
+ example: AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE
+ SeatOccupancy:
+ type: string
+ description: |-
+ Occupancy details whether it is available or not.
+ It can be null if there is no physical seat in that location.
+ AVAILABLE - Seat is currently available for selection.
+ OCCUPIED - Seat already occupied
+ example: OCCUPIED
+ enum:
+ - AVAILABLE
+ - OCCUPIED
+ Column:
+ type: string
+ description: It can be null if there is no physical seat in that location
+ example: A
+ SeatCharacteristics:
+ type: array
+ description: Container for seat characteristics information.
+ items:
+ $ref: '#/components/schemas/SeatCharacteristic'
+ PaidSeat:
+ type: boolean
+ description: >-
+ A boolean object (true/false) to indicate whether the seat is paid
+ or not. It can be null
+ SeatPrice:
+ type: object
+ description: >-
+ Container for seat price to provide fee information associated with
+ a paid seat. It can be null if it is not a paid seat.
+ required:
+ - Value
+ - Currency
+ properties:
+ Value:
+ type: string
+ example: '17.99'
+ Currency:
+ type: string
+ example: USD
+ description: |-
+ Container for seat information in that particular row.
+ It can be null if it is empty row.
+ xml:
+ name: Seat
+ SeatCharacteristic:
+ required:
+ - Code
+ - Name
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Code of seat
+ example: W
+ enum:
+ - E
+ - H
+ - W
+ - A
+ - X
+ - M
+ - S
+ - P
+ Name:
+ type: string
+ description: Corresponding name for the seat code
+ example: WINDOW
+ enum:
+ - EMPTY
+ - ACCESSIBLE
+ - WINDOW
+ - AISLE
+ - EXIT
+ - MAINCABINEXTRA
+ - PREFERRED
+ - PREMIUM
+ description: Container for seat characteristics information.
+ xml:
+ name: SeatCharacteristic
+ SeatMap:
+ required:
+ - CabinClass
+ - Rows
+ type: object
+ properties:
+ CabinClass:
+ type: string
+ description: Cabin code for different class of service offered by the airline
+ example: ECONOMY
+ enum:
+ - ECONOMY
+ - FIRST
+ - BUSINESS
+ - PREMIUM_ECONOMY
+ Rows:
+ type: array
+ description: Container for list of seat row information.
+ items:
+ $ref: '#/components/schemas/Row'
+ description: Container for seatmap information.
+ xml:
+ name: SeatMap
+ SeatMapResponse:
+ required:
+ - ArrivalAirport
+ - DepartureAirport
+ - DepartureDate
+ - EquipmentCode
+ - FlightNumber
+ - MarketingAirLineCode
+ - SeatMap
+ - TransactionId
+ type: object
+ properties:
+ FlightNumber:
+ type: string
+ description: Specifies the requested flight number.
+ example: '0300'
+ DepartureDate:
+ type: string
+ description: Specifies the departure date of the requested flight
+ format: date
+ example: '2021-07-03T00:00:00.000Z'
+ MarketingAirLineCode:
+ type: string
+ description: >-
+ The IATA or Expedia assigned airline codes of the carrier. IATA
+ codes must contain at least one alphabetic character.
+ example: AS
+ MarketingAirLineName:
+ type: string
+ description: The airline name of the marketing airline
+ example: Alaska Airlines
+ EquipmentCode:
+ type: string
+ description: IATA Equipment type codes.
+ example: 73J
+ EquipmentName:
+ type: string
+ description: Equipment type name.
+ example: Airbus 123
+ DepartureAirport:
+ $ref: '#/components/schemas/FlightsV2Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/FlightsV2Airport'
+ SeatMap:
+ $ref: '#/components/schemas/SeatMap'
+ Warnings:
+ type: array
+ description: Container for Warning messages.
+ items:
+ $ref: '#/components/schemas/FlightsV2Warning'
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ xml:
+ name: SeatMapResponse
+ FlightsV2Warning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Standardized warning code.
+ example: NO_RESULTS_FOUND
+ Description:
+ type: string
+ description: Standardized warning description message.
+ example: No results found for the request.
+ description: Container for Warning message.
+ FlightsV2Error:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: SERVER_ERROR
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: An error has occurred while processing the request.
+ description: Container for error list.
+ FlightsV2Errors:
+ required:
+ - Errors
+ - TransactionId
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/FlightsV2Error'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ FlightsV3Country:
+ required:
+ - Name
+ type: object
+ properties:
+ Name:
+ type: string
+ description: country name
+ example: Ireland
+ Code:
+ type: string
+ description: 3-letter code for the country
+ example: IRL
+ description: Container for disambiguation country information
+ FlightsV3Error:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Error code describing the issue
+ example: AMBIGUOUS_LOCATION
+ DetailCode:
+ type: string
+ description: Detailed error code describing the issue.
+ example: MULTIPLE_AMBIGUOUS_LOCATION
+ Description:
+ type: string
+ description: A simple description of what the error is.
+ example: 'Multiple pickup locations found. '
+ LocationOptions:
+ type: array
+ description: >-
+ List for possible locations from which the customer must choose the
+ best one to be re-submitted in the request.
+ items:
+ $ref: '#/components/schemas/FlightsV3LocationOption'
+ description: Container for error list.
+ FlightsV3Errors:
+ required:
+ - Errors
+ - TransactionId
+ type: object
+ properties:
+ Errors:
+ type: array
+ description: Container for error list.
+ items:
+ $ref: '#/components/schemas/FlightsV3Error'
+ TransactionId:
+ type: string
+ description: A unique identifier for the transaction.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: ErrorResponse
+ FlightsV3GeoLocation:
+ required:
+ - Latitude
+ - Longitude
+ type: object
+ properties:
+ Latitude:
+ type: string
+ description: Latitude of the location.
+ example: '38.184978'
+ Longitude:
+ type: string
+ description: Longitude of the location.
+ example: '85.7412'
+ description: Container for Geo location.
+ FlightsV3Location:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: The type of location code (MULTICITY | METROCODE).
+ example: MULTICITY
+ Id:
+ type: string
+ description: Expedia Region ID of the specified airport.
+ example: '6139103'
+ Name:
+ type: string
+ description: Location Name
+ example: Seattle-Tacoma International Airport
+ Code:
+ type: string
+ description: Location Code
+ example: SEA
+ Address:
+ type: string
+ description: Street address of the location (if available)
+ example: 'Paris, France (PAR-All Airports)'
+ GeoLocation:
+ $ref: '#/components/schemas/FlightsV3GeoLocation'
+ Country:
+ $ref: '#/components/schemas/FlightsV3Country'
+ description: >-
+ Container for list of possible locations that could be used to
+ disambiguate the query.
+ FlightsV3LocationOption:
+ required:
+ - Locations
+ - RequestedLocation
+ type: object
+ properties:
+ RequestedLocation:
+ type: string
+ description: Location used in partner request.
+ example: Paris
+ Locations:
+ type: array
+ description: >-
+ Container for list of possible locations that could be used to
+ disambiguate the query.
+ items:
+ $ref: '#/components/schemas/FlightsV3Location'
+ description: >-
+ List for possible locations from which the customer must choose the best
+ one to be re-submitted in the request.
+ AirValidFormsOfPayment:
+ required:
+ - Currency
+ - Fee
+ - Name
+ - PaymentMethod
+ type: object
+ properties:
+ PaymentMethod:
+ type: string
+ description: Method of payment
+ example: CreditCard
+ Name:
+ type: string
+ description: Name of Payment Method.
+ example: AmericanExpress
+ Fee:
+ type: string
+ description: The amount of the payment fee.
+ example: '4.25'
+ Currency:
+ type: string
+ description: Currency of the fee in ISO 4217 format
+ example: USD
+ description: >-
+ Container for fees that are charged for using certain payment methods.
+ Since the method of payment is not known until time of booking, these
+ fees are returned separately and not included in the total price
+ FlightsV3Airport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Three-letter IATA airport code for departure location
+ example: SFO
+ Name:
+ type: string
+ description: Name of departure airport
+ example: San Francisco International Airport
+ City:
+ type: string
+ description: City where departure airport resides
+ example: San Francisco
+ Province:
+ type: string
+ description: Province or State where departure airport resides
+ example: CA
+ Country:
+ type: string
+ description: Country where departure airport resides
+ example: USA
+ Latitude:
+ type: string
+ description: Latitude where departure airport resides
+ example: '33.641'
+ Longitude:
+ type: string
+ description: Longitude where departure airport resides
+ example: '84.4429'
+ description: Container for list of Information about each search locations
+ xml:
+ name: Airport
+ Amenities:
+ type: object
+ properties:
+ Entertainment:
+ $ref: '#/components/schemas/Entertainment'
+ Wifi:
+ $ref: '#/components/schemas/Wifi'
+ Power:
+ $ref: '#/components/schemas/Power'
+ description: List of specific amenities available for each flight leg.
+ AveragePricePerTicket:
+ required:
+ - Count
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: 'Average price per ticket, excluding infant'
+ example: '100.0'
+ Currency:
+ type: string
+ description: Currency in ISO 4217 format
+ example: USD
+ Count:
+ type: integer
+ description: Indicates how many tickets were used to determine the average
+ format: int32
+ example: 1
+ description: >-
+ Container for average pricing information per ticket.
+
+ If any passenger type (such as Infant in Lap or Seat) has a $0 total
+ price there will be no ticket, so those passengers would not be included
+ in the count.
+ FlightsV3BaggageFee:
+ required:
+ - BagType
+ type: object
+ properties:
+ BagType:
+ type: string
+ description: Specifies the type of baggage.
+ example: FIRST_BAG
+ enum:
+ - PREPAID_CARRY_ON
+ - PREPAID_FIRST_BAG
+ - PREPAID_SECOND_BAG
+ - CARRY_ON
+ - FIRST_BAG
+ - SECOND_BAG
+ WeightUnit:
+ type: string
+ description: >-
+ Specifies weight unit for this bagType. This will always be
+ kilograms.
+ example: kg
+ Weight:
+ type: string
+ description: Weight of the bag.
+ example: '23'
+ Application:
+ type: string
+ description: >-
+ This element specifies descriptive text useful in displaying baggage
+ fees.
+ example: per
+ enum:
+ - upto
+ - per
+ FixedCharge:
+ $ref: '#/components/schemas/Fee'
+ MaxCharge:
+ $ref: '#/components/schemas/Fee'
+ MinCharge:
+ $ref: '#/components/schemas/Fee'
+ description: >-
+ Container for baggage fee information of each bag type. The baggage fee
+ can vary for each bag type. The amount can be zero, fixed amount or will
+ be in a range.
+ xml:
+ name: BaggageFees
+ FlightsV3Distance:
+ required:
+ - Unit
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: >-
+ The number of miles/kilometers of the distance (specified by the
+ Unit).
+ example: '75'
+ Unit:
+ type: string
+ description: The unit (KM or MI) for the distance.
+ example: KM
+ Direction:
+ type: string
+ description: >-
+ The direction of the location from the search 'center'.Possible
+ values are: N,S,W,E,NW,NE,SW,SE
+ example: 'N'
+ description: Container for distance of flight.
+ Entertainment:
+ type: object
+ properties:
+ Available:
+ type: string
+ description: Indication of whether this amenity is available.
+ example: 'YES'
+ enum:
+ - 'YES'
+ - 'NO'
+ - UNKNOWN
+ Types:
+ type: array
+ description: Type of entertainment
+ example:
+ - LIVE_TV
+ items:
+ type: string
+ description: Type of entertainment
+ example: LIVE_TV
+ xml:
+ name: Types
+ enum:
+ - LIVE_TV
+ - ON_DEMAND
+ - STREAMING
+ description: Container for entertainment amenities available in this flight leg
+ FlightSearchResponse:
+ required:
+ - Offers
+ - SearchCities
+ - TransactionId
+ type: object
+ properties:
+ Insights:
+ $ref: '#/components/schemas/Insights'
+ Warnings:
+ type: array
+ description: Container for warning messages.
+ items:
+ $ref: '#/components/schemas/FlightsV3Warning'
+ Segments:
+ type: array
+ description: >-
+ Container of information about each flight offer
+
+ (Less information shown if the offer is and opaque flight offer)
+
+ Flights (the complete journey to your final destination by air) are
+ made up of:
+ Segments (the trip from one stopping place to another) are made up of:
+ Legs (take off at one airport and land at another)
+ items:
+ $ref: '#/components/schemas/Segment'
+ Offers:
+ type: array
+ description: >-
+ Container for list of air offers. An offer gives total trip details
+ including flight and pricing information.
+ items:
+ $ref: '#/components/schemas/FlightsV3Offer'
+ SearchCities:
+ type: array
+ description: Container for list of Information about each search locations
+ items:
+ $ref: '#/components/schemas/FlightsV3Airport'
+ ValidFormsOfPayment:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ $ref: '#/components/schemas/AirValidFormsOfPayment'
+ description: >-
+ Container for fees that are charged for using certain payment
+ methods. Since the method of payment is not known until time of
+ booking, these fees are returned separately and not included in the
+ total price
+ Lounges:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ $ref: '#/components/schemas/Lounge'
+ description: List of lounges
+ TransactionId:
+ type: string
+ description: Unique Id to identify one individual API response.
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ xml:
+ name: FlightSearchResponse
+ Insights:
+ required:
+ - AverageCheapestPrice
+ - CheapestOfferId
+ - MedianCheapestPrice
+ - PercentageOfFaresHigher
+ - SearchComparisonCount
+ type: object
+ properties:
+ CheapestOfferId:
+ type: string
+ description: Container for insights response.
+ example: >-
+ v5-d58bdd504a70495078a796b218315815-1-1-2~0.S~AQoGCAEQ9LsCEgcI1AQQARgBIAEgDCAHIA0oAlgCcAA
+ AverageCheapestPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ MedianCheapestPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ SearchComparisonCount:
+ type: integer
+ description: >-
+ Number of searches compared to build the insights information for
+ the given search.
+ format: int32
+ example: 1200
+ PercentageOfFaresHigher:
+ type: integer
+ description: >-
+ Percentage value that defines where the cheapest fare of the current
+ search result stand comparing the prices for similar searches for
+ nearby dates.
+ format: int32
+ example: 70
+ PriceTrend:
+ type: string
+ description: Shows how the price trends
+ enum:
+ - TRENDING_UP
+ - TRENDING_DOWN
+ - NEUTRAL
+ PastPerDayMedianCheapestPrices:
+ type: array
+ description: >-
+ List of median of cheapest prices for the specifc search criteria
+ for last 21 days. List will be in the order starting from 21 days
+ ago till yesterday.
+ example:
+ - '120.9'
+ - '121.8'
+ - '122.7'
+ items:
+ type: string
+ xml:
+ name: PastPerDayMedianCheapestPrices
+ Message:
+ type: string
+ description: >-
+ Shows a custom message in the respective language corresponding to
+ the locale requested.
+ example: >-
+ Expedia searched 3,415 results and this fare is cheaper than 70% of
+ the prices seen
+ description: Container for insights response.
+ xml:
+ name: Insights
+ Leg:
+ required:
+ - ArrivalAirport
+ - ArrivalDateTime
+ - BookingCode
+ - CabinClass
+ - DepartureAirport
+ - DepartureDateTime
+ - FlightDuration
+ - FlightNumber
+ - MarketingAirlineCode
+ - SeatMapAvailable
+ type: object
+ properties:
+ StatusCode:
+ type: string
+ description: Air segment status.
+ example: HX
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: Container for deeplink URL information.
+ DepartureAirport:
+ $ref: '#/components/schemas/FlightsV3Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/FlightsV3Airport'
+ DepartureDateTime:
+ type: string
+ description: Flight departure date and time in ISO 8601 format
+ format: date-time
+ example: '2021-07-05T13:15:00.000Z'
+ ArrivalDateTime:
+ type: string
+ description: Flight landing date and time in ISO 8601 format
+ format: date-time
+ example: '2021-07-05T16:15:00.000Z'
+ FlightNumber:
+ type: string
+ description: Flight Number assigned by Carrier.
+ example: '2537'
+ MarketingAirlineCode:
+ type: string
+ description: The two-letter code of the Airline that is marketing the flight.
+ example: AA
+ MarketingAirlineName:
+ type: string
+ description: The display name of the Airline that is marketing the flight.
+ example: American Airlines
+ OperatingAirlineCode:
+ type: string
+ description: The two-letter code of the Airline actually operating the plane.
+ example: UA
+ OperatingAirlineName:
+ type: string
+ description: The display name of the airline actually operating the plane.
+ example: United Airlines
+ EquipmentCode:
+ type: string
+ description: IATA Equipment type codes.
+ example: 73J
+ FlightOnTimePercentage:
+ type: string
+ description: Percentage of time that this flight on time.
+ example: '100'
+ EquipmentName:
+ type: string
+ description: The name of equipment that is scheduled for the flight.
+ example: Airbus 123
+ FlightDuration:
+ type: string
+ description: >-
+ The total travel duration for this leg, expressed in ISO 8601
+ standard.
+ example: PT3H58M
+ ConnectionTime:
+ type: string
+ description: >-
+ Connection time between current leg flight landed time to next
+ flight departure time, expressed in ISO 8601 standard.
+ example: PT1H4M
+ SeatMapAvailable:
+ type: boolean
+ description: If True seat map is available
+ OperationalDisclosure:
+ type: string
+ description: OperationalDisclosure.
+ FlightDistance:
+ $ref: '#/components/schemas/FlightsV3Distance'
+ BookingCode:
+ type: string
+ description: Carrier-specific code used for booking (class of service).
+ example: 'Y'
+ CabinClass:
+ type: string
+ description: Class of service for the air leg.
+ example: ECONOMY
+ enum:
+ - ECONOMY
+ - FIRST
+ - BUSINESS
+ - PREMIUM_ECONOMY
+ EquipmentChange:
+ type: boolean
+ description: >-
+ True if the upcoming travel Leg will have different equipment
+ (airplane) compared to the previous Leg.
+ LoungeKeys:
+ type: array
+ description: List of keys referring to lounge details for the particular leg.
+ items:
+ type: string
+ description: List of keys referring to lounge details for the particular leg.
+ xml:
+ name: LoungeKeys
+ FareBasisCode:
+ type: string
+ description: Fare Basis Code for the corresponding Leg of Flight Offer.
+ example: T21DVN5
+ MealOptions:
+ type: array
+ description: Different meal options available in this particular Leg.
+ example:
+ - FOOD_FOR_PURCHASE
+ items:
+ type: string
+ description: Different meal options available in this particular Leg.
+ example: FOOD_FOR_PURCHASE
+ xml:
+ name: MealOptions
+ Amenities:
+ $ref: '#/components/schemas/Amenities'
+ description: Container information on each flight leg.
+ xml:
+ name: Leg
+ FlightsV3Link:
+ required:
+ - Href
+ - Method
+ type: object
+ properties:
+ Accept:
+ type: string
+ description: Accept header.
+ Method:
+ type: string
+ description: HTTP method to connect.
+ example: GET
+ Href:
+ type: string
+ description: HATEOAS URL to fetch details.
+ description: Container for deeplink URL information.
+ Lounge:
+ required:
+ - Name
+ type: object
+ properties:
+ Name:
+ type: string
+ description: Name of the lounge corresponding to a lounge key
+ example: The Centurion Lounge
+ IsConferenceRoomAvailable:
+ type: boolean
+ description: Indicates whether the lounge has a conference room.
+ PhoneNumber:
+ type: string
+ description: Phone number of the lounge (if available)
+ example: NA
+ Description:
+ type: string
+ description: Free text field with any extra information about the lounge
+ example: >-
+ Terminal B on the third level, pre-security, 5:30 am ? 8 pm (Sunday
+ ? Friday), 5:30 am ? 6:30 pm (Saturday)
+ description: List of lounges
+ xml:
+ name: Lounge
+ FlightsV3Money:
+ required:
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ description: Container for price information.
+ FlightsV3Offer:
+ required:
+ - International
+ - Links
+ - OfferPrice
+ - Refundable
+ - SegmentIds
+ - SplitTicket
+ type: object
+ properties:
+ offerToken:
+ type: string
+ description: Unique key to identify each offer.
+ example: >-
+ v5-21c33c9b411f87e895f9dfa8df82b535-38-1-st-v5-7b789d5a41dd7490c9ffbeaead2aa37a-3
+ ReferenceId:
+ type: string
+ description: Unique key to identify matching private fares.
+ example: Flight_Reference_key_67890
+ SplitTicket:
+ type: boolean
+ description: >-
+ True if more that one ticket will be issued for this offer per
+ passenger.
+
+ False if only one ticket will be issued per passenger.
+ MetaApiBook:
+ type: boolean
+ description: >-
+ To indicate meta partners whether the air product is available for
+ TAAS instant book.
+ OpaqueFlight:
+ type: boolean
+ description: |-
+ Indicate whether the air product is a opaque flight product or not.
+ If true, then there will be no Segments node for this air product.
+ Free24HourCancellation:
+ type: boolean
+ description: True if Booking can be cancelled within 24 hours of booking.
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: Container for deeplink URL information.
+ SegmentIds:
+ type: array
+ description: |-
+ Container for list of segment ids in a particular offer.
+ For Opaque flight, no segment will be present.
+ example:
+ - 2816ed613aedd7513c953c33367df2e4
+ - MjNfUHVibGlzaGVk
+ items:
+ type: string
+ xml:
+ name: SegmentIds
+ OfferPrice:
+ $ref: '#/components/schemas/OfferPrice'
+ VfopKey:
+ type: string
+ description: Key generated for Valid form of payment
+ example: VFOP-AA
+ Refundable:
+ type: boolean
+ description: |-
+ True if flight is refundable,
+ False if it's not refundable.
+ RefundPenalty:
+ type: array
+ description: Contains refund penalty information
+ items:
+ type: object
+ properties:
+ RefundPenalty:
+ required:
+ - SegmentIds
+ type: object
+ properties:
+ SegmentIds:
+ type: array
+ description: Contains a list of segment Ids
+ example:
+ - 2816ed613aedd7513c953c33367df2e4
+ items:
+ type: string
+ description: Contains a list of segment Ids
+ example: 2816ed613aedd7513c953c33367df2e4
+ xml:
+ name: SegmentIds
+ PreTripChange:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ description: Contains refund penalty information
+ International:
+ type: boolean
+ description: |-
+ True, if flight is international.
+ False, if flight departs and arrives within the same country
+ TicketType:
+ type: string
+ description: Type of ticket being issued
+ example: E-Ticket
+ description: >-
+ Container for list of air offers. An offer gives total trip details
+ including flight and pricing information.
+ xml:
+ name: Offer
+ OfferPrice:
+ required:
+ - AveragePricePerTicket
+ - BasePrice
+ - PricePerPassengerCategory
+ - TotalPrice
+ - TotalTaxesAndFees
+ type: object
+ properties:
+ TotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalRefund:
+ $ref: '#/components/schemas/FlightsV3Money'
+ BasePrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalFees:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Fees:
+ type: array
+ description: Container for list of fees charged
+ items:
+ $ref: '#/components/schemas/Fee'
+ TotalTaxes:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalTaxesAndFees:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Discount:
+ $ref: '#/components/schemas/FlightsV3Money'
+ AveragePricePerTicket:
+ $ref: '#/components/schemas/AveragePricePerTicket'
+ PricePerPassengerCategory:
+ type: array
+ description: >-
+ Container for pricing information for each passenger category.
+
+ (note that passengers are grouped into standard categories based on
+ the age ranges standardized by the airlines)
+ items:
+ $ref: '#/components/schemas/PricePerPassengerCategory'
+ description: >-
+ The total price of the package if purchased as a standalone hotel and a
+ standalone flight.
+
+ (base price + taxes and fees)
+ xml:
+ name: OfferPrice
+ Power:
+ type: object
+ properties:
+ Available:
+ type: string
+ description: Indication of the availability of Power amenity.
+ enum:
+ - 'YES'
+ - 'NO'
+ - UNKNOWN
+ description: Container for power amenities available in this flight leg
+ PricePerPassengerCategory:
+ required:
+ - BasePrice
+ - Count
+ - Category
+ type: object
+ properties:
+ Category:
+ type: string
+ description: Passenger category
+ example: ADULT
+ enum:
+ - ADULT
+ - SENIOR
+ - ADULT_CHILD
+ - CHILD
+ - INFANT_IN_SEAT
+ - INFANT_IN_LAP
+ Count:
+ type: integer
+ description: Total number of travelers of the same passenger category
+ format: int32
+ example: 2
+ TotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ BasePrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalTaxes:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Fees:
+ type: array
+ description: List of fees per passenger category
+ items:
+ $ref: '#/components/schemas/Fee'
+ description: >-
+ Container for pricing information for each passenger category.
+
+ (note that passengers are grouped into standard categories based on the
+ age ranges standardized by the airlines)
+ xml:
+ name: PricePerPassengerCategory
+ RefundPenaltyDetail:
+ required:
+ - Allow
+ type: object
+ properties:
+ Allow:
+ type: string
+ description: Status of penalty information
+ example: 'YES'
+ enum:
+ - 'YES'
+ - 'NO'
+ - UNKNOWN
+ Penalty:
+ $ref: '#/components/schemas/FlightsV3Money'
+ description: >-
+ Container for en route change/cancellations and pre-trip
+ change/cancellations
+ Segment:
+ required:
+ - DepartureArrivalDayDifference
+ - SegmentId
+ type: object
+ properties:
+ SegmentId:
+ type: string
+ description: |-
+ Unique identifier for a single flight segment.
+ Shown in case of opaque flight offer as well.
+ Can be alphanumeric or numeric.
+ example: 2816ed613aedd7513c953c33367df2e4
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: Container for deeplink URL information.
+ Price:
+ $ref: '#/components/schemas/OfferPrice'
+ IncludesNonFlightLeg:
+ type: boolean
+ description: >-
+ True if any Leg associated with this Segment is via a non-flight
+ type of transit (Bus, Train or Boat)
+ Legs:
+ type: array
+ description: Container information on each flight leg.
+ items:
+ $ref: '#/components/schemas/Leg'
+ BaggageFees:
+ type: array
+ description: >-
+ Container for baggage fee information of each bag type. The baggage
+ fee can vary for each bag type. The amount can be zero, fixed amount
+ or will be in a range.
+ items:
+ $ref: '#/components/schemas/FlightsV3BaggageFee'
+ AccountCode:
+ type: string
+ description: Lists any Account Code that has been applied to this segment.
+ example: RRR11
+ BasicEconomy:
+ type: boolean
+ description: >-
+ True if the corresponding fare ticket type associated with the
+ segment is Basic Economy
+ example: false
+ SeatsLeft:
+ type: integer
+ description: Remaining number of seats available for this segment offer.
+ format: int32
+ example: 9
+ FareType:
+ type: string
+ description: Type of fare.
+ example: PUBLISHED
+ enum:
+ - NET
+ - PUBLISHED
+ - WEB
+ DepartureArrivalDayDifference:
+ type: integer
+ description: >-
+ This is an indicator (can have values of -1, 0, 1, 2, etc.) which
+ depends on the relative difference between the arrival and departure
+ dates.
+ format: int32
+ example: 0
+ AirportChange:
+ type: boolean
+ description: >-
+ True if there the Segment is having a different Departure airport
+ compared to the Arrival airport of previous Segment.
+ TotalStops:
+ type: integer
+ description: >-
+ The total number of stops in this segment(Nullable in case of Opaque
+ Flights)
+ format: int32
+ example: 1
+ FlightDuration:
+ type: string
+ description: |-
+ Total duration of the flight segment
+ (Nullable in case of Opaque Flights)
+ example: PT9H0M
+ OpaqueDepartureTime:
+ type: string
+ description: >-
+ Contains the name of the Fare tagged against the specific fare
+ options.
+ example: Comfort+
+ OpaqueNumberOfStops:
+ type: string
+ description: Departure time range will be shown only for opaque flight offers.
+ example: '12AM_TO_7:59AM'
+ description: >-
+ Container of information about each flight offer
+
+ (Less information shown if the offer is and opaque flight offer)
+
+ Flights (the complete journey to your final destination by air) are made
+ up of:
+ Segments (the trip from one stopping place to another) are made up of:
+ Legs (take off at one airport and land at another)
+ xml:
+ name: Segment
+ FlightsV3Warning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Warning message code.
+ example: NO_RESULTS_FOUND
+ Description:
+ type: string
+ description: Warning message description
+ example: No flights solutions found for the request.
+ description: Container for warning messages.
+ Wifi:
+ type: object
+ properties:
+ Available:
+ type: string
+ description: Indication of the availability of WIFI amenity.
+ enum:
+ - 'YES'
+ - 'NO'
+ - UNKNOWN
+ description: Container for WiFi amenities available in this flight leg
+ FlightsV3APIMError:
+ title: APIMError
+ description: Container for error responses from APIM
+ properties:
+ message:
+ type: string
+ FlightLinksRequest:
+ type: object
+ required:
+ - Flights
+ - Passengers
+ properties:
+ Flights:
+ type: array
+ items:
+ $ref: '#/components/schemas/Flight'
+ Passengers:
+ type: object
+ items:
+ $ref: '#/components/schemas/PassengerDetails'
+ Links:
+ type: array
+ items:
+ type: string
+ Flight:
+ type: object
+ required:
+ - FlightId
+ - Segments
+ properties:
+ FlightId:
+ type: string
+ example: abc
+ Segments:
+ type: array
+ items:
+ type: object
+ properties:
+ Segment:
+ type: object
+ required:
+ - FareType
+ - Provider
+ - Legs
+ properties:
+ FareType:
+ type: string
+ enum:
+ - PUBLISHED
+ - NET
+ - WEB
+ Provider:
+ type: string
+ example: Sabre
+ LowCost:
+ type: boolean
+ Legs:
+ type: array
+ items:
+ type: object
+ required:
+ - DepartureAirport
+ - ArrivalAirport
+ - DepartureDateTime
+ - ArrivalDateTime
+ - FlightNumber
+ - MarketingAirlineCode
+ - BookingCode
+ - CabinClass
+ properties:
+ DepartureAirport:
+ type: object
+ properties:
+ Airport:
+ type: object
+ required:
+ - Code
+ properties:
+ Code:
+ type: string
+ example: LAS
+ ArrivalAirport:
+ type: object
+ properties:
+ Airport:
+ type: object
+ required:
+ - Code
+ properties:
+ Code:
+ type: string
+ example: SEA
+ DepartureDateTime:
+ type: string
+ format: date-time
+ example: '2021-07-05T07:15:00.000-06:00'
+ ArrivalDateTime:
+ type: string
+ format: date-time
+ example: '2021-07-05T09:13:00.000-08:00'
+ FlightNumber:
+ type: string
+ example: '2537'
+ MarketingAirlineCode:
+ type: string
+ example: AA
+ BookingCode:
+ type: string
+ example: 'Y'
+ CabinClass:
+ type: string
+ enum:
+ - ECONOMY
+ - FIRST
+ - BUSINESS
+ - PREMIUM_ECONOMY
+ TotalPrice:
+ type: object
+ required:
+ - Value
+ - Currency
+ properties:
+ Value:
+ type: string
+ example: '300.00'
+ Currency:
+ type: string
+ example: USD
+ PassengerDetails:
+ type: object
+ required:
+ - Adult
+ - Senior
+ properties:
+ Adult:
+ type: string
+ example: '1'
+ Senior:
+ type: string
+ example: '1'
+ ChildrenAges:
+ type: string
+ example: '4,5'
+ InfantInSeat:
+ type: string
+ example: '1'
+ InfantInLap:
+ type: string
+ example: '1'
+ FlightLinksResponse:
+ type: object
+ required:
+ - TransactionId
+ properties:
+ Warnings:
+ type: array
+ items:
+ type: object
+ required:
+ - Code
+ - Description
+ properties:
+ Code:
+ type: string
+ example: FLIGHT_LINKS_MISSING
+ Description:
+ type: string
+ example: 1 of the link(s) requested found missing in the response
+ Links:
+ type: array
+ items:
+ type: object
+ required:
+ - FlightId
+ properties:
+ FlightId:
+ type: string
+ example: abc
+ WebDetails:
+ type: object
+ required:
+ - Method
+ - Href
+ properties:
+ Method:
+ type: string
+ example: GET
+ Href:
+ type: string
+ example: >-
+ https://www.expedia.com/go/udp?CCheck=1&piid=~null.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSgC~AQpCCh8I0aQBEgM1MTcYwlMgwzsozdvrATDb3esBOFdAAFgBCh8I0aQBEgM3MjUYwzsgrhwont_rATDr5esBOFdAAFgBEgYIARABGAEYBCIECAMQASIECAIQASIECAEQAigCMAE&Price=2576.68&CurrencyCode=USD¤cy=USD&DepartureTLA=L1:COK&ArrivalTLA=L1:ORD&DepartureDate=L1:2021-05-06&ArrivalDate=L1:2021-05-06&NumAdult=1&NumSenior=1&NumChild=2&ChildrenAges=2|14&Sort=10&TripType=OneWay&ProductType=air&eapid=0-1&ServiceVersion=V5&MessageGuid=c8912c1f-269b-4ca0-97d3-2ab4a62ea14a&langid=1033
+ ApiDetails:
+ type: object
+ required:
+ - Accept
+ - Method
+ - Href
+ properties:
+ Accept:
+ type: string
+ example: application/vnd.exp-flight.v3+json
+ Method:
+ type: string
+ example: GET
+ Href:
+ type: string
+ example: >-
+ https://apim.expedia.com/flights/details/~null.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSgC~AQpCCh8I0aQBEgM1MTcYwlMgwzsozdvrATDb3esBOFdAAFgBCh8I0aQBEgM3MjUYwzsgrhwont_rATDr5esBOFdAAFgBEgYIARABGAEYBCIECAMQASIECAIQASIECAEQAigCMAE?price=2576.68&childrenAges=2%2C14
+ TransactionId:
+ type: string
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ ErrorResponse:
+ type: object
+ required:
+ - TransactionId
+ - Errors
+ properties:
+ TransactionId:
+ type: string
+ example: a9e371c4-89d9-4f9c-8df7-df105830e7fe
+ Errors:
+ type: array
+ items:
+ type: object
+ required:
+ - Code
+ - Description
+ properties:
+ Code:
+ type: string
+ example: ERROR_CODE
+ Description:
+ type: string
+ example: Error Description
+ FlightsV3Address:
+ required:
+ - Address1
+ - City
+ - Country
+ type: object
+ properties:
+ Address1:
+ type: string
+ description: 'Street Number, Street Name, or PO Box'
+ example: 724 Pine St
+ Address2:
+ type: string
+ description: >-
+ Apartment, Floor, Suite, Bldg # or more specific information about
+ Address1.
+ example: Second Floor
+ City:
+ type: string
+ description: The city
+ example: New York
+ Province:
+ type: string
+ description: The state or province
+ example: NY
+ Country:
+ type: string
+ description: 3-letter code for the country
+ example: USA
+ PostalCode:
+ type: string
+ description: Zip/postal code
+ example: '98004'
+ FlightsV3AgeClassRestriction:
+ type: object
+ properties:
+ AgeClass:
+ type: string
+ description: 'Categories for hotel guests, based on age.'
+ example: Senior
+ enum:
+ - All Ages
+ - Senior
+ - Adult
+ - Child
+ - Infant
+ - Other
+ AgeMinimum:
+ type: integer
+ description: The minimum age defined in a particular AgeClass.
+ format: int32
+ example: 2
+ AgeMaximum:
+ type: integer
+ description: |-
+ The maximum age defined in a particular AgeClass.
+ If not specified, the AgeClass has no upper bound.
+ format: int32
+ example: 17
+ MaxGuestCount:
+ type: integer
+ description: The max guest count allowed in a particular AgeClass.
+ format: int32
+ example: 3
+ description: Container for room occupancy rules based on the age of the guests.
+ Amenity:
+ type: object
+ properties:
+ SeatChoice:
+ $ref: '#/components/schemas/SeatChoice'
+ CarryOnBag:
+ $ref: '#/components/schemas/Bag'
+ CheckedBag:
+ type: array
+ description: List of Checked Bag Amenity.
+ items:
+ $ref: '#/components/schemas/Bag'
+ Change:
+ $ref: '#/components/schemas/AmenityInfo'
+ Free24HrCancellation:
+ type: boolean
+ description: True if booking can be cancelled with in 24 hours after booking.
+ Refund:
+ $ref: '#/components/schemas/AmenityInfo'
+ PersonalItem:
+ $ref: '#/components/schemas/AmenityInfo'
+ Upgrade:
+ $ref: '#/components/schemas/AmenityInfo'
+ BoardingGroup:
+ type: array
+ description: List of available BoardingGroup Amenity.
+ example:
+ - BASED_ON_SEAT_LOCATION
+ items:
+ type: string
+ description: List of available BoardingGroup Amenity.
+ example: BASED_ON_SEAT_LOCATION
+ xml:
+ name: BoardingGroup
+ enum:
+ - LAST
+ - PRIORITY
+ - BASED_ON_SEAT_LOCATION
+ - PAY_TO_UPGRADE
+ description: Container for various amenities included in a particular segment.
+ xml:
+ name: Amenities
+ AmenityInfo:
+ type: object
+ properties:
+ Availability:
+ type: string
+ description: Availability of Amenity
+ example: INCLUDED
+ enum:
+ - INCLUDED
+ - NOT_AVAILABLE
+ - AVAILABLE_FOR_FEE
+ description: |-
+ Availability of Passenger Temperature Check.
+ Possible values: INCLUDED, NOT_AVAILABLE
+ xml:
+ name: AmenityInfo
+ Bag:
+ type: object
+ properties:
+ BagNumber:
+ type: integer
+ description: Bag number of CarryOnBag amenity for which the Availability applies.
+ format: int32
+ example: 1
+ Availability:
+ type: string
+ description: Availability of Amenity
+ example: INCLUDED
+ enum:
+ - INCLUDED
+ - NOT_AVAILABLE
+ - AVAILABLE_FOR_FEE
+ description: List of Checked Bag Amenity.
+ xml:
+ name: Bag
+ CrossSell:
+ required:
+ - HotelCount
+ - Hotels
+ - NumberOfNights
+ - NumberOfRooms
+ - Occupants
+ - Offers
+ - StayDates
+ type: object
+ properties:
+ HotelCount:
+ type: integer
+ description: |
+ Number of hotels available.
+ format: int32
+ StayDates:
+ $ref: '#/components/schemas/FlightsV3StayDates'
+ NumberOfRooms:
+ type: integer
+ description: |
+ Number of rooms requested.
+ format: int32
+ default: 1
+ NumberOfNights:
+ type: integer
+ description: |
+ Number of nights guest staying in the hotel.
+ format: int32
+ Occupants:
+ type: array
+ description: |
+ Container for occupants list.
+ items:
+ $ref: '#/components/schemas/FlightsV3Occupant'
+ Hotels:
+ type: array
+ description: |
+ Container for information on each hotel offer.
+ items:
+ $ref: '#/components/schemas/FlightsV3Hotel'
+ Offers:
+ type: array
+ description: >
+ Container for information about the hotel used in this package
+ offer.
+ items:
+ $ref: '#/components/schemas/PackageOffers'
+ description: Container for cross sell information
+ xml:
+ name: CrossSell
+ FlightsV3Description:
+ type: object
+ properties:
+ LocationTeaser:
+ type: string
+ description: A description of the property's location.
+ example: Built on the original site of the University of Washington
+ HotelTeaser:
+ type: string
+ description: A description of the features and amenities of the property itself.
+ example: A top-notch fitness club and spa features a pool
+ RoomTeaser:
+ type: string
+ description: The common description for all of the rooms in the property.
+ example: 'Renovated in May 2016, guest rooms feature upholstered chairs'
+ description: Container for information of the descriptions of the hotel.
+ FareOptions:
+ required:
+ - FareName
+ - FeeApplied
+ - Included
+ - SegmentIds
+ type: object
+ properties:
+ FareName:
+ type: string
+ description: >-
+ Contains the name of the Fare tagged against the specific fare
+ options.
+ example: Comfort+
+ SegmentIds:
+ type: array
+ description: >-
+ Contains list of segment Ids to which these FareOptions are
+ provided.
+ example:
+ - MTEx
+ items:
+ type: string
+ description: >-
+ Contains list of segment Ids to which these FareOptions are
+ provided.
+ example: MTEx
+ xml:
+ name: SegmentIds
+ Included:
+ type: array
+ description: Contains list of options that are already included.
+ example:
+ - CARRY_ON_BAG
+ items:
+ type: string
+ description: Contains list of options that are already included.
+ example: CARRY_ON_BAG
+ xml:
+ name: Included
+ FeeApplied:
+ type: array
+ description: Contains list of options that are fee applied.
+ example:
+ - Meals
+ items:
+ type: string
+ description: Contains list of options that are fee applied.
+ example: Meals
+ xml:
+ name: FeeApplied
+ NotAvailable:
+ type: array
+ description: Contains list of options that are unavailable.
+ example:
+ - CANCELLATION
+ items:
+ type: string
+ description: Contains list of options that are unavailable.
+ example: CANCELLATION
+ xml:
+ name: NotAvailable
+ Amenities:
+ $ref: '#/components/schemas/Amenity'
+ description: Contains list of fare options
+ xml:
+ name: FareOptions
+ FlightDetailsResponse:
+ required:
+ - Offer
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for Warning Codes.
+ items:
+ $ref: '#/components/schemas/FlightDetailsWarning'
+ Segments:
+ type: array
+ description: Container for flight segments.
+ items:
+ $ref: '#/components/schemas/Segment'
+ Offer:
+ $ref: '#/components/schemas/FlightDetailsOffer'
+ AllOffers:
+ type: array
+ description: >-
+ Contains list of all the available alternate fare upsell/downsell
+ offers.
+ items:
+ $ref: '#/components/schemas/FlightDetailsOffer'
+ ValidFormsOfPayment:
+ type: array
+ description: >-
+ Container for fees that are charged for using certain payment
+ methods.
+ items:
+ $ref: '#/components/schemas/AirValidFormsOfPayment'
+ Lounges:
+ type: object
+ additionalProperties:
+ type: array
+ description: >-
+ Container showing list of keys and its related lounge information.
+ This key name can change based on the keys defined.
+ items:
+ $ref: '#/components/schemas/Lounge'
+ CrossSell:
+ $ref: '#/components/schemas/CrossSell'
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ xml:
+ name: FlightDetailsResponse
+ FlightsV3Hotel:
+ required:
+ - Id
+ - Name
+ - LocalCurrencyCode
+ - Location
+ - Distance
+ - Description
+ - Status
+ - ThumbnailUrl
+ - StarRating
+ - IsOfficialRating
+ - GuestRating
+ - GuestReviewCount
+ - Links
+ - RoomTypes
+ - Policies
+ - HotelAmenities
+ - RoomAmenities
+ type: object
+ properties:
+ Id:
+ type: string
+ description: >-
+ The unique, Expedia-specific hotel property identifier used to
+ designate a single hotel.
+ example: '14747'
+ Name:
+ type: string
+ description: The common name of the hotel
+ example: Four Seasons Hotel Seattle
+ LocalCurrencyCode:
+ type: string
+ description: >-
+ The Local Currency Code for Hotel (which will be used for any fees
+ that must be paid at the hotel)
+ example: USD
+ Location:
+ required:
+ - Address
+ - PointOfInterest
+ - GeoLocation
+ type: object
+ properties:
+ Address:
+ $ref: '#/components/schemas/FlightsV3Address'
+ PointOfInterest:
+ type: string
+ GeoLocation:
+ $ref: '#/components/schemas/FlightsV3GeoLocation'
+ description: Hotel address information
+ Distance:
+ $ref: '#/components/schemas/FlightsV3Distance'
+ Description:
+ $ref: '#/components/schemas/FlightsV3Description'
+ Status:
+ type: string
+ description: "\t\nIndicates whether there are available offers at the property during the dates requested, as well as information as to why.\nNote that pricing will only be present in the API response for a status of 'AVAILABLE'.\nIf there are no rooms available at the property for the dates requested, then 'NOT_AVAILABLE' will be returned.\nIf there are available rooms, but none that meet the specific parameters of the search request, then one of the other messages will be returned"
+ example: AVAILABLE
+ enum:
+ - AVAILABLE
+ - NOT_AVAILABLE
+ - ERROR
+ - NUMBER_OF_ADULTS_NOT_ACCEPTED
+ - NUMBER_OF_CHILDREN_NOT_ACCEPTED
+ - NUMBER_OF_INFANTS_NOT_ACCEPTED
+ - NUMBER_OF_PERSONS_NOT_ACCEPTED
+ - CHECK_IN_AGE_NOT_ACCEPTED
+ ThumbnailUrl:
+ type: string
+ description: >-
+ URL of the thumbnail image of the hotel.Note that other images sizes
+ are available - You can find a link to the complete list of
+ Supported Hotel Image Sizes in the Related Links section at the
+ bottom of the page
+ example: >-
+ https://images.trvl-media.com/hotels/3000000/2170000/2163100/2163007/2163007_15_t.jpg
+ StarRating:
+ type: string
+ description: Star rating value of the hotel property.
+ example: '5.0'
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ IsOfficialRating:
+ type: boolean
+ description: >-
+ Official rating value indicates if the hotel is certified or
+ official.
+
+ (Required in Australia Point of Sale)
+ example: true
+ GuestRating:
+ type: string
+ description: |-
+ Average overall guest rating of the hotel.
+ The value is between 1.0 and 5.0 in 0.1 increments.
+ Higher is better.
+ example: '4.5'
+ GuestReviewCount:
+ type: integer
+ description: >-
+ The total count of guest reviews used to create the average
+ GuestRating above.
+ format: int32
+ example: 240
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: >-
+ Container for list of HATEOAS links to Expedia/partner website to
+ complete booking.
+ Policies:
+ $ref: '#/components/schemas/FlightsV3HotelPolicies'
+ Media:
+ type: array
+ description: Container for hotel images
+ items:
+ $ref: '#/components/schemas/FlightsV3Media'
+ HotelAmenities:
+ type: array
+ description: Container for all hotel amenities.
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ RoomAmenities:
+ type: array
+ description: Container for all room amenities.
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ Accessibility:
+ type: array
+ description: The accessibility options available for the room.
+ example:
+ - Accessible path of travel
+ - Accessible bathroom
+ - Roll-in shower
+ - Handicapped parking
+ - In-room accessibility
+ - Accessibility equipment for the deaf
+ - Braille or raised signage
+ items:
+ type: string
+ description: The accessibility options available for the room.
+ example: Handicapped parking
+ xml:
+ name: Accessibility
+ RoomTypes:
+ type: array
+ description: Container for all of available room types.
+ items:
+ $ref: '#/components/schemas/FlightsV3RoomType'
+ description: Container for information on each offered hotel.
+ FlightsV3HotelPolicies:
+ type: object
+ properties:
+ CheckInStartTime:
+ type: string
+ description: >-
+ Beginning of the standard check-in window on the check in date,
+ stated in the local time of the property.
+ example: 3 PM
+ CheckInEndTime:
+ type: string
+ description: >-
+ End of the standard check-in window on the check in date, stated in
+ the local time of the property.
+ example: 5 PM
+ CheckOutTime:
+ type: string
+ description: >-
+ Customers must check out before this time on the check out date,
+ expressed in the local time of the property.
+ example: noon
+ PetPolicies:
+ type: array
+ description: The policy of the property toward having pets stay with guests.
+ example:
+ - 'Pets allowed, Up to 20 lb'
+ items:
+ type: string
+ description: The policy of the property toward having pets stay with guests.
+ example: '["Pets allowed, Up to 20 lb"]'
+ xml:
+ name: PetPolicies
+ ChildrenAndExtraBedsPolicies:
+ type: array
+ description: >-
+ The policy of the property for having children stay at the property,
+ as well as for including extra beds in the room.
+ example:
+ - Children are welcome
+ - Cribs/infant beds (surcharge)
+ items:
+ type: string
+ description: >-
+ The policy of the property for having children stay at the
+ property, as well as for including extra beds in the room.
+ example: 'Children are welcome, Cribs/infant beds (surcharge)'
+ xml:
+ name: ChildrenAndExtraBedsPolicies
+ description: Container for Hotel policy information.
+ HotelReference:
+ required:
+ - HotelId
+ - RoomKey
+ type: object
+ properties:
+ HotelId:
+ type: string
+ description: Unique id to represent a hotel
+ example: '2163007'
+ RoomKey:
+ type: string
+ description: Unique id to represent Room
+ example: >-
+ CgUyMDIzMBIuCgkyMDEzMDQ1OTcSCTIwNjMyNzYwMRoCMjQqCDIwMTcwNzI1MggyMDE3MDcyNioDCgEy
+ description: Container for Hotel Reference information
+ FlightsV3LodgingAmenity:
+ required:
+ - Id
+ - Name
+ type: object
+ properties:
+ Id:
+ type: string
+ description: The identification of a property amenity.
+ example: '2065'
+ Name:
+ type: string
+ description: The description of a property amenity.
+ example: Business center
+ description: The amenities of the rateplan.
+ FlightsV3Media:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: |-
+ type of the media. So far there is only one option:
+ 1: Image
+ example: '1'
+ Title:
+ type: string
+ description: Image title
+ example: Guestroom
+ Size:
+ type: string
+ description: >-
+ Image size
+
+ You can find a link to the complete list of Supported Images Sizes
+ in the Related Links section at the bottom of the page.
+ example: t
+ Url:
+ type: string
+ description: Image URL
+ example: >-
+ https://images.trvl-media.com/hotels/1000000/30000/20300/20230/20230_159_t.jpg
+ description: Container for hotel images
+ FlightsV3Occupant:
+ type: object
+ properties:
+ Adults:
+ type: integer
+ description: |
+ The number of adults in a room.
+ format: int32
+ example: 1
+ ChildAges:
+ type: array
+ description: |
+ The ages of children in a room.
+ example:
+ - 2
+ - 3
+ - 5
+ items:
+ type: integer
+ description: |
+ The ages of children in a room.
+ format: int32
+ xml:
+ name: ChildAges
+ description: Container of occupants. It is an array including occupants of each room.
+ FlightDetailsOffer:
+ required:
+ - International
+ - Links
+ - MerchantName
+ - FareOptions
+ - OpaqueFlight
+ - OfferPrice
+ - Refundable
+ - SplitTicket
+ - TicketType
+ - UndisclosedGenderSupported
+ - UnspecifiedGenderSupported
+ type: object
+ properties:
+ offerToken:
+ type: string
+ description: Unique key to identify each offer.
+ example: >-
+ v5-21c33c9b411f87e895f9dfa8df82b535-38-1-st-v5-7b789d5a41dd7490c9ffbeaead2aa37a-3
+ ReferenceId:
+ type: string
+ description: Key that allows the user to create a package using this flight.
+ example: Flight_Reference_key_67890
+ SplitTicket:
+ type: boolean
+ description: >-
+ True if more that one ticket will be issued for this offer per
+ passenger.
+
+ False if only one ticket will be issued per passenger.
+ MetaApiBook:
+ type: boolean
+ description: >-
+ To indicate meta partners whether the air product is available for
+ TAAS instant book.
+ OpaqueFlight:
+ type: boolean
+ description: |-
+ Indicate whether the air product is a opaque flight product or not.
+ If true, then there will be no Segments node for this air product.
+ Free24HourCancellation:
+ type: boolean
+ description: True if Booking can be cancelled within 24 hours of booking.
+ MerchantName:
+ type: string
+ description: All Merchant name appending them together with a ?*?
+ example: Spirit Airlines*Frontier Airlines
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: Container for deeplink URL information.
+ SegmentIds:
+ type: array
+ description: |-
+ Container for list of segment ids in a particular offer.
+ For Opaque flight, no segment will be present.
+ example:
+ - 2816ed613aedd7513c953c33367df2e4
+ - MjNfUHVibGlzaGVk
+ items:
+ type: string
+ description: |-
+ Container for list of segment ids in a particular offer.
+ For Opaque flight, no segment will be present.
+ example: 2816ed613aedd7513c953c33367df2e4
+ xml:
+ name: SegmentIds
+ OfferPrice:
+ $ref: '#/components/schemas/OfferPrice'
+ VfopKey:
+ type: string
+ description: Key generated for Valid form of payment
+ example: VFOP-AA
+ Refundable:
+ type: boolean
+ description: |-
+ True if flight is refundable,
+ False if it's not refundable.
+ RefundPenalty:
+ type: array
+ description: Contains refund penalty information
+ items:
+ $ref: '#/components/schemas/FlightDetailsRefundPenalty'
+ International:
+ type: boolean
+ description: |-
+ True, if flight is international.
+ False, if flight departs and arrives within the same country
+ TicketType:
+ type: string
+ description: Type of ticket being issued
+ example: E-Ticket
+ FareOptions:
+ type: array
+ description: Contains list of fare options
+ items:
+ $ref: '#/components/schemas/FareOptions'
+ UndisclosedGenderSupported:
+ type: boolean
+ description: |-
+ Whether to support undisclosed gender?
+ True = support
+ False = not support
+ UnspecifiedGenderSupported:
+ type: boolean
+ description: |-
+ Whether to support unspecified gender?
+ True = support
+ False = not support
+ description: >-
+ Contains list of all the available alternate fare upsell/downsell
+ offers.
+ xml:
+ name: Offer
+ PackageOffers:
+ required:
+ - Links
+ - PackagedOffer
+ - Price
+ type: object
+ properties:
+ Price:
+ $ref: '#/components/schemas/PackagePrice'
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: Container for HATEOAS links to websites and/or API's.
+ PackagedOffer:
+ $ref: '#/components/schemas/PackagedOffer'
+ description: |
+ Container for information about the hotel used in this package offer.
+ PackagePrice:
+ required:
+ - AverageCostPerPerson
+ - Fees
+ - PackageBasePrice
+ - PackageTaxesAndFees
+ - PackageTotalPrice
+ - Savings
+ - StandAloneTotalPrice
+ type: object
+ properties:
+ PackageBasePrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ PackageTotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ PackageTaxesAndFees:
+ $ref: '#/components/schemas/FlightsV3Money'
+ StandAloneTotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Fees:
+ type: array
+ description: >-
+ Special fees attached to the package (for example, Air Service
+ Fees).
+
+ This amount is not included in PackageTaxesAndFees.
+ items:
+ $ref: '#/components/schemas/Fee'
+ TotalHotelMandatoryFees:
+ $ref: '#/components/schemas/Fee'
+ Savings:
+ $ref: '#/components/schemas/PackageSavings'
+ AverageCostPerPerson:
+ $ref: '#/components/schemas/FlightsV3Money'
+ description: Container for package price information
+ PackageSavings:
+ required:
+ - Currency
+ - Value
+ type: object
+ description: >-
+ The amount of money that the traveler is saving by booking a package
+ over booking the same offers as standalone products.
+ allOf:
+ - $ref: '#/components/schemas/FlightsV3Money'
+ - type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: The ISO 4217 Currency Code that the value is expressed in.
+ example: USD
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Type:
+ type: string
+ description: Savings type
+ example: HotelDeal
+ Description:
+ type: string
+ description: Description of savings
+ example: Book this and save $55 (7%)
+ PackagedOffer:
+ required:
+ - FlightReferenceId
+ - HotelReference
+ type: object
+ properties:
+ HotelReference:
+ type: array
+ description: Container for Hotel Reference information
+ items:
+ $ref: '#/components/schemas/HotelReference'
+ FlightReferenceId:
+ type: string
+ description: Flight offer id
+ example: v587889e324c42342ec2ab7a8ecddc8a88
+ StayDates:
+ $ref: '#/components/schemas/FlightsV3StayDates'
+ NumberOfNights:
+ type: integer
+ description: Number of nights guest staying in the hotel
+ format: int32
+ example: 4
+ description: Container for Package Offer
+ FlightsV3Promotion:
+ type: object
+ properties:
+ Type:
+ type: string
+ description: 'Promotion type, possible values: PO | FN'
+ example: PO
+ Description:
+ type: string
+ description: The description of the promotion.
+ example: 20%Off
+ Value:
+ type: number
+ format: double
+ FlightsV3RatePlan:
+ required:
+ - InventorySourceId
+ - RatePlanId
+ - RoomTypeId
+ type: object
+ properties:
+ RoomTypeId:
+ type: string
+ description: The room type identifier.
+ example: '200287452'
+ RatePlanId:
+ type: string
+ description: The rate plan identifier.
+ example: '201714191'
+ RateRuleId:
+ type: string
+ description: The identifier of rate rule.
+ example: '213544817'
+ InventorySourceId:
+ type: string
+ description: The identification number of the source that provides the rate plan.
+ example: '24'
+ InventorySourceCode:
+ type: string
+ description: The source name that provided the rate plan.
+ example: JT
+ StayDates:
+ $ref: '#/components/schemas/FlightsV3StayDates'
+ RemainingCount:
+ type: integer
+ description: >-
+ The number of rooms remaining through Expedia for this room type.
+
+ NOTE: This value does NOT represent the total number of rooms
+ remaining at the hotel property, only the number of rooms allocated
+ to Expedia for sale by the property that currently remain in
+ Expedia's inventory. When a hotel is listed as 'sold out' by Expedia
+ there may still be rooms available for sale by the hotel through
+ other channels.
+
+ CMA Compliance Note (UK): websites in the UK that display
+ remainingCount should make it clear to consumers that this count
+ refers to the number of rooms remaining within Expedia inventory -
+ NOT the number remaining at the property.
+ format: int32
+ example: 3
+ FreeInternet:
+ type: boolean
+ description: |-
+ Indicates whether the price of the room includes free Internet.
+ (either wireless or wired)
+ example: true
+ FreeWiFi:
+ type: boolean
+ description: >-
+ Indicates whether the price of the room includes free wireless
+ Internet access.
+ example: true
+ FreeInternetDetails:
+ type: array
+ description: >-
+ The localized details for the free internet amenity (only shown when
+ FreeInternet = true).
+ example:
+ - 'Free Wireless Internet, Wired high-speed Internet-comp'
+ items:
+ type: string
+ description: >-
+ The localized details for the free internet amenity (only shown
+ when FreeInternet = true).
+ example: '["Free Wireless Internet, Wired high-speed Internet-comp"]'
+ xml:
+ name: FreeInternetDetails
+ FreeParking:
+ type: boolean
+ description: Indicates whether the price of the room includes free parking.
+ example: true
+ FreeBreakfast:
+ type: boolean
+ description: Indicates whether the price of the room includes free breakfast.
+ example: true
+ FreeBreakfastDetails:
+ type: array
+ description: >-
+ The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).
+ example:
+ - Full Breakfast
+ - Full Board
+ items:
+ type: string
+ description: >-
+ The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).
+ example: '["Full Breakfast","Full Board"]'
+ xml:
+ name: FreeBreakfastDetails
+ Amenities:
+ type: array
+ description: The amenities of the rateplan.
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ description: Container for rate plan information.
+ FlightDetailsRefundPenalty:
+ required:
+ - SegmentIds
+ type: object
+ properties:
+ SegmentIds:
+ type: array
+ description: Contains a list of segment Ids
+ example:
+ - 2816ed613aedd7513c953c33367df2e4
+ items:
+ type: string
+ description: Contains a list of segment Ids
+ example: 2816ed613aedd7513c953c33367df2e4
+ xml:
+ name: SegmentIds
+ PreTripChange:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ PreTripCancel:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ EnrouteChange:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ EnrouteCancel:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ Transferable:
+ type: string
+ enum:
+ - 'YES'
+ - 'NO'
+ - UNKNOWN
+ NameChangeAllowed:
+ type: string
+ enum:
+ - 'YES'
+ - 'NO'
+ - UNKNOWN
+ description: Contains refund penalty information
+ FlightsV3RoomOccupancyPolicy:
+ required:
+ - MaxGuestCount
+ - MinCheckInAge
+ type: object
+ properties:
+ MaxGuestCount:
+ type: integer
+ description: The maximum number of guests allowed to stay in a room.
+ format: int32
+ example: 3
+ AgeClassRestrictions:
+ type: array
+ description: Container for room occupancy rules based on the age of the guests.
+ items:
+ $ref: '#/components/schemas/FlightsV3AgeClassRestriction'
+ description: Room occupancy policy.
+ FlightsV3RoomType:
+ required:
+ - offerToken
+ - RatePlanType
+ - RatePlans
+ - Traveler
+ type: object
+ properties:
+ Description:
+ type: string
+ description: Text description of the room type.
+ example: 'Room, 1 King Bed, City View (Seattle V)'
+ RatePlans:
+ type: array
+ description: Container for rate plan information.
+ items:
+ $ref: '#/components/schemas/FlightsV3RatePlan'
+ Promotions:
+ type: array
+ items:
+ $ref: '#/components/schemas/FlightsV3Promotion'
+ SmokingOption:
+ type: string
+ description: |-
+ The smoking options available for the room type.
+ Options could be:
+ SmokingOrNonSmoking
+ Smoking
+ NonSmoking
+ example: SmokingOrNonSmoking
+ enum:
+ - SmokingOrNonSmoking
+ - Smoking
+ - NonSmoking
+ RoomOccupancyPolicy:
+ $ref: '#/components/schemas/FlightsV3RoomOccupancyPolicy'
+ Amenities:
+ type: array
+ description: Container for all room amenities.
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ Media:
+ type: array
+ description: Container for hotel images
+ items:
+ $ref: '#/components/schemas/FlightsV3Media'
+ SeatChoice:
+ type: object
+ properties:
+ Availability:
+ type: string
+ description: Availability of Amenity
+ example: INCLUDED
+ enum:
+ - INCLUDED
+ - NOT_AVAILABLE
+ - AVAILABLE_FOR_FEE
+ Restriction:
+ type: string
+ description: Restriction if any on SeatChoice Amenity.
+ example: ONLY_AT_CHECKIN
+ enum:
+ - ONLY_AT_CHECKIN
+ description: Contains seat choice information.
+ xml:
+ name: SeatChoice
+ FlightsV3StayDates:
+ required:
+ - CheckInDate
+ - CheckOutDate
+ type: object
+ properties:
+ CheckInDate:
+ type: string
+ description: >-
+ The initial day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ format: date
+ CheckOutDate:
+ type: string
+ description: >-
+ The final day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+ format: date
+ description: Container for Dates of Stay information
+ FlightDetailsWarning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Standardized warning code.
+ example: PRICE_INCREASE
+ Description:
+ type: string
+ description: Standardized warning description message.
+ example: A price change was detected.
+ OriginalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ NewPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ ChangedAmount:
+ $ref: '#/components/schemas/FlightsV3Money'
+ FlexSearchResponse:
+ required:
+ - Offers
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for Warning Codes.
+ items:
+ type: object
+ properties:
+ Warning:
+ required:
+ - Code
+ - Description
+ type: object
+ properties:
+ Code:
+ type: string
+ description: Warning message code.
+ example: NO_RESULTS_FOUND
+ Description:
+ type: string
+ description: Warning message description.
+ example: No flights solutions found for the request.
+ description: Container for Warning Codes.
+ Offers:
+ type: array
+ description: >-
+ Container for list of air offers.
+
+ An offer gives trip details including flight and pricing
+ information.
+ items:
+ type: object
+ properties:
+ Offer:
+ required:
+ - DepartureDates
+ - OfferPrice
+ type: object
+ properties:
+ DepartureDates:
+ type: array
+ description: >-
+ Container for the list of departure dates for the first
+ Leg in each segment in chronological order.
+ example:
+ - '2021-02-19T09:12:28.000Z'
+ items:
+ type: string
+ description: >-
+ Container for the list of departure dates for the first
+ Leg in each segment in chronological order.
+ format: date-time
+ xml:
+ name: DepartureDates
+ OfferPrice:
+ required:
+ - TotalPrice
+ - TotalTaxesAndFees
+ type: object
+ properties:
+ TotalPrice:
+ type: object
+ properties:
+ Money:
+ required:
+ - Currency
+ - Value
+ type: object
+ properties:
+ Value:
+ type: string
+ description: The value of the element being defined.
+ example: '21.9'
+ Currency:
+ type: string
+ description: >-
+ The ISO 4217 Currency Code that the value is
+ expressed in.
+ example: USD
+ description: Container for Taxes per passenger category
+ description: >-
+ Container for price information corresponding to a
+ particular segment
+
+ (Nullable in case of Opaque Flights)
+ xml:
+ name: OfferPrice
+ Segments:
+ type: array
+ description: >-
+ Container of information about each flight offer
+
+ Segments (the trip from one stopping place to another) are
+ made up of Legs.
+
+ This will be given back in response if
+ includeSegmentDetails=true
+ items:
+ type: object
+ properties:
+ Segment:
+ required:
+ - DepartureArrivalDayDifference
+ - Legs
+ type: object
+ properties:
+ DepartureArrivalDayDifference:
+ type: integer
+ description: >-
+ This is an indicator (can have values of -1, 0,
+ 1, 2, etc.) which depends on the relative
+ difference between the arrival and departure
+ dates.
+ format: int32
+ example: 0
+ AirportChange:
+ type: boolean
+ description: >-
+ True if there the Segment is having a different
+ Departure airport compared to the Arrival
+ airport of previous Segment.
+ Legs:
+ type: array
+ description: Container information on each flight leg.
+ items:
+ type: object
+ properties:
+ Leg:
+ required:
+ - ArrivalAirport
+ - ArrivalDateTime
+ - BookingCode
+ - CabinClass
+ - DepartureAirport
+ - DepartureDateTime
+ - FlightDuration
+ - FlightNumber
+ - MarketingAirlineCode
+ - SeatMapAvailable
+ type: object
+ properties:
+ DepartureAirport:
+ type: object
+ properties:
+ Airport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: >-
+ Three-letter IATA airport code for
+ departure location
+ example: SFO
+ description: >-
+ Container for information on the arrival
+ airport.
+ xml:
+ name: Airport
+ ArrivalAirport:
+ type: object
+ properties:
+ Airport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: >-
+ Three-letter IATA airport code for
+ departure location
+ example: SFO
+ description: >-
+ Container for information on the arrival
+ airport.
+ xml:
+ name: Airport
+ DepartureDateTime:
+ type: string
+ description: >-
+ Flight departure date and time in ISO
+ 8601 format
+ format: date-time
+ example: '2021-07-05T13:15:00.000Z'
+ ArrivalDateTime:
+ type: string
+ description: >-
+ Flight landing date and time in ISO 8601
+ format
+ format: date-time
+ example: '2021-07-05T16:15:00.000Z'
+ FlightNumber:
+ type: string
+ description: Flight Number assigned by Carrier.
+ example: '2537'
+ MarketingAirlineCode:
+ type: string
+ description: >-
+ The two-letter code of the Airline that
+ is marketing the flight.
+ example: AA
+ OperatingAirlineCode:
+ type: string
+ description: >-
+ The two-letter code of the Airline
+ actually operating the plane.
+ example: UA
+ FlightDuration:
+ type: string
+ description: >-
+ The total travel duration for this leg,
+ expressed in ISO 8601 standard.
+ example: PT3H58M
+ CabinClass:
+ type: string
+ description: Class of service for the air leg.
+ example: ECONOMY
+ enum:
+ - ECONOMY
+ - FIRST
+ - BUSINESS
+ - PREMIUM_ECONOMY
+ description: Container information on each flight leg.
+ xml:
+ name: Leg
+ description: >-
+ Container of information about each flight offer
+
+ Segments (the trip from one stopping place to
+ another) are made up of Legs.
+
+ This will be given back in response if
+ includeSegmentDetails=true
+ xml:
+ name: Segment
+ description: >-
+ Container for list of air offers.
+
+ An offer gives trip details including flight and pricing
+ information.
+ xml:
+ name: Offer
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ xml:
+ name: FlexSearchResponse
+ FareCalendarResponse:
+ required:
+ - Offers
+ - TransactionId
+ type: object
+ properties:
+ Warnings:
+ type: array
+ description: Container for Warning Codes.
+ items:
+ $ref: '#/components/schemas/FlightsV3Warning'
+ Offers:
+ type: array
+ description: >-
+ Container for list of air offers.
+
+ An offer gives total trip details including flight and pricing
+ information.
+ items:
+ required:
+ - DepartureDate
+ - OfferPrice
+ type: object
+ properties:
+ DepartureDate:
+ type: string
+ description: Flight departure date in ISO 8601 format.
+ format: date-time
+ OfferPrice:
+ required:
+ - TotalPrice
+ type: object
+ properties:
+ TotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ description: Container for offer price information.
+ Segments:
+ type: array
+ description: >-
+ Container of information about each flight offer
+
+ Segments (the trip from one stopping place to another) are
+ made up of Legs
+
+ This will be given back in response if
+ includeSegmentDetails=true
+ items:
+ required:
+ - Legs
+ type: object
+ properties:
+ Legs:
+ type: array
+ description: Container information on each flight leg.
+ items:
+ required:
+ - ArrivalAirport
+ - ArrivalDateTime
+ - CabinClass
+ - DepartureAirport
+ - DepartureDateTime
+ - FlightNumber
+ type: object
+ properties:
+ DepartureAirport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: >-
+ Three-letter IATA airport code for departure
+ location
+ example: SFO
+ description: Container for information on the arrival airport.
+ ArrivalAirport:
+ required:
+ - Code
+ type: object
+ properties:
+ Code:
+ type: string
+ description: >-
+ Three-letter IATA airport code for departure
+ location
+ example: SFO
+ description: Container for information on the arrival airport.
+ DepartureDateTime:
+ type: string
+ description: Flight departure date and time in ISO 8601 format
+ format: date-time
+ example: '2021-07-05T13:15:00.000Z'
+ ArrivalDateTime:
+ type: string
+ description: Flight landing date and time in ISO 8601 format
+ format: date-time
+ example: '2021-07-05T16:15:00.000Z'
+ FlightNumber:
+ type: string
+ description: Flight Number assigned by Carrier.
+ example: '2537'
+ MarketingAirlineCode:
+ type: string
+ description: >-
+ The two-letter code of the Airline that is
+ marketing the flight.
+ example: AA
+ OperatingAirlineCode:
+ type: string
+ description: >-
+ The two-letter code of the Airline actually
+ operating the plane.
+ example: UA
+ CabinClass:
+ type: string
+ description: Class of service for the air leg.
+ example: ECONOMY
+ enum:
+ - ECONOMY
+ - FIRST
+ - BUSINESS
+ - PREMIUM_ECONOMY
+ description: Container information on each flight leg.
+ description: >-
+ Container of information about each flight offer
+
+ Segments (the trip from one stopping place to another) are
+ made up of Legs
+
+ This will be given back in response if
+ includeSegmentDetails=true
+ description: >-
+ Container for list of air offers.
+
+ An offer gives total trip details including flight and pricing
+ information.
+ TransactionId:
+ type: string
+ description: Unique identifier for the transaction.
+ example: f06edfa3-27f4-44e6-838c-b8dd3d0a3210
+ securitySchemes:
+ Authorization:
+ type: http
+ scheme: basic
diff --git a/specs/transformed-specs.yaml b/specs/transformed-specs.yaml
new file mode 100644
index 000000000..163057756
--- /dev/null
+++ b/specs/transformed-specs.yaml
@@ -0,0 +1,15385 @@
+openapi: '3.0.3'
+info:
+ title: 'EWSHotel API'
+ description: 'The XAP Lodging Search APIs can be used by partners both booking
+ via an Expedia website, or by partners that
+
+ will be booking via the XAP APIs. Each API also provides pre-configured
+ links to the Expedia website,
+
+ the XAP Booking API, or both.
+
+ '
+ version: 'v3'
+ x-eg-lifecycle: 'LIVE'
+ x-eg-tags:
+ - 'Partner'
+ - 'EWS'
+ - 'XAP'
+ - 'EWSHotel'
+ - 'Hotel'
+ - 'Lodging'
+ - 'LodgingListings'
+ - 'LodgingDetails'
+ - 'LodgingRateCalendar'
+servers:
+ - url: 'https://apim.expedia.com'
+ description: 'Production Server'
+security:
+ - BasicAuth: []
+tags:
+ - name: 'Lodging Listing'
+ - name: 'Lodging Details'
+ - name: 'Lodging Rate Calendar'
+ - name: 'Lodging Quotes'
+ - name: 'Lodging Availability Calendars'
+ - name: 'Cars Listings'
+ - name: 'Cars Detail'
+ - name: 'download-url'
+ - name: 'Activities List'
+ - name: 'Activities Details'
+ - name: 'Flight FareRules'
+ - name: 'Flight BaggageFee'
+ - name: 'Flight SeatMap'
+ - name: 'Flight Links'
+ - name: 'Flight Listings'
+ - name: 'Flight Details'
+ - name: 'Flight FlexSearch'
+ - name: 'Flight FareCalendar'
+paths:
+ /hotels/details/{offerToken}:
+ get:
+ tags:
+ - 'get-lodging-details'
+ summary: 'Get Extended information with a single property offer'
+ description: 'Extended information about the rate, charges, fees, and financial
+ terms associated with booking a single lodging rate plan offer.'
+ operationId: 'get-lodging-details'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner''s choosing.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ example: 'Partner123'
+ - name: 'offerToken'
+ in: 'path'
+ description: "A Hotel Natural Key from the Lodging Search API -> Hotels ->
+ RoomTypes -> OfferId. It is a concatenated\
+
+ string of multiple values that defines a hotel offer.\n"
+ required: true
+ schema:
+ type: 'string'
+ - name: 'price'
+ in: 'query'
+ description: 'The total price of the selected property.
+
+
+ This value will be used to determine if there is a price change
+ between the details and booking request.
+
+
+ The `price` element will be automatically included in the ApiDetails
+ HATEOAS link which is returned
+
+ along with the Lodging Details API response.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'currency'
+ in: 'query'
+ description: 'Value should be a standard ISO 3 letter currency code.
+
+
+ The currency code that is associated to the `TotalPrice` element for
+ the selected property''s rate plan from
+
+ the Lodging Listing API response.
+
+
+ The `currency` element will be automatically included in the
+ ApiDetails HATEOAS link which is returned
+
+ along with the Lodging Details response.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'locale'
+ in: 'query'
+ description: '`locale` is composed of language identifier and region identifier,
+ connected by "_" that specifies the
+
+ language in which the response will be returned.
+
+
+ The `locale` value used in the Lodging Details API query should
+ match the `locale` value that was used in
+
+ the Lodging Search API query.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'imageSizes'
+ in: 'query'
+ description: 'Indicate what size of image will be returned.
+
+
+ The available image sizes are:
+
+ - t : Thumbnail
+
+ - s : Small
+
+ - b : Big
+
+ - y : 500x500v
+
+ - z : 1000x1000v
+
+
+ Resolution from smallest to largest is t < s < b < y < z.
+
+
+ If no `imageSizes` is specified, the t size images will be returned.
+
+
+ If an image is missing in one size, we will try to fall back to the
+ same image with lower resolution.
+
+
+ (If image "_z" is not available, we will try to return image "_y",
+ and if it is also unavailable, we will return image "_b", and so
+ on.)
+
+
+ Only one image size is allowed.
+
+ '
+ schema:
+ type: 'string'
+ enum:
+ - 't'
+ - 's'
+ - 'b'
+ - 'y'
+ - 'z'
+ default: 't'
+ - name: 'groupedAmenities'
+ in: 'query'
+ description: 'Specifies whether to return the grouped amenities. If
+ `groupedAmenities` is true, `DescriptiveAmenities`
+
+ node will be returned in response, otherwise `Amenities` node will
+ be returned.
+
+ '
+ schema:
+ type: 'boolean'
+ responses:
+ "200":
+ description: 'Normal Response'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/HotelDetailsResponse'
+ "400":
+ description: 'User Fault'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_NATURAL_KEY'
+ Description: 'Invalid natural key. Malformed hotel natural key detected.'
+ TransactionId: 'e883f530-9776-4011-a14d-3cc089feb6cf'
+ "401":
+ description: 'Invalid authentication credentials.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Unauthorized'
+ "403":
+ description: 'You cannot consume this service.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'You cannot consume this service'
+ "429":
+ description: 'API rate limit exceeded.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'API rate limit exceeded.'
+ "500":
+ description: 'Service Error'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: 'APPLICATION_ERROR'
+ Description: 'Application error.'
+ TransactionId: '1f497fa0-a996-4796-b97e-3ad269bf7624'
+ "503":
+ description: 'Service unavailable.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Name resolution failed.'
+ "504":
+ description: 'API time out.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'The upstream server is timing out'
+ security:
+ - Authorization: []
+ /hotels/listings:
+ get:
+ tags:
+ - 'get-lodging-listings'
+ summary: 'Search lodging inventory'
+ description: 'Search Expedia lodging inventory by Location Keyword, Region ID,
+ Lat/Long, or Hotel ID(s) and return
+
+ up to 1,000 offers in response.
+
+
+ Provides deeplink to Expedia site to book, or rate plan info to enable
+ API booking.
+
+ '
+ operationId: 'get-lodging-listings'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner''s choosing.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ example: 'Partner123'
+ - name: 'ecomHotelIds'
+ in: 'query'
+ description: 'Comma-separated list of Expedia hotel IDs. There can be no spaces
+ between parameters.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ example:
+ - 28082
+ - 11133
+ - name: 'hcomHotelIds'
+ in: 'query'
+ description: 'Comma-separated list of Hotels.com hotel IDs. There can be no
+ spaces between parameters.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'geoLocation'
+ in: 'query'
+ description: 'The latitude and longitude values identifying the center point of
+ a search radius (circle).
+
+
+ North latitude will be represented by a positive value. South
+ latitude by a negative value.
+
+
+ East longitude will be represented by a positive value. West
+ longitude by a negative value.
+
+
+ The latitude and longitude values are joined together with a comma
+ (,) character.
+
+ There can be no spaces between parameters.
+
+
+ This parameter should be used in combination with the radius and
+ unit parameters below.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'radius'
+ in: 'query'
+ description: 'The size of the search radius around a specified point when
+ searching by
+
+ `geoLocation`, `locationKeyword`, or `regionids`.
+
+
+ `radius` is optional and the default value is 25 km for
+ `geoLocation` and `locationKeyword`
+
+ if not specified. `radius` must be less than 200 km or 124 mi.
+
+
+ This parameter should be used in combination with the `unit` and
+ `geoLocation`, `locationKeyword`,
+
+ or `regionids` parameters."
+
+ '
+ schema:
+ type: 'integer'
+ format: 'int64'
+ default: 25
+ - name: 'unit'
+ in: 'query'
+ description: 'The unit of measure for searches performed via `geoLocation`,
+ `locationKeyword`, or `regionids`.
+
+
+ Valid units are `km` and `mi`.
+
+
+ This parameter should be used in combination with the `radius` and
+ `geoLocation`, `locationKeyword`,
+
+ or `regionids`.
+
+ '
+ schema:
+ type: 'string'
+ default: 'km'
+ enum:
+ - 'km'
+ - 'mi'
+ - name: 'locationKeyword'
+ in: 'query'
+ description: 'A keyword search for a location. The keyword can be a city,
+ address, airport or a landmark.
+
+
+ This parameter should be used in combination with the `radius` and
+ `unit` parameters above to define
+
+ a circle around the landmark.
+
+
+ The default radius value is 25 if not specified.
+
+
+ Combined search is not supported, if more than one search method is
+ included in the request, an error
+
+ will be returned.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'regionIds'
+ in: 'query'
+ description: 'Comma-separated list of Expedia Region IDs. There can be no spaces
+ between parameters.
+
+ Search returns set of all hotels in the combined regions.
+
+
+ You may search using a string of 1 - 10 Region ID''s.
+
+ More than 10 Region ID''s are not supported and will generate and
+ error.
+
+
+ You can get the complete list of Expedia Region IDs from
+
+ [Static Data Platform ALL_REGIONS
+ file](https://developers.expediagroup.com/xap/products/xap/static-data-platform/download-url-api/download-url-api-v1).
+
+
+ This parameter could be used in combination with the `radius` and
+ `unit` parameters above to define
+
+ a circle around the `regionIds`. The default radius value is 0 if
+ not specified.
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'checkIn'
+ in: 'query'
+ description: "Check-in date for hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the `checkOut`
+ parameter.
+
+
+ If `checkIn` and `checkOut` are not included, a dateless search will
+ be conducted which returns
+
+ a `Featured Offer` for each of the hotels found.
+
+
+ If one of `checkIn` and `checkOut` is not included, an error will be
+ returned.\
+
+
+ The maximum advanced search window is 500 days in the future, and
+ the maximum length of stay is 28.\n"
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2023-09-12'
+ - name: 'checkOut'
+ in: 'query'
+ description: "Checkout date for hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the `checkIn`
+ parameter.
+
+
+ If `checkIn` and `checkOut` are not included, a dateless search will
+ be conducted which returns
+
+ a `Featured Offer` for each of the hotels found.
+
+
+ If one of `checkIn` and `checkOut` is not included, an error will be
+ returned.\
+
+
+ The maximum advanced search window is 500 days in the future, and
+ the maximum length of stay is 28.\n"
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2023-09-14'
+ - name: 'locale'
+ in: 'query'
+ description: "`locale` is composed of language identifier and region identifier,
+ connected by \"_\" that specifies
+
+ the language in which the response will be returned.
+
+
+ You can find a link to the complete list of `locales` along with the
+ Point of Sale List in [Supported Points of
+ Sale](https://developers.expediagroup.com/xap/products/xap/lodging/\
+ references/supported-points-of-sale). Note that even though the
+ Listings API supports localization for all `locales` listed in the
+ list, all `locales` are not valid for all Points of Sale.\
+
+
+ For example, Ecom US POS supports `en_US`, `es_MX` and `zh_CN`. For
+ Ecom US POS, the Listings API will respond with content in Spanish
+ for requests with either `locale=es_MX` or `es_US`. However, only
+ the deeplinks for `locale=es_MX` should work properly and switch the
+ website to Spanish, while the ones for locale=es_US will be fallen
+ back to English.
+
+
+ If not specified in the query, the native language for that POS will
+ be returned.
+
+ And if more than one language is supported, the response will be
+ returned in the first language
+
+ depending on the language setting of the POS.\n"
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'currency'
+ in: 'query'
+ description: 'Value should be a standard ISO 3 letter currency code.'
+ schema:
+ type: 'string'
+ example: 'USD'
+ - name: 'source'
+ in: 'query'
+ description: 'Indicate the source where the request is coming from.'
+ schema:
+ type: 'string'
+ enum:
+ - 'browser'
+ - 'mobileapp'
+ default: 'browser'
+ - name: 'travelWithPets'
+ in: 'query'
+ description: 'Indicates if the search should include pet-friendly properties.
+
+
+ If set to "True" only properties that allow pets are returned. Pet
+ fees, if available, are included in TaxesAndFees.
+
+
+ The parameter is only applicable to the Vrbo brand.
+
+ '
+ schema:
+ type: 'boolean'
+ default: false
+ - name: 'contentDetails'
+ in: 'query'
+ description: "This parameter is optional and can be specified as the following
+ values.
+
+ - lowest
+
+ - low (default)
+
+ - medium
+
+ - high
+
+
+ ### *lowest*
+
+ Returns the absolute minimum response for up to 1,000 hotels:
+
+ - Count(Count of hotels that are actually returned)
+
+ - TotalHotelCount(Count of hotels that are requested)
+
+ - TransactionId
+
+ - StayDates
+
+ - LengthOfStay
+
+ - NumberOfRooms
+
+ - Occupants
+
+ - ***Hotels***
+
+ \ - Id
+
+ \ - Status
+
+ \ - Links
+
+ \ - ***RoomTypes***
+
+ \ - RoomKey [Deprecated]
+
+ \ - OfferId
+
+ \ - RatePlanType
+
+ \ - ***RatePlans***
+
+ \ - RoomTypeId
+
+ \ - RatePlanId
+
+ \ - RateRuleId
+
+ \ - InventorySourceId
+
+ \ - RemainingCount
+
+ \ - Price
+
+ \ - MemberOnlyDeal
+
+ \ - Promotions
+
+ \ - PaymentMethod
+
+ \ - FullDepositUponBooking
+
+ \ - PaymentSchedule
+
+ \ - CancellationPolicy
+
+ \ - Price
+
+ \ - BaseRate
+
+ \ - TaxesAndFees
+
+ \ - TotalPrice
+
+ \ - TotalStrikeOutPrice
+
+ \ - AvgNightlyRate
+
+ \ - AvgNightlyStrikeOutRate
+
+ \ - AvgNightlyRateWithFees
+
+ \ - AvgNightlyStrikeOutRateWithFees
+
+ \ - HotelMandatoryFees
+
+ \ - TotalPriceWithHotelFees
+
+ \ - NightlyRates
+
+ \ - TaxesAndFeesDetails
+
+ \ - RefundableDamageDeposit
+
+
+ This minimal response is the best for partners that store static
+ hotel location data locally,
+
+ and who would like to have the smallest and fastest API response.
+
+
+ ### *low*
+
+ Returns basic hotel information in response for up to 1,000 hotels.
+
+
+ Includes all elements returned when `contentDetails=lowest` plus:
+
+ - ***Hotels***
+
+ \ - Name
+
+ \ - PropertyType
+
+ \ - PropertyDetails
+
+ \ - LocalCurrencyCode
+
+ \ - Location
+
+ \ - Distance
+
+ \ - Description(may not be localized)
+
+ \ - ChainAndBrandInfo
+
+ \ - ThumbnailUrl
+
+ \ - StarRating
+
+ \ - GuestRating
+
+ \ - GuestReviewCount
+
+ \ - PetFriendly
+
+ \ - LgbtqiaFriendly
+
+ \ - ImportantNotices
+
+ \ - ***RoomTypes***
+
+ \ - Description
+
+ \ - ***RatePlans***
+
+ \ - InventorySourceCode
+
+ \ - PaymentTime
+
+ \ - ReserveWithDeposit
+
+ \ - FreeInternet
+
+ \ - FreeWiFi
+
+ \ - FreeParking
+
+ \ - FreeBreakfast \
+
+
+ ### *medium*
+
+ Returns more complete hotel information in response for up to 200
+ hotels.
+
+
+ Includes all elements returned when `contentDetails=low` plus:
+
+ - ***Hotels***
+
+ \ - HotelAmenities
+
+ \ - RoomAmenities
+
+ \ - ***RoomTypes***
+
+ \ - ***RatePlans***
+
+ \ - FreeInternetDetails
+
+ \ - FreeBreakfastDetails
+
+ \ - Amenities
+
+ \ - Amenities
+
+
+ **Note**: Setting the `contentDetails` to `medium` will
+ automatically limit your response size to 200 hotels.
+
+
+ ### *high*
+
+ Returns extended hotel information in response for up to 5 hotels.
+
+
+ Includes all elements returned when `contentDetails=medium` plus:
+
+ - ***Hotels***
+
+ \ - RenovationsAndClosures
+
+ \ - Policies
+
+ \ - OptionalExtras
+
+ \ - Media
+
+ \ - Accessibility
+
+ \ - ***RoomTypes***
+
+ \ - SmokingOption
+
+ \ - BedTypeOptions
+
+ \ - RoomOccupancyPolicy
+
+ \ - Media
+
+
+ **Note**: Setting the `contentDetails` to `high` will automatically
+ limit your response size to 5 hotels.\n"
+ schema:
+ type: 'string'
+ enum:
+ - 'lowest'
+ - 'low'
+ - 'medium'
+ - 'high'
+ default: 'low'
+ - name: 'allRoomTypes'
+ in: 'query'
+ description: 'Returns all available rate plans for the selected hotels.
+
+
+ This parameter requires that a `checkIn` date and `checkOut` date be
+ supplied, as the API cannot return additional room rates on a
+ dateless search.
+
+
+ Including `allRoomTypes=true` in your query will automatically limit
+ your response size to no more than 200 hotels.
+
+
+ Including `allRoomTypes=true` and `contentDetails=high` will limit
+ your response size to no more than 5 hotels.
+
+ '
+ schema:
+ type: 'boolean'
+ default: false
+ - name: 'links'
+ in: 'query'
+ description: '
+
+ Comma-separated list to specify the types of deep links.
+
+ - WD (link to Web Details site)
+
+ - WS (link to Web Search Result page)
+
+ - AD (link for Details API)
+
+ - RC (link for RateCalendar API)
+
+ - WEB (include all website links)
+
+ - API (links for Details and RateCalendar API)
+
+
+ There are two level of links returned in the API response:
+ Property-level deeplinks and room-level deeplinks.
+
+
+ When requesting API deeplinks you will receive both a RateCalendar
+ API link at the property level,
+
+ and Details API links at the room level, since the Lodging Details
+ API only displays information
+
+ on rate plan offers.
+
+
+ When requesting AD deeplinks, you will only receive Details
+ API links at the room level.
+
+ `Links` node in property-level will be omitted.
+
+
+ If you are looking for more complete details on a single property
+ via the API, you should do another search
+
+ in the Lodging API for the single Hotel ID, with
+ `contentDetails=high` to get all details back in return
+
+ (note that you can only get back a maximum of 5 hotels when
+ `contentDetails` is set to `high`).
+
+
+ **NOTE**: dateless searches will not return Details API links, since
+ the Lodging Details API will only
+
+ return details on a specific room offer for specific dates.
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ enum:
+ - 'WD'
+ - 'WS'
+ - 'AD'
+ - 'RC'
+ - 'WEB'
+ - 'API'
+ - name: 'minStarRating'
+ in: 'query'
+ description: 'The minimum star rating for hotels returned in the response.'
+ schema:
+ type: 'string'
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ - name: 'maxStarRating'
+ in: 'query'
+ description: 'The maximum star rating for hotels returned in the response.'
+ schema:
+ type: 'string'
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ - name: 'limit'
+ in: 'query'
+ description: "The maximum number of hotels returned in the response. Must be an
+ integer greater than 0.\
+
+
+ If the value is greater than 1000, only the first 1000 hotels are
+ returned.\
+
+
+ Settings on `contentDetails` and `allRoomTypes` parameters may cause
+ this value to be overridden
+
+ and a lower number of hotels to be returned.\
+
+
+ The `limit` parameter is intended to be used to control the response
+ size, but partners should be careful
+
+ about combining it with other filter parameters, as each parameter
+ that you add will shrink the response,
+
+ even to the point where you may even get a \"no hotel found\" error
+ if none of the hotels in the base response
+
+ meet the combined filter requirements.\
+
+
+ Filters are cumulative in effect, and results must meet all filter
+ requirements to be displayed.\n"
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'queryText'
+ in: 'query'
+ description: 'Query text is used for a full text search of hotel data.
+
+
+ Text search based on hotel name, description, address, promotion
+ description, amenities description.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'availOnly'
+ in: 'query'
+ description: 'Specifies whether to return only available hotels in the search
+ results.
+
+
+ If the value of this parameter is true, the search results will only
+ return hotels that have availability
+
+ during the requested dates.
+
+
+ If there are no hotels with availability in your search then an
+ empty record set will be returned.
+
+
+ This parameter is ignored for dateless searches.
+
+ '
+ schema:
+ type: 'boolean'
+ - name: 'smokingPreference'
+ in: 'query'
+ description: 'Specifies smoking preference.'
+ schema:
+ type: 'string'
+ enum:
+ - 'smoking'
+ - 'nonsmoking'
+ - 'both'
+ - name: 'rateType'
+ in: 'query'
+ description: 'Indicate which type of `paymentMethod` for each room will be
+ returned.'
+ schema:
+ type: 'string'
+ enum:
+ - 'payonline'
+ - 'payhotel'
+ - 'all'
+ - name: 'imageSizes'
+ in: 'query'
+ description: 'Indicates what size images will be displayed for `hotelPhotos` and
+ `roomPhotos` are returned when
+
+ `contentDetails=high`.
+
+
+ The available image sizes are:
+
+ - t : Thumbnail
+
+ - s : Small
+
+ - b : Big
+
+ - y : 500x500v
+
+ - z : 1000x1000v
+
+
+ Resolution from smallest to largest is t < s < b < y < z.
+
+
+ If no `imageSizes` is specified, the t size images will be returned.
+
+
+ If an image is missing in one size, we will try to fall back to the
+ same image with lower resolution.
+
+
+ (If image "_z" is not available, we will try to return image "_y",
+ and if it is also unavailable, we will return image "_b", and so
+ on.)
+
+
+ Only one image size is allowed.
+
+ '
+ schema:
+ type: 'string'
+ enum:
+ - 't'
+ - 's'
+ - 'b'
+ - 'y'
+ - 'z'
+ - name: 'thumbnailImageSize'
+ in: 'query'
+ description: 'Indicate what size of image will be used for the single
+ `thumbnail` image that is returned when
+
+ `contentDetails` is set to `low`, `medium` or `high`.
+
+
+ The available thumbnail image sizes are:
+
+ - t : Thumbnail
+
+ - s : Small
+
+ - b : Big
+
+ - y : 500x500v
+
+ - z : 1000x1000v
+
+
+ Resolution from smallest to largest is t < s < b < y < z.
+
+
+ If no `thumbnailImageSize` is specified, the t size images will be
+ returned.
+
+
+ if no thumbnail image found, it would not return thumbnail image.
+
+
+ Only one thumbnail image size is allowed.
+
+ '
+ schema:
+ type: 'string'
+ enum:
+ - 't'
+ - 's'
+ - 'b'
+ - 'y'
+ - 'z'
+ - name: 'includedPropertyTypeIds'
+ in: 'query'
+ description: "Only return hotels where the `PropertyType` ID is one of the IDs
+ in the `includedPropertyTypeIds` field.
+
+
+ If the API query includes the parameter `contentDetail=lowest` the
+ `PropertyType` parameter will not
+
+ be returned in the response. Even in this case, the filtering is
+ still being applied, even though there is
+
+ no `PropertyType` parameter in the response with which to validate.
+
+
+ `includedPropertyTypeIds` and `excludedPropertyTypeIds` fields are
+ mutually exclusive - which means that
+
+ each query may contain **one** of the parameters, or **neither** of
+ the parameters, but the query may not\
+
+ contain **both** of the parameters.
+
+
+ A complete list of supported Expedia Property Types can be found in
+ [Lodging Property
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging\
+ /references/property-types).\n"
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'excludedPropertyTypeIds'
+ in: 'query'
+ description: "Return all hotels **except** those whose `PropertyType` ID is in
+ the `excludedPropertyTypeIds` field.
+
+
+ If the API query includes the parameter `contentDetail=lowest` the
+ `PropertyType` parameter will not
+
+ be returned in the response. Even in this case, the filtering is
+ still being applied, even though there is
+
+ no `PropertyType` parameter in the response with which to validate.
+
+
+ `includedPropertyTypeIds` and `excludedPropertyTypeIds` fields are
+ mutually exclusive - which means that
+
+ each query may contain **one** of the parameters, or **neither** of
+ the parameters, but the query may not\
+
+ contain **both** of the parameters.
+
+
+ A complete list of supported Expedia Property Types can be found in
+ [Lodging Property
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging\
+ /references/property-types).\n"
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'includedInventorySourceIds'
+ in: 'query'
+ description: 'Querying with no `includedInventorySourceIds` parameter will
+ return listings from all available inventory
+
+ sources.
+
+
+ Query with the `includedInventorySourceIds` parameter included will
+ only return listings from the requested
+
+ inventory sources. All others will be left out.
+
+
+ `includedInventorySourceId=24` will return only Expedia lodging
+ inventory.
+
+
+ `includedInventorySourceId=83` will return only Vrbo lodging
+ inventory.
+
+
+ `includedInventorySourceId=24,83` will return both Expedia and Vrbo
+ lodging inventory.
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'freeCancellation'
+ in: 'query'
+ description: 'Specifies whether to return only free cancelable room rates in the
+ search results.
+
+
+ If the value of this parameter is true, the search results will only
+ return hotels that have free cancelable room rates during the
+ requested dates.
+
+
+ If there are no hotels with free cancelable room rates in your
+ search then an empty record set will be returned.
+
+
+ Default value is false, if query without this parameter or the value
+ of this parameter is false, all available room rates will be
+ returned.
+
+
+ This parameter is ignored for dateless searches.
+
+ '
+ schema:
+ type: 'boolean'
+ - name: 'groupedAmenities'
+ in: 'query'
+ description: 'Specifies whether to return the grouped amenities. If
+ `groupedAmenities` is true, `DescriptiveAmenities`
+
+ node will be returned in response, otherwise `Amenities` node will
+ be returned.
+
+ '
+ schema:
+ type: 'boolean'
+ - name: 'blockFullDepositRateplan'
+ in: 'query'
+ description: 'Specifies whether to return `rateplan` with
+ `FullDepositUponBooking` as true.
+
+
+ If `blockFullDepositRateplans` is true, the search results will not
+ return `rateplan` with `FullDepositUponBooking` as true.
+
+
+ The default value is false, if query without this parameter or the
+ value of this parameter is false, all available rateplan will be
+ returned.
+
+
+ This parameter is ignored for dateless search.
+
+ '
+ schema:
+ type: 'boolean'
+ default: false
+ - name: 'ratePlanType'
+ in: 'query'
+ description: '**Note**: This parameter is visible to partners only by
+ configuration. Please contact your Expedia Account
+
+ Manager if you need this parameter.
+
+
+ To specify the desired rate plan types. The options are:
+
+ - standalone : Ask for standalone rates
+
+ - package : Ask for package rates, but standalone rate also may be
+ returned if available.
+
+
+ Otherwise only standalone rate plans will be returned.
+
+
+ `WebSearchResult` and `WebDetails` links won''t be returned for
+ package rate.
+
+ '
+ schema:
+ type: 'string'
+ enum:
+ - 'standalone'
+ - 'package'
+ - name: 'sortType'
+ in: 'query'
+ description: 'Specifies the field that the search results will be ordered by.
+
+
+ To be used in conjunction with sortOrder parameter below.
+
+
+ **CMA Compliance Note (UK)**: partners doing business in the UK
+ should be sorting their search results using
+
+ the `totalpricewithfees` parameter in their query string so that the
+ sorting complies with CMA regulations.
+
+ '
+ schema:
+ type: 'string'
+ enum:
+ - 'price'
+ - 'starrating'
+ - 'avgrate'
+ - 'deals'
+ - 'guestrating'
+ - 'hotelname'
+ - 'distance'
+ - 'totalpricewithfees'
+ - name: 'sortOrder'
+ in: 'query'
+ description: 'Specifies the sort order of search results.
+
+
+ If no sort order is specified, the default is `asc`. But for deals
+ sorting, it only supports `desc`.
+
+
+ To be used in conjunction with the `sortType` parameter above.
+
+ '
+ schema:
+ type: 'string'
+ enum:
+ - 'asc'
+ - 'desc'
+ default: 'asc'
+ - name: 'room1.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in a specific room.
+
+
+ Default value is one room with 2 adults.
+
+
+ Example: `room1.adults` is used to specify the number of adults in
+ the first room.
+
+ '
+ schema:
+ type: 'integer'
+ format: 'int64'
+ example: 2
+ - name: 'room1.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in each of the rooms.
+
+
+ Example: `room2.childAges=1,3` means two children (1-year old and
+ 3-year old) are staying in room #2.
+
+
+ Children must be accompanied by an adult.
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ example:
+ - 8
+ - 10
+ - name: 'room2.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in second room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room2.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in second room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room3.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in third room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room3.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in third room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room4.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in fourth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room4.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in fourth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room5.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in fifth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room5.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in fifth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room6.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in sixth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room6.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in sixth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room7.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in seventh room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room7.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in seventh room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room8.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in eighth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room8.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in eighth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ responses:
+ "200":
+ description: 'Normal Response'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/HotelListingsResponse'
+ "400":
+ description: 'User Fault or DisambiguationResponse Fault'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ examples:
+ DisambiguationResponse:
+ description: 'DisambiguationResponse'
+ value:
+ TransactionId: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ Errors:
+ - Code: 'AMBIGUOUS_LOCATION'
+ DetailCode: 'MULTIPLE_AMBIGUOUS_LOCATION'
+ Description: 'More than one location found'
+ LocationKeyword: 'dublin'
+ LocationOptions:
+ - Type: 'MULTICITY'
+ RegionID: 178256
+ ShortName: 'Dublin (and vicinity)'
+ AirportCode: 'DUB'
+ Address: 'Dublin (and vicinity), Ireland'
+ Country:
+ Name: 'Ireland'
+ IsoCode2: 'IE'
+ IsoCode3: 'IRL'
+ GeoLocation:
+ Latitude: 53.34402
+ Longitude: -6.26146
+ - Type: 'POI'
+ RegionID: 553248621563220200
+ ShortName: 'Market On Madison'
+ AirportCode: 'MCN'
+ Address: 'Market On Madison, Dublin, Georgia, United States of America'
+ Country:
+ Name: 'United States of America'
+ IsoCode2: 'US'
+ IsoCode3: 'USA'
+ GeoLocation:
+ Latitude: 32.539313
+ Longitude: -82.902537
+ UserFault:
+ description: 'UserFault'
+ value:
+ Errors:
+ - Code: 'COMBINED_HOTEL_SELECT_CRITERIA'
+ Description: 'Combined hotel search is not supported. Please specify either one
+ of the following search
+
+ criteria: [geoLocation, regionIds, ecomHotelIds,
+ hcomHotelIds, locationKeyword, hnk, offerId].
+
+ '
+ TransactionId: '242d7a77-4063-439b-a9d0-12da0ff5116e'
+ "401":
+ description: 'Invalid authentication credentials.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Unauthorized'
+ "403":
+ description: 'You cannot consume this service.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'You cannot consume this service'
+ "429":
+ description: 'API rate limit exceeded.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'API rate limit exceeded.'
+ "500":
+ description: 'Service Error'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: 'APPLICATION_ERROR'
+ Description: 'Application error.'
+ TransactionId: '1490a74b-4c90-4e78-983d-4ede360ce52a'
+ "503":
+ description: 'Service unavailable.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'name resolution failed'
+ "504":
+ description: 'API time out.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'The upstream server is timing out'
+ security:
+ - Authorization: []
+ /hotels/rateCalendar:
+ get:
+ tags:
+ - 'get-lodging-rate-calendar'
+ summary: 'Get rate calendar of a property'
+ description: 'The Rate Calendar API will return the lowest rate plan for a range
+ of days for one selected Expedia lodging property.'
+ operationId: 'get-lodging-rate-calendar'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner''s choosing.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ example: 'Partner123'
+ - name: 'ecomHotelId'
+ in: 'query'
+ description: 'The Expedia hotel ID for which the calendar is being requested.
+
+
+ **Note**: Either an Expedia Hotel ID or a Hotels.com Hotel ID must
+ be included in the request.
+
+ You may use one or the other, but not both.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'hcomHotelId'
+ in: 'query'
+ description: 'The Hotel.com hotel ID for which the calendar is being requested.
+
+
+ **Note**: Either an Expedia Hotel ID or a Hotels.com Hotel ID must
+ be included in the request.
+
+ You may use one or the other, but not both.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'startDate'
+ in: 'query'
+ description: 'Start date for check-in search range in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ **Note**: The start date may not be in the past.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2022-09-12T00:00:00.000Z'
+ - name: 'endDate'
+ in: 'query'
+ description: 'End date for check-in search range in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ **Note**: The end date must be after the start date. The maximum
+ supported search range is 180 days.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2022-09-14T00:00:00.000Z'
+ - name: 'lengthOfStay'
+ in: 'query'
+ description: 'The length of stay to retrieve the lowest price for.'
+ schema:
+ type: 'integer'
+ format: 'int32'
+ default: 1
+ - name: 'currency'
+ in: 'query'
+ description: 'The requested currency expressed according to ISO 4217.'
+ schema:
+ type: 'string'
+ responses:
+ "200":
+ description: 'Normal Response'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/RateCalendarResponse'
+ "400":
+ description: 'User Fault'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_HCOMHOTELID'
+ Description: 'The hcomHotelId is invalid. Please specify correct Hcom hotel id.'
+ TransactionId: '97da7aa5-175e-4fdf-8bbd-32e997b6faa8'
+ "401":
+ description: 'Invalid authentication credentials.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Unauthorized'
+ "403":
+ description: 'You cannot consume this service.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'You cannot consume this service'
+ "409":
+ description: 'NO_RESULTS_FOUND'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: 'NO_RESULTS_FOUND'
+ Description: 'Sorry, your query appears to be correctly formatted, but the
+ inventory for which you are seeking
+
+ details is now unavailable.
+
+ '
+ TransactionId: '2423025a-916f-4994-972a-68ee2e6b1e92'
+ "429":
+ description: 'API rate limit exceeded.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'API rate limit exceeded.'
+ "500":
+ description: 'Service Error'
+ content:
+ application/vnd.exp-hotel.v3+json:
+ schema:
+ $ref: '#/components/schemas/Errors'
+ example:
+ Errors:
+ - Code: 'APPLICATION_ERROR'
+ Description: 'Application error.'
+ TransactionId: 'b2f16375-9fe3-43e3-b524-fb5e0498460b'
+ "503":
+ description: 'Service unavailable.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Name resolution failed.'
+ "504":
+ description: 'API time out.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'The upstream server is timing out.'
+ security:
+ - Authorization: []
+ /lodging/quotes:
+ get:
+ tags:
+ - 'get-lodging-quotes'
+ summary: 'Get properties price and availability information'
+ description: 'The Lodging Quotes API will return the price and availability
+ information for given Expedia lodging property ID(s).
+
+ '
+ operationId: 'get-lodging-quotes'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner''s choosing.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ example: 'Partner123'
+ - name: 'propertyIds'
+ in: 'query'
+ description: "Comma-separated list of Expedia Property IDs.
+
+
+ ***NOTE**: This API supports Expedia property IDs only by
+ design – HCOM and Vrbo property IDs are\
+
+ not supported.*
+
+
+ *For optimal performance, limiting your request to a maximum of 200
+ properties is recommended.*\n"
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'checkIn'
+ in: 'query'
+ description: 'Check-in date for property stay in an ISO 8601 Date format.
+
+
+ This parameter should be used in combination with the checkOut
+ parameter.
+
+
+ The maximum advanced search window is 1000 days in the future, and
+ the maximum length of stay is 732.
+
+ '
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2023-10-12'
+ - name: 'checkOut'
+ in: 'query'
+ description: 'Check-out date for property stay in an ISO 8601 Date format
+
+
+ This parameter should be used in combination with the checkIn
+ parameter.
+
+
+ The maximum advanced search window is 1000 days in the future, and
+ the maximum length of stay is 732.
+
+ '
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2023-10-14'
+ - name: 'currency'
+ in: 'query'
+ description: 'The requested currency expressed according to ISO 4217.
+
+
+ PoS default currency will be passed if another currency is not
+ specified in the request.
+
+ '
+ schema:
+ type: 'string'
+ - name: 'links'
+ in: 'query'
+ description: 'Comma-separated list to specify the types of deep links.
+
+ - WD (link to web infosite)
+
+ - WS (link to web search result page)
+
+ - WEB (include all website links)
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ enum:
+ - 'WD'
+ - 'WS'
+ - 'WEB'
+ - name: 'travelWithPets'
+ in: 'query'
+ description: 'Indicates if the search should include pet-friendly properties.
+
+
+ If set to "True" only properties that allow pets are returned. Pet
+ fees, if available, are included in TaxesAndFees.
+
+
+ The parameter is only applicable to the Vrbo brand.
+
+ '
+ schema:
+ type: 'boolean'
+ default: false
+ - name: 'room1.adults'
+ in: 'query'
+ description: "Specifies the number of adults staying in a specific room.
+
+
+ Example: `room1.adults` is used to specify the number of adults in
+ the first room.
+
+
+ ***NOTE***: multiple room request is only supported for conventional
+ lodging hotels. Request for Vrbo\
+
+ properties should only include one room. e.g. 3 adults in room 1 and
+ 3 in room 2, \"room1.adults\" is 6.\n"
+ schema:
+ type: 'integer'
+ format: 'int64'
+ example: 2
+ - name: 'room1.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in each of the rooms.
+
+
+ Example: `room2.childAges=1,3` means two children (1-year old and
+ 3-year old) are staying in room #2.
+
+
+ Children must be accompanied by an adult.
+
+
+ Total number of children is indicated by the number of childAges
+ included.
+
+
+ If there are no children in the party then this value should not be
+ included.
+
+
+ ***NOTE***: multiple room request is only supported for conventional
+ lodging hotels. Request for Vrbo
+
+ properties should include the ages of all the children in the first
+ room. e.g. 1 child age 10 in room #1
+
+ and 1 child age 11 in room #2, "room1.childAges" is 10,11.
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ example:
+ - 8
+ - 10
+ - name: 'room2.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in second room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room2.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in second room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room3.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in third room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room3.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in third room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room4.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in fourth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room4.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in fourth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room5.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in fifth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room5.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in fifth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room6.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in sixth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room6.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in sixth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room7.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in seventh room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room7.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in seventh room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ - name: 'room8.adults'
+ in: 'query'
+ description: 'Specifies the number of adults staying in eighth room.'
+ schema:
+ type: 'integer'
+ format: 'int64'
+ - name: 'room8.childAges'
+ in: 'query'
+ description: 'Comma-separated list that specifies the age(s) for each of the
+ children in eighth room.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ responses:
+ "200":
+ description: 'Normal Response'
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingQuotesResponse'
+ examples:
+ Lodging Quotes Response:
+ value: "{
+
+ \ \"Count\": 1,
+
+ \ \"TotalPropertyCount\": 1,
+
+ \ \"TransactionId\":
+ \"0e1d7193-2289-481c-bdf9-b7ac0b0b3bfe\",
+
+ \ \"StayDates\": {
+
+ \ \"CheckInDate\": \"2024-11-29\",
+
+ \ \"CheckOutDate\": \"2024-12-04\"
+
+ \ },
+
+ \ \"LengthOfStay\": 5,
+
+ \ \"Occupants\": [
+
+ \ {
+
+ \ \"Adults\": 2
+
+ \ }
+
+ \ ],
+
+ \ \"Properties\": [
+
+ \ {
+
+ \ \"Id\": \"87704892\",
+
+ \ \"Status\": \"AVAILABLE\",
+
+ \ \"RoomTypes\": [
+
+ \ {
+
+ \ \"RatePlans\": [
+
+ \ {
+
+ \ \"CancellationPolicy\": {
+
+ \ \"Refundable\": true,
+
+ \ \"FreeCancellation\": true,
+
+ \ \"FreeCancellationEndDateTime\":
+ \"2024-11-15T23:59:00-08:00\",
+
+ \ \"CancellationPenaltyRules\": [
+
+ \ {
+
+ \ \"PenaltyPercentOfStay\": \"50.00\",
+
+ \ \"PenaltyStartDateTime\":
+ \"2024-11-15T23:59:00-08:00\",
+
+ \ \"PenaltyEndDateTime\":
+ \"2024-11-22T23:59:00-08:00\"
+
+ \ },
+
+ \ {
+
+ \ \"PenaltyPercentOfStay\": \"100\",
+
+ \ \"PenaltyStartDateTime\":
+ \"2024-11-22T23:59:00-08:00\",
+
+ \ \"PenaltyEndDateTime\":
+ \"2024-11-29T00:00:00-08:00\"
+
+ \ }
+
+ \ ]
+
+ \ }
+
+ \ }
+
+ \ ],
+
+ \ \"Price\": {
+
+ \ \"BaseRate\": {
+
+ \ \"Value\": \"790.00\",
+
+ \ \"Currency\": \"USD\"
+
+ \ },
+
+ \ \"TaxesAndFees\": {
+
+ \ \"Value\": \"348.48\",
+
+ \ \"Currency\": \"USD\"
+
+ \ },
+
+ \ \"TotalPrice\": {
+
+ \ \"Value\": \"1138.48\",
+
+ \ \"Currency\": \"USD\"
+
+ \ },
+
+ \ \"AvgNightlyRate\": {
+
+ \ \"Value\": \"158.00\",
+
+ \ \"Currency\": \"USD\"
+
+ \ },
+
+ \ \"AvgNightlyRateWithFees\": {
+
+ \ \"Value\": \"198.80\",
+
+ \ \"Currency\": \"USD\"
+
+ \ },
+
+ \ \"TotalPriceWithPropertyFees\": {
+
+ \ \"Value\": \"1138.48\",
+
+ \ \"Currency\": \"USD\"
+
+ \ }
+
+ \ },
+
+ \ \"Links\": {
+
+ \ \"WebSearchResult\": {
+
+ \ \"Method\": \"GET\",
+
+ \ \"Href\":
+ \"https://www.vrbo.com/search?selected=87704892&startDate=2\
+ 024-11-29&endDate=2024-12-04&adults=2&tpid=9001&eapid=1&mpa\
+ =790.00&mpb=348.48&mpd=USD&mctc=15\"
+
+ \ },
+
+ \ \"WebDetails\": {
+
+ \ \"Method\": \"GET\",
+
+ \ \"Href\":
+ \"https://www.vrbo.com/3032772?adults=2&startDate=2024-11-2\
+ 9&endDate=2024-12-04&mpa=790.00&mpb=348.48&mpd=USD&mpe=1721\
+ 730597\"
+
+ \ }
+
+ \ }
+
+ \ }
+
+ \ ]
+
+ \ }
+
+ \ ]
+
+ }"
+ "400":
+ description: 'User Fault'
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: 'INVALID_PROPERTYID'
+ Description: 'The PropertyIds is invalid. Which should be comma separated list
+ of property IDs.'
+ TransactionId: '97da7aa5-175e-4fdf-8bbd-32e997b6faa8'
+ "401":
+ description: 'Invalid authentication credentials.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Unauthorized'
+ "403":
+ description: 'You cannot consume this service.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'You cannot consume this service'
+ "429":
+ description: 'API rate limit exceeded.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'API rate limit exceeded.'
+ "500":
+ description: 'Service Error'
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: 'APPLICATION_ERROR'
+ Description: 'Application error.'
+ TransactionId: 'b2f16375-9fe3-43e3-b524-fb5e0498460b'
+ "503":
+ description: 'Service unavailable.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Name resolution failed.'
+ "504":
+ description: 'API time out.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'The upstream server is timing out.'
+ security:
+ - Authorization: []
+ /lodging/availabilityCalendars:
+ get:
+ tags:
+ - 'get-lodging-availability-calendars'
+ summary: 'Get availability calendars of properties'
+ description: 'Returns the availability of each day for a range of dates for
+ given Expedia lodging properties.'
+ operationId: 'get-lodging-availability-calendars'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'The `Partner-Transaction-ID` is a required API request header
+ element that is not consumed
+
+ by Expedia. It will be required in all XAP v3 API request headers
+ and will be mirrored
+
+ back to the partner in the corresponding API response header.
+
+
+ The `Partner-Transaction-ID` may be any alphanumeric string of the
+ partner''s choosing.
+
+ '
+ required: true
+ schema:
+ type: 'string'
+ example: 'Partner123'
+ - name: 'propertyIds'
+ in: 'query'
+ description: 'Comma-separated list of Expedia Property IDs.
+
+
+ The API request supports a maximum of 50 Property IDs in a single
+ request.
+
+ '
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ responses:
+ "200":
+ description: 'Normal Response'
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/AvailabilityCalendarResponse'
+ "400":
+ description: 'User Fault'
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: 'INVALID_PROPERTYIDS'
+ Description: 'The propertyIds is invalid. Which should be comma separated list
+ of Expedia property IDs.'
+ TransactionId: '97da7aa5-175e-4fdf-8bbd-32e997b6faa8'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Unauthorized'
+ "403":
+ description: 'cannot consume this service.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'You cannot consume this service'
+ "429":
+ description: 'API rate limit exceeded.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'API rate limit exceeded.'
+ "500":
+ description: 'Service Error'
+ content:
+ application/vnd.exp-lodging.v3+json:
+ schema:
+ $ref: '#/components/schemas/LodgingErrors'
+ example:
+ Errors:
+ - Code: 'APPLICATION_ERROR'
+ Description: 'Application error.'
+ TransactionId: 'b2f16375-9fe3-43e3-b524-fb5e0498460b'
+ "503":
+ description: 'Service unavailable.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'Name resolution failed.'
+ "504":
+ description: 'API time out.'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIGatewayError'
+ example:
+ message: 'The upstream server is timing out.'
+ security:
+ - Authorization: []
+ /cars/listings:
+ get:
+ tags:
+ - 'get-cars-listings'
+ summary: 'Search Expedia car inventory'
+ description: 'Search Expedia car inventory by date, pickup, and dropoff location
+ to return a listing of available cars for hire.'
+ operationId: 'get-cars-listings'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: '[Not consumed by Expedia] Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'BestTravel-123456-798101112'
+ - name: 'pickup.airport'
+ in: 'query'
+ description: 'Three letter code for the airport at which the customer would like
+ to pick up the car.Supported values: standard 3 letter IATA Airport
+ Code.Please see a full list of Car Vendor Codes and Airport Codes in
+ the Related Links Section below.Cannot coexist with other pickup
+ parameters, only one pickup parameter is allowed per request.'
+ schema:
+ type: 'string'
+ example: 'SEA'
+ - name: 'pickup.city'
+ in: 'query'
+ description: 'The name of the city in which the customer would like to pick up
+ the car.Search results will include up to 40 rental locations that
+ are closest to the center point of the search.Cannot coexist with
+ other pickup parameters, only one pickup parameter is allowed per
+ request.'
+ schema:
+ type: 'string'
+ - name: 'pickup.address'
+ in: 'query'
+ description: 'The address of a car rental location where the customer would like
+ to pick up the car.Cannot coexist with other pickup parameters, only
+ one pickup parameter is allowed per request.'
+ schema:
+ type: 'string'
+ example: 'Seattle'
+ - name: 'pickup.geoLocation'
+ in: 'query'
+ description: 'The latitude and longitude that defines where the customer would
+ like to pick up the car.Latitude and longitude are separated by
+ comma.South latitudes and West longitudes are represented by
+ negative values.Cannot coexist with other pickup parameters, only
+ one pickup parameter is allowed per request.'
+ schema:
+ type: 'string'
+ example: '111.00,-22.00'
+ - name: 'pickup.radius'
+ in: 'query'
+ description: 'Radius used in conjunction with a point to define the search area
+ when searching by lat/ long, city or address.See '' unit'' parameter
+ below to select miles or kilometers.If no value is specified a
+ default value of 25 will be assumed.'
+ schema:
+ type: 'integer'
+ example: 10
+ - name: 'dropOff.airport'
+ in: 'query'
+ description: 'Three letter code for the airport at which the customer would like
+ to drop off the car.Supported values: standard 3 letter IATA Airport
+ Code.Please see a full list of Car Vendor Codes and Airport Codes in
+ the Related Links Section below.Cannot coexist with other drop off
+ parameters, only one drop off parameter is allowed per request.If no
+ drop off location is specified, it is assumed that the customer will
+ be dropping the car off at the same location at which they picked it
+ up.'
+ schema:
+ type: 'string'
+ example: 'SEA'
+ - name: 'dropOff.city'
+ in: 'query'
+ description: 'City name for the location at which the customer would like to
+ drop off the car.Cannot coexist with other drop off parameters, only
+ one drop off parameter is allowed in a request.If no drop off
+ location is specified, it is assumed that the customer will be
+ dropping the car off at the same location at which they picked it
+ up.'
+ schema:
+ type: 'string'
+ - name: 'dropOff.address'
+ in: 'query'
+ description: 'Address for the location at which the customer would like to drop
+ off the car.Cannot coexist with other drop off parameters, only one
+ drop off parameter is allowed in a request.If no drop off location
+ is specified, it is assumed that the customer will be dropping the
+ car off at the same location at which they picked it up.'
+ schema:
+ type: 'string'
+ example: 'Seattle'
+ - name: 'dropOff.geoLocation'
+ in: 'query'
+ description: 'Latitude and longitude for the location at which the customer
+ would like to drop off the car.Latitude and longitude are separated
+ by comma.South latitudes and West longitudes are represented by
+ negative values.Cannot coexist with other drop off parameters, only
+ one drop off parameter is allowed per request.If no drop off
+ location is specified, it is assumed that the customer will be
+ dropping the car off at the same location at which they picked it
+ up.'
+ schema:
+ type: 'string'
+ example: '111.00,-22.00'
+ - name: 'dropOff.radius'
+ in: 'query'
+ description: 'Radius used in conjunction with a point to define the search area
+ when searching by lat/ long, city or address.See '' unit'' parameter
+ below to select miles or kilometers.If no value is specified a
+ default value of 25 will be assumed.Note: The pickup radius value
+ will be used (instead of the the drop-off radius) when the requested
+ pickup and drop-off city/address are exactly the same.'
+ schema:
+ type: 'integer'
+ example: 10
+ - name: 'pickupTime'
+ in: 'query'
+ description: 'Requested car pickup date and time.Date should be ISO8601 Date
+ format.The default TIME is 10:30:00.The supported search window is
+ today to 330 days in the future.(Note that each rental counter has
+ different hours of operation. If you select a time in the middle of
+ the night there may be no inventory available as all locations may
+ be closed.)'
+ required: true
+ schema:
+ type: 'string'
+ format: 'date-time'
+ example: '2021-06-05T10:00'
+ - name: 'dropOffTime'
+ in: 'query'
+ description: 'Requested car drop off date and time. Date should be ISO8601 Date
+ format.The supported search window is today to 330 days in the
+ future.Note: The dropOffTime must be at least 2 hours later than the
+ pickupTime for the request to be valid.'
+ required: true
+ schema:
+ type: 'string'
+ format: 'date-time'
+ example: '2021-06-06T10:00'
+ - name: 'sortType'
+ in: 'query'
+ description: 'Method of sorting the car search results.Supported value: Price.If
+ no value is present a sort by ''price'' will be assumed.'
+ schema:
+ type: 'string'
+ enum:
+ - 'Price'
+ - name: 'sortOrder'
+ in: 'query'
+ description: 'Order of sorting the car search results.Supported values: ASC,
+ DESCIf no value is present a sort order of ''ascending'' will be
+ assumed.'
+ schema:
+ type: 'string'
+ enum:
+ - 'ASC'
+ - 'DESC'
+ - name: 'limit'
+ in: 'query'
+ description: 'The maximum number of search results that will be returned by the
+ query.'
+ schema:
+ type: 'integer'
+ example: 100
+ - name: 'suppliers'
+ in: 'query'
+ description: 'A list of supplier ids or supplier names to be used to filter
+ search results.Multiple supplier names or ids may be separated by
+ comma.Please see a full list of Expedia Vendor Codes & Names in the
+ Related Links Section below.The max count of suppliers requested is
+ limited to 20.Note: while you may filter using either supplier name
+ or supplier ID, it is recommended that you use supplier ID, as this
+ value will remain consistent in the event of a merger or other name
+ change by the supplier.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ example:
+ - 11
+ - 12
+ - name: 'carClasses'
+ in: 'query'
+ description: 'A list of car classes to be used to filter search results.Multiple
+ car classes may be separated by comma.Please see Class List in the
+ Related Links Section below for all options.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ example: 'economy'
+ - name: 'discount1.supplier'
+ in: 'query'
+ description: 'Name or ID of the supplier who issued a coupon or discount
+ code.NOTE: Only ONE discount code per transaction is currently
+ supported by the API. If you enter more than one discount code, only
+ the first one will be honored.Please see a full list of Expedia
+ Vendor Codes & Names in the Related Links Section below.'
+ schema:
+ type: 'string'
+ example: 'Avis'
+ - name: 'discount1.type'
+ in: 'query'
+ description: 'The type of discount to be applied.Supported values: CorpDiscount
+ | Coupon.'
+ schema:
+ type: 'string'
+ enum:
+ - 'CorpDiscount'
+ - 'Coupon'
+ - name: 'discount1.code'
+ in: 'query'
+ description: 'The code of the discount to be applied.'
+ schema:
+ type: 'string'
+ example: 'GB1234'
+ - name: 'transmissions'
+ in: 'query'
+ description: 'A list of car transmission drive codes to be used to filter search
+ results.Multiple car classes may be separated by a comma.Please see
+ a full list of Transmission Drive Codes in the Related Links Section
+ below.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ - name: 'airConditioning'
+ in: 'query'
+ description: 'Specify whether to filter for cars that include or exclude air
+ conditioning.'
+ schema:
+ type: 'boolean'
+ - name: 'carTypes'
+ in: 'query'
+ description: 'A list of car types to be used to filter search results.Multiple
+ car types may be separated by comma.Please see a full list of Car
+ Type Codes in the Related Links Section below.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ uniqueItems: true
+ example: 'C,E'
+ - name: 'unit'
+ in: 'query'
+ description: 'The distance unit for the radius of a location-based search, or
+ the distance between the center point of a search and the vendor
+ location.Supported values: KM | MI.Default value: KM.'
+ schema:
+ type: 'string'
+ enum:
+ - 'KM'
+ - 'MI'
+ - name: 'driverAge'
+ in: 'query'
+ description: 'The age of the driver that will be renting the car.This value is
+ required in the UK and optional elsewhere.'
+ schema:
+ type: 'integer'
+ example: 18
+ - name: 'links'
+ in: 'query'
+ description: 'WS = WebSearch, AD = ApiDetails, WD = WebDetails'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ enum:
+ - 'WS'
+ - 'AD'
+ - 'WD'
+ - name: 'source'
+ in: 'query'
+ description: 'Indicates the source where the request is coming from.The
+ available values for the source as below:browser - The value
+ "browser" represents that the client is traditional website.mobile -
+ The value "mobile" represents that the client is mobile.all - The
+ value "all" indicates that the client includes both browser and
+ mobile.Only one source value may be used at a time.'
+ schema:
+ type: 'string'
+ enum:
+ - 'browser'
+ - 'mobile'
+ - 'all'
+ responses:
+ "200":
+ description: 'car listing response'
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarListingsResponse'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarListingsResponse'
+ "400":
+ description: 'errors response'
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ examples:
+ Errors:
+ description: 'Errors'
+ value:
+ Errors:
+ - Code: 'INVALID_LINKS'
+ Description: 'Invalid links. Allowed value are:[WS, AD, WD].'
+ TransactionId: '583b7277-772a-4802-8ac7-bcdf978abbdb'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/DisambiguationResponse'
+ examples:
+ DisambiguationResponse:
+ description: 'DisambiguationResponse'
+ value:
+ Errors:
+ - Code: 'AMBIGUOUS_LOCATION'
+ DetailCode: 'MULTIPLE_AMBIGUOUS_PICKUP_LOCATION'
+ Description: 'Multiple pickup locations found.'
+ LocationKeyword: 'portland'
+ LocationOptions:
+ - Type: 'MULTICITY'
+ RequestedLocation: 'Portland (and vicinity)'
+ Locations:
+ - Name: 'Portland (and vicinity)'
+ LocationId: 'seat001'
+ RegionId: '178299'
+ ShortName: 'Portland (and vicinity)'
+ AirportCode: 'PDX'
+ Address: 'Portland (and vicinity), Oregon, United States Of America'
+ Country:
+ Name: 'United States of America'
+ IsoCode2: 'US'
+ IsoCode3: 'USA'
+ GeoLocation:
+ Latitude: '45.516740'
+ Longitude: '-122.680950'
+ - Type: 'CITY'
+ RequestedLocation: 'Portland (and vicinity)'
+ Locations:
+ - Name: 'Portland (and vicinity)'
+ LocationId: 'seat001'
+ RegionId: '6174134'
+ ShortName: 'Downtown Portland'
+ AirportCode: 'PWM'
+ Address: 'Downtown Portland, Portland, Maine, United States of America'
+ Country:
+ Name: 'United States of America'
+ IsoCode2: 'US'
+ IsoCode3: 'USA'
+ GeoLocation:
+ Latitude: '43.655764'
+ Longitude: '-70.255458'
+ TransactionId: '81e0a6d6-8ca9-4adf-a1c8-08ba0d11dcef'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: '{message":"Unauthorized"}'
+ Invalid authentication credentials:
+ value: '{"message":"Invalid authentication credentials"}'
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: '{"message":"You cannot consume this service"}'
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: '{"message":"no Route matched with those values"}'
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: '{"message":"API rate limit exceeded"}'
+ "503":
+ description: 'service unavailable'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: '{"message":"name resolution failed"}'
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicAuth: []
+ /cars/details/{offerToken}:
+ get:
+ tags:
+ - 'get-car-details'
+ summary: 'Get Extended information with a single car offer'
+ description: 'Extended information about the rates, charges, fees, and other
+ terms associated with a single car offer.'
+ operationId: 'get-car-details'
+ parameters:
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: '[Not consumed by Expedia] Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'BestTravel-123456-798101112'
+ - name: 'price'
+ in: 'query'
+ description: 'The total price for the product.'
+ required: true
+ schema:
+ type: 'string'
+ - name: 'currency'
+ in: 'query'
+ description: 'Price currency code'
+ required: true
+ schema:
+ type: 'string'
+ example: 'USD'
+ - name: 'source'
+ in: 'query'
+ description: 'source mobile - The value mobile represents that the client is
+ mobile.'
+ schema:
+ type: 'string'
+ example: 'mobile'
+ - name: 'offerToken'
+ in: 'path'
+ description: 'car offer token'
+ required: true
+ schema:
+ type: 'string'
+ example: 'OFHSDJSJDFLJSDLKFJSDLJFLSDJFLSJDFL'
+ responses:
+ "200":
+ description: 'car details successful response'
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarDetailsResponse'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarDetailsResponse'
+ "400":
+ description: 'car details user fault response'
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: '{message":"Unauthorized"}'
+ Invalid authentication credentials:
+ value: '{"message":"Invalid authentication credentials"}'
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: '{"message":"You cannot consume this service"}'
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: '{"message":"no Route matched with those values"}'
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: '{"message":"API rate limit exceeded"}'
+ "500":
+ description: 'car details application error response'
+ content:
+ application/vnd.exp-car.v3+json:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ application/vnd.exp-car.v3+xml:
+ schema:
+ $ref: '#/components/schemas/CarsErrors'
+ "503":
+ description: 'service unavailable'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: '{"message":"name resolution failed"}'
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicAuth: []
+ /feed/v1/download-url:
+ get:
+ tags:
+ - 'get-feed-download-url'
+ operationId: 'get-feed-download-url'
+ description: 'Get the Download URL and other details of the static files.'
+ parameters:
+ - name: 'type'
+ in: 'query'
+ description: 'The type of file, used to get files by type.'
+ deprecated: false
+ required: true
+ schema:
+ type: 'string'
+ enum:
+ - 'DESTINATION'
+ - 'VENDORLOGO'
+ - 'SUMMARY'
+ - 'LISTINGS'
+ - 'IMAGES'
+ - 'AMENITIES'
+ - 'LOCATIONS'
+ - 'DESCRIPTIONS'
+ - 'POLICIES'
+ - 'GUEST_REVIEW'
+ - 'VACATION_RENTAL'
+ - 'ALL_REGIONS'
+ - 'BOUNDING_POLYGON'
+ - 'HOTEL_TO_REGION_HIERARCHY'
+ - 'ROOM_DETAILS'
+ example: 'SUMMARY'
+ - name: 'locale'
+ in: 'query'
+ description: 'Follow ISO-3166 Country Codes and ISO-639 Language Codes, format:
+ "{LanguageCode}-{CountryCode}".Support multiple values, for the feed
+ files that support localization, Use this parameter to help filter
+ out the localization files you want to download. If not using this
+ parameter, then this API will return all locales files for specified
+ type. If the specified type of file is not supported localization,
+ there is no file will be returned.'
+ deprecated: false
+ required: false
+ schema:
+ type: 'string'
+ example: 'en-US'
+ - name: 'pointOfSupply'
+ in: 'query'
+ description: 'The point of supply means a country generally. The downloadable
+ files provided after specifying will only contain properties''
+ information for that country.'
+ deprecated: false
+ required: false
+ schema:
+ type: 'string'
+ enum:
+ - 'US'
+ - 'AT'
+ - 'BR'
+ - 'CA'
+ - 'FR'
+ - 'DE'
+ - 'GR'
+ - 'IT'
+ - 'JA'
+ - 'KR'
+ - 'MX'
+ - 'PT'
+ - 'ES'
+ - 'TR'
+ - 'AE'
+ - 'GB'
+ example: 'AT'
+ - name: 'lodgingType'
+ in: 'query'
+ description: 'The lodging type also means structure type, it only can be
+ `CL`(Conventional Lodging) and `VR`(Vacation Rental). The
+ downloadable files provided after specifying will only contain
+ property information for that lodging type.'
+ deprecated: false
+ required: false
+ schema:
+ type: 'string'
+ enum:
+ - 'CL'
+ - 'VR'
+ example: 'CL'
+ - name: 'brand'
+ in: 'query'
+ description: 'The downloadable files provided after specifying will only contain
+ property information for that brand.'
+ deprecated: false
+ required: false
+ schema:
+ type: 'string'
+ enum:
+ - 'VRBO'
+ responses:
+ "200":
+ content:
+ application/vnd.exp-lodging.v1+json:
+ schema:
+ $ref: '#/components/schemas/PresignedUrlResponse'
+ examples:
+ SDP-Summary:
+ value:
+ transactionId: 'c12dcd5d-4d05-42ed-8119-0e97e11f7deb'
+ bestMatchedFile:
+ fileContentType: 'Summary'
+ locale: 'de-DE'
+ fileName: 'expedia-lodging-summary-en_us-all.jsonl.zip'
+ fileSize:
+ unit: 'MB'
+ value: 198.12
+ fileLastUpdated: 'Tue Mar 28 08:38:14 UTC 2023'
+ downloadUrl: 'https://lpdp-data-test.s3.us-west-2.amazonaws.com/hotels/common/summary/expedia-lodging-summary-en_us-all.jsonl.zip?X-Client-Key=DD0CFD5B-4CE6-474C-934C-C2ABC250D72B&X-Amz-Security-Token=FwoGZXIvYXdzEJD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDDgCq3hfh2uzzkVrdiL0AbJ2Mr51BioDJbfW66%2F7QGFKQ5PPAcq3TprAoBGMBJVeafZ%2BvsrkKOdAUrxDGnheLNwmRBlE%2B2HS7f3pK6rE3XnnY6rEJKLe1EE2DmmNe3qIarJVVogurZumYcZ9SDPBvWwX4IGsNolFS5Qu8vtyur93xqg5%2BHnoPxLEJsP1yztRMGAiWKz9O1V79C6ZiFI5HtVOt4jYXSXdvtPKz9E6DA0ebXTpbAsm4T8PIvl30I5nNBdesXv8ap4Uie2fE6ALtUgWyJrKs%2Fy333aT6iV8Kau%2BNX3V3NW3LHh7rECgTtr5nySSxMJ2UFfQx8w7e9K8aAm098covbOPoQYyK5UIm%2BjPE%2FMbJqmroHqhzbKwbn7JFK5NnkXRmpPuGxn%2Bxmt%2Fe8Bg327adJ0%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230329T063549Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=ASIASWURL3BTL5JH6TPD%2F20230329%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=58714cc22181faea3243d689741ba0e7f1a43ae8cab172984778ca5f8b963f1f'
+ downloadUrlExpires: 'Wed Mar 29 07:35:49 UTC 2023'
+ otherFileOptions:
+ - fileContentType: 'Summary'
+ locale: 'en-US'
+ fileName: 'expedia-lodging-summary_filtered_by_canada_en_us.jsonl.zip'
+ fileSize:
+ unit: 'MB'
+ value: 18.12
+ fileLastUpdated: 'Tue Mar 28 06:37:36 UTC 2023'
+ downloadUrl: 'https://lpdp-data-test.s3.us-west-2.amazonaws.com/hotels/common/summary/filtered/expedia-lodging-summary_filtered_by_canada_en_us.jsonl.zip?X-Client-Key=DD0CFD5B-4CE6-474C-934C-C2ABC250D72B&X-Amz-Security-Token=FwoGZXIvYXdzEJD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDDgCq3hfh2uzzkVrdiL0AbJ2Mr51BioDJbfW66%2F7QGFKQ5PPAcq3TprAoBGMBJVeafZ%2BvsrkKOdAUrxDGnheLNwmRBlE%2B2HS7f3pK6rE3XnnY6rEJKLe1EE2DmmNe3qIarJVVogurZumYcZ9SDPBvWwX4IGsNolFS5Qu8vtyur93xqg5%2BHnoPxLEJsP1yztRMGAiWKz9O1V79C6ZiFI5HtVOt4jYXSXdvtPKz9E6DA0ebXTpbAsm4T8PIvl30I5nNBdesXv8ap4Uie2fE6ALtUgWyJrKs%2Fy333aT6iV8Kau%2BNX3V3NW3LHh7rECgTtr5nySSxMJ2UFfQx8w7e9K8aAm098covbOPoQYyK5UIm%2BjPE%2FMbJqmroHqhzbKwbn7JFK5NnkXRmpPuGxn%2Bxmt%2Fe8Bg327adJ0%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230329T063549Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIASWURL3BTL5JH6TPD%2F20230329%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=ac4389b81d4b9e6563fd234b16dafceaab5fcbe2931454da2fe9956b1e3f5919'
+ filterConditions:
+ pointOfSupply: 'CA'
+ bestMatchedLink:
+ href: 'https://localhost:8443/feed/v1/download-url?type=SUMMARY&pointOfSupply=CA'
+ method: 'GET'
+ - fileContentType: 'Summary'
+ locale: 'en-US'
+ fileName: 'expedia-lodging-summary_filtered_by_conventional_en_us.jsonl.zip'
+ fileSize:
+ unit: 'MB'
+ value: 98.12
+ fileLastUpdated: 'Tue Mar 28 06:38:11 UTC 2023'
+ downloadUrl: 'https://lpdp-data-test.s3.us-west-2.amazonaws.com/hotels/common/summary/filtered/expedia-lodging-summary_filtered_by_conventional_en_us.jsonl.zip?X-Client-Key=DD0CFD5B-4CE6-474C-934C-C2ABC250D72B&X-Amz-Security-Token=FwoGZXIvYXdzEJD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDDgCq3hfh2uzzkVrdiL0AbJ2Mr51BioDJbfW66%2F7QGFKQ5PPAcq3TprAoBGMBJVeafZ%2BvsrkKOdAUrxDGnheLNwmRBlE%2B2HS7f3pK6rE3XnnY6rEJKLe1EE2DmmNe3qIarJVVogurZumYcZ9SDPBvWwX4IGsNolFS5Qu8vtyur93xqg5%2BHnoPxLEJsP1yztRMGAiWKz9O1V79C6ZiFI5HtVOt4jYXSXdvtPKz9E6DA0ebXTpbAsm4T8PIvl30I5nNBdesXv8ap4Uie2fE6ALtUgWyJrKs%2Fy333aT6iV8Kau%2BNX3V3NW3LHh7rECgTtr5nySSxMJ2UFfQx8w7e9K8aAm098covbOPoQYyK5UIm%2BjPE%2FMbJqmroHqhzbKwbn7JFK5NnkXRmpPuGxn%2Bxmt%2Fe8Bg327adJ0%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230329T063549Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIASWURL3BTL5JH6TPD%2F20230329%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=9364ec533e909c2cb3331f16a449feee41a968492e61bcdd5761e56e7bbad73a'
+ downloadUrlExpires: 'Wed Mar 29 07:35:49 UTC 2023'
+ filterConditions:
+ structureType: 'CONVENTIONAL'
+ bestMatchedLink:
+ href: 'https://localhost:8443/feed/v1/download-url?type=SUMMARY&loadgingType=CL'
+ method: 'GET'
+ VendorLogo:
+ value:
+ transactionId: 'c12dcd5d-4d05-42ed-8119-0e97e11f7deb'
+ bestMatchedFile:
+ fileName: 'VendorLogos.json'
+ fileSize:
+ unit: 'MB'
+ value: 1.32
+ fileLastUpdated: 'Tue Mar 28 06:38:11 UTC 2023'
+ downloadUrl: 'https://ews-generated-feeds-prod-p.s3.us-west-2.amazonaws.com/vendor-logos/VendorLogos.json?response-content-disposition=inline&X-Amz-Security-Token=XXX'
+ downloadUrlExpires: 'Wed Mar 29 07:35:49 UTC 2023'
+ description: 'Download URLs successfully generated for the feed files.'
+ "400":
+ content:
+ application/vnd.exp-lodging.v1+json:
+ schema:
+ $ref: '#/components/schemas/PresignedUrlResponse'
+ example:
+ transactionId: '38dc7269-12b1-58c9-a381-4963c274cdfe'
+ error:
+ code: 'INVALID_TYPE_ATTR'
+ description: 'Invalid type provided.'
+ description: 'Invalid request from the client.'
+ "401":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ unauthorized:
+ value:
+ message: 'Unauthorized'
+ Invalid authentication credentials:
+ value:
+ message: 'Invalid authentication credentials'
+ description: 'Unauthorized or Invalid authentication credentials.'
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ cannot consume this service:
+ value:
+ message: 'You cannot consume this service'
+ description: 'Cannot consume this service.'
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ no Route matched:
+ value:
+ message: 'no Route matched with those values'
+ description: 'No Route matched.'
+ "429":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ API rate limit exceeded:
+ value:
+ message: 'API rate limit exceeded'
+ description: 'API rate limit exceeded.'
+ "500":
+ content:
+ application/vnd.exp-lodging.v1+json:
+ schema:
+ $ref: '#/components/schemas/PresignedUrlResponse'
+ example:
+ transactionId: '38dc7269-12b1-58c9-a381-4963c274cdfe'
+ error:
+ code: 'SERVER_ERROR'
+ description: 'An error has occurred while processing the request.'
+ description: 'Server side error like backend service has some issues or some
+ issues in EWS Feed service. The Error code is SERVER_ERROR.'
+ "503":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SdpAPIMError'
+ examples:
+ service unavailable:
+ value:
+ message: 'name resolution failed'
+ description: 'Service unavailable.'
+ /activities/listings:
+ get:
+ tags:
+ - 'get-activity-listings'
+ description: 'The Activities Search API allows partners to search for Expedia
+ Activity inventory.'
+ operationId: 'get-activity-listings'
+ parameters:
+ - name: 'location'
+ in: 'query'
+ description: 'Can be a city name, street address, three-letter IATA Airport Code
+ or a landmark name.
+
+ (If the value submitted does not clearly identify a single location
+ the API may returne a disambiguation response that lists possible
+ options)'
+ schema:
+ type: 'string'
+ example: 'shenzhen'
+ - name: 'geoLocation'
+ in: 'query'
+ description: 'The latitude and longitude values identifying the center point of
+ a search radius (circle).
+
+ North latitude will be represented by a positive value. South
+ latitude by a negative value.
+
+ East longitude will be represented by a positive value. West
+ longitude by a negative value.
+
+ The latitude and longitude values are joined together with a comma
+ (,) character.'
+ schema:
+ type: 'string'
+ example: '25.070062,-121.538306'
+ - name: 'startDate'
+ in: 'query'
+ description: 'Start date for the activity window in YYY-MM-DD format.
+
+ If an endDate value is supplied there must also be a startDate.
+
+ default: currentDate'
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2021-10-01T00:00:00.000Z'
+ - name: 'endDate'
+ in: 'query'
+ description: 'End date for the activity window in YYY-MM-DD format.
+
+ default: "startDate+14"'
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2021-10-10T00:00:00.000Z'
+ - name: 'locale'
+ in: 'query'
+ description: 'locale is composed of language identifier and region identifier,
+ connected by "_" that specifies the language in which the response
+ will be returned.
+
+ example: "fr_FR" refers to French as spoken in France, while "fr_CA"
+ refers to French as spoken in Canada.
+
+ For a full list of supported locales please refer to the link at the
+ bottom of the page.'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'links'
+ in: 'query'
+ description: 'Comma-separated list to specify the types of HATEAOS links
+ returned in the API Response.
+
+ WD (deep link URL to web infosite)
+
+ AD (details API query)'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ enum:
+ - 'WD'
+ - 'AD'
+ example: 'WD'
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'BestTravel-123456-798101112'
+ responses:
+ "200":
+ description: 'successful'
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivityListingsResponse'
+ example:
+ TransactionId: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ Count: 1
+ Location: 'shenzhen, gd'
+ StartDate: '2021-08-01T00:00:00.000Z'
+ EndDate: '2021-08-08T00:00:00.000Z'
+ Categories:
+ - Count: 1
+ CategoryName: 'Cruises & Water Tours'
+ CategoryDisplayName: 'Cruises & Water Tours'
+ GroupName: 'Tours'
+ GroupDisplayName: 'Tours'
+ Activities:
+ - Id: 166597
+ Title: 'Faster Than Skip-the-Line: Vatican, Sistine Chapel & St. Peter''s Tour'
+ Description: 'Enjoy 5 of Seattle''s most popular attractions with a multi-ticket
+ booklet that’s valid for 9 consecutive days. This pass is
+ perfect if you want to explore the city on your schedule,
+ craft your own itinerary, and visit the city’s can’t-miss
+ museums and most iconi..'
+ Media:
+ - Type: '1'
+ Size: 't'
+ Url: 'http://a.travel-assets.com/ lxweb/ media-vault/ 166597_m.jpeg? v=104741'
+ Categories:
+ - 'Walking & Bike Tours'
+ Duration: 'PT3H0M'
+ CancellationPolicy:
+ FreeCancellation: true
+ Price:
+ Category: 'Adult'
+ TotalRate:
+ Value: 100
+ Currency: 'USD'
+ ReferencePrice:
+ Category: 'Adult'
+ TotalRate:
+ Value: 110
+ Currency: 'USD'
+ Savings:
+ percentage: 42
+ amount:
+ Value: '9'
+ Currency: 'USD'
+ Redemption:
+ Type: 'Voucherless'
+ Locations:
+ - Address:
+ Address1: '99 Union St'
+ City: 'Seattle'
+ PostalCode: '431625'
+ Province: 'WA'
+ Country: 'USA'
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Locations:
+ - Address:
+ Address1: '99 Union St'
+ City: 'Seattle'
+ PostalCode: '431625'
+ Province: 'WA'
+ Country: 'USA'
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Supplier:
+ Name: 'City Wonders'
+ RecommendationScore: 90
+ ReviewCount: 100
+ Links:
+ WebDetails:
+ Href: 'https://www.expedia.com/things-to-do/space-needle-observation-deck-admission.a193678.activity-details?srp=true&location=sea'
+ ApiDetails:
+ Accept: 'application/vnd.exp-activity.v3+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/activities/details/CgUyMDIzMBIyCgkyMDEzMDQ1OTYSCTIwOTc3MjcwOBoCMjQqCjIwMTctMTEtMTkyCjIwMTctMTEtMjUqAwoBMg'
+ "400":
+ description: "Client side error while providing the request i.e bad / invalid
+ input parameters. The server responds back with \"
+
+ \ + \"this Http response code and with the appropriate JSON
+ error response."
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ example:
+ Errors:
+ - Code: 'AMBIGUOUS_LOCATION'
+ Description: 'Multiple search locations found.'
+ LocationKeyword: '99UnionSt'
+ LocationOptions:
+ - ShortName: 'Union Grove, Wisconsin, United States of America'
+ Address: 'Milwaukee (and vicinity), Wisconsin, United States of America'
+ RequestedLocation: 'United States'
+ Locations:
+ - Name: 'Portland (and vicinity)'
+ LocationId: 'seat001'
+ TransactionId: 'cecf62c8-c103-4181-b09d-53c7190d1c48'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: "Server side error i.e connection timeout while talking to
+ downstream services, downstream returned error. The server responds
+ back with this Http \"
+
+ \ + \"response code and with the appropriate JSON error
+ response."
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicSchema: []
+ /activities/details/{offerToken}:
+ get:
+ tags:
+ - 'get-activity-details'
+ description: 'The Activity Details API provides detailed information about one
+ selected activity.'
+ operationId: 'get-activity-details'
+ parameters:
+ - name: 'offerToken'
+ in: 'path'
+ description: 'the offerToken of a activity'
+ required: true
+ schema:
+ type: 'string'
+ example: 'CgY0NzY2NzgSCjIwMjEtMDUtMDIaCjIwMjEtMDUtMDc'
+ - name: 'locale'
+ in: 'query'
+ description: 'locale is composed of language identifier and region identifier,
+ connected by "_" that specifies the language
+
+ in which the response will be returned.
+
+ example: "fr_FR" refers to French as spoken in France, while "fr_CA"
+ refers to French as spoken in Canada.
+
+ For a full list of supported locales please refer to the link at the
+ bottom of the page.'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'Partner-Transaction-Id'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'BestTravel-123456-798101112'
+ responses:
+ "200":
+ description: 'successful'
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivityDetailsResponse'
+ example:
+ TransactionId: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ Count: 1
+ Location: 'shenzhen, gd'
+ StartDate: '2021-08-01T00:00:00.000Z'
+ EndDate: '2021-08-08T00:00:00.000Z'
+ Categories:
+ - Count: 1
+ CategoryName: 'Cruises & Water Tours'
+ CategoryDisplayName: 'Cruises & Water Tours'
+ GroupName: 'Tours'
+ GroupDisplayName: 'Tours'
+ Activities:
+ - Id: 166597
+ Title: 'Faster Than Skip-the-Line: Vatican, Sistine Chapel & St. Peter''s Tour'
+ Description: 'Enjoy 5 of Seattle''s most popular attractions with a multi-ticket
+ booklet that’s valid for 9 consecutive days. This pass is
+ perfect if you want to explore the city on your schedule,
+ craft your own itinerary, and visit the city’s can’t-miss
+ museums and most iconi..'
+ Media:
+ - Type: '1'
+ Size: 't'
+ Url: 'http://a.travel-assets.com/ lxweb/ media-vault/ 166597_m.jpeg? v=104741'
+ Categories:
+ - 'Walking & Bike Tours'
+ Duration: 'PT3H0M'
+ CancellationPolicy:
+ FreeCancellation: true
+ Price:
+ Category: 'Adult'
+ TotalRate:
+ Value: 100
+ Currency: 'USD'
+ ReferencePrice:
+ Category: 'Adult'
+ TotalRate:
+ Value: 110
+ Currency: 'USD'
+ Savings:
+ percentage: 42
+ amount:
+ Value: '9'
+ Currency: 'USD'
+ Redemption:
+ Type: 'Voucherless'
+ Locations:
+ - Address:
+ Address1: '99 Union St'
+ City: 'Seattle'
+ PostalCode: '431625'
+ Province: 'WA'
+ Country: 'USA'
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Locations:
+ - Address:
+ Address1: '99 Union St'
+ City: 'Seattle'
+ PostalCode: '431625'
+ Province: 'WA'
+ Country: 'USA'
+ GeoLocation:
+ Latitude: '47.60772'
+ Longitude: -122.33936
+ Supplier:
+ Name: 'City Wonders'
+ RecommendationScore: 90
+ ReviewCount: 100
+ Links:
+ WebDetails:
+ Href: 'https://www.expedia.com/things-to-do/space-needle-observation-deck-admission.a193678.activity-details?srp=true&location=sea'
+ ApiDetails:
+ Accept: 'application/vnd.exp-activity.v3+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/activities/details/CgUyMDIzMBIyCgkyMDEzMDQ1OTYSCTIwOTc3MjcwOBoCMjQqCjIwMTctMTEtMTkyCjIwMTctMTEtMjUqAwoBMg'
+ "400":
+ description: "Client side error while providing the request i.e bad / invalid
+ input parameters. The server responds back with \"
+
+ \ + \"this Http response code and with the appropriate JSON
+ error response."
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ example:
+ Errors:
+ - Code: 'INVALID_LINKS'
+ Description: 'Invalid links. Allowed value are:[WS, AD, WD].'
+ TransactionId: '583b7277-772a-4802-8ac7-bcdf978abbdb'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: "Server side error i.e connection timeout while talking to
+ downstream services, downstream returned error. The server responds
+ back with this Http \"
+
+ \ + \"response code and with the appropriate JSON error
+ response."
+ content:
+ application/vnd.exp-activity.v3+json:
+ schema:
+ $ref: '#/components/schemas/ActivitiesErrors'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicSchema: []
+ /flights/baggagefees/{offerToken}:
+ get:
+ tags:
+ - 'get-flight-bagaggefee'
+ description: 'request for baggage fee information'
+ operationId: 'get-flight-bagaggefee'
+ parameters:
+ - name: 'offerToken'
+ in: 'path'
+ description: 'The offerToken from the Flight Listings API'
+ required: true
+ schema:
+ type: 'string'
+ example: 'ClsKAkFBGhcyMDIxLTA0LTIxVDE0OjU1OjAwLjAwMCIDU0VBKhcyMDIxLTA0LTIxVDE3OjUxOjAwLjAwMDIDUEhYOgFOQghOVkFIWlNONUoHRUNPTk9NWVIDNzEwClwKAkFBGhcyMDIxLTA0LTIxVDIxOjQxOjAwLjAwMCIDUEhYKhcyMDIxLTA0LTIxVDIyOjUwOjAwLjAwMDIDTEFTOgFOQghOVkFIWlNONUoHRUNPTk9NWVIEMjEwNhIDVVNEGgJLRw'
+ - name: 'locale'
+ in: 'query'
+ description: 'Locale information to provide airline name.
+
+ If this information is not provided, the locale corresponding for
+ that partners default will be selected.'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'currency'
+ in: 'query'
+ description: 'Specifies currency code for baggage fees to be returned in. Format
+ should be ISO 4217 currency code (3 letter).
+
+ If this information is not provided, the currency corresponding for
+ that partners default will be selected.'
+ schema:
+ type: 'string'
+ example: 'USD'
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: "Baggage fee information returned successfully (this can also
+ include Warnings in some cases).Possible warning codes are\
+
+ NO_RESULTS_FOUND
+
+ NO_FEE_INFO\n"
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightBaggageFeesResponse'
+ example:
+ FlightBaggageFees:
+ - FlightSegment:
+ AirlineCode: 'AA'
+ AirlineName: 'American Airlines'
+ DepartureAirport:
+ Code: 'SEA'
+ ArrivalAirport:
+ Code: 'LAS'
+ Links:
+ WebBaggageFees:
+ Method: 'GET'
+ Href: 'https://www.aa.com/i18n/travelInformation/baggage/baggageAllowance.jsp'
+ BaggageFees:
+ - BagType: 'FIRST_BAG'
+ WeightUnit: 'kg'
+ Weight: '23'
+ Application: 'upto'
+ FixedCharge:
+ Value: '30.0'
+ Currency: 'USD'
+ - BagType: 'SECOND_BAG'
+ WeightUnit: 'kg'
+ Weight: '23'
+ Application: 'upto'
+ FixedCharge:
+ Value: '40.0'
+ Currency: 'USD'
+ - BagType: 'CARRY_ON'
+ FixedCharge:
+ Value: '0.0'
+ Currency: 'USD'
+ - BagType: 'PREPAID_CARRY_ON'
+ FixedCharge:
+ Value: '0.0'
+ Currency: 'USD'
+ TransactionId: '6e3c782e-54e4-4f48-a909-d4f2e4fd31c4'
+ "400":
+ description: 'The locale provided in the request is not supported by
+ API(INVALID_LOCALE).
+
+ The accept header provided is not as per the
+ documentation(INVALID_ACCEPT_HEADER).
+
+ '
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_ACCEPT_HEADER'
+ Description: 'Please provide a valid Accept header'
+ TransactionId: 'c38d0183-5c90-4db6-8c5e-31b7294cd06f'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: 'Server side error like backend service has some issues or some
+ issues in EWS Air service. The Error code is SERVER_ERROR
+
+ '
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: 'SERVER_ERROR'
+ Description: 'An error has occurred while processing the request'
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicSchema: []
+ /flights/farerules/{offerToken}:
+ get:
+ tags:
+ - 'get-flight-farerules'
+ description: 'request for farerule information'
+ operationId: 'get-flight-farerules'
+ parameters:
+ - name: 'offerToken'
+ in: 'path'
+ description: 'An offerToken from a Flight API responses.'
+ required: true
+ schema:
+ type: 'string'
+ example: '599be702-d354-4065-bd52-348af7c728d2'
+ - name: 'locale'
+ in: 'query'
+ description: 'locale information
+
+ (Even though locale may be requested, the majority of the
+ information in the response comes directly from the GDS systems and
+ does NOT have any localization to languages other than English)'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'Source'
+ in: 'header'
+ description: 'Accepts any single-word value that describes the source from which
+ the API is being called.
+
+ Example: ''Details'', ''Book'', ''Itin'', etc.'
+ schema:
+ type: 'string'
+ example: 'Details'
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: "FareRules information returned successfully (in some cases this
+ can have warnings).
+
+ \ Warning messages are:
+
+ NO_FARE_RULES_FOUND\n"
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightFareRulesResponse'
+ example:
+ FlightFareRule:
+ - FlightSegment:
+ AirlineCode: 'AA'
+ DepartureAirport:
+ Code: 'LAS'
+ ArrivalAirport:
+ Code: 'LAX'
+ FareRules:
+ - FareBasisCode: 'OUALZNN3'
+ Rules:
+ - Category: 'RULE APPLICATION AND OTHER CONDITIONS'
+ Description: "NOTE - THE FOLLOWING TEXT IS INFORMATIONAL AND NOT VALIDATED FOR
+ AUTOPRICING.
+
+ NORMAL/EXCURSION FARES
+
+ APPLICATION
+
+ \ CLASS OF SERVICE
+
+ \ THESE FARES APPLY FOR
+ FIRST/BUSINESS/ECONOMY/PREMIUM ECONOMY CLASS
+ SERVICE.
+
+ \ CAPACITY LIMITATIONS
+
+ \ SEATS ARE LIMITED.\n"
+ - Category: 'ELIGIBILITY'
+ Description: 'NO ELIGIBILITY REQUIREMENTS APPLY.
+
+ '
+ - Category: 'DAY/TIME'
+ Description: 'NO DAY/TIME TRAVEL RESTRICTIONS APPLY.
+
+ '
+ - Category: 'SEASONALITY'
+ Description: 'NO SEASONAL TRAVEL RESTRICTIONS APPLY.
+
+ '
+ - Category: 'FLIGHT APPLICATION'
+ Description: "THE FARE COMPONENT MUST NOT BE ON ONE OR MORE OF THE FOLLOWING
+
+ \ ANY AA FLIGHT OPERATED BY AS.
+
+ AND
+
+ THE FARE COMPONENT MUST BE ON ONE OR MORE OF THE
+ FOLLOWING
+
+ \ ANY AA FLIGHT.\n"
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "400":
+ description: 'Bad request from client.Possible error codes are:
+
+ INVALID_ACCEPT_HEADER
+
+ INVALID_FARE_RULES_KEY
+
+ '
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_ACCEPT_HEADER'
+ Description: 'Please provide a valid Accept header'
+ TransactionId: 'aedfd328-797a-43c9-9584-e901ea1f589d'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: 'Server side error like backend service has some issues or some
+ issues in EWS Air service.Possible error codes are:
+
+ SERVER_ERROR
+
+ NO_FARE_RULES_FOUND
+
+ '
+ content:
+ application/vnd.exp-flight.v1+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV1Errors'
+ example:
+ Errors:
+ - Code: 'SERVER_ERROR'
+ Description: 'An error has occurred while processing the request'
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicSchema: []
+ /flights/seatmaps/{offerToken}:
+ get:
+ tags:
+ - 'get-flight-seatmap'
+ description: 'request for seatmap information'
+ operationId: 'get-flight-seatmap'
+ parameters:
+ - name: 'offerToken'
+ in: 'path'
+ description: 'An Air offerToken from a Flight Search or Flight Details.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'CgFOEgNTRUEaAkFBIhFBbWVyaWNhbiBBaXJsaW5lcyoOQm9laW5nIDczNy04MDAyAzczODodMjAyMS0wNC0yMVQxNzo1MTowMC4wMDAtMDc6MDBCHTIwMjEtMDQtMjFUMTQ6NTU6MDAuMDAwLTA3OjAwSgM3MTBSA1BIWFoHRUNPTk9NWQ'
+ - name: 'locale'
+ in: 'query'
+ description: 'The language in which the response content should be displayed.'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'loyaltyProgramNumber'
+ in: 'query'
+ description: 'A Traveler''s Loyalty Program number for a specified carrier.'
+ schema:
+ type: 'string'
+ example: 'F263M74'
+ - name: 'travelerFirstName'
+ in: 'query'
+ description: 'Traveler''s first name of whose loyalty information is passed
+ (mandatory if you are entering a loyalty number).'
+ schema:
+ type: 'string'
+ example: 'SAM'
+ - name: 'travelerLastName'
+ in: 'query'
+ description: 'Traveler''s last name of whose loyalty information is passed
+ (mandatory if you are entering a loyalty number).'
+ schema:
+ type: 'string'
+ example: 'JOHN'
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: "Seatmap information returned successfully (in some cases this can
+ have warnings).
+
+ \ Warning messages are:
+
+ NO_RESULTS_FOUND
+
+ MISSING_LOYALTY_INFORMATION\n"
+ content:
+ application/vnd.exp-flight.v2+json:
+ schema:
+ $ref: '#/components/schemas/SeatMapResponse'
+ example:
+ FlightNumber: '710'
+ DepartureDate: '2021-04-21T00:00:00.000Z'
+ MarketingAirLineCode: 'AA'
+ MarketingAirLineName: 'American Airlines'
+ EquipmentCode: '738'
+ EquipmentName: 'Boeing 737-800'
+ DepartureAirport:
+ Code: 'SEA'
+ ArrivalAirport:
+ Code: 'PHX'
+ SeatMap:
+ CabinClass: 'ECONOMY'
+ Rows:
+ - RowNumber: 8
+ Seats:
+ - SeatNumber: '8A'
+ SeatToken: 'AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE'
+ SeatOccupancy: 'AVAILABLE'
+ Column: 'A'
+ SeatCharacteristics:
+ - Code: 'W'
+ Name: 'WINDOW'
+ - Code: 'M'
+ Name: 'MAINCABINEXTRA'
+ PaidSeat: true
+ SeatPrice:
+ Value: 38.55
+ Currency: 'USD'
+ - RowNumber: 33
+ Seats:
+ - SeatNumber: '33A'
+ SeatToken: 'AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE'
+ SeatOccupancy: 'OCCUPIED'
+ Column: 'A'
+ SeatCharacteristics:
+ - Code: 'W'
+ Name: 'WINDOW'
+ PaidSeat: true
+ SeatPrice:
+ Value: 38.55
+ Currency: 'USD'
+ - SeatNumber: '33B'
+ SeatToken: 'AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE'
+ SeatOccupancy: 'OCCUPIED'
+ Column: 'B'
+ PaidSeat: true
+ SeatPrice:
+ Value: 35.2
+ Currency: 'USD'
+ Warnings:
+ - Code: 'MISSING_LOYALTY_INFORMATION'
+ Description: 'travelerFirstName,travelerLastName missing in request'
+ TransactionId: '7b8a36d9-c920-40da-999d-5eddd53318b2'
+ "400":
+ description: "Error shown when accept header or partner transaction ID is
+ missing or invalid.
+
+ \ Possible error codes are:
+
+ INVALID_ACCEPT_HEADER
+
+ INVALID_ARGUMENT\n"
+ content:
+ application/vnd.exp-flight.v2+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV2Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_ACCEPT_HEADER'
+ Description: 'Please provide a valid Accept header'
+ TransactionId: 'aedfd328-797a-43c9-9584-e901ea1f589d'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: "There is either no seat map data available for the request or
+ supply failed to provide seat map information due to internal
+ failure.
+
+ \ Possible error codes are:
+
+ SEATMAP_NOT_AVAILABLE
+
+ SERVER_ERROR\n"
+ content:
+ application/vnd.exp-flight.v2+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV2Errors'
+ example:
+ Errors:
+ - Code: 'SERVER_ERROR'
+ Description: 'An error has occurred while processing the request'
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ security:
+ - basicSchema: []
+ /flights/links:
+ post:
+ tags:
+ - 'post-flight-links'
+ parameters:
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ summary: 'Request for flight links'
+ operationId: 'post-flight-links'
+ description: 'The API inputs define a particular flight itinerary. The API
+ response will include deeplinks to Expedia Flight Infosite and/or an API
+ query for details for the selected flight.'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightLinksRequest'
+ example:
+ Flights:
+ - FlightId: 'abc'
+ SplitTicket: false
+ Segments:
+ - FareType: 'PUBLISHED'
+ Provider: 'Amadeus'
+ LowCost: false
+ Legs:
+ - DepartureAirport:
+ Code: 'COK'
+ ArrivalAirport:
+ Code: 'DOH'
+ DepartureDateTime: '2021-05-06T03:35:00+05:30'
+ ArrivalDateTime: '2021-05-06T05:35:00+03:00'
+ FlightNumber: '517'
+ MarketingAirlineCode: 'QR'
+ BookingCode: 'W'
+ CabinClass: 'ECONOMY'
+ - DepartureAirport:
+ Code: 'DOH'
+ ArrivalAirport:
+ Code: 'ORD'
+ DepartureDateTime: '2021-05-06T08:50:00+03:00'
+ ArrivalDateTime: '2021-05-06T14:55:00-05:00'
+ FlightNumber: '725'
+ MarketingAirlineCode: 'QR'
+ BookingCode: 'W'
+ CabinClass: 'ECONOMY'
+ TotalPrice:
+ Value: '2576.68'
+ Currency: 'USD'
+ - FlightId: 'def'
+ SplitTicket: false
+ Segments:
+ - FareType: 'PUBLISHED'
+ Provider: 'Sabre'
+ LowCost: false
+ Legs:
+ - DepartureAirport:
+ Code: 'COK'
+ ArrivalAirport:
+ Code: 'AUH'
+ DepartureDateTime: '2021-05-06T21:25:00+05:30'
+ ArrivalDateTime: '2021-05-06T23:55:00+04:00'
+ FlightNumber: '6528'
+ MarketingAirlineCode: '9W'
+ BookingCode: 'H'
+ CabinClass: 'ECONOMY'
+ - DepartureAirport:
+ Code: 'AUH'
+ ArrivalAirport:
+ Code: 'ORD'
+ DepartureDateTime: '2021-05-07T03:20:00+04:00'
+ ArrivalDateTime: '2021-05-07T08:55:00-05:00'
+ FlightNumber: '6405'
+ MarketingAirlineCode: '9W'
+ BookingCode: 'H'
+ CabinClass: 'ECONOMY'
+ TotalPrice:
+ Value: '3266.52'
+ Currency: 'USD'
+ Passengers:
+ Adult: '1'
+ Senior: '1'
+ ChildrenAges: '2,14'
+ Links:
+ - 'WD'
+ - 'AD'
+ responses:
+ "200":
+ description: 'Links returned successfully'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightLinksResponse'
+ "400":
+ description: 'Bad Request'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponse'
+ "401":
+ description: 'Unauthorized'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'Invalid authentication credentials'
+ "403":
+ description: 'Forbidden'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'You cannot consume this service'
+ "404":
+ description: 'Not Found'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'The server can''t find the requested resource'
+ "405":
+ description: 'Method Not Allowed'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'The request method is known by the server but is not supported by the
+ target resource'
+ "429":
+ description: 'Too Many Requests'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'The user has sent too many requests in a given amount of time'
+ "500":
+ description: 'Internal Server Error'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/ErrorResponse'
+ "503":
+ description: 'Service Unavailable'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'The server is not ready to handle the request'
+ "504":
+ description: 'Gateway Timeout'
+ content:
+ application/json:
+ schema:
+ type: 'object'
+ required:
+ - 'message'
+ properties:
+ message:
+ type: 'string'
+ example: 'The server, while acting as a gateway or proxy, did not get a response
+ in time from the upstream server that it needed in order
+ to complete the request'
+ /flights/listings:
+ get:
+ tags:
+ - 'get-flight-listings'
+ description: 'search flight products'
+ operationId: 'get-flight-listings'
+ parameters:
+ - name: 'adult'
+ in: 'query'
+ description: 'Number of Adult Travelers.
+
+ Either one adult or one senior per itinerary is mandatory'
+ schema:
+ type: 'integer'
+ example: 1
+ - name: 'senior'
+ in: 'query'
+ description: 'Number of Senior (age > 65) Travelers'
+ schema:
+ type: 'integer'
+ example: 1
+ - name: 'childrenAges'
+ in: 'query'
+ description: 'Comma-separated list of the ages of all child travelers (ages 2 -
+ 17).'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'integer'
+ example: '4,5'
+ - name: 'infantInLap'
+ in: 'query'
+ description: 'Number of Infant travelers without a reserved seat.
+
+ Age should be less than 2'
+ schema:
+ type: 'integer'
+ example: 1
+ - name: 'infantInSeat'
+ in: 'query'
+ description: 'Number of Infant travelers with reserved seat.
+
+ Age should be less than 2'
+ schema:
+ type: 'integer'
+ example: 1
+ - name: 'segment1.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is departing.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'LAS'
+ - name: 'segment1.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is arriving.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'LAX'
+ - name: 'segment1.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ required: true
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2021-07-01'
+ - name: 'segment1.departureStartTime'
+ in: 'query'
+ description: 'Lower limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ example: '07:00:00'
+ - name: 'segment1.departureEndTime'
+ in: 'query'
+ description: 'Upper limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ example: '09:00:00'
+ - name: 'segment2.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is departing.'
+ schema:
+ type: 'string'
+ - name: 'segment2.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is arriving.'
+ schema:
+ type: 'string'
+ - name: 'segment2.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ schema:
+ type: 'string'
+ format: 'date'
+ - name: 'segment2.departureStartTime'
+ in: 'query'
+ description: 'Lower limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment2.departureEndTime'
+ in: 'query'
+ description: 'Upper limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment3.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is departing.'
+ schema:
+ type: 'string'
+ - name: 'segment3.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is arriving.'
+ schema:
+ type: 'string'
+ - name: 'segment3.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ schema:
+ type: 'string'
+ format: 'date'
+ - name: 'segment3.departureStartTime'
+ in: 'query'
+ description: 'Lower limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment3.departureEndTime'
+ in: 'query'
+ description: 'Upper limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment4.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is departing.'
+ schema:
+ type: 'string'
+ - name: 'segment4.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is arriving.'
+ schema:
+ type: 'string'
+ - name: 'segment4.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ schema:
+ type: 'string'
+ format: 'date'
+ - name: 'segment4.departureStartTime'
+ in: 'query'
+ description: 'Lower limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment4.departureEndTime'
+ in: 'query'
+ description: 'Upper limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment5.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is departing.'
+ schema:
+ type: 'string'
+ - name: 'segment5.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is arriving.'
+ schema:
+ type: 'string'
+ - name: 'segment5.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ schema:
+ type: 'string'
+ format: 'date'
+ - name: 'segment5.departureStartTime'
+ in: 'query'
+ description: 'Lower limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment5.departureEndTime'
+ in: 'query'
+ description: 'Upper limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment6.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is departing.'
+ schema:
+ type: 'string'
+ - name: 'segment6.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code/Location name from where the passenger
+ is arriving.'
+ schema:
+ type: 'string'
+ - name: 'segment6.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ schema:
+ type: 'string'
+ format: 'date'
+ - name: 'segment6.departureStartTime'
+ in: 'query'
+ description: 'Lower limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'segment6.departureEndTime'
+ in: 'query'
+ description: 'Upper limit of desired departure time window, expressed in the
+ local time of the departure location, in standard ISO format.'
+ schema:
+ type: 'string'
+ - name: 'locale'
+ in: 'query'
+ description: 'Indicates the language and country with which the user would like
+ to see any translated information.'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'cabinClass'
+ in: 'query'
+ description: 'The desired cabin classes that the user would like to see offers
+ for.
+
+ Options can be: economy | first | business | premiumeconomy'
+ schema:
+ type: 'string'
+ enum:
+ - 'economy'
+ - 'first'
+ - 'business'
+ - 'premiumeconomy'
+ example: 'economy'
+ - name: 'numberOfStops'
+ in: 'query'
+ description: 'Filter for the number of stops the user would like to see offers
+ for.
+
+ A value of 0 returns only non-stop flights in the search response,
+ and a value of 1 returns offers'
+ schema:
+ type: 'integer'
+ example: 0
+ - name: 'sortType'
+ in: 'query'
+ description: 'Sort the search results according to one selected category.
+
+ Only sort by price is supported at this time.
+
+ Note: default = Price'
+ schema:
+ type: 'string'
+ example: 'Price'
+ - name: 'limit'
+ in: 'query'
+ description: 'The maximum number of Flight offers returned in the response.
+
+ Must be an integer value greater than 0.Note: default = 1600'
+ schema:
+ type: 'integer'
+ example: 100
+ - name: 'selectedCarriers'
+ in: 'query'
+ description: 'Adding comma-separated list of IATA or Expedia airline codes will
+ limit the search results to include flight offers only with the
+ selected carriers.'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ example: 'AS'
+ - name: 'accountCodes'
+ in: 'query'
+ description: 'AlphaNumeric characters. Different codes separated by comma'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ example: 'AXP01'
+ - name: 'agent'
+ in: 'query'
+ description: 'Designates whether a telesales agent was involved in the
+ transaction.
+
+ true = telesales agent involved
+
+ false = no telesales agent involved'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'links'
+ in: 'query'
+ description: 'Comma-separated list that indicates which HATEOAS links should be
+ included in the response.
+
+ WD (Website Details Page - included by default)
+
+ AD (Details API link)
+
+ ABF (Baggage Fee API)
+
+ ASM (Seat Map API)
+
+ WPS (Web Package Search)'
+ explode: false
+ schema:
+ type: 'array'
+ items:
+ type: 'string'
+ enum:
+ - 'WD'
+ - 'AD'
+ - 'ABF'
+ - 'ASM'
+ - 'WPS'
+ example: 'WD'
+ - name: 'refundable'
+ in: 'query'
+ description: 'Refundable solutions will be returned if and only if we pass
+ refundable as true in the request.(refundable=true).
+
+ (Not Yet Supported in Production)'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'filterNearByAirport'
+ in: 'query'
+ description: 'Filters nearby airports ensuring only results from the requests
+ airport code are returned.
+
+ This request param is valid only for AirportCode-based searches.
+
+ Note: default = false'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'filterBasicEconomy'
+ in: 'query'
+ description: 'Filters out all the Basic Economy fare solutions in the flight
+ search response.
+
+ Note: default = false'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'anchorBy'
+ in: 'query'
+ description: 'Designates that the user is doing a Multi-step Search.
+
+ Possible values are: segment1 | segment2 | segment3 | segment4 |
+ segment5'
+ schema:
+ type: 'string'
+ enum:
+ - 'segment1'
+ - 'segment2'
+ - 'segment3'
+ - 'segment4'
+ - 'segment5'
+ example: 'segment1'
+ - name: 'selectedOffer'
+ in: 'query'
+ description: 'Captures the previously selected flight segments during a
+ Multi-step Search.
+
+ '
+ schema:
+ type: 'string'
+ example: 'AQojCiEIwYIBEgM1MDQYi5ABIIu4ASihu5wBMPa7nAE4QkAAWAESCggBEAEYASoCQUEYASIECAEQASgCKAMoBDAC%2BAQokCiIIxJgBEgQyOTkyGIu4ASCLkAEovNycATCG3ZwBOEVAAFgBEgoIARABGAEqAkRMGAEiBAgBEAEoAigDKAQwAQ'
+ - name: 'filterNonFlightOffers'
+ in: 'query'
+ description: 'If set to true, this parameter filters out all non-Flight Offers
+ (offers with any of the legs comprising transit via Train, Bus or
+ Boat) from flight search response.
+
+ If the parameter is not present or is set to false, then Flight
+ Offers may contain travel legs via means other than flight (Train,
+ Bus or Boat).
+
+ Default value is false'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'enableSplitTicket'
+ in: 'query'
+ description: 'if set to false, this parameter will filter out all the split
+ ticket solutions from the Flight Offers.
+
+ If set to true (by default it will be true), API response will
+ include split ticket solutions if split ticket is enabled at key
+ configuration level as well.'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: 'Success Response'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightSearchResponse'
+ example:
+ Segments:
+ - SegmentId: 'MTRfUHVibGlzaGVk'
+ FlightDuration: 'PT4H34M'
+ TotalStops: 0
+ DepartureArrivalDayDifference: 1
+ AirportChange: false
+ SeatsLeft: 10
+ FareType: 'PUBLISHED'
+ Legs:
+ - DepartureAirport:
+ Code: 'LAS'
+ Name: 'McCarran Intl.'
+ City: 'Las Vegas'
+ Province: 'NV'
+ Country: 'USA'
+ Latitude: '36.085393'
+ Longitude: '-115.150098'
+ ArrivalAirport:
+ Code: 'FLL'
+ Name: 'Fort Lauderdale - Hollywood Intl.'
+ City: 'Fort Lauderdale'
+ Province: 'FL'
+ Country: 'USA'
+ Latitude: '26.071529'
+ Longitude: '-80.1449'
+ DepartureDateTime: '2021-11-02T05:40:00.000Z'
+ ArrivalDateTime: '2021-11-02T10:14:00.000Z'
+ FlightNumber: '954'
+ MarketingAirlineCode: 'NK'
+ MarketingAirlineName: 'Spirit Airlines'
+ EquipmentCode: '32A'
+ FlightOnTimePercentage: '80'
+ EquipmentName: 'AIRBUS INDUSTRIE A320 SHARKLETS'
+ FlightDuration: 'PT4H34M'
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '2161'
+ Unit: 'MI'
+ BookingCode: 'R'
+ CabinClass: 'ECONOMY'
+ FareBasisCode: 'R7XSNR'
+ MealOptions:
+ - 'FOOD_FOR_PURCHASE'
+ Amenities:
+ Entertaintment:
+ Available: 'YES'
+ Wifi:
+ Available: 'YES'
+ Power:
+ Available: 'YES'
+ Offers:
+ - offerToken: 'v5-sos-42b700553889490c9e966329ac528b67-3-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI+AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI'
+ SplitTicket: false
+ OpaqueFlight: false
+ Free24HourCancellation: false
+ Links:
+ WebDetails:
+ Method: 'GET'
+ Href: 'https://www.expedia.com/go/udp?CCheck=1&NumAdult=1&NumSenior=1&NumChild=2&ChildrenAges=2|3&Class=3&Sort=10&TripType=OneWay&ProductType=air&eapid=0-1&ServiceVersion=V5&MessageGuid=80f50380-34fa-11e9-9415-0a6b914daa30&langid=1033&piid=v5-sos-42b700553889490c9e966329ac528b67-3-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI&Price=545.16&CurrencyCode=USD�cy=USD&DepartureTLA=L1:LAS&ArrivalTLA=L1:FLL&DepartureDate=L1:2021-11-01&ArrivalDate=L1:2021-11-02&RefundableFlightsOnly=N'
+ SegmentIds:
+ - 'MTRfUHVibGlzaGVk'
+ OfferPrice:
+ TotalPrice:
+ Value: '545.16'
+ Currency: 'USD'
+ BasePrice:
+ Value: '453.92'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '91.24'
+ Currency: 'USD'
+ TotalTaxesAndFees:
+ Value: '91.24'
+ Currency: 'USD'
+ AveragePricePerTicket:
+ Value: '136.29'
+ Currency: 'USD'
+ Count: 4
+ PricePerPassengerCategory:
+ - Category: 'ADULT'
+ Count: 1
+ TotalPrice:
+ Value: '136.29'
+ Currency: 'USD'
+ BasePrice:
+ Value: '113.48'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '22.81'
+ Currency: 'USD'
+ - Category: 'CHILD'
+ Count: 2
+ TotalPrice:
+ Value: '136.29'
+ Currency: 'USD'
+ BasePrice:
+ Value: '113.48'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '22.81'
+ Currency: 'USD'
+ - Category: 'SENIOR'
+ Count: 1
+ TotalPrice:
+ Value: '136.29'
+ Currency: 'USD'
+ BasePrice:
+ Value: '113.48'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '22.81'
+ Currency: 'USD'
+ Refundable: false
+ RefundPenalty:
+ - SegmentIds:
+ - 'MTRfUHVibGlzaGVk'
+ PreTripChange:
+ Allow: 'YES'
+ International: false
+ TicketType: 'ETicket'
+ SearchCities:
+ - Code: 'FLL'
+ City: 'Fort Lauderdale'
+ Province: 'FL'
+ Country: 'USA'
+ ValidFormsOfPayment:
+ UG9pbnRzRXhwZWRpYVJld2FyZHMwLjAw:
+ - PaymentMethod: 'CREDITCARD'
+ Name: 'AMERICANEXPRESS'
+ Fee: '0.00'
+ Currency: 'USD'
+ TransactionId: '80f50380-34fa-11e9-9415-0a6b914daa30'
+ "400":
+ description: "Client side error while providing the request i.e bad / invalid
+ input parameters.
+
+ \ Possible Error codes { MISSING_ADULT_OR_SENIOR
+
+ \ INFANT_IN_LAP_ACCOMPANIED_BY_ADULT_OR_SENIOR
+
+ \ INVALID_CHILD_AGE
+
+ \ INVALID_ACCEPT_HEADER
+
+ \ INVALID_PASSENGER_COUNT
+
+ \ ORIGIN_REQUIRED
+
+ \ INVALID_ORIGIN
+
+ \ DESTINATION_REQUIRED
+
+ \ INVALID_DESTINATION
+
+ \ INVALID_DEPARTURE_DATE
+
+ \ INVALID_DEPARTURE_TIME
+
+ \ DEPARTURE_TIME_DEPARTURE_TIMESPAN_NOT_ALLOWED_TOGETHER
+
+ \ DEPARTURE_DATE_OUT_OF_RANGE
+
+ \ DEPARTURE_DATE_OUT_OF_RANGE
+
+ \ INVALID_LOCALE
+
+ \ INVALID_ADULT_COUNT
+
+ \ INVALID_SENIOR_COUNT
+
+ \ INVALID_CHILD_COUNT
+
+ \ INVALID_INFANT_IN_LAP_COUNT
+
+ \ INVALID_INFANT_IN_SEAT_COUNT
+
+ \ INVALID_SELECTED_CARRIERS
+
+ \ INVALID_SELECTED_CARRIERS
+
+ \ INVALID_NUMBER_OF_STOPS
+
+ \ INVALID_SORT_TYPE
+
+ \ INVALID_NUMBER_OF_FLIGHTS
+
+ \ SELECTED_FLIGHT_DETAILS_NOT_AVAILABLE
+
+ \ INVALID_ANCHOR
+
+ \ INVALID_CABIN_CLASS
+
+ \ INVALID_DEPARTURE_TIMESPAN
+
+ \ MISSING_MANDATORY_SEGMENT_DETAILS
+
+ \ ORIGIN_DESTINATION_SAME
+
+ \ INVALID_DEPARTURE_DATE
+
+ \ INVALID_LINKS
+
+ \ INVALID_AGENT
+
+ \ }"
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_ACCEPT_HEADER'
+ Description: 'Please provide a valid Accept header'
+ TransactionId: 'c38d0183-5c90-4db6-8c5e-31b7294cd06f'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "409":
+ description: 'There are no flights for a requested criteria during flight search
+ API'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'NO_RESULTS_FOUND'
+ Description: 'No flights solutions found for the request.'
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: 'Server side error like backend service has some issues or some
+ issues in EWS Air service. The Error code is SERVER_ERROR
+
+ '
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'SERVER_ERROR'
+ Description: 'An error has occurred while processing the request'
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ /flights/details/{offerToken}:
+ get:
+ tags:
+ - 'get-flight-details'
+ description: 'The Flight Details API will return validated pricing on the
+ itinerary passed in on the request.
+
+ It''s a GET request with the transaction secured over HTTPS.
+
+ This message supports response in JSON and XML format.'
+ operationId: 'get-flight-details'
+ parameters:
+ - name: 'offerToken'
+ in: 'path'
+ description: 'a valid offerToken from the Flight Search API'
+ required: true
+ schema:
+ type: 'string'
+ example: 'v5-sos-41e0c0266d6b4329a76e5d04f82c200a-23-39-2~2.S~AQoECL-kBBIICNQEEAEYwB8gASAMIAcgDSgCWAJwAA~AQoqCigIwYIBEgQyNzg1GIu4ASCLkAEo383sATCmzuwBOFFAAFgBagRNQUlOCioKKAjBggESBDI0NzkYi5ABIIu4ASiBgu0BMNWC7QE4UUAAWAFqBE1BSU4SCggCEAEYAioCQUEYASIECAEQASgCKAwoAygEMAI'
+ - name: 'price'
+ in: 'query'
+ description: 'Included to determine whether there is a price change between the
+ original search and the details response.'
+ schema:
+ type: 'string'
+ example: '94.8'
+ - name: 'locale'
+ in: 'query'
+ description: 'Defines request language and country for response.'
+ schema:
+ type: 'string'
+ example: 'en_US'
+ - name: 'agent'
+ in: 'query'
+ description: 'True means that a telesales agent is involved and the response
+ should include a telesales fee.'
+ schema:
+ type: 'boolean'
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: 'Successful response from server. Include warning in some cases
+ like price change'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightDetailsResponse'
+ example:
+ Warnings:
+ - Code: 'PRICE_DECREASE'
+ Description: 'A price change was detected'
+ OriginalPrice:
+ Value: '127.59'
+ Currency: 'USD'
+ NewPrice:
+ Value: '120.60'
+ Currency: 'USD'
+ ChangedAmount:
+ Value: '6.99'
+ Currency: 'USD'
+ Segments:
+ - SegmentId: 'UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU='
+ FlightDuration: 'PT4H49M'
+ TotalStops: 1
+ DepartureArrivalDayDifference: 0
+ AirportChange: false
+ FareType: 'PUBLISHED'
+ Links:
+ ApiBaggageFees:
+ Accept: 'application/vnd.exp-flight.v1+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/flights/baggagefees/Cl8KAkFBEgJBQRoXMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAiA1NFQSoXMjAyMS0wNS0xNVQxOToxMDowMC4wMDAyA1BIWDoBUUIIUVZBSFpTTjVKB0VDT05PTVlSAzcxMApgCgJBQRICQUEaFzIwMjEtMDUtMTVUMTk6NDY6MDAuMDAwIgNQSFgqFzIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwMgNMQVM6AVFCCFFWQUhaU041SgdFQ09OT01ZUgQyMTA2GgJLRw'
+ Price:
+ TotalPrice:
+ Value: '57.20'
+ Currency: 'USD'
+ BasePrice:
+ Value: '31.63'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '25.57'
+ Currency: 'USD'
+ TotalTaxesAndFees:
+ Value: '25.57'
+ Currency: 'USD'
+ AveragePricePerTicket:
+ Value: '57.20'
+ Currency: 'USD'
+ Count: 1
+ PricePerPassengerCategory:
+ - Category: 'ADULT'
+ Count: 1
+ TotalPrice:
+ Value: '57.20'
+ Currency: 'USD'
+ BasePrice:
+ Value: '31.63'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '25.57'
+ Currency: 'USD'
+ Legs:
+ - Links:
+ ApiSeatMap:
+ Accept: 'application/vnd.exp-flight.v2+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/flights/seatmaps/CgFREgNTRUEaAkFBIhFBbWVyaWNhbiBBaXJsaW5lcyoLQWlyYnVzIEEzMjEyAzMyMTodMjAyMS0wNS0xNVQxOToxMDowMC4wMDAtMDc6MDBCHTIwMjEtMDUtMTVUMTY6MTA6MDAuMDAwLTA3OjAwSgM3MTBSA1BIWFoHRUNPTk9NWWICQUE'
+ DepartureAirport:
+ Code: 'SEA'
+ Name: 'Seattle - Tacoma Intl.'
+ City: 'Seattle'
+ Province: 'WA'
+ Country: 'USA'
+ Latitude: '47.44363'
+ Longitude: '-122.30175'
+ ArrivalAirport:
+ Code: 'PHX'
+ Name: 'Sky Harbor Intl.'
+ City: 'Phoenix'
+ Province: 'AZ'
+ Country: 'USA'
+ Latitude: '33.43512'
+ Longitude: '-112.01034'
+ DepartureDateTime: '2021-05-15T23:10:00.000Z'
+ ArrivalDateTime: '2021-05-16T02:10:00.000Z'
+ FlightNumber: '710'
+ MarketingAirlineCode: 'AA'
+ MarketingAirlineName: 'American Airlines'
+ OperatingAirlineCode: 'AA'
+ OperatingAirlineName: 'American Airlines'
+ EquipmentCode: '321'
+ EquipmentName: 'Airbus A321'
+ FlightDuration: 'PT3H'
+ ConnectionTime: 'PT0H36M'
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '1108'
+ Unit: 'MI'
+ BookingCode: 'Q'
+ CabinClass: 'ECONOMY'
+ LoungeKeys:
+ - 'SEACENTURION'
+ FareBasisCode: 'QVAHZSN5'
+ - Links:
+ ApiSeatMap:
+ Accept: 'application/vnd.exp-flight.v2+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/flights/seatmaps/CgFREgNQSFgaAkFBIhFBbWVyaWNhbiBBaXJsaW5lcyoOQm9laW5nIDczNy04MDAyAzczODodMjAyMS0wNS0xNVQyMDo1OTowMC4wMDAtMDc6MDBCHTIwMjEtMDUtMTVUMTk6NDY6MDAuMDAwLTA3OjAwSgQyMTA2UgNMQVNaB0VDT05PTVliAkFB'
+ DepartureAirport:
+ Code: 'PHX'
+ Name: 'Sky Harbor Intl.'
+ City: 'Phoenix'
+ Province: 'AZ'
+ Country: 'USA'
+ Latitude: '33.43512'
+ Longitude: '-112.01034'
+ ArrivalAirport:
+ Code: 'LAS'
+ Name: 'McCarran Intl.'
+ City: 'Las Vegas'
+ Province: 'NV'
+ Country: 'USA'
+ Latitude: '36.085393'
+ Longitude: '-115.150098'
+ DepartureDateTime: '2021-05-16T02:46:00.000Z'
+ ArrivalDateTime: '2021-05-16T03:59:00.000Z'
+ FlightNumber: '2106'
+ MarketingAirlineCode: 'AA'
+ MarketingAirlineName: 'American Airlines'
+ OperatingAirlineCode: 'AA'
+ OperatingAirlineName: 'American Airlines'
+ EquipmentCode: '738'
+ EquipmentName: 'Boeing 737-800'
+ FlightDuration: 'PT1H13M'
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '247'
+ Unit: 'MI'
+ BookingCode: 'Q'
+ CabinClass: 'ECONOMY'
+ EquipmentChange: true
+ LoungeKeys:
+ - 'PHXCENTURION'
+ FareBasisCode: 'QVAHZSN5'
+ - SegmentId: 'UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE='
+ FlightDuration: 'PT2H45M'
+ TotalStops: 0
+ DepartureArrivalDayDifference: 0
+ AirportChange: false
+ FareType: 'PUBLISHED'
+ Links:
+ ApiBaggageFees:
+ Accept: 'application/vnd.exp-flight.v1+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/flights/baggagefees/Cl8KAkRMEgJETBoXMjAyMS0wNS0yMFQxODoyNTowMC4wMDAiA0xBUyoXMjAyMS0wNS0yMFQyMToxMDowMC4wMDAyA1NFQToBVkIIVkFWU0EwTTFKB0VDT05PTVlSAzQ3NRoCS0c'
+ Price:
+ TotalPrice:
+ Value: '63.40'
+ Currency: 'USD'
+ BasePrice:
+ Value: '45.58'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '17.82'
+ Currency: 'USD'
+ TotalTaxesAndFees:
+ Value: '17.82'
+ Currency: 'USD'
+ AveragePricePerTicket:
+ Value: '63.40'
+ Currency: 'USD'
+ Count: 1
+ PricePerPassengerCategory:
+ - Category: 'ADULT'
+ Count: 1
+ TotalPrice:
+ Value: '63.40'
+ Currency: 'USD'
+ BasePrice:
+ Value: '45.58'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '17.82'
+ Currency: 'USD'
+ Legs:
+ - Links:
+ ApiSeatMap:
+ Accept: 'application/vnd.exp-flight.v2+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/flights/seatmaps/CgFWEgNMQVMaAkRMIgVEZWx0YSoLQWlyYnVzIEEzMjAyAzMyMDodMjAyMS0wNS0yMFQyMToxMDowMC4wMDAtMDc6MDBCHTIwMjEtMDUtMjBUMTg6MjU6MDAuMDAwLTA3OjAwSgM0NzVSA1NFQVoHRUNPTk9NWWICREw'
+ DepartureAirport:
+ Code: 'LAS'
+ Name: 'McCarran Intl.'
+ City: 'Las Vegas'
+ Province: 'NV'
+ Country: 'USA'
+ Latitude: '36.085393'
+ Longitude: '-115.150098'
+ ArrivalAirport:
+ Code: 'SEA'
+ Name: 'Seattle - Tacoma Intl.'
+ City: 'Seattle'
+ Province: 'WA'
+ Country: 'USA'
+ Latitude: '47.44363'
+ Longitude: '-122.30175'
+ DepartureDateTime: '2021-05-21T01:25:00.000Z'
+ ArrivalDateTime: '2021-05-21T04:10:00.000Z'
+ FlightNumber: '475'
+ MarketingAirlineCode: 'DL'
+ MarketingAirlineName: 'Delta'
+ OperatingAirlineCode: 'DL'
+ OperatingAirlineName: 'Delta'
+ EquipmentCode: '320'
+ FlightOnTimePercentage: '90'
+ EquipmentName: 'Airbus A320'
+ FlightDuration: 'PT2H45M'
+ SeatMapAvailable: false
+ FlightDistance:
+ Value: '875'
+ Unit: 'MI'
+ BookingCode: 'V'
+ CabinClass: 'ECONOMY'
+ LoungeKeys:
+ - 'LASCENTURION'
+ FareBasisCode: 'VAVSA0M1'
+ Offer:
+ offerToken: '4c3d825f95074cbdbdf1daecc4fa3011-0-1-st-4309de795593486e99dfa6e3bc2e9280-0-1~2.D~AQoECL-kBBIICNQEEAEYwB8gASgCWAJwAHAA~AQpSCiYIwYIBEgM3MTAYkgEg77kBKM7M7AEwgs7sAThRQABYAWoETUFJTgooCMGCARIEMjEwNhjvuQEgi5ABKKbO7AEw787sAThRQAFYAWoETUFJThIKCAEQARgBKgJBQRgBIgQIARABKAIoAygEMAI.AQotCisIxJgBEgM0NzUYi5ABIJIBKPWF7QEwmoftAThWQABYAWoJTUFJTkNBQklOEgoIARABGAEqAkRMGAEiBAgBEAEoAigDKAQwAg'
+ SplitTicket: true
+ OpaqueFlight: false
+ Free24HourCancellation: true
+ MerchantName: 'Delta*American Airlines'
+ Links:
+ ApiFareRules:
+ Accept: 'application/vnd.exp-flight.v1+json'
+ Method: 'GET'
+ Href: 'https://apim.expedia.com/flights/farerules/CgVjb2FjaBoJUHVibGlzaGVkIgd1bmtub3duKgl1bml2ZXJzYWwyAkFBQksIARIZMjAyMS0wNS0xNVQxNjoxMDowMC0wNzowMBoDUEhYIgNTRUEqAkFBMghRVkFIWlNONUIGU0VBTEFTSgVTYWJyZWoFQURVTFRCSwgCEhkyMDIxLTA1LTE1VDE5OjQ2OjAwLTA3OjAwGgNMQVMiA1BIWCoCQUEyCFFWQUhaU041QgZTRUFMQVNKBVNhYnJlagVBRFVMVA+CgVjb2FjaBoJUHVibGlzaGVkIgd1bmtub3duKgl1bml2ZXJzYWwyAkRMQksIARIZMjAyMS0wNS0yMFQxODoyNTowMC0wNzowMBoDU0VBIgNMQVMqAkRMMghWQVZTQTBNMUIGTEFTU0VBSgVTYWJyZWoFQURVTFQ'
+ ApiBooking:
+ Accept: 'application/vnd.exp-flight.v3+json'
+ Method: 'POST'
+ Href: 'https://apim.expedia.com/flights/bookings/4c3d825f95074cbdbdf1daecc4fa3011-0-1-st-4309de795593486e99dfa6e3bc2e9280-0-1~2.D~AQoECL-kBBIICNQEEAEYwB8gASgCWAJwAHAA~AQpSCiYIwYIBEgM3MTAYkgEg77kBKM7M7AEwgs7sAThRQABYAWoETUFJTgooCMGCARIEMjEwNhjvuQEgi5ABKKbO7AEw787sAThRQAFYAWoETUFJThIKCAEQARgBKgJBQRgBIgQIARABKAIoAygEMAI.AQotCisIxJgBEgM0NzUYi5ABIJIBKPWF7QEwmoftAThWQABYAWoJTUFJTkNBQklOEgoIARABGAEqAkRMGAEiBAgBEAEoAigDKAQwAg?price=120.60¤cy=USD'
+ SegmentIds:
+ - 'UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU='
+ - 'UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE='
+ OfferPrice:
+ TotalPrice:
+ Value: '120.60'
+ Currency: 'USD'
+ BasePrice:
+ Value: '77.21'
+ Currency: 'USD'
+ Fees:
+ - Value: '0.00'
+ Currency: 'USD'
+ Name: 'Service'
+ TotalTaxes:
+ Value: '43.39'
+ Currency: 'USD'
+ TotalTaxesAndFees:
+ Value: '43.39'
+ Currency: 'USD'
+ AveragePricePerTicket:
+ Value: '120.60'
+ Currency: 'USD'
+ Count: 1
+ PricePerPassengerCategory:
+ - Category: 'ADULT'
+ Count: 1
+ TotalPrice:
+ Value: '120.60'
+ Currency: 'USD'
+ BasePrice:
+ Value: '77.21'
+ Currency: 'USD'
+ TotalTaxes:
+ Value: '43.39'
+ Currency: 'USD'
+ Refundable: false
+ RefundPenalty:
+ - SegmentIds:
+ - 'UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU='
+ PreTripChange:
+ Allow: 'YES'
+ Penalty:
+ Value: '0.00'
+ Currency: 'USD'
+ PreTripCancel:
+ Allow: 'NO'
+ EnrouteChange:
+ Allow: 'YES'
+ Penalty:
+ Value: '0.00'
+ Currency: 'USD'
+ EnrouteCancel:
+ Allow: 'NO'
+ Transferable: 'NO'
+ NameChangeAllowed: 'NO'
+ - SegmentIds:
+ - 'UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE='
+ PreTripChange:
+ Allow: 'YES'
+ Penalty:
+ Value: '0.00'
+ Currency: 'USD'
+ PreTripCancel:
+ Allow: 'NO'
+ EnrouteChange:
+ Allow: 'NO'
+ EnrouteCancel:
+ Allow: 'NO'
+ Transferable: 'NO'
+ NameChangeAllowed: 'NO'
+ International: false
+ TicketType: 'ETicket'
+ UndisclosedGenderSupported: false
+ UnspecifiedGenderSupported: false
+ FareOptions:
+ - FareName: 'Comfort+'
+ SegmentIds:
+ - 'UFVCTElTSEVEU0VBUEhYMjAyMS0wNS0xNVQxNjoxMDowMC4wMDAtMDc6MDAyMDIxLTA1LTE1VDE5OjEwOjAwLjAwMC0wNzowMDcxMEFBUFQzSFFFQ09OT01ZUVZBSFpTTjVQSFhMQVMyMDIxLTA1LTE1VDE5OjQ2OjAwLjAwMC0wNzowMDIwMjEtMDUtMTVUMjA6NTk6MDAuMDAwLTA3OjAwMjEwNkFBUFQxSDEzTVFFQ09OT01ZUVZBSFpTTjU='
+ - 'UFVCTElTSEVETEFTU0VBMjAyMS0wNS0yMFQxODoyNTowMC4wMDAtMDc6MDAyMDIxLTA1LTIwVDIxOjEwOjAwLjAwMC0wNzowMDQ3NURMUFQySDQ1TVZFQ09OT01ZVkFWU0EwTTE='
+ Included:
+ - 'CARRY_ON_BAG'
+ FeeApplied:
+ - 'Meals'
+ ValidFormsOfPayment:
+ - PaymentMethod: 'DebitCard'
+ Name: 'Visa'
+ Fee: '0.00'
+ Currency: 'USD'
+ - PaymentMethod: 'CreditCard'
+ Name: 'AmericanExpress'
+ Fee: '0.00'
+ Currency: 'USD'
+ - PaymentMethod: 'CreditCard'
+ Name: 'MasterCard'
+ Fee: '0.00'
+ Currency: 'USD'
+ - PaymentMethod: 'DebitCard'
+ Name: 'MasterCard'
+ Fee: '0.00'
+ Currency: 'USD'
+ - PaymentMethod: 'DebitCard'
+ Name: 'AmericanExpress'
+ Fee: '0.00'
+ Currency: 'USD'
+ - PaymentMethod: 'CreditCard'
+ Name: 'Visa'
+ Fee: '0.00'
+ Currency: 'USD'
+ Lounges:
+ PHXCENTURION:
+ - Name: 'The Centurion Lounge'
+ IsConferenceRoomAvailable: false
+ PhoneNumber: 'N/A'
+ Description: 'Terminal 4, across from Gate B22 on the upper level, 9 am - 5 pm'
+ SEACENTURION:
+ - Name: 'The Centurion Lounge'
+ IsConferenceRoomAvailable: false
+ PhoneNumber: 'N/A'
+ Description: 'Concourse B, opposite Gate B3'
+ LASCENTURION:
+ - Name: 'The Centurion Lounge'
+ IsConferenceRoomAvailable: true
+ PhoneNumber: 'N/A'
+ Description: 'Concourse D opposite Gate D1, 5am to 11pm'
+ TransactionId: 'e883fc9a-2cfa-4b13-b7b1-4bcee3a5dea6'
+ "400":
+ description: 'Invalid accept header. Please provide a valid Accept header, The
+ accept header provided is not as per the documentation.'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'INVALID_ACCEPT_HEADER'
+ Description: 'Please provide a valid Accept header'
+ TransactionId: '5737a450-4a04-4b16-b803-54ca5f651093'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "409":
+ description: 'Flight not available. The request flight is not longer available'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'FLIGHT_NOT_AVAILABLE'
+ Description: 'Requested flight is not available.'
+ TransactionId: 'd15e3738-c4ce-436f-a1a5-7033856981c4'
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: 'Server side error, An error has occurred while processing the
+ request. There is a server-side issue that has resulted in a
+ failure. '
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'SERVER_ERROR'
+ Description: 'No flights solutions found for the request.'
+ TransactionId: 'cf4bc542-1f0f-4312-a20e-b99926e25946'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ /flights/flexsearch:
+ get:
+ tags:
+ - 'get-flight-flexsearch'
+ description: 'request for flexsearch information'
+ operationId: 'get-flight-flexsearch'
+ parameters:
+ - name: 'segment1.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name from where the
+ passenger is departing.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'LAS'
+ - name: 'segment1.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name to where the passenger
+ is arriving.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'LAX'
+ - name: 'segment1.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ required: true
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2021-07-01'
+ - name: 'segment2.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name from where the
+ passenger is departing.'
+ schema:
+ type: 'string'
+ - name: 'segment2.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name to where the passenger
+ is arriving.'
+ schema:
+ type: 'string'
+ - name: 'segment2.departureDate'
+ in: 'query'
+ description: 'Date, in ISO format [YYYY-MM-DD], on which customer wants to
+ depart.'
+ schema:
+ type: 'string'
+ format: 'date'
+ - name: 'includeSegmentDetails'
+ in: 'query'
+ description: 'If included, the response will included all segment and leg
+ details.
+
+ By default, the value of this parameter will be false.'
+ schema:
+ type: 'boolean'
+ example: true
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: 'flexsearch information returned successfully'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlexSearchResponse'
+ example:
+ Offers:
+ - DepartureDates:
+ - '2021-03-31T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '100.39'
+ Currency: 'USD'
+ - DepartureDates:
+ - '2021-04-01T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '100.39'
+ Currency: 'USD'
+ - DepartureDates:
+ - '2021-04-02T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '95.39'
+ Currency: 'USD'
+ - DepartureDates:
+ - '2021-04-03T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '95.39'
+ Currency: 'USD'
+ - DepartureDates:
+ - '2021-04-04T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '100.39'
+ Currency: 'USD'
+ - DepartureDates:
+ - '2021-04-05T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '105.39'
+ Currency: 'USD'
+ - DepartureDates:
+ - '2021-04-06T00:00:00.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '95.39'
+ Currency: 'USD'
+ TransactionId: '75989c80-7299-11ea-81fa-aad83eab0074'
+ "400":
+ description: 'Disambiguation Response'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ type: 'object'
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ type: 'object'
+ properties:
+ Error:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ LocationOptions:
+ type: 'array'
+ description: 'Container for list of matching locations corresponding to the
+ value entered in the location keyword search.'
+ items:
+ type: 'object'
+ properties:
+ LocationOption:
+ required:
+ - 'Locations'
+ - 'RequestedLocation'
+ type: 'object'
+ properties:
+ RequestedLocation:
+ type: 'string'
+ description: 'Location used in partner request.'
+ example: 'Paris'
+ Locations:
+ type: 'array'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ items:
+ type: 'object'
+ properties:
+ Location:
+ required:
+ - 'LocationId'
+ - 'Name'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of location code (MULTICITY | METROCODE).'
+ example: 'MULTICITY'
+ Id:
+ type: 'string'
+ description: 'Expedia Region ID of the specified airport.'
+ example: '6139103'
+ Name:
+ type: 'string'
+ description: 'Location Name'
+ example: 'Seattle-Tacoma International Airport'
+ Code:
+ type: 'string'
+ description: 'Location Code'
+ example: 'SEA'
+ Address:
+ type: 'string'
+ description: 'Street address of the location (if available)'
+ example: 'Paris, France (PAR-All Airports)'
+ GeoLocation:
+ $ref: '#/components/schemas/FlightsV3GeoLocation'
+ Country:
+ type: 'object'
+ properties:
+ Country:
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ description: 'Container for disambiguation country information'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the
+ request. '
+ description: 'Container for error list.'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ example:
+ Errors:
+ - Code: 'MULTIPLE_AMBIGUOUS_LOCATION'
+ Description: 'No or multiple available airport(s) was found which match your
+ city name, please check the details.'
+ TransactionId: 'aedfd328-797a-43c9-9584-e901ea1f589d'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: 'No flights solutions found for the request.'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ type: 'object'
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ type: 'object'
+ properties:
+ Error:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ LocationOptions:
+ type: 'array'
+ description: 'Container for list of matching locations corresponding to the
+ value entered in the location keyword search.'
+ items:
+ type: 'object'
+ properties:
+ LocationOption:
+ required:
+ - 'Locations'
+ - 'RequestedLocation'
+ type: 'object'
+ properties:
+ RequestedLocation:
+ type: 'string'
+ description: 'Location used in partner request.'
+ example: 'Paris'
+ Locations:
+ type: 'array'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ items:
+ type: 'object'
+ properties:
+ Location:
+ required:
+ - 'LocationId'
+ - 'Name'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of location code (MULTICITY | METROCODE).'
+ example: 'MULTICITY'
+ Id:
+ type: 'string'
+ description: 'Expedia Region ID of the specified airport.'
+ example: '6139103'
+ Name:
+ type: 'string'
+ description: 'Location Name'
+ example: 'Seattle-Tacoma International Airport'
+ Code:
+ type: 'string'
+ description: 'Location Code'
+ example: 'SEA'
+ Address:
+ type: 'string'
+ description: 'Street address of the location (if available)'
+ example: 'Paris, France (PAR-All Airports)'
+ GeoLocation:
+ $ref: '#/components/schemas/FlightsV3GeoLocation'
+ Country:
+ type: 'object'
+ properties:
+ Country:
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ description: 'Container for disambiguation country information'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the
+ request. '
+ description: 'Container for error list.'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ example:
+ Errors:
+ - Code: 'SERVER_ERROR'
+ Description: 'No flights solutions found for the request.'
+ TransactionId: '68bce810-5af7-40c1-bea7-07a823b6f1f0'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+ /flights/farecalendar:
+ get:
+ tags:
+ - 'get-flights-farecalendar'
+ description: 'API that will return the lowest fares for multiple days so that
+ the same can be displayed as a booking widget calendar.'
+ operationId: 'get-flights-farecalendar'
+ parameters:
+ - name: 'segment1.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name from where the
+ passenger is departing.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'LAS'
+ - name: 'segment1.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name from where the
+ passenger is arriving.'
+ required: true
+ schema:
+ type: 'string'
+ example: 'LAX'
+ - name: 'segment2.origin'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name from where the
+ passenger is departing in the second segment.'
+ schema:
+ type: 'string'
+ - name: 'segment2.destination'
+ in: 'query'
+ description: '3-letter IATA Airport code or location name from where the
+ passenger is arriving in the second segment.'
+ schema:
+ type: 'string'
+ - name: 'departureDate'
+ in: 'query'
+ description: 'Designates the date which decides the fare calendar response.
+
+ For One Way trips, the response shows offers with price from
+ departureDate till departureDate + 60 days
+
+ For RoundTrip,
+
+ If the trip=outbound, then the response shows offers with price from
+ departureDate of outbound segment till departureDate + 60 days.
+
+ If the trip=inbound, then the response shows offers with price from
+ departureDate of inbound segment till departureDate + 14 days.'
+ required: true
+ schema:
+ type: 'string'
+ format: 'date'
+ example: '2021-10-01'
+ - name: 'trip'
+ in: 'query'
+ description: "Required for RoundTrip for identifying whether we are requesting
+ for inbound or outbound.
+
+ \ Possible values :
+
+ \ inbound
+
+ \ outbound\n"
+ schema:
+ type: 'string'
+ enum:
+ - 'inbound'
+ - 'outbound'
+ - name: 'includeSegmentDetails'
+ in: 'query'
+ description: 'If the user wants to know the segment details of the offer then
+ they can send this param as true and will get the segment and leg
+ level details in the response. By default this will be set as
+ false.'
+ schema:
+ type: 'boolean'
+ - name: 'Partner-Transaction-ID'
+ in: 'header'
+ description: 'Partner-generated identifier.'
+ required: true
+ schema:
+ type: 'string'
+ example: '123456-798101112'
+ responses:
+ "200":
+ description: 'Farecalendar response returned successfully.'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FareCalendarResponse'
+ example:
+ Offers:
+ - DepartureDate: '2021-05-24T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '128.39'
+ Currency: 'USD'
+ - DepartureDate: '2021-05-25T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '202.19'
+ Currency: 'USD'
+ - DepartureDate: '2021-05-26T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '137.19'
+ Currency: 'USD'
+ - DepartureDate: '2021-05-27T09:12:28.000Z'
+ OfferPrice:
+ TotalPrice:
+ Value: '123.41'
+ Currency: 'USD'
+ TransactionId: '0f2bc850-62bd-11ea-9e71-0aae9a66c99a'
+ "400":
+ description: 'Bad request from client.'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'ORIGIN_REQUIRED'
+ Description: 'Origin Airport is not set properly'
+ TransactionId: '05d400eb-3601-418c-9830-591014e39182'
+ "401":
+ description: 'Unauthorized or Invalid authentication credentials'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ unauthorized:
+ value: "{
+
+ \ \"message\": \"Unauthorized\"
+
+ }"
+ Invalid authentication credentials:
+ value: "{
+
+ \ \"message\": \"Invalid authentication credentials\"
+
+ }"
+ "403":
+ description: 'cannot consume this service'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ cannot consume this service:
+ value: "{
+
+ \ \"message\": \"You cannot consume this service\"
+
+ }"
+ "404":
+ description: 'No Route matched'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ no Route matched:
+ value: "{
+
+ \ \"message\": \"no Route matched with those values\"
+
+ }"
+ "429":
+ description: 'API rate limit exceeded'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ API rate limit exceeded:
+ value: "{
+
+ \ \"message\": \"API rate limit exceeded\"
+
+ }"
+ "500":
+ description: 'Either supply or EWSAir failed to provide fare calendar response
+ due to internal failure.'
+ content:
+ application/vnd.exp-flight.v3+json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3Errors'
+ example:
+ Errors:
+ - Code: 'AMBIGUOUS_LOCATION'
+ DetailCode: 'NO_AIRPORT_RETURNED'
+ Description: 'No or multiple available airport(s) was found which match your
+ city name, please check the details.'
+ LocationOptions:
+ - RequestedLocation: 'BLGQW'
+ TransactionId: 'd7203acc-b124-438d-9948-9ea95d81bb1d'
+ "503":
+ description: 'name resolution failed'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FlightsV3APIMError'
+ examples:
+ name resolution failed:
+ value: "{
+
+ \ \"message\": \"name resolution failed\"
+
+ }"
+ "504":
+ description: 'upstream server is timing out'
+ content:
+ text/plain:
+ examples:
+ upstream server is timing out:
+ value: 'The upstream server is timing out'
+components:
+ schemas:
+ Address:
+ type: 'object'
+ properties:
+ Address1:
+ type: 'string'
+ description: 'Street Number, Street Name, or PO Box'
+ example: '724 Pine St'
+ Address2:
+ type: 'string'
+ description: 'Apartment, Floor, Suite, Bldg or more specific information about
+ Address1.'
+ example: 'Second Floor'
+ City:
+ type: 'string'
+ description: 'The city'
+ example: 'New York'
+ Province:
+ type: 'string'
+ description: 'The state or province'
+ example: 'NY'
+ Country:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'USA'
+ PostalCode:
+ type: 'string'
+ description: 'Zip/postal code'
+ example: '98004'
+ description: 'The address information of the location.'
+ AgeClassRestriction:
+ type: 'object'
+ properties:
+ AgeClass:
+ type: 'string'
+ description: 'Categories for hotel guests, based on age.'
+ example: 'Senior'
+ enum:
+ - 'All Ages'
+ - 'Senior'
+ - 'Adult'
+ - 'Child'
+ - 'Infant'
+ - 'Other'
+ AgeMinimum:
+ type: 'integer'
+ description: 'The minimum age defined in a particular `AgeClass`.'
+ format: 'int32'
+ example: 2
+ AgeMaximum:
+ type: 'integer'
+ description: 'The maximum age defined in a particular `AgeClass`.
+
+
+ If not specified, the `AgeClass` has no upper bound.
+
+ '
+ format: 'int32'
+ example: 17
+ MaxGuestCount:
+ type: 'integer'
+ description: 'The max guest count allowed in a particular `AgeClass`.'
+ format: 'int32'
+ example: 3
+ description: 'Container for room occupancy rules based on the age of the guests.'
+ BedType:
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'The bed type ID'
+ example: '40'
+ Description:
+ type: 'string'
+ description: 'The bed type description.'
+ example: '1 bed'
+ description: 'Statement of bed types available for this offer. A room may have
+ several bed type options available.
+
+
+ **NOTE**: due to the large number of bed type options available, we no
+ longer publish a list of available
+
+ bed types. More information is available in
+
+ [Lodging Bed
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/bed-types).
+
+ '
+ CancellationPenaltyRule:
+ type: 'object'
+ properties:
+ PenaltyNightCount:
+ type: 'integer'
+ description: 'Specifies the per-stay cancellation fee charged in terms of the
+ cost of the number of nights listed, in
+
+ addition to any other penalties. The rate charged is based on the
+ earliest night(s) of the stay.
+
+ '
+ format: 'int32'
+ example: 1
+ PenaltyPercentOfStay:
+ type: 'string'
+ description: 'Specifies the per-stay cancellation fee charged as a percentage of
+ the total rate, in addition to any other
+
+ penalties listed.
+
+ '
+ example: '100'
+ PenaltyPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'Specifies the cancellation fee in terms of a set fee, in addition
+ to any other penalties listed.'
+ PenaltyStartDateTime:
+ type: 'string'
+ description: 'The beginning of the window of time when the
+ `CancellationPenaltyRule` is in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the hotel.
+
+ '
+ format: 'date-time'
+ example: '2022-07-23T23:00:00.000Z'
+ PenaltyEndDateTime:
+ type: 'string'
+ description: 'The end of the window of time when the `CancellationPenaltyRule`
+ is in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the hotel.
+
+ '
+ format: 'date-time'
+ example: '2022-07-25T23:00:00.000Z'
+ WaiverPolicy:
+ type: 'object'
+ properties:
+ WaiverPolicyDescription:
+ type: 'string'
+ description: 'The localized waiver policy description, which could be put in
+ front of cancellation policy description.
+
+ '
+ example: 'You can cancel for a full refund up to 24 hours after booking (not
+ applicable to bookings made within 72 hours of check-in time). After
+ 24 hours:
+
+ '
+ CancellationPolicy:
+ type: 'object'
+ properties:
+ WaiverPolicy:
+ $ref: '#/components/schemas/WaiverPolicy'
+ CancellableOnline:
+ type: 'boolean'
+ description: 'Boolean value to identify if the reservation can be cancelled
+ online.
+
+ If false, the customer will only be able to cancel a refundable room
+ by calling Expedia Customer Service.'
+ example: true
+ Refundable:
+ type: 'boolean'
+ description: 'Indicate whether the rate is refundable or not.'
+ example: true
+ FreeCancellation:
+ type: 'boolean'
+ description: 'Indicate whether the room can be cancelled free of charge.'
+ example: true
+ FreeCancellationEndDateTime:
+ type: 'string'
+ description: 'The date and time until which the room can be cancelled free of
+ charge.
+
+
+ This is expressed in the local time of the Hotel.
+
+ '
+ format: 'date-time'
+ CancellationPenaltyRules:
+ type: 'array'
+ description: 'Container for cancellation penalty details.'
+ items:
+ $ref: '#/components/schemas/CancellationPenaltyRule'
+ CancelPolicyDescription:
+ type: 'string'
+ description: 'Additional cancellation policy information available as static
+ text.'
+ example: 'Free cancellation available before 2022-07-18T16:00:00-08:00'
+ NonRefundableDateRanges:
+ type: 'array'
+ description: "A list of dates ranges that are non-refundable.
+
+
+ **Note**: The stay dates in those date ranges will always be charged
+ whenever there is any cancellation\
+
+ penalty rule.\n"
+ items:
+ $ref: '#/components/schemas/NonRefundableDateRange'
+ description: 'Container for room cancellation policy.'
+ ChainAndBrandInfo:
+ type: 'object'
+ properties:
+ ChainId:
+ type: 'integer'
+ description: 'The chain id.'
+ format: 'int32'
+ example: -5
+ ChainName:
+ type: 'string'
+ description: 'The name of the chain.'
+ example: 'Hilton Worldwide'
+ BrandId:
+ type: 'integer'
+ description: 'The brand id.'
+ format: 'int32'
+ example: 33
+ BrandName:
+ type: 'string'
+ description: 'The name of the brand.'
+ example: 'Doubletree'
+ description: 'The chain and brand information of hotel.
+
+
+ Only visible by configuration. Please contact your Expedia Account
+ Manager if you need this node.
+
+ '
+ Country:
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'country name'
+ example: 'Ireland'
+ IsoCode2:
+ type: 'string'
+ description: '2-letter code for the country'
+ example: 'IE'
+ IsoCode3:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ description: 'Container for disambiguation country information'
+ DepositDetail:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Should be one of the following values:
+
+ PERCENT
+
+ The deposit amount is calculated as a percentage of the total
+ booking cost.
+
+ NIGHT
+
+ The deposit amount is calculated in terms of nights plus tax.
+
+ AMOUNT
+
+ The deposit amount in USD.
+
+ REMAINDER
+
+ The deposit amount is equal to the booking cost minus any deposits
+ that have been made before this point.'
+ example: 'NIGHT'
+ enum:
+ - 'PERCENT'
+ - 'NIGHT'
+ - 'AMOUNT'
+ - 'REMAINDER'
+ Value:
+ type: 'string'
+ description: 'Value to indicate how many/much of the type listed above is going
+ to be charged as a deposit.'
+ example: '1'
+ When:
+ $ref: '#/components/schemas/When'
+ description: 'Container for deposit policy details'
+ DepositPolicy:
+ type: 'object'
+ properties:
+ Description:
+ type: 'array'
+ items:
+ type: 'string'
+ Details:
+ type: 'array'
+ description: 'Container for deposit policy details'
+ items:
+ $ref: '#/components/schemas/DepositDetail'
+ description: 'Container for deposit policy details'
+ Description:
+ type: 'object'
+ properties:
+ LocationTeaser:
+ type: 'string'
+ description: 'A description of the property''s location.'
+ example: 'Built on the original site of the University of Washington'
+ HotelTeaser:
+ type: 'string'
+ description: 'A description of the features and amenities of the property itself.'
+ example: 'A top-notch fitness club and spa features a pool'
+ RoomTeaser:
+ type: 'string'
+ description: 'The common description for all of the rooms in the property.'
+ example: 'Renovated in May 2016, guest rooms feature upholstered chairs'
+ description: 'Container for the descriptions of the property.'
+ Distance:
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The distance between the center of the search and the hotel.'
+ example: '75'
+ Unit:
+ type: 'string'
+ description: 'The unit of distance.'
+ example: 'km'
+ enum:
+ - 'km'
+ - 'mi'
+ Direction:
+ type: 'string'
+ description: 'The direction to the hotel from the center point of the search.'
+ example: 'N'
+ enum:
+ - 'N'
+ - 'S'
+ - 'W'
+ - 'E'
+ - 'NW'
+ - 'NE'
+ - 'SW'
+ - 'SE'
+ description: 'Container for distance information.
+
+
+ Only returned for city/address search or `geoLocation` search or single
+ `regionId` search.
+
+ '
+ GeoLocation:
+ type: 'object'
+ properties:
+ Latitude:
+ type: 'string'
+ description: 'Latitude of the location.'
+ example: '38.184978'
+ Longitude:
+ type: 'string'
+ description: 'Longitude of the location.'
+ example: '85.7412'
+ Obfuscated:
+ type: 'boolean'
+ description: 'Container for Geo location.'
+ Hotel:
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'The unique, Expedia-specific hotel property identifier used to
+ designate a single hotel.'
+ example: '14747'
+ HcomId:
+ type: 'string'
+ description: 'The unique, Hotels.com-specific hotel property identifier used to
+ designate a single hotel.
+
+
+ This will only be returned if searching via hcomHotelIds in request.
+
+ '
+ example: '10532'
+ Name:
+ type: 'string'
+ description: 'The common name of the hotel'
+ example: 'Four Seasons Hotel Seattle'
+ PropertyType:
+ $ref: '#/components/schemas/HotelPropertyType'
+ PropertyDetails:
+ $ref: '#/components/schemas/PropertyDetails'
+ LocalCurrencyCode:
+ type: 'string'
+ description: 'The Local Currency Code for Hotel (which will be used for any fees
+ that must be paid at the hotel)'
+ example: 'USD'
+ Location:
+ allOf:
+ - $ref: '#/components/schemas/Location'
+ - description: 'Container for information about the location of the hotel.'
+ PhoneInfos:
+ type: 'array'
+ description: 'Container for property phone numbers.
+
+
+ Note: PhoneInfos section will not return for Vrbo Vacation Rental
+ properties.
+
+ '
+ items:
+ $ref: '#/components/schemas/Phone'
+ Distance:
+ $ref: '#/components/schemas/Distance'
+ Description:
+ $ref: '#/components/schemas/Description'
+ Status:
+ type: 'string'
+ description: 'Indicates whether there are available offers at the property
+ during the dates requested, as well as
+
+ information as to why.
+
+
+ Note that pricing will only be present in the API response
+ for a status of `AVAILABLE`.
+
+
+ If there are no rooms available at the property for the dates
+ requested, then `NOT_AVAILABLE` will be
+
+ returned.
+
+
+ If there are available rooms, but none that meet the specific
+ parameters of the search request,
+
+ then one of the other messages will be returned.
+
+ '
+ example: 'AVAILABLE'
+ enum:
+ - 'AVAILABLE'
+ - 'NOT_AVAILABLE'
+ - 'ERROR'
+ - 'NUMBER_OF_ADULTS_NOT_ACCEPTED'
+ - 'NUMBER_OF_CHILDREN_NOT_ACCEPTED'
+ - 'NUMBER_OF_INFANTS_NOT_ACCEPTED'
+ - 'NUMBER_OF_PERSONS_NOT_ACCEPTED'
+ - 'CHECK_IN_AGE_NOT_ACCEPTED'
+ RenovationsAndClosures:
+ type: 'array'
+ description: 'The information about renovations and closures'
+ example:
+ - 'The following facilities are closed seasonally each year...'
+ items:
+ type: 'string'
+ description: 'The information about renovations and closures'
+ example: 'The following facilities are closed seasonally each year...'
+ ChainAndBrandInfo:
+ $ref: '#/components/schemas/ChainAndBrandInfo'
+ ThumbnailUrl:
+ type: 'string'
+ description: 'URL of the thumbnail image of the hotel.
+
+
+ Note that other images sizes are available - You can find a link to
+ the complete list of Supported
+
+ Hotel Image Sizes in [Lodging Image Captions, IDs, and
+ Sizes](https://developers.expediagroup.com/xap/products/xap/lodging/references/image-captions-ids-and-sizes).
+
+ '
+ example: 'https://images.trvl-media.com/hotels/3000000/2170000/2163100/2163007/2163007_15_t.jpg'
+ StarRating:
+ type: 'string'
+ description: 'Star rating value of the hotel property.'
+ example: '5.0'
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ GuestRating:
+ type: 'string'
+ description: 'Average overall guest rating of the hotel.
+
+
+ The value is between 1.0 and 5.0 in 0.1 increments.
+
+
+ Higher is better.
+
+ '
+ example: '4.5'
+ GuestReviewCount:
+ type: 'integer'
+ description: 'The total count of guest reviews used to create the average
+ `GuestRating` above.'
+ format: 'int32'
+ example: 240
+ PetFriendly:
+ type: 'boolean'
+ description: 'Indicates whether the property allows certain pets under certain
+ circumstances.
+
+
+ Prior to booking, guests should review the PetPolicies information
+ in the Lodging Details API to find out
+
+ whether a particular pet will be permitted to stay at the property.
+
+ '
+ example: true
+ LgbtqiaFriendly:
+ type: 'boolean'
+ description: 'This value is returned if the property owner has specifically
+ designated this property as LGBTQIA-friendly.'
+ example: true
+ Links:
+ type: 'object'
+ properties:
+ WebSearchResult:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: 'Link to web search result page.'
+ ApiRateCalendar:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: 'Link for Rate Calendar API.'
+ additionalProperties:
+ $ref: '#/components/schemas/Link'
+ description: "Container for list of **HATEOAS** links to Expedia website to
+ complete booking.
+
+
+ This links section will only return a deeplink to the Website Search
+ Results page by default.
+
+
+ If you have selected AD deeplinks they will only appear
+ within the `RoomTypes` section of the\
+
+ response, as the Lodging Details API returns details at the room
+ offer level, and not at the property level.\n"
+ Policies:
+ $ref: '#/components/schemas/HotelPolicies'
+ CleanlinessAndSafety:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ items:
+ type: 'string'
+ description: 'Container for all cleanliness and safety measures.
+
+
+ The key is the measures category, the values are the information.
+ The category will be:
+
+ - CLEANLINESS
+
+ - SOCIAL_DISTANCING
+
+ - SAFETY
+
+ - DISCLAIMER
+
+ '
+ example:
+ CLEANLINESS:
+ - 'Disinfectant is used to clean the property'
+ - 'High-touch surfaces are cleaned and disinfected'
+ - 'Sheets and towels are washed at 60°C/140°F or hotter'
+ SOCIAL_DISTANCING:
+ - 'Contactless check-in and check-out'
+ - 'Social distancing measures in place'
+ OptionalExtras:
+ type: 'array'
+ description: 'The optional extras info.'
+ items:
+ type: 'string'
+ description: 'The optional extras info.'
+ ImportantNotices:
+ type: 'array'
+ description: 'The important notices for hotel.'
+ example:
+ - 'This property can only accept bookings for essential travel or
+ stays. You may be asked to provide evidence of this on arrival.
+ For more information, check local advisories before you book.'
+ items:
+ type: 'string'
+ description: 'The important notices for hotel.'
+ example: 'This property can only accept bookings for essential travel or stays.
+ You may be asked to provide evidence of this on arrival. For more
+ information, check local advisories before you book.'
+ Media:
+ type: 'array'
+ description: 'Container for hotel images'
+ items:
+ $ref: '#/components/schemas/Media'
+ HotelAmenities:
+ type: 'array'
+ description: 'Container for all hotel amenities.'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: 'Container for all hotel amenities.'
+ - properties:
+ Id:
+ description: 'The identification number for a hotel amenity.'
+ Name:
+ description: 'The description of a hotel amenity.'
+ HotelDescriptiveAmenities:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ items:
+ type: 'string'
+ description: 'Container for all hotel amenities in group.
+
+
+ The key is amenity category, the values are the amenity information.
+ The category for grouped amenities in hotel level for conventional
+ lodging hotel will be:
+
+ - PARKING
+
+ - FOOD_AND_DRINK
+
+ - INTERNET
+
+ - THINGS_TO_DO
+
+ - FAMILY_FRIENDLY
+
+ - CONVENIENCES
+
+ - GUEST_SERVICES
+
+ - BUSINESS_SERVICE
+
+ - OUTDOOR
+
+ - ACCESSIBILITY
+
+ - SPA
+
+ - ACTIVITIES_NEARBY
+
+ - LANGS_SPOKEN
+
+ - MORE
+
+
+ The category for grouped amenities in hotel level for Vacation
+ Rental hotel will be:
+
+ - BEACH
+
+ - SKI
+
+ - POOL/SPA
+
+ - INTERNET
+
+ - PARKING
+
+ - FAMILY_FRIENDLY
+
+ - KITCHEN
+
+ - DINING
+
+ - BEDROOM
+
+ - BATHROOMS
+
+ - LIVING_SPACES
+
+ - ENTERTAINMENT
+
+ - OUTDOORS
+
+ - LAUNDRY
+
+ - WORKSPACES
+
+ - CLIMATE_CONTROL
+
+ - PETS
+
+ - SUITABILITY/ACCESSIBILITY
+
+ - SERVICES_AND_CONVENIENCES
+
+ - LOCATION_HIGHLIGHTS
+
+ - THINGS_TO_DO
+
+ - GENERAL
+
+ - SAFETY
+
+ '
+ example:
+ FAMILY_FRIENDLY:
+ - 'Refrigerator'
+ GUEST_SERVICES:
+ - '24-hour front desk'
+ - 'Housekeeping (on request)'
+ - 'Luggage storage'
+ - 'Multilingual staff'
+ MORE:
+ - 'At least 80% lighting from LEDs'
+ - 'Communal living room'
+ - 'Comprehensive food waste policy'
+ RoomAmenities:
+ type: 'array'
+ description: 'Container for all room amenities.'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: 'Container for all room amenities.'
+ - properties:
+ Id:
+ description: 'The identification number for a room amenity.'
+ Name:
+ description: 'The description of a room amenity.'
+ RoomDescriptiveAmenities:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ items:
+ type: 'string'
+ description: 'Container for all common room amenities in group.
+
+
+ The key is amenity category, the values are the amenity information.
+ The category for grouped amenities in common room level will be:
+
+ - BEDROOM
+
+ - BATHROOM
+
+ - FOOD_AND_DRINK
+
+ - ENTERTAINMENT
+
+ - OUTDOOR_SPACE
+
+ - MORE
+
+ '
+ example:
+ ENTERTAINMENT:
+ - 'Flat-screen TV'
+ - 'iPad'
+ - 'iPod dock'
+ - 'Satellite channels'
+ FOOD_AND_DRINK:
+ - 'Free bottled water'
+ - 'Refrigerator'
+ MORE:
+ - 'Desk'
+ - 'Eco-friendly cleaning products provided'
+ - 'Energy-saving switches'
+ Accessibility:
+ type: 'array'
+ description: 'The accessibility options available for the room.
+
+
+ Possible accessibility include:
+
+ - Accessible path of travel
+
+ - Accessible bathroom
+
+ - Roll-in shower
+
+ - Handicapped parking
+
+ - In-room accessibility
+
+ - Accessibility equipment for the deaf
+
+ - Braille or raised signage
+
+ '
+ example:
+ - 'Wheelchair-accessible on-site restaurant'
+ - 'Wheelchair-accessible lounge'
+ - 'Well-lit path to entrance'
+ - 'Stair-free path to entrance'
+ - 'Wheelchair accessible (may have limitations)'
+ - 'Wheelchair accessible path of travel'
+ - 'Accessible bathroom (in select rooms)'
+ - 'Wheelchair-accessible public washroom'
+ - 'In-room accessibility (in select rooms)'
+ - 'Wheelchair-accessible registration desk'
+ - 'Wheelchair-accessible fitness center'
+ - 'Wheelchair-accessible meeting spaces/business center'
+ items:
+ type: 'string'
+ description: 'The accessibility options available for the room.'
+ example: 'Wheelchair-accessible on-site restaurant'
+ MemberOnlyDealAvailable:
+ type: 'boolean'
+ description: 'Indicates whether the property has member only deal rates
+ available.'
+ example: true
+ RoomTypes:
+ type: 'array'
+ description: 'Container for all of available room types.'
+ items:
+ $ref: '#/components/schemas/RoomType'
+ description: 'Container for information on each offered hotel.'
+ HotelDetailsResponse:
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'There were some errors or events during the transaction, but the
+ API has still returned a response.
+
+
+ Container for all warnings.
+
+ '
+ items:
+ allOf:
+ - $ref: '#/components/schemas/Warning'
+ - properties:
+ Code:
+ description: 'The code of the warning.
+
+
+ Available values are:
+
+ - PRICE_DECREASED: The price decreased after shopping.
+
+ - PRICE_INCREASED: The price increased after shopping.
+
+ - CURRENCY_CHANGE: You will be charged in a different
+ currency.
+
+ '
+ OriginalPrice:
+ description: 'The original price from the Lodging Search API response.'
+ NewPrice:
+ description: 'The new price.'
+ ChangedAmount:
+ description: 'The difference between `OriginalPrice` and `NewPrice`.'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ StayDates:
+ allOf:
+ - $ref: '#/components/schemas/StayDates'
+ - description: 'Dates of the requested property stay.'
+ - properties:
+ CheckInDate:
+ description: 'Check-in date for property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the
+ `checkOut` parameter.
+
+
+ The maximum advanced search window is 330 days in the
+ future.
+
+
+ The maximum length of stay is 28 days.
+
+ '
+ CheckOutDate:
+ description: 'Checkout date for property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].
+
+
+ This parameter should be used in combination with the
+ `checkIn` parameter.
+
+
+ The maximum advanced search window is 330 days in the
+ future.
+
+
+ The maximum length of stay is 28 days.
+
+ '
+ LengthOfStay:
+ type: 'integer'
+ description: 'The number of stay nights.'
+ format: 'int32'
+ example: 3
+ NumberOfRooms:
+ type: 'integer'
+ description: 'Number of rooms requested.'
+ format: 'int32'
+ example: 3
+ Occupants:
+ type: 'array'
+ description: 'Container for the list of rooms requested by the traveler.
+
+
+ Occupancy for each room is specified in this node.
+
+ '
+ items:
+ allOf:
+ - $ref: '#/components/schemas/Occupant'
+ - description: 'Container for the list of rooms requested by the traveler.
+
+
+ Occupancy for each room is specified in this node.
+
+ '
+ - properties:
+ Adults:
+ description: 'Specifies the number of adults staying in each room.'
+ ChildAges:
+ description: 'Specifies the age(s) of each of the children staying in the room,
+ as well as the number of children in the room.'
+ ValidFormsOfPayment:
+ type: 'array'
+ description: 'Container for payment information.'
+ items:
+ $ref: '#/components/schemas/ValidFormsOfPayment'
+ HotelDetails:
+ $ref: '#/components/schemas/Hotel'
+ HotelPolicies:
+ type: 'object'
+ properties:
+ CheckInStartTime:
+ type: 'string'
+ description: 'Beginning of the standard check-in window on the check in date,
+ and in the local time of the hotel.'
+ example: '3 PM'
+ CheckInEndTime:
+ type: 'string'
+ description: 'End of the standard check-in window on the check in date, and in
+ the local time of the hotel.'
+ example: '5 PM'
+ SpecialCheckInInstructions:
+ type: 'array'
+ description: 'Some special instructions needed care by customer when check in.'
+ example:
+ - 'Special Instructions: The check-in location differs from the
+ property location. To check in, go to 301 N Water St.'
+ items:
+ type: 'string'
+ description: 'Any special instructions that the guest would need to know in
+ order to check in.
+
+
+ Particularly important in a vacation rental property, as many of
+ these do not have a hosted front desk as
+
+ a hotel would.
+
+ '
+ example: 'Special Instructions: The check-in location differs from the property
+ location. To check in, go to 301 N Water St.'
+ CheckOutTime:
+ type: 'string'
+ description: 'Customers must check out before this time on the check out date,
+ expressed in the local time of the hotel.'
+ example: 'noon'
+ PetPolicies:
+ type: 'array'
+ description: 'The policy of the property toward having pets stay with guests.'
+ example:
+ - 'Pets allowed, Up to 20 lb'
+ items:
+ type: 'string'
+ description: 'The policy of the property toward having pets stay with guests.'
+ example: 'Pets allowed, Up to 20 lb'
+ ChildrenAndExtraBedsPolicies:
+ type: 'array'
+ description: 'The policy of the hotel for having children stay at the hotel, as
+ well as for including extra beds in the room.'
+ example:
+ - 'Children are welcome, Cribs/infant beds (surcharge)'
+ items:
+ type: 'string'
+ description: 'Container for Hotel policy information.'
+ HotelPropertyType:
+ type: 'object'
+ properties:
+ Id:
+ type: 'integer'
+ description: 'The id of hotel property type.'
+ format: 'int32'
+ example: 13
+ Name:
+ type: 'string'
+ description: 'The name of hotel property type.'
+ example: 'Ranch'
+ description: 'Container for information on hotel property type.
+
+
+ You can find a complete list of Lodging Property Types in [Lodging
+ Property
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/property-types).
+
+ '
+ Link:
+ type: 'object'
+ properties:
+ Accept:
+ type: 'string'
+ description: 'The Accept request header (for API queries only - not included for
+ page URLs).'
+ Method:
+ type: 'string'
+ description: 'Method of request.'
+ Href:
+ type: 'string'
+ description: 'The URL of the destination web page or API query.'
+ Location:
+ type: 'object'
+ properties:
+ Address:
+ $ref: '#/components/schemas/Address'
+ GeoLocation:
+ allOf:
+ - $ref: '#/components/schemas/GeoLocation'
+ - description: 'Container for information on the geographic location of the
+ hotel.'
+ - properties:
+ Latitude:
+ type: 'string'
+ description: 'The geographic coordinates of the hotel property, based on a
+ horizontal angular measurement relative to The Equator.
+
+
+ North latitude will be represented by a positive value.
+
+
+ South latitude will be represented by a negative value.
+
+ '
+ example: '38.184978'
+ Longitude:
+ type: 'string'
+ description: 'The geographic coordinates of the hotel property, based on a
+ vertical angular measurement relative to the universal Prime
+ Meridian (Royal Observatory, Greenwich).
+
+
+ East longitude will be represented by a positive value.
+
+
+ West longitude will be represented by a negative value.
+
+ '
+ example: '85.7412'
+ Obfuscated:
+ type: 'boolean'
+ description: 'Indicates whether the displayed Latitude/Longitude information is
+ obfuscated.
+
+
+ Note: Exact Lat/Long values for Vacation Rental properties
+ will not be shown in either XAPv3 Search
+
+ or Details responses to respect the security of the
+ homeowner. Instead an ''obfuscated'' Lat/Long
+
+ value will be returned that will indicate the general area
+ within which the property is located,
+
+ but not the exact location of the property itself.
+
+ '
+ Neighborhood:
+ $ref: '#/components/schemas/Neighborhood'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ LodgingAmenity:
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ example: '2065'
+ Name:
+ type: 'string'
+ example: 'Business center'
+ MandatoryFeesDetail:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Type of mandatory fee.'
+ enum:
+ - 'City_LocalTax_Amt'
+ - 'City_LocalTax_Pcnt'
+ - 'CleaningFee_Amt'
+ - 'CleaningFee_Pcnt'
+ - 'ClubCardAdult'
+ - 'ClubCardChild'
+ - 'DestinationFee_Amt'
+ - 'DestinationFee_Pcnt'
+ - 'GalaDinnerAdult'
+ - 'GalaDinnerChild'
+ - 'GalaDinnerChineseNYAdult'
+ - 'GalaDinnerChineseNYChild'
+ - 'GalaDinnerNYDayAdult'
+ - 'GalaDinnerNYDayChild'
+ - 'GalaDinnerNYEveAdult'
+ - 'GalaDinnerNYEveChild'
+ - 'GalaDinnerValentinesDayAdult'
+ - 'GalaDinnerValentinesDayChild'
+ - 'GalaDinnerXMASDayAdult'
+ - 'GalaDinnerXMASDayChild'
+ - 'GalaDinnerXMASEveAdult'
+ - 'GalaDinnerXMASEveChild'
+ - 'ResortFee_Amt'
+ - 'ResortFee_Pcnt'
+ - 'SanitationFee'
+ - 'SeasonalHeatingFee'
+ - 'TourismFee_Amt'
+ - 'TourismFee_Pcnt'
+ - 'TowelSheetsFee_Amt'
+ - 'TransferFee_Amt_Adult'
+ - 'TransferFee_Amt_Child'
+ - 'UtilitySurcharge'
+ example: 'TransferFee_Amt_Child'
+ Amount:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'Value of hotel mandatory fee.'
+ description: 'The breakdown for the taxes and fees that must be paid at the property.'
+ Media:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Supported type of media.
+
+
+ 1=Image.
+
+
+ Only 1 is supported now.
+
+ '
+ example: '1'
+ enum:
+ - 1
+ Title:
+ type: 'string'
+ description: 'Image title'
+ example: 'Guestroom'
+ Size:
+ type: 'string'
+ description: 'Image size.
+
+ You can find a link to the complete list of Supported Images Sizes
+ in
+
+ [Lodging Image Captions, IDs, and
+ Sizes](https://developers.expediagroup.com/xap/products/xap/lodging/references/image-captions-ids-and-sizes).
+
+ '
+ example: 't'
+ Url:
+ type: 'string'
+ description: 'Image URL'
+ example: 'https://images.trvl-media.com/hotels/1000000/30000/20300/20230/20230_159_t.jpg'
+ description: 'Container for hotel images'
+ Money:
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/Money'
+ description: 'Pricing information of the stat date'
+ Neighborhood:
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'Neighborhood id.'
+ example: '6160232'
+ Name:
+ type: 'string'
+ description: 'Neighborhood name.'
+ example: 'Le Pharo'
+ description: 'Geography entities which are typically contained within a city.
+ This includes the categories neighborhood and point of interest. Low
+ level regions are not a formally defined concept in the geography
+ model.'
+ NightlyRates:
+ type: 'object'
+ properties:
+ StayDate:
+ type: 'string'
+ format: 'date'
+ example: '2022-07-19T00:00:00.000Z'
+ BaseRate:
+ $ref: '#/components/schemas/Money'
+ NonRefundableDateRange:
+ type: 'object'
+ properties:
+ StartDate:
+ type: 'string'
+ description: 'Start date of a non-refundable date range.'
+ format: 'date'
+ example: '2022-07-04T00:00:00.000Z'
+ EndDate:
+ type: 'string'
+ description: 'End date of a non-refundable date range.'
+ format: 'date'
+ example: '2022-07-05T00:00:00.000Z'
+ Occupant:
+ type: 'object'
+ properties:
+ Adults:
+ type: 'integer'
+ description: 'The number of adults in a room.
+
+ '
+ format: 'int32'
+ example: 1
+ ChildAges:
+ type: 'array'
+ description: 'The ages of children in a room.
+
+ '
+ example:
+ - 2
+ - 3
+ - 5
+ items:
+ type: 'integer'
+ description: 'The age of children in a room.
+
+ '
+ format: 'int32'
+ description: 'Container for the list of room occupants.'
+ PaymentSchedule:
+ type: 'object'
+ properties:
+ Due:
+ type: 'string'
+ description: 'Date/Time stamp when this installment/deposit should be paid by.'
+ format: 'date'
+ example: '2022-09-03T00:00:00.000Z'
+ Price:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'The monetary amount of the install/deposit required to book the
+ hotel and product.'
+ description: 'Contains information on the payment schedule.'
+ Phone:
+ type: 'object'
+ properties:
+ CountryCode:
+ type: 'string'
+ description: 'The designated country calling code.'
+ example: '1'
+ AreaCode:
+ type: 'string'
+ description: 'The phone''s area code.'
+ example: '614'
+ Number:
+ type: 'string'
+ description: 'The phone''s local number.'
+ example: '9288472'
+ ExtensionNumber:
+ type: 'string'
+ description: 'Optional extension number, if required to reach the hotel.'
+ example: '3114'
+ Promotion:
+ type: 'object'
+ properties:
+ Description:
+ type: 'string'
+ description: 'The description of the promotion.'
+ example: '20%Off'
+ Amount:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: "The value of the promotion.
+
+
+ **CMA Compliance Note (UK)**: Both standard room rates and
+ promotional rates are set and managed by the\
+
+ hoteliers and not Expedia.\n"
+ PropertyDetails:
+ type: 'object'
+ properties:
+ PropertyRegistryNumber:
+ type: 'string'
+ description: 'The registry number of property.'
+ example: 'P-20131'
+ HostLanguages:
+ type: 'array'
+ description: 'The languages the host of property will speak.'
+ example:
+ - 'English'
+ - 'Chinese'
+ items:
+ type: 'string'
+ MaxOccupancy:
+ type: 'integer'
+ description: 'The maximum number of guests allowed to stay in the property.'
+ format: 'int32'
+ example: 12
+ NumberOfBedrooms:
+ type: 'integer'
+ description: 'The number of bedrooms in the property.'
+ format: 'int32'
+ example: 4
+ NumberOfBathrooms:
+ type: 'integer'
+ description: 'The number of bathrooms in the property.'
+ format: 'int32'
+ example: 1
+ SquareFeet:
+ type: 'string'
+ description: 'Property area in square feet.'
+ example: '123.5'
+ PropertyManager:
+ $ref: '#/components/schemas/PropertyManager'
+ description: 'Container for information about the hotel property detail. It will
+ be shown for Vacation Rental hotel only.
+
+ '
+ PropertyManager:
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'The name of the property manager.'
+ example: 'Mike'
+ CalendarLastUpdated:
+ type: 'string'
+ description: 'The latest updated date.'
+ format: 'date'
+ PhotoUrl:
+ type: 'string'
+ description: 'The URL for property manager''s photo.'
+ example: 'https://imagesus-ssl.homeaway.com/mda01/ff30bc14-157c-43fc-ad8c-d2ce36bc7e83.4.1'
+ description: 'Container for information about the property manager. It will be
+ shown for Vacation Rental hotel only.'
+ RatePlan:
+ type: 'object'
+ properties:
+ RoomTypeId:
+ type: 'string'
+ description: 'The room type identifier.'
+ example: '200287452'
+ RatePlanId:
+ type: 'string'
+ description: 'The rate plan identifier.'
+ example: '201714191'
+ RateRuleId:
+ type: 'string'
+ description: 'The identifier of rate rule.'
+ example: '213544817'
+ InventorySourceId:
+ type: 'string'
+ description: 'The identification number of the source that provides the rate
+ plan.'
+ example: '24'
+ InventorySourceCode:
+ type: 'string'
+ description: 'The source name that provided the rate plan.'
+ example: 'JT'
+ StayDates:
+ $ref: '#/components/schemas/StayDates'
+ RemainingCount:
+ type: 'integer'
+ description: "The number of rooms remaining through Expedia for this room type.
+
+
+ **NOTE**: This value does NOT represent the total number of
+ rooms remaining at the hotel property,\
+
+ only the number of rooms allocated to Expedia for sale by the
+ property that currently remain in Expedia's
+
+ inventory.
+
+
+ When a hotel is listed as 'sold out' by Expedia there may still be
+ rooms available for sale by the hotel
+
+ through other channels.
+
+
+ Also note that the `RemainingCount` response element has a maximum
+ returned value of 100, even if there are
+
+ more than 100 rooms available within bookable Expedia inventory.
+
+
+ **CMA Compliance Note (UK)**: websites in the UK that display
+ `remainingCount` should make it clear to\
+
+ consumers that this count refers to the number of rooms remaining
+ within Expedia inventory - NOT the number
+
+ remaining at the property.\n"
+ format: 'int32'
+ example: 3
+ Price:
+ type: 'object'
+ description: 'Container for all price components of the rate plan.'
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The price of the rate plan for all occupants, excluding taxes and
+ fees.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total rate of taxes and fees of the rate plan for all
+ occupants.'
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total price of the rate plan, which is equal to the sum of
+ `BaseRate` + `TaxesAndFees`.
+
+ Hotel mandatory fees are not included in this value as these are
+ paid at the hotel at checkout.
+
+ Promotion amount have been deducted from the `TotalPrice` value.
+
+ '
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total amount to strikeout price. This value is the sum of the
+ pre-discount `BaseRate` + the
+
+ pre-discount `TaxesAndFees`.
+
+ '
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average nightly base rate per night per room of the rate plan,
+ which is equal to the `BaseRate`
+
+ divided by `StayDates` and by `room number`.
+
+ '
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average nightly strike out price per night per room of the
+ rate plan, which is equal to the
+
+ strike out of `BaseRate` divided by `StayDates` and by `room
+ number`.
+
+ '
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total mandatory fees which will be charged at the hotel for
+ the rate plan.'
+ RefundableDamageDeposit:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The refundable damage deposit.'
+ NightlyRates:
+ type: 'array'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/NightlyRates'
+ - properties:
+ StayDate:
+ description: 'A single night during the requested stay.'
+ BaseRate:
+ description: 'Container for nightly base rate.'
+ description: 'Nightly base rate of the rate plan.'
+ TaxesAndFeesDetails:
+ type: 'array'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/TaxesAndFeesDetail'
+ - properties:
+ CategoryCode:
+ description: 'Category ID of this specific tax or fee.'
+ Amount:
+ description: 'The value of this specific tax or fee.'
+ description: 'Container for taxes and fees detail information.
+
+ Only visible by configuration. Please contact your Expedia
+ Account Manager if you need this node.
+
+ '
+ RoomRates:
+ type: 'array'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/RoomRates'
+ description: 'Container for the rate information of all rooms. This is only
+ returned in Lodging Details API.'
+ MemberOnlyDeal:
+ type: 'boolean'
+ description: 'Indicates whether the rate is for member only.
+
+
+ Only visible by configuration. Please contact your Expedia Account
+ Manager if you need this node.
+
+ '
+ example: true
+ Promotions:
+ type: 'array'
+ description: 'All promotion information of the `ratePlan`.'
+ items:
+ $ref: '#/components/schemas/Promotion'
+ StandalonePrice:
+ type: 'object'
+ description: 'The corresponded standalone price to the package rate plan (to
+ show the `strikethrough`).
+
+
+ Only returned when the returned `rateplan` is being used as part of
+ a package.
+
+ '
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The standalone price of the rate plan for all occupants, excluding
+ taxes and fees.'
+ StrikeOutBaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The base rate strikeout in the standalone shopping path.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total standalone rate of taxes and fees of the rate plan for
+ all occupants.'
+ StrikeOutTaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The taxes and fees strikeout in the standalone shopping path.'
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total standalone price of the rate plan, which is equal to the
+ sum of `BaseRate` and `TaxesAndFees`.
+
+ Hotel mandatory fees are not included as these are paid at the
+ hotel at checkout.
+
+ '
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total strikeout in the standalone shopping path, which is
+ equal to the sum of `StrikeOutBaseRate` and
+ `StrikeOutTaxesAndFees`.
+
+ '
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average standalone nightly base rate per night per room of the
+ rate plan, which is equal to the
+
+ `BaseRate` divided by `StayDates` and by `room number`.
+
+ '
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average strikeout of the base rate in the standalone shopping
+ path, which is per night per room and is equal to
+
+ `StrikeOutBaseRate` divided by `StayDates` and by `room number`.
+
+ '
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total standalone mandatory fees.'
+ StrikeOutHotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The strikeout of the mandatory fees in the standalone shopping
+ path.'
+ TaxesAndFeesInclusive:
+ type: 'boolean'
+ description: 'Indicates whether taxes and fees are included in base rate.'
+ example: false
+ GuaranteeText:
+ type: 'string'
+ description: 'Text description for any deposit information provide by the
+ property (if applicable).'
+ example: 'Price Guarantee'
+ PaymentMethod:
+ type: 'string'
+ description: 'Room payment information. The available options are:
+
+ - Online: Pay at the time of booking
+
+ - Hotel: Could either be paid at the hotel during the time of stay
+ or paid at the time indicated by `PaymentTime` and `PaymentSchedule`
+
+ '
+ example: 'Online'
+ enum:
+ - 'Online'
+ - 'Hotel'
+ PaymentTime:
+ type: 'string'
+ description: 'The time when the booking amount will be charged on the traveler’s
+ credit card. Valid values are as follows:
+
+ - UponBooking
+
+ - PayLater
+
+ - SupplierDiscretion
+
+ '
+ example: 'PayLater'
+ enum:
+ - 'UponBooking'
+ - 'PayLater'
+ - 'SupplierDiscretion'
+ FullDepositUponBooking:
+ type: 'boolean'
+ description: 'It will be true if PaymentSchedule has one installment and the
+ value of "Due" is booking date, otherwise,
+
+ it will be false.
+
+ '
+ example: true
+ PaymentSchedule:
+ type: 'array'
+ description: 'Contains information on the payment schedule.'
+ items:
+ $ref: '#/components/schemas/PaymentSchedule'
+ ReserveWithDeposit:
+ type: 'boolean'
+ description: 'Indicates whether this rate plan need deposit to reserve.'
+ example: true
+ FreeInternet:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free Internet.
+ (either wireless or wired)'
+ example: true
+ FreeWiFi:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free wireless
+ Internet access.'
+ example: true
+ FreeInternetDetails:
+ type: 'array'
+ description: 'The localized details for the free internet amenity (only shown
+ when FreeInternet = true).
+
+
+ You can find a link to the complete list of Free Internet Details in
+
+ [Lodging Free Breakfast and Internet
+ Details](https://developers.expediagroup.com/xap/products/xap/lodging/references/free-breakfast-and-internet-details).
+
+ '
+ example:
+ - 'Free Wireless Internet, Wired high-speed Internet-comp'
+ items:
+ type: 'string'
+ description: 'The localized details for the free internet amenity (only shown
+ when FreeInternet = true).'
+ example: 'Free Wireless Internet, Wired high-speed Internet-comp'
+ FreeParking:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free parking.'
+ example: true
+ FreeBreakfast:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free breakfast.'
+ example: true
+ FreeBreakfastDetails:
+ type: 'array'
+ description: 'The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).
+
+
+ You can find a link to the complete list of Free Breakfast Details
+ in
+
+ [Lodging Free Breakfast and Internet
+ Details](https://developers.expediagroup.com/xap/products/xap/lodging/references/free-breakfast-and-internet-details).
+
+ '
+ example:
+ - 'Full Breakfast'
+ - 'Full Board'
+ items:
+ type: 'string'
+ description: 'The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).'
+ example: 'Full Breakfast'
+ HcomRewardsEarn:
+ type: 'boolean'
+ description: 'Indicate whether the room qualifies for Hcom Rewards Earn.
+ (Hotels.com partners only)'
+ example: true
+ HcomRewardsBurn:
+ type: 'boolean'
+ description: 'Indicate whether the room qualifies for Hcom Rewards Burn.
+ (Hotels.com partners only)'
+ example: true
+ CancellationPolicy:
+ $ref: '#/components/schemas/CancellationPolicy'
+ Amenities:
+ type: 'array'
+ description: 'The amenities of the `rateplan`.'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: 'The amenities of the `rateplan`.'
+ - properties:
+ Id:
+ description: 'Amenity ID.'
+ Name:
+ description: 'Amenity Name.'
+ description: 'Container for information on each rate plan.'
+ RoomOccupancyPolicy:
+ type: 'object'
+ properties:
+ MaxGuestCount:
+ type: 'integer'
+ description: 'The maximum number of guests allowed to stay in a room.'
+ format: 'int32'
+ example: 3
+ MinCheckInAge:
+ type: 'integer'
+ description: 'The minimum age required for check-in.'
+ format: 'int32'
+ example: 19
+ IncludedGuestCount:
+ type: 'integer'
+ description: 'The number of guests included in base rate.'
+ format: 'int32'
+ example: 2
+ MinGuestAge:
+ type: 'integer'
+ description: 'The minimum age required for any guest staying in the room.'
+ format: 'int32'
+ example: 0
+ AgeClassRestrictions:
+ type: 'array'
+ description: 'Container for room occupancy rules based on the age of the guests.'
+ items:
+ $ref: '#/components/schemas/AgeClassRestriction'
+ description: 'Room occupancy policy.'
+ RoomPreference:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of preference. Options are:
+
+ SmokingPreference
+
+ Bed'
+ example: 'SmokingPreference'
+ enum:
+ - 'SmokingPreference'
+ - 'Bed'
+ Value:
+ type: 'string'
+ description: 'The value of the room preference.
+
+
+ For SmokingPreference, options are
+
+
+ SmokingOrNonSmoking
+
+ Smoking
+
+ NonSmoking
+
+ For supported Bed Types, please refer to the Related Links section
+ at the bottom of the page.'
+ example: 'NonSmoking'
+ description: 'Container for room preferences.'
+ RoomRates:
+ type: 'object'
+ properties:
+ RoomIndex:
+ type: 'integer'
+ description: 'Index of which of the requested rooms this entry refers to.'
+ format: 'int32'
+ example: 1
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'The price of the room, excluding taxes and fees.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'The total rate of taxes and fees of the room.'
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'The total price of the room, which is equal to the sum of the
+ `BaseRate` and `TaxesAndFees`.
+
+
+ Hotel mandatory fees are not included as these are paid at the
+ property at checkout.
+
+ '
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'The total strike out price of the room, which is equal to the sum
+ of the `BaseRate`''s totalStrikeOut
+
+ and `TaxesAndFees`''s totalStrikeOut.
+
+ '
+ TaxesAndFeesDetails:
+ type: 'array'
+ description: 'The breakdown for taxes and fees for this room for the entire
+ stay.
+
+
+ Only visible by configuration. Please contact your Expedia Account
+ Manager if you need this node.
+
+ '
+ items:
+ allOf:
+ - $ref: '#/components/schemas/TaxesAndFeesDetail'
+ - properties:
+ CategoryCode:
+ description: 'Tax or fee category code.'
+ Amount:
+ description: 'Tax or fee value.'
+ MandatoryFeesDetails:
+ type: 'array'
+ description: 'The breakdown for the taxes and fees that must be paid at the
+ property.'
+ items:
+ $ref: '#/components/schemas/MandatoryFeesDetail'
+ NightlyRates:
+ type: 'array'
+ description: 'Container for the nightly rate of current room.'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/NightlyRates'
+ - description: 'Container for the nightly rate of current room.'
+ - properties:
+ StayDate:
+ description: 'One date of the property stay'
+ BaseRate:
+ description: 'Nightly Base Rate for the selected date of stay.'
+ RoomType:
+ type: 'object'
+ properties:
+ Description:
+ type: 'string'
+ description: 'Text description of the room type.'
+ example: 'Room, 1 King Bed, City View (Seattle V)'
+ RoomKey:
+ type: 'string'
+ description: 'An encrypted string which includes the information that could be
+ used to address the current room type.
+
+
+ `RoomKey` has been renamed as `OfferId`.
+
+ '
+ deprecated: true
+ OfferId:
+ type: 'string'
+ description: 'An encrypted string which includes the information that could be
+ used to address the current room type.'
+ example: 'wMRoCMjQqCDIwMTcwN'
+ MerchantName:
+ type: 'string'
+ description: 'Name of Merchant that did the initial Authentication.'
+ example: 'EXPEDIA'
+ RatePlanType:
+ type: 'string'
+ description: 'Indicate the room type is sold as package or standalone.
+
+ '
+ example: 'package'
+ enum:
+ - 'standalone'
+ - 'package'
+ - 'wholesale'
+ RatePlans:
+ type: 'array'
+ description: 'Container for rate plan information.'
+ items:
+ $ref: '#/components/schemas/RatePlan'
+ Price:
+ type: 'object'
+ description: 'Container of all price components of the room.'
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The price of the rate plan for all occupants, excluding taxes and
+ fees.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total rate of taxes and fees of the rate plan for all
+ occupants.'
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total price of the rate plan, which is equal to the sum of
+ `BaseRate` and `TaxesAndFees`. Hotel
+
+ mandatory fees are not included as these are paid at the hotel
+ at checkout.
+
+ '
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total strike out price of the rate plan, which is equal to the
+ sum of `BaseRate`''s
+
+ `totalStrikeOut` and `TaxesAndFees`''s `totalStrikeOut`.
+
+ '
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average nightly base rate per night per room of the room type,
+ which is equal to the `BaseRate`
+
+ divided by `StayDates` and by `room number`.
+
+ '
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average nightly strike out rate per night per room of the room
+ type, which is equal to the
+
+ strike out of `BaseRate` divided by `StayDates` and by `room
+ number`.
+
+ '
+ AvgNightlyRateWithFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average nightly rate per night per room of the room type,
+ including all fees except those imposed by the government.
+
+ '
+ AvgNightlyStrikeoutRateWithFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average nightly strike out rate per night per room of the room
+ type, including all fees except those imposed by the government.
+
+ '
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total mandatory fees which will be charged at the hotel for
+ the rate plan.'
+ TotalPriceWithHotelFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: "The total combined price that includes `TotalPrice` that will be
+ charged by Expedia (`BaseRate` +
+
+ `TaxesAndFees`) combined with any `HotelMandatoryFees` that will
+ be charged at hotel.
+
+ **NOTE**: Since UK regulations require that `HotelMandatoryFees`
+ be included in this price, the\
+
+ quoted price will only be accurate for the day of quote.
+ This is due to the fact that\
+
+ currency exchange fluctuations will change the exact amount of
+ any `HotelMandatoryFees` that are to
+
+ be collected at the hotel during the guest's stay if the cost is
+ converted into any other currency.
+
+ **CMA Compliance Note (UK)**: Websites doing business in the UK
+ should be displaying this value to\
+
+ be compliant with CMA requirements.\n"
+ RefundableDamageDeposit:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The refundable damage deposit for the rate plan.'
+ StandalonePrice:
+ type: 'object'
+ description: 'The corresponded standalone price to the package rate plan (to
+ show the `strikethrough`).
+
+
+ Only returned when this is a package rate plan.
+
+ '
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The standalone price of the rate plan for all occupants, excluding
+ taxes and fees.'
+ StrikeOutBaseRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The base rate strikeout in the standalone shopping path.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total standalone rate of taxes and fees of the rate plan for
+ all occupants.'
+ StrikeOutTaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The taxes and fees strikeout in the standalone shopping path.'
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total standalone price of the rate plan, which is equal to the
+ sum of `BaseRate` and `TaxesAndFees`.
+
+ Hotel mandatory fees are not included as these are paid at the
+ hotel at checkout.
+
+ '
+ TotalStrikeOutPrice:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total strikeout in the standalone shopping path, which is
+ equal to the sum of `StrikeOutBaseRate` and
+ `StrikeOutTaxesAndFees`.
+
+ '
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average standalone nightly base rate per night per room of the
+ rate plan, which is equal to the
+
+ `BaseRate` divided by `StayDates` and by `room number`.
+
+ '
+ AvgNightlyStrikeOutRate:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The average strikeout of the base rate in the standalone shopping
+ path, which is per night per room and is equal to
+
+ `StrikeOutBaseRate` divided by `StayDates` and by `room number`.
+
+ '
+ HotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The total standalone mandatory fees.'
+ StrikeOutHotelMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ description: 'The strikeout of the mandatory fees in the standalone shopping
+ path.'
+ Promotions [deprecated]:
+ type: 'array'
+ description: 'All promotion information of the room.
+
+
+ **Note**: The node has been moved to `RatePlan` node, and will be
+ deprecated soon.
+
+ '
+ deprecated: true
+ items:
+ $ref: '#/components/schemas/Promotion'
+ Links:
+ type: 'object'
+ properties:
+ WebSearchResult:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: 'Link to web search result page.'
+ WebDetails:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: 'Link to web infosite.'
+ ApiDetails:
+ allOf:
+ - $ref: '#/components/schemas/Link'
+ - description: 'Link for details API.'
+ additionalProperties:
+ $ref: '#/components/schemas/Link'
+ description: 'Container for list of HATEOAS links to either Expedia website or
+ additional Expedia APIs to complete booking
+
+ of the selected offer.
+
+
+ Which links are returned in this section are defined by the `links`
+ parameter in the Search API query.
+
+
+ Available links are:
+
+ - WebSearchResult (link to web search result page)
+
+ - WebDetails (link to web infosite)
+
+ - ApiDetails (link for details API)
+
+ '
+ SmokingOption:
+ type: 'string'
+ description: 'The smoking options available for the room type.'
+ example: 'SmokingOrNonSmoking'
+ enum:
+ - 'SmokingOrNonSmoking'
+ - 'Smoking'
+ - 'NonSmoking'
+ BedTypeOptions:
+ type: 'array'
+ description: 'Statement of bed types available for this offer. A room may have
+ several bed type options available.
+
+
+ **NOTE**: due to the large number of bed type options available, we
+ no longer publish a list of available
+
+ bed types. More information is available in
+
+ [Lodging Bed
+ Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/bed-types).
+
+ '
+ items:
+ $ref: '#/components/schemas/BedType'
+ RoomOccupancyPolicy:
+ $ref: '#/components/schemas/RoomOccupancyPolicy'
+ Amenities:
+ type: 'array'
+ description: 'Container for all room amenities.'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/LodgingAmenity'
+ - description: 'The amenity of the room.'
+ - properties:
+ Id:
+ description: 'Amenity id'
+ Name:
+ description: 'Amenity name'
+ DescriptiveAmenities:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ items:
+ type: 'string'
+ description: 'Container for all room amenities in group.
+
+
+ The key is amenity category, the values are the amenity information.
+ The category for grouped amenities in room level will be:
+
+ - ACCESSIBILITY
+
+ - BATHROOM
+
+ - BEDROOM
+
+ - CLUB_EXEC
+
+ - FAMILY_FRIENDLY
+
+ - ENTERTAINMENT
+
+ - FOOD_AND_DRINK
+
+ - INTERNET
+
+ - MORE
+
+ - OUTDOOR_SPACE
+
+ - SAFETY
+
+ '
+ example:
+ FOOD_AND_DRINK:
+ - '2 restaurants'
+ - 'Coffee/tea in common area(s)'
+ Media:
+ type: 'array'
+ description: 'Container for Media elements.'
+ items:
+ allOf:
+ - $ref: '#/components/schemas/Media'
+ - description: 'Media elements.'
+ StayDates:
+ type: 'object'
+ properties:
+ CheckInDate:
+ type: 'string'
+ description: 'The initial day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ format: 'date'
+ CheckOutDate:
+ type: 'string'
+ description: 'The final day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ format: 'date'
+ description: 'Container for information for the stay dates of the rate plan.'
+ TaxesAndFeesDetail:
+ type: 'object'
+ properties:
+ CategoryCode:
+ type: 'string'
+ example: '401'
+ Amount:
+ $ref: '#/components/schemas/Money'
+ ValidFormsOfPayment:
+ type: 'object'
+ properties:
+ PaymentMethod:
+ type: 'string'
+ description: 'The payment method.'
+ example: 'DebitCard'
+ Name:
+ type: 'string'
+ description: 'The brand name of the payment sub-method to be displayed to the
+ customer.'
+ example: 'Visa'
+ PaymentSubMethod:
+ type: 'string'
+ description: 'The payment sub-method.'
+ example: 'Visa'
+ deprecated: true
+ BrandName:
+ type: 'string'
+ description: 'The brand name of the payment sub-method to be displayed to the
+ customer.
+
+
+ In many cases it will be the same as the payment sub-method, but
+ "Visa/Carte Blanche" and "Visa/Delta" are some of the exceptions.
+
+ '
+ example: 'Visa'
+ deprecated: true
+ description: 'Container for hotel supported payment information.'
+ Warning:
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'The code of a warning.'
+ example: 'INVALID_CORPORATE_DISCOUNT_CODE'
+ Description:
+ type: 'string'
+ description: 'A detail information of what happened.'
+ example: 'The Corporate DiscountCode ''811490'' is unavailable, but we found
+ other rates for you.'
+ OriginalPrice:
+ $ref: '#/components/schemas/Money'
+ NewPrice:
+ $ref: '#/components/schemas/Money'
+ ChangedAmount:
+ $ref: '#/components/schemas/Money'
+ ChangedPercentage:
+ type: 'string'
+ description: 'The changed percentage.
+
+ In the sample 2.97 means the changed percentage is 2.97%.'
+ example: '2.97'
+ description: 'There were some errors or events during the transaction, but the
+ API has still returned a response.
+
+
+ Container for all warnings.
+
+ '
+ When:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Indicates the time of the deposit collection.
+
+ Options are:
+
+ UPON_BOOKING
+
+ The customer must pay the deposit when booking the property.
+
+ DAYS_PRIOR
+
+ The customer must pay the deposit a number of days before arriving
+ at the property.
+
+ UPON_ARRIVAL
+
+ The customer must pay the deposit upon arriving at the property.'
+ example: 'UPON_BOOKING'
+ enum:
+ - 'UPON_BOOKING'
+ - 'DAYS_PRIOR'
+ - 'UPON_ARRIVAL'
+ Value:
+ type: 'string'
+ description: 'This value will only be shown when Deposit Type is DAYS_PRIOR to
+ indicate the number of days prior to check in when the deposit will
+ be collected.'
+ example: '1'
+ description: 'Indicate when to pay.'
+ Error:
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ DetailCode:
+ type: 'string'
+ description: 'Detailed error code describing the issue.'
+ example: 'MULTIPLE_AMBIGUOUS_LOCATION'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'More than one location found'
+ LocationKeyword:
+ type: 'string'
+ description: 'The requested location that caused the error.'
+ example: 'Portland'
+ LocationOptions:
+ type: 'array'
+ description: 'Container for possible matches to your ambiguous `locationKeyword`
+ query.'
+ items:
+ $ref: '#/components/schemas/LocationOption'
+ description: 'Container for error list.'
+ Errors:
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/Error'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ LocationOption:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Type of the location.'
+ example: 'TRAINSTATION'
+ RegionId:
+ type: 'string'
+ description: 'RegionId the location resides in.'
+ example: '6200275'
+ ShortName:
+ type: 'string'
+ description: 'The name of the location which matches the location keyword.'
+ example: 'Dublin Connolly Station'
+ AirportCode:
+ type: 'string'
+ description: 'Indicates the nearest major airport to the location.'
+ example: 'DUB'
+ Address:
+ type: 'string'
+ description: 'The address of the location.'
+ example: 'Dublin Connolly Station, Ireland'
+ Country:
+ $ref: '#/components/schemas/Country'
+ GeoLocation:
+ $ref: '#/components/schemas/GeoLocation'
+ description: 'Container for possible matches to your ambiguous `locationKeyword`
+ query.'
+ APIGatewayError:
+ type: 'object'
+ properties:
+ message:
+ type: 'string'
+ HotelListingsResponse:
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'There were some errors or events during the transaction, but the
+ API has still returned a response.
+
+
+ Container for all warnings.
+
+ '
+ items:
+ $ref: '#/components/schemas/Warning'
+ Count:
+ type: 'integer'
+ description: 'The number of hotels actually returned in the response.'
+ format: 'int32'
+ example: 99
+ TotalHotelCount:
+ type: 'integer'
+ description: 'The number of hotels present in the location.'
+ format: 'int32'
+ example: 230
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ StayDates:
+ allOf:
+ - $ref: '#/components/schemas/StayDates'
+ - description: 'Container for requested dates of stay.'
+ LengthOfStay:
+ type: 'integer'
+ description: 'The number of stay nights.'
+ format: 'int32'
+ example: 3
+ NumberOfRooms:
+ type: 'integer'
+ description: 'The number of the rooms requested on behalf of the user.'
+ format: 'int32'
+ example: 3
+ Occupants:
+ type: 'array'
+ description: 'Container of occupants. It is an array including occupants of each
+ room.'
+ items:
+ $ref: '#/components/schemas/Occupant'
+ Hotels:
+ type: 'array'
+ description: 'Container for all hotels.'
+ items:
+ $ref: '#/components/schemas/Hotel'
+ HotelRateCalendar:
+ type: 'object'
+ properties:
+ EcomHotelId:
+ type: 'string'
+ description: 'The unique, Expedia-specific hotel property identifier used to
+ designate a single hotel.'
+ example: '14747'
+ HcomHotelId:
+ type: 'string'
+ description: 'The unique, Hotels.com-specific hotel property identifier used to
+ designate a single hotel.
+
+
+ This will be returned if searching via `hcomHotelId` in request or
+ the request is coming from Hcom partner.
+
+ '
+ example: '10532'
+ RateCalendar:
+ type: 'array'
+ description: 'Container for all rate calendar data.'
+ items:
+ $ref: '#/components/schemas/RateCalendar'
+ description: 'Container for all hotel rate calendar data.'
+ RateCalendar:
+ type: 'object'
+ properties:
+ StayDate:
+ type: 'string'
+ description: 'Stay date for which the price is returned.'
+ format: 'date'
+ example: '2022-09-02T00:00:00.000Z'
+ Price:
+ allOf:
+ - $ref: '#/components/schemas/Money'
+ - description: 'Container for pricing information.'
+ - properties:
+ Value:
+ description: 'The total price of the corresponding date.'
+ Currency:
+ description: 'The ISO 4217 Currency Code that the Value is expressed in.
+
+
+ See [Global Currency
+ Codes](https://developers.expediagroup.com/xap/products/xap/lodging/references/global-currency-codes)
+
+ for a full list of supported currencies.
+
+ '
+ PriceLevel:
+ type: 'string'
+ description: 'Indicates how that day''s price compares to the other lowest price
+ for that hotel over the searched date
+
+ range. Prices will be bucketed into LOW/MEDIUM/HIGH. Here are the
+ details for each `PriceLevel`:
+
+ - HIGH: 65th percentile+
+
+ - MEDIUM: 30th Percentile+
+
+ - LOW: Anything lower than 30th percentile
+
+ '
+ example: 'MEDIUM'
+ enum:
+ - 'HIGH'
+ - 'MEDIUM'
+ - 'LOW'
+ Status:
+ type: 'string'
+ description: 'Represents whether the offer is currently available.'
+ enum:
+ - 'AVAILABLE'
+ - 'NOT_AVAILABLE'
+ example: 'AVAILABLE'
+ description: 'The lowest rate information of requested days'
+ RateCalendarResponse:
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'There were some errors or events during the transaction, but the
+ API has still returned a response.
+
+
+ Container for all warnings.
+
+ '
+ items:
+ $ref: '#/components/schemas/Warning'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ RateCalendars:
+ type: 'array'
+ description: 'Container for all hotel rate calendar data.'
+ items:
+ $ref: '#/components/schemas/HotelRateCalendar'
+ LodgingCancellationPenaltyRule:
+ type: 'object'
+ properties:
+ PenaltyPercentOfStay:
+ type: 'string'
+ description: 'Specifies the per-stay cancellation fee charged as a percentage of
+ the total rate, in addition to any other
+
+ penalties listed.
+
+ '
+ example: '100'
+ PenaltyStartDateTime:
+ type: 'string'
+ description: 'The beginning of the window of time when the
+ `CancellationPenaltyRule` is in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the property.
+
+ '
+ format: 'date-time'
+ example: '2022-07-23T23:00:00.000Z'
+ PenaltyEndDateTime:
+ type: 'string'
+ description: 'The end of the window of time when the `CancellationPenaltyRule`
+ is in effect.
+
+
+ The date and time are expressed in ISO 8601 International Date
+ format, and local to the property.
+
+ '
+ format: 'date-time'
+ example: '2022-07-25T23:00:00.000Z'
+ description: 'Container for cancellation penalty details.'
+ LodgingCancellationPolicy:
+ type: 'object'
+ properties:
+ Refundable:
+ type: 'boolean'
+ description: 'Indicate whether the rate is refundable or not.'
+ example: true
+ FreeCancellation:
+ type: 'boolean'
+ description: 'Indicate whether the room can be cancelled free of charge.'
+ example: true
+ FreeCancellationEndDateTime:
+ type: 'string'
+ description: 'The date and time until which the room can be cancelled free of
+ charge.'
+ format: 'date-time'
+ CancellationPenaltyRules:
+ type: 'array'
+ description: 'Container for Cancellation Penalty Rules information.'
+ items:
+ $ref: '#/components/schemas/LodgingCancellationPenaltyRule'
+ description: 'Container for Cancellation Policy information.'
+ Property:
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'The unique property identifier used to designate a single property.'
+ example: '14747'
+ Status:
+ type: 'string'
+ description: 'Represents whether the offer is currently available.'
+ example: 'AVAILABLE'
+ enum:
+ - 'AVAILABLE'
+ - 'NOT_AVAILABLE'
+ - 'ERROR'
+ - 'NUMBER_OF_ADULTS_NOT_ACCEPTED'
+ - 'NUMBER_OF_CHILDREN_NOT_ACCEPTED'
+ - 'NUMBER_OF_INFANTS_NOT_ACCEPTED'
+ - 'NUMBER_OF_PERSONS_NOT_ACCEPTED'
+ - 'CHECK_IN_AGE_NOT_ACCEPTED'
+ RoomTypes:
+ type: 'array'
+ description: 'Container for all of available room types.'
+ items:
+ $ref: '#/components/schemas/LodgingRoomType'
+ description: 'Container for information on each offered hotel.'
+ LodgingLink:
+ type: 'object'
+ properties:
+ Accept:
+ type: 'string'
+ description: 'The Accept request header for API queries only.
+
+
+ Note: this value will only be returned if the link is an API query,
+ as website URLs do not require an
+
+ `Accept` header.
+
+ '
+ Method:
+ type: 'string'
+ description: 'Method of request.'
+ example: 'GET'
+ Href:
+ type: 'string'
+ description: 'The URL of the destination web page or API query.'
+ LodgingMoney:
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ description: 'Pricing information of the stat date'
+ LodgingOccupant:
+ type: 'object'
+ properties:
+ Adults:
+ type: 'integer'
+ description: 'The number of adults in a room.'
+ format: 'int32'
+ example: 1
+ ChildAges:
+ type: 'array'
+ description: 'The ages of children in a room.'
+ example:
+ - 2
+ - 3
+ - 5
+ items:
+ type: 'integer'
+ format: 'int32'
+ LodgingPromotion:
+ type: 'object'
+ properties:
+ Description:
+ type: 'string'
+ description: 'The description of the promotion.'
+ example: '20%Off'
+ Amount:
+ $ref: '#/components/schemas/LodgingMoney'
+ LodgingRatePlan:
+ type: 'object'
+ properties:
+ CancellationPolicy:
+ $ref: '#/components/schemas/LodgingCancellationPolicy'
+ Promotions:
+ type: 'array'
+ description: 'All promotion information of the ratePlan.'
+ items:
+ $ref: '#/components/schemas/LodgingPromotion'
+ description: 'Container for rate plan information.'
+ LodgingRoomType:
+ type: 'object'
+ properties:
+ RatePlans:
+ type: 'array'
+ description: 'Container for rate plan information.'
+ items:
+ $ref: '#/components/schemas/LodgingRatePlan'
+ Price:
+ type: 'object'
+ properties:
+ BaseRate:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The price of the rate plan for all occupants, excluding taxes and
+ fees.'
+ TaxesAndFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The total amount of taxes and fees of the rate plan for all
+ occupants.'
+ TotalPrice:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The total price of the rate plan, which is equal to the sum of
+ `BaseRate` + `TaxesAndFees`.
+
+ Property mandatory fees are not included in this value as
+ these are paid at the property at
+
+ checkout.
+
+ '
+ AvgNightlyRate:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The average nightly base rate per night per room of the rate plan,
+ which is equal to the `BaseRate`
+
+ divided by `StayDates` and by `room number`.
+
+ '
+ AvgNightlyRateWithFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The average nightly rate per night per room of the room type,
+ including all fees except those imposed by the government.
+
+ '
+ PropertyMandatoryFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The total mandatory fees which will be charged at the property for
+ the rate plan.'
+ TotalPriceWithPropertyFees:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The total price of the rate plan include property mandatory fees,
+ which is equal to the sum of
+
+ `BaseRate` + `TaxesAndFees` + `PropertyMandatoryFees`.
+
+ **NOTE**: Since UK regulations require that
+ `PropertyMandatoryFees` be included in this price, the
+
+ quoted price will only be accurate for the day of quote.
+ This is due to the fact that
+
+ currency exchange fluctuations will change the exact amount of
+ any `PropertyMandatoryFees` that are to
+
+ be collected at the hotel during the guest''s stay if the cost
+ is converted into any other currency.
+
+ **CMA Compliance Note (UK)**: Websites doing business in the UK
+ should be displaying this value to
+
+ be compliant with CMA requirements.
+
+ '
+ RefundableDamageDeposit:
+ allOf:
+ - $ref: '#/components/schemas/LodgingMoney'
+ description: 'The refundable damage deposit.'
+ description: 'Container for Price information.'
+ Links:
+ type: 'object'
+ properties:
+ WebSearchResult:
+ allOf:
+ - $ref: '#/components/schemas/LodgingLink'
+ - description: 'Link to web search result page.'
+ WebDetails:
+ allOf:
+ - $ref: '#/components/schemas/LodgingLink'
+ - description: 'Link to web infosite.'
+ additionalProperties:
+ $ref: '#/components/schemas/LodgingLink'
+ description: 'Container for list of HATEOAS links to either Expedia website or
+ additional Expedia APIs to complete booking of the selected offer.
+
+
+ Which links are returned in this section are defined by the links
+ parameter in the Search API query.
+
+ Available links are:
+
+ - WebDetails (link to web infosite)
+
+ - WebSearchResult (link to web search result page)
+
+ '
+ LodgingStayDates:
+ type: 'object'
+ properties:
+ CheckInDate:
+ type: 'string'
+ description: 'The initial day of the property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ format: 'date'
+ CheckOutDate:
+ type: 'string'
+ description: 'The final day of the property stay in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ format: 'date'
+ description: 'Container for requested dates of stay.
+
+ '
+ LodgingWarning:
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'The code of a warning.'
+ example: 'NO_RESULTS_FOUND'
+ Description:
+ type: 'string'
+ description: 'A description of what caused the issues.'
+ example: "Sorry, your query completed successfully, but did not return any
+ inventory. Please adjust your\
+
+ search parameters and try again.\n"
+ LodgingError:
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'Multiple pickup locations found. '
+ description: 'Container for error list.'
+ LodgingErrors:
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/LodgingError'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ LodgingQuotesResponse:
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'There were some errors or events during the transaction, but the
+ API has still returned a response.
+
+
+ Container for all warnings.
+
+ '
+ items:
+ $ref: '#/components/schemas/LodgingWarning'
+ Count:
+ type: 'integer'
+ description: 'The number of properties actually returned in the response.'
+ format: 'int32'
+ example: 99
+ TotalPropertyCount:
+ type: 'integer'
+ description: 'The number of properties requested.'
+ format: 'int32'
+ example: 230
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the API transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ StayDates:
+ $ref: '#/components/schemas/LodgingStayDates'
+ LengthOfStay:
+ type: 'integer'
+ description: 'The number of stay nights.'
+ format: 'int32'
+ example: 3
+ Occupants:
+ type: 'array'
+ description: 'Container for the list of room occupants.'
+ items:
+ $ref: '#/components/schemas/LodgingOccupant'
+ Properties:
+ type: 'array'
+ description: 'Container for all properties.'
+ items:
+ $ref: '#/components/schemas/Property'
+ DateRange:
+ type: 'object'
+ description: 'The actual date range for the shown availability.'
+ properties:
+ StartDate:
+ type: 'string'
+ description: 'The initial day of the date range in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ example: '2022-07-05'
+ format: 'date'
+ EndDate:
+ type: 'string'
+ description: 'The final day of the date range in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ example: '2023-07-05'
+ format: 'date'
+ AvailabilityCalendar:
+ type: 'object'
+ properties:
+ PropertyId:
+ type: 'string'
+ description: 'The unique property identifier that designates a single property.'
+ example: '74041788'
+ DateRange:
+ $ref: '#/components/schemas/DateRange'
+ Availability:
+ type: 'string'
+ description: "A string of codes that shows property availability, one for every
+ day in the specified date range.
+
+
+ Valid values include Y (available) and N (unavailable).
+
+
+ ***Note**: The first code stands for availability on the `StartDate`
+ in the `DateRange` and the last one stands\
+
+ for the `EndDate`.*\n"
+ example: 'YYYYYYNNNNNN'
+ ChangeOver:
+ type: 'string'
+ description: "A string of codes that shows changeover action, one for every day
+ in the specified date range.
+
+
+ Valid values include
+
+ - X (no action possible)
+
+ - C (check-in, checkout)
+
+ - O (checkout only)
+
+ - I (check-in only)
+
+ ***Note**: The first code stands for possible action on the
+ `StartDate` in the `DateRange` and the last one\
+
+ stands for the `EndDate`. All actions are possible if not
+ returned.*\n"
+ example: 'XXIIICCCOOCC'
+ MinPriorNotify:
+ type: 'string'
+ description: 'A comma-separated list of numbers that shows how many days before
+ a reservation the booking must occur, one
+
+ for every day in the specified date range. Valid values include
+ 0-999, and 0 indicates no prior notification
+
+ required for a given day. The unit is always day.
+
+
+ ***Note**: The first number stands for the minimum advance booking
+ days on the `StartDate` in the `DateRange`
+
+ and the last one stands for the `EndDate`. No limitation if not
+ returned.*
+
+ '
+ example: '1,1,1,1,1,1,1,1,1,1,1,1,1'
+ MinStay:
+ type: 'string'
+ description: 'A comma-separated list of numbers that show the minimum number of
+ days a traveler can stay, one for every
+
+ day in the specified date range.
+
+
+ Valid values include 0-999, and 0 indicates no minimum for a given
+ day. The unit is always day.
+
+
+ ***Note**: The first number stands for the minimum stay on the
+ `StartDate` in the `DateRange` and the last
+
+ one stands for the `EndDate`. No limitation if not returned.*
+
+ '
+ example: '0,0,0,3,3,3,3,3,3,7,7,7,7,7,21,21,21'
+ MaxStay:
+ type: 'string'
+ description: "A comma-separated list of numbers that show the maximum number of
+ days a traveler can stay, one for every
+
+ day in the specified date range.
+
+
+ Valid values include 0-999, and 0 indicates no maximum for a given
+ day. The unit is always day.
+
+
+ ***Note**: The first number stands for the maximum stay on the
+ `StartDate` in the `DateRange` and the\
+
+ last one stands for the `EndDate`. No limitation if not returned.\n"
+ example: '0,0,0,31,31,31,371,370'
+ AvailabilityCalendarResponse:
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'There were some errors or events during the transaction, but the
+ API has still returned a response.
+
+
+ Container for all warnings.
+
+ '
+ items:
+ $ref: '#/components/schemas/LodgingWarning'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ AvailabilityCalendars:
+ type: 'array'
+ description: 'A list of the calendar entities.'
+ items:
+ $ref: '#/components/schemas/AvailabilityCalendar'
+ example: "{
+
+ \ \"TransactionId\": \"f06edfa3-27f4-44e6-838c-b8dd3d0a3210\",
+
+ \ \"AvailabilityCalendars\": [
+
+ \ {
+
+ \ \"PropertyId\": \"74041788\",
+
+ \ \"DateRange\": {
+
+ \ \"StartDate\": \"2022-02-25\",
+
+ \ \"EndDate\": \"2025-02-24\"
+
+ \ },
+
+ \ \"Availability\":\"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\
+ NNNNNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\",
+
+ \ \"ChangeOver\":
+ \"OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXICCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\",
+
+ \ \"MinStay\":
+ \"3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\",
+
+ \ \"MaxStay\":
+ \"379,378,377,376,375,374,373,372,371,370,369,368,367,731,730,729,728,7\
+ 27,726,725,724,723,722,721,720,719,718,717,716,715,714,713,712,711,710,\
+ 709,708,707,706,705,704,703,702,701,700,699,698,697,696,695,694,693,692\
+ ,691,690,689,688,687,686,685,684,683,682,681,680,679,678,677,676,675,67\
+ 4,673,672,671,670,669,668,667,666,665,664,663,662,661,660,659,658,657,6\
+ 56,655,654,653,652,651,650,649,648,647,646,645,644,643,642,641,640,639,\
+ 638,637,636,635,634,633,632,631,630,629,628,627,626,625,624,623,622,621\
+ ,620,619,618,617,616,615,614,613,612,611,610,609,608,607,606,605,604,60\
+ 3,602,601,600,599,598,597,596,595,594,593,592,591,590,589,588,587,586,5\
+ 85,584,583,582,581,580,579,578,577,576,575,574,573,572,571,570,569,568,\
+ 567,566,565,564,563,562,561,560,559,558,557,556,555,554,553,552,551,550\
+ ,549,548,547,546,545,544,543,542,541,540,539,538,537,536,535,534,533,53\
+ 2,531,530,529,528,527,526,525,524,523,522,521,520,519,518,517,516,515,5\
+ 14,513,512,511,510,509,508,507,506,505,504,503,502,501,500,499,498,497,\
+ 496,495,494,493,492,491,490,489,488,487,486,485,484,483,482,481,480,479\
+ ,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,462,46\
+ 1,460,459,458,457,456,455,454,453,452,451,450,449,448,447,446,445,444,4\
+ 43,442,441,440,439,438,437,436,435,434,433,432,431,430,429,428,427,426,\
+ 425,424,423,422,421,420,419,418,417,416,415,414,413,412,411,410,409,408\
+ ,407,406,405,404,403,402,401,400,399,398,397,396,395,394,393,392,391,39\
+ 0,389,388,387,386,385,384,383,382,381,380,379,378,377,376,375,374,373,3\
+ 72,371,370,369,368,367,731,730,729,728,727,726,725,724,723,722,721,720,\
+ 719,718,717,716,715,714,713,712,711,710,709,708,707,706,705,704,703,702\
+ ,701,700,699,698,697,696,695,694,693,692,691,690,689,688,687,686,685,68\
+ 4,683,682,681,680,679,678,677,676,675,674,673,672,671,670,669,668,667,6\
+ 66,665,664,663,662,661,660,659,658,657,656,655,654,653,652,651,650,649,\
+ 648,647,646,645,644,643,642,641,640,639,638,637,636,635,634,633,632,631\
+ ,630,629,628,627,626,625,624,623,622,621,620,619,618,617,616,615,614,61\
+ 3,612,611,610,609,608,607,606,605,604,603,602,601,600,599,598,597,596,5\
+ 95,594,593,592,591,590,589,588,587,586,585,584,583,582,581,580,579,578,\
+ 577,576,575,574,573,572,571,570,569,568,567,566,565,564,563,562,561,560\
+ ,559,558,557,556,555,554,553,552,551,550,549,548,547,546,545,544,543,54\
+ 2,541,540,539,538,537,536,535,534,533,532,531,530,529,528,527,526,525,5\
+ 24,523,522,521,520,519,518,517,516,515,514,513,512,511,510,509,508,507,\
+ 506,505,504,503,502,501,500,499,498,497,496,495,494,493,492,491,490,489\
+ ,488,487,486,485,484,483,482,481,480,479,478,477,476,475,474,473,472,47\
+ 1,470,469,468,467,466,465,464,463,462,461,460,459,458,457,456,455,454,4\
+ 53,452,451,450,449,448,447,446,445,444,443,442,441,440,439,438,437,436,\
+ 435,434,433,432,431,430,429,428,427,426,425,424,423,422,421,420,419,418\
+ ,417,416,415,414,413,412,411,410,409,408,407,406,405,404,403,402,401,40\
+ 0,399,398,397,396,395,394,393,392,391,390,389,388,387,386,385,384,383,3\
+ 82,381,380,379,378,377,376,375,374,373,372,371,370,369,368,367,0,0,0,0,\
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\
+ ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\
+ ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\
+ ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\
+ ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\
+ ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\",
+
+ \ \"MinPriorNotify\":
+ \"1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\" \
+ \
+
+ \ },
+
+ \ {
+
+ \ \"PropertyId\": \"1\",
+
+ \ \"DateRange\": {
+
+ \ \"StartDate\": \"2022-02-27\",
+
+ \ \"EndDate\": \"2023-11-04\"
+
+ \ },
+
+ \ \"Availability\":
+ \"NNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\"
+
+ \ },
+
+ \ {
+
+ \ \"PropertyId\": \"123\",
+
+ \ \"DateRange\": {
+
+ \ \"StartDate\": \"2022-02-27\",
+
+ \ \"EndDate\": \"2023-11-04\"
+
+ \ },
+
+ \ \"Availability\":
+ \"NNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YNNNNNYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\
+ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\",
+
+ \ \"ChangeOver\":
+ \"XXXXXXIIICCCCCCCCCCCCCCCCCCCCXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCOO\
+ OXXXXXIIICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXX\
+ XXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXXXXCXXXX\
+ XXCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\
+ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCOOO\",
+
+ \ \"MinStay\":
+ \"0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,7,6,0,0,0,0,0,7\
+ ,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,5,0,0,0,0,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,\
+ 0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,9,8,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0\
+ ,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,\
+ 0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0\
+ ,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,0,7,0,0,0,0,0,\
+ 0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3\
+ ,3,3,3,3,3,3,3,3,3,3,0,0,0\",
+
+ \ \"MaxStay\":
+ \"0,0,0,0,0,0,21,21,20,19,18,17,16,21,20,19,18,17,16,15,21,20,19,18,17,\
+ 16,15,21,20,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0\
+ ,0,0,0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2\
+ 1,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,\
+ 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,19,18,17,16,15,14,13,12\
+ ,11,10,9,8,7,6,5,4,3,0,0,0,0,0,0,0,0,21,21,21,21,21,21,21,21,21,21,21,2\
+ 1,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,\
+ 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21\
+ ,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2\
+ 1,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,\
+ 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21\
+ ,21,21,21,21,20,19,18,17,16,15,21,20,19,18,17,16,15,21,20,19,18,17,16,1\
+ 5,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,\
+ 0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,\
+ 0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,2\
+ 1,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,21,21,21,\
+ 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21\
+ ,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2\
+ 1,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,\
+ 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21\
+ ,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,2\
+ 1,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,\
+ 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20\
+ ,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,0,0,0\",
+
+ \ \"MinPriorNotify\":
+ \"1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,\
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1\
+ ,1,1,1,1,1,1,1,1,1,1,1,1,1\"
+
+ \ }
+
+ \ ]
+
+ }"
+ AdditionalFee:
+ required:
+ - 'Amount'
+ - 'FinanceCategory'
+ - 'FinanceSubCategory'
+ - 'IsRequired'
+ type: 'object'
+ properties:
+ IsRequired:
+ type: 'boolean'
+ description: 'Indicates whether this additional fee is mandatory.'
+ example: true
+ FinanceCategory:
+ type: 'string'
+ description: 'Category of the fee / Coverages'
+ example: 'Fee'
+ FinanceSubCategory:
+ type: 'string'
+ description: 'Sub category of the fee / Coverages .'
+ example: 'Drop'
+ Amount:
+ $ref: '#/components/schemas/CarsMoney'
+ Description:
+ type: 'string'
+ description: 'Description of the fee.'
+ example: 'DropOffCharge'
+ Deductible:
+ $ref: '#/components/schemas/Deductible'
+ description: 'List of additional fees including both mandatory and optional
+ fees.such as young driver fee/drop off fee /CollisionDamageWaiver'
+ CarsAddress:
+ required:
+ - 'Address1'
+ - 'City'
+ - 'Country'
+ type: 'object'
+ properties:
+ Address1:
+ type: 'string'
+ description: 'Street Number, Street Name, or PO Box'
+ example: '724 Pine St'
+ Address2:
+ type: 'string'
+ description: 'Apartment, Floor, Suite, Bldg # or more specific information about
+ Address1.'
+ example: 'Second Floor'
+ Suite:
+ type: 'string'
+ description: 'Suite/apartment number'
+ example: '123'
+ City:
+ type: 'string'
+ description: 'The city'
+ example: 'New York'
+ Province:
+ type: 'string'
+ description: 'The state or province'
+ example: 'NY'
+ Country:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'USA'
+ PostalCode:
+ type: 'string'
+ description: 'Zip/postal code'
+ example: '98004'
+ description: 'Address information'
+ CarsCancellationPolicy:
+ type: 'object'
+ properties:
+ Cancellable:
+ type: 'boolean'
+ description: 'Indicates if this car can be cancelled (free cancel or penalty
+ cancel)'
+ example: true
+ FreeCancellation:
+ type: 'boolean'
+ description: 'Indicates if this car may be cancelled without a penalty.'
+ example: true
+ FreeCancellationEndDateTime:
+ type: 'string'
+ description: 'Indicates the latest time that the car can be cancelled for free.'
+ format: 'date-time'
+ PenaltyRules:
+ type: 'array'
+ description: 'Container for penalty rules'
+ items:
+ $ref: '#/components/schemas/PenaltyRule'
+ NonCancellableDateTimeRange:
+ $ref: '#/components/schemas/NonCancellableDateTimeRange'
+ description: 'Cancellation Policy Container.'
+ Capacity:
+ required:
+ - 'AdultCount'
+ type: 'object'
+ properties:
+ AdultCount:
+ type: 'integer'
+ description: 'The typical number of adults that can fit comfortably in the car.'
+ format: 'int64'
+ example: 4
+ ChildCount:
+ type: 'integer'
+ description: 'The typical number of children that can fit comfortably in the car.'
+ format: 'int64'
+ example: 0
+ SmallLuggageCount:
+ type: 'integer'
+ description: 'The typical number of small pieces of luggage that fit in the
+ cargo space.'
+ format: 'int64'
+ example: 2
+ LargeLuggageCount:
+ type: 'integer'
+ description: 'The typical number of large pieces of luggage that fit in the
+ cargo space.'
+ format: 'int64'
+ example: 2
+ description: 'Capacity for car''s properties.'
+ Car:
+ required:
+ - 'CancellationPolicy'
+ - 'DropOffDetails'
+ - 'Id'
+ - 'PickupDetails'
+ - 'Price'
+ - 'Supplier'
+ - 'VehicleDetails'
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'Uniquely identifies a Car Offer.Note: since pay-online and
+ pay-at-the-counter Car Offers have the same associated Rate Code,
+ the Offer ID is the only unique identifier to differentiate between
+ the two offers when referencing or booking.'
+ example: 'ECAR-39--1Trip-SEAC005-SEAC005'
+ DataTimeStamp:
+ type: 'string'
+ description: 'DataTimeStamp'
+ format: 'date-time'
+ example: '2021-03-09T07:08:00Z'
+ OnlineCheckIn:
+ type: 'boolean'
+ description: 'Indicate whether the supplier supports online checkin'
+ example: true
+ SkipTheCounter:
+ type: 'boolean'
+ description: 'Indicate whether the supplier supports skip the counter'
+ example: true
+ VehicleDetails:
+ $ref: '#/components/schemas/VehicleDetails'
+ Supplier:
+ $ref: '#/components/schemas/Supplier'
+ PickupDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ DropOffDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/CarsLink'
+ description: 'A map of links to other Car APIs or Expedia websites.'
+ xml:
+ wrapped: true
+ RateDetails:
+ $ref: '#/components/schemas/RateDetails'
+ Price:
+ $ref: '#/components/schemas/Price'
+ ReferencePrice:
+ $ref: '#/components/schemas/CarsMoney'
+ AdditionalFees:
+ type: 'array'
+ description: 'List of additional fees including both mandatory and optional
+ fees.such as young driver fee/drop off fee /CollisionDamageWaiver'
+ items:
+ $ref: '#/components/schemas/AdditionalFee'
+ CancellationPolicy:
+ $ref: '#/components/schemas/CarsCancellationPolicy'
+ NoShowPenalty:
+ $ref: '#/components/schemas/PenaltyType'
+ Images:
+ type: 'array'
+ description: 'List of image resources of the car product.'
+ items:
+ $ref: '#/components/schemas/Image'
+ Rating:
+ $ref: '#/components/schemas/RatingWithoutDetails'
+ description: 'List of cars matching the search criteria.'
+ CarCategory:
+ required:
+ - 'Code'
+ - 'Value'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Car category code.'
+ example: 'M'
+ Value:
+ type: 'string'
+ description: 'Car category value.'
+ example: 'Mini'
+ description: 'Car category. Please find list of Car Type Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115008631767'
+ CarListingsResponse:
+ required:
+ - 'CarCount'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for warning codes'
+ items:
+ $ref: '#/components/schemas/CarsWarning'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for this transaction.'
+ example: '1111111-2222-3333-4444-55555555555'
+ CarCount:
+ type: 'integer'
+ description: 'The number of cars offers returned in the response.'
+ format: 'int64'
+ example: 1
+ Cars:
+ type: 'array'
+ description: 'List of cars matching the search criteria.'
+ items:
+ $ref: '#/components/schemas/Car'
+ xml:
+ name: 'CarListingsResponse'
+ CarType:
+ required:
+ - 'Code'
+ - 'Value'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Car type code.'
+ example: 'C'
+ Value:
+ type: 'string'
+ description: 'Car type value.'
+ example: '2/4 Door'
+ description: 'Car type. Please find list of Car Type Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115002516708'
+ CarsCountry:
+ required:
+ - 'IsoCode2'
+ - 'IsoCode3'
+ - 'Name'
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'country name'
+ example: 'Ireland'
+ Code:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ IsoCode2:
+ type: 'string'
+ description: '2-letter code for the country'
+ example: 'IE'
+ IsoCode3:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ description: 'Container for disambiguation country information'
+ CarsDateRange:
+ required:
+ - 'EndDate'
+ - 'StartDate'
+ type: 'object'
+ properties:
+ StartDate:
+ type: 'string'
+ description: 'Start date at pickup location of the period.'
+ format: 'date'
+ example: '2021-06-27'
+ EndDate:
+ type: 'string'
+ description: 'End date at pickup location of the period.'
+ format: 'date'
+ example: '2021-06-28'
+ description: 'Date range of the period.'
+ DateTimePeriod:
+ required:
+ - 'DateRange'
+ type: 'object'
+ properties:
+ DateRange:
+ $ref: '#/components/schemas/CarsDateRange'
+ TimeRanges:
+ type: 'array'
+ description: 'A list of time range to indicate the operation hours of the date
+ range.'
+ items:
+ $ref: '#/components/schemas/TimeRange'
+ description: 'A List of date time periods to indicate the vendor business hours
+ for the pickup time.'
+ Deductible:
+ type: 'object'
+ properties:
+ ExcessAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ LiabilityAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ DeductibleAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'Indicate whether it is deductible'
+ Discount:
+ required:
+ - 'Code'
+ - 'Type'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Discount type. Supported values : CorpDiscount | Coupon.'
+ example: 'CorpDiscount'
+ Code:
+ type: 'string'
+ description: 'Discount code.'
+ example: 'G811490'
+ description: 'List of discount information.'
+ CarsDistance:
+ required:
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The number of miles/kilometers of the distance (specified by the
+ Unit).'
+ example: '75'
+ Unit:
+ type: 'string'
+ description: 'The unit (KM or MI) for the distance.'
+ example: 'KM'
+ Direction:
+ type: 'string'
+ description: 'The direction of the location from the search ''center''.Possible
+ values are: N,S,W,E,NW,NE,SW,SE'
+ example: 'N'
+ description: 'The extra distance information.'
+ ExtraCostPerDistance:
+ required:
+ - 'Cost'
+ - 'Distance'
+ type: 'object'
+ properties:
+ Distance:
+ $ref: '#/components/schemas/CarsDistance'
+ Cost:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'Extra cost for each increment of distance used.'
+ FuelAC:
+ required:
+ - 'Code'
+ - 'Value'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Car FuelAC code.'
+ example: 'D'
+ Value:
+ type: 'string'
+ description: 'Car FuelAC value.'
+ example: 'Diesel Air'
+ description: 'Car fuel type and whether Air Conditioning is included. Please
+ find list of Car Fuel AC Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115005378328'
+ CarsGeoLocation:
+ required:
+ - 'Latitude'
+ - 'Longitude'
+ type: 'object'
+ properties:
+ Latitude:
+ type: 'string'
+ description: 'Latitude of the location.'
+ example: '38.184978'
+ Longitude:
+ type: 'string'
+ description: 'Longitude of the location.'
+ example: '85.7412'
+ Obfuscated:
+ type: 'boolean'
+ description: 'Container for Geo location.'
+ Image:
+ required:
+ - 'Href'
+ - 'Size'
+ - 'Type'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Resource typeSupported values :Thumbnail - (70 pixels wide)Image -
+ (165 pixels wide)'
+ Size:
+ type: 'string'
+ description: 'Size of imageSupported values :s - (165 pixels wide)t - (70 pixels
+ wide)'
+ Href:
+ type: 'string'
+ description: 'URL for the image.'
+ description: 'List of image resources of the car product.'
+ CarsLink:
+ required:
+ - 'Href'
+ type: 'object'
+ properties:
+ Accept:
+ type: 'string'
+ description: 'Accept header.'
+ Method:
+ type: 'string'
+ description: 'HTTP method to connect.'
+ example: 'GET'
+ Href:
+ type: 'string'
+ description: 'HATEOAS URL to fetch details.'
+ description: 'A map of links to other Car APIs. possible link name: ApiBooking'
+ CarsLocation:
+ required:
+ - 'LocationId'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of location code (MULTICITY | METROCODE).'
+ example: 'MULTICITY'
+ Id:
+ type: 'string'
+ description: 'Expedia Region ID of the specified airport.'
+ example: '6139103'
+ Name:
+ type: 'string'
+ description: 'Location Name'
+ example: 'Seattle-Tacoma International Airport'
+ Code:
+ type: 'string'
+ description: 'Location Code'
+ example: 'SEA'
+ LocationId:
+ type: 'string'
+ description: 'Location id.'
+ example: 'SEAT001'
+ Address:
+ $ref: '#/components/schemas/CarsAddress'
+ PointOfInterest:
+ type: 'string'
+ GeoLocation:
+ $ref: '#/components/schemas/CarsGeoLocation'
+ Neighborhood:
+ $ref: '#/components/schemas/CarsNeighborhood'
+ RegionId:
+ type: 'integer'
+ description: 'RegionId the location resides in.'
+ format: 'int64'
+ example: 6200275
+ Country:
+ $ref: '#/components/schemas/CarsCountry'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ Mileage:
+ required:
+ - 'FreeDistance'
+ - 'FreeDistanceRatePeriod'
+ type: 'object'
+ properties:
+ FreeDistance:
+ $ref: '#/components/schemas/CarsDistance'
+ FreeDistanceRatePeriod:
+ type: 'string'
+ description: 'Rate period for free distance.'
+ example: 'Daily'
+ ExtraCostPerDistance:
+ $ref: '#/components/schemas/ExtraCostPerDistance'
+ description: 'A list of charges to be levied based on the mileage driven.'
+ CarsMoney:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'Price of Special equipment.'
+ CarsNeighborhood:
+ required:
+ - 'Id'
+ - 'Name'
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'Neighborhood id.'
+ example: '6160232'
+ Name:
+ type: 'string'
+ description: 'Neighborhood name.'
+ example: 'Le Pharo'
+ description: 'Geography entities which are typically contained within a city.
+ This includes the categories neighborhood and point of interest. Low
+ level regions are not a formally defined concept in the geography
+ model.'
+ NonCancellableDateTimeRange:
+ required:
+ - 'EndDateTime'
+ - 'StartDateTime'
+ type: 'object'
+ properties:
+ StartDateTime:
+ type: 'string'
+ description: 'The time of this non-cancellable window starts'
+ format: 'date-time'
+ EndDateTime:
+ type: 'string'
+ description: 'The time of this non-cancellable window ends'
+ format: 'date-time'
+ description: 'Container for non-cancellable date and time range element'
+ PenaltyRule:
+ required:
+ - 'EndDateTime'
+ - 'Penalty'
+ - 'StartDateTime'
+ type: 'object'
+ properties:
+ Penalty:
+ $ref: '#/components/schemas/PenaltyType'
+ StartDateTime:
+ type: 'string'
+ description: 'The time when this penalty window starts'
+ format: 'date-time'
+ EndDateTime:
+ type: 'string'
+ description: 'The time when this penalty window ends'
+ format: 'date-time'
+ description: 'Container for penalty rules'
+ PenaltyType:
+ required:
+ - 'Currency'
+ - 'Type'
+ - 'Value'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'What the penalty amount is based on. should be one of the
+ following values:AMOUNT : it means the user is charged a fixed
+ amount specified in the value node. Say 50$ for example.PERCENT : it
+ means the user is charged a percentage of the base rate/total
+ rate.PERDAY : it means the user is charged Per Day Price. For eg..,
+ if the value is 2, it means the penalty amount will the Per day
+ price of 2 days.'
+ Value:
+ type: 'string'
+ description: 'Value to indicate how many/much of the type listed above is going
+ to be charged as a penalty.'
+ example: '20.0'
+ Currency:
+ type: 'string'
+ description: 'The currency of the amount, only valid when Type=AMOUNT'
+ example: 'USD'
+ description: 'Container for no show penalty element'
+ Price:
+ required:
+ - 'TotalPrice'
+ type: 'object'
+ properties:
+ RatePeriodUnitPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ BasePrice:
+ $ref: '#/components/schemas/CarsMoney'
+ TaxesAndFees:
+ $ref: '#/components/schemas/CarsMoney'
+ TotalPriceDueAtBooking:
+ $ref: '#/components/schemas/CarsMoney'
+ TotalPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'Pricing information for the rental.'
+ RateDetails:
+ required:
+ - 'PrePay'
+ - 'RatePeriod'
+ type: 'object'
+ properties:
+ RatePeriod:
+ type: 'string'
+ description: 'Rate period. Supported values: Daily,Weekly,Monthly,Trip,Weekend'
+ example: 'Daily'
+ RateCode:
+ type: 'string'
+ description: 'Rate plan identifier.'
+ example: 'A3D10'
+ PrePay:
+ type: 'boolean'
+ description: 'Indicates whether this reservation should be paid at the time of
+ booking (true) or at time of rental return (false).'
+ example: false
+ CreditCardRequired:
+ type: 'boolean'
+ description: 'Indicates whether credit card is required for booking.'
+ example: false
+ Discounts:
+ type: 'array'
+ description: 'List of discount information.'
+ items:
+ $ref: '#/components/schemas/Discount'
+ Mileages:
+ type: 'array'
+ description: 'A list of charges to be levied based on the mileage driven.'
+ items:
+ $ref: '#/components/schemas/Mileage'
+ MobileRate:
+ type: 'boolean'
+ description: 'Indicates whether car offer is mobile rate.'
+ example: true
+ description: 'The rate detail information for a car offer.'
+ Rating:
+ required:
+ - 'RatingPercentage'
+ - 'RatingCount'
+ type: 'object'
+ properties:
+ RatingPercentage:
+ type: 'string'
+ description: 'The percentage of rating.'
+ example: '87%'
+ RatingCount:
+ type: 'string'
+ description: 'The total count of rating.'
+ example: '2092'
+ RatingDetails:
+ type: 'array'
+ description: 'List of all the details of rating.'
+ items:
+ $ref: '#/components/schemas/RatingDetails'
+ description: 'The rating of the car being offered.'
+ RatingWithoutDetails:
+ required:
+ - 'RatingPercentage'
+ - 'RatingCount'
+ type: 'object'
+ properties:
+ RatingPercentage:
+ type: 'string'
+ description: 'The percentage of rating.'
+ example: '87%'
+ RatingCount:
+ type: 'string'
+ description: 'The total count of rating.'
+ example: '2092'
+ description: 'The rating of the car being offered.'
+ RatingDetails:
+ required:
+ - 'Category'
+ - 'Percentage'
+ type: 'object'
+ properties:
+ Category:
+ type: 'string'
+ description: 'The category of rating detail.'
+ example: 'Pick-up location'
+ Percentage:
+ type: 'string'
+ description: 'The percentage of rating detail category.'
+ example: '98'
+ description: 'List of all the details of rating.'
+ Supplier:
+ required:
+ - 'Code'
+ - 'Id'
+ - 'Name'
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'Supplier ID.'
+ example: '3'
+ Name:
+ type: 'string'
+ description: 'Supplier Name.'
+ example: 'Advantage Rent-A-Car'
+ Code:
+ type: 'string'
+ description: 'Supplier Code.'
+ example: 'AD'
+ LogoImageUrl:
+ type: 'string'
+ description: 'Supplier Logo Image Url.'
+ example: 'https://media.int.expedia.com/int/cars/logos/NU.png'
+ description: 'The supplier of the car being offered.'
+ TimeRange:
+ required:
+ - 'EndTime'
+ - 'StartTime'
+ type: 'object'
+ properties:
+ StartTime:
+ type: 'string'
+ description: 'Start time at pickup location of the date range.'
+ format: 'time'
+ example: '07:00:00'
+ EndTime:
+ type: 'string'
+ description: 'End time at pickup location of the date range.'
+ format: 'time'
+ example: '17:00:00'
+ description: 'A list of time range to indicate the operation hours of the date range.'
+ TransmissionDrive:
+ required:
+ - 'Code'
+ - 'Value'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Car transmission and drive code.'
+ example: 'M'
+ Value:
+ type: 'string'
+ description: 'Car transmission and drive value.'
+ example: 'Manual AWD'
+ description: 'Car transmission and drive. Please find list of Car Transmission
+ Drive Codes in
+ https://expediaintegration.zendesk.com/hc/en-us/articles/115005380028'
+ VehicleDetails:
+ required:
+ - 'CarCategory'
+ - 'CarClass'
+ - 'CarType'
+ - 'FuelAC'
+ - 'TransmissionDrive'
+ type: 'object'
+ properties:
+ Make:
+ type: 'string'
+ description: 'Car manufacturer and model.'
+ example: 'Kia Rio'
+ CarClass:
+ type: 'string'
+ description: 'Car category and type.'
+ example: 'Economy 2/4Door Car'
+ MinDoors:
+ type: 'integer'
+ description: 'Minimal car door count.'
+ format: 'int32'
+ example: 2
+ MaxDoors:
+ type: 'integer'
+ description: 'Maximal car door count.'
+ format: 'int32'
+ example: 4
+ FuelLevel:
+ type: 'string'
+ description: 'Car fuel information.'
+ example: 'Full to Full'
+ CarCategory:
+ $ref: '#/components/schemas/CarCategory'
+ CarType:
+ $ref: '#/components/schemas/CarType'
+ TransmissionDrive:
+ $ref: '#/components/schemas/TransmissionDrive'
+ FuelAC:
+ $ref: '#/components/schemas/FuelAC'
+ Capacity:
+ $ref: '#/components/schemas/Capacity'
+ description: 'Specific information for a car.'
+ VendorLocationDetails:
+ required:
+ - 'DateTime'
+ - 'Location'
+ type: 'object'
+ properties:
+ DateTime:
+ type: 'string'
+ description: 'Pickup date and time.'
+ format: 'date-time'
+ ShuttleCategory:
+ type: 'string'
+ description: 'The category of shuttle from the terminal to the rental car
+ counter. Please find list of Shuttle Categories in the Related Links
+ Section below.'
+ example: 'AirportShuttleToCounterAndCar'
+ Location:
+ $ref: '#/components/schemas/CarsLocation'
+ Distance:
+ $ref: '#/components/schemas/CarsDistance'
+ OpenSchedule:
+ type: 'array'
+ description: 'A List of date time periods to indicate the vendor business hours
+ for the pickup time.'
+ items:
+ $ref: '#/components/schemas/DateTimePeriod'
+ description: 'Drop off information'
+ CarsWarning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Standardized warning code.'
+ example: 'INVALID_CORPORATE_DISCOUNT_CODE'
+ Description:
+ type: 'string'
+ description: 'Standardized warning description message.'
+ example: 'The Corporate DiscountCode ''811490'' is unavailable, but we found
+ other rates for you.'
+ OriginalPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ NewPrice:
+ $ref: '#/components/schemas/CarsMoney'
+ ChangedAmount:
+ $ref: '#/components/schemas/CarsMoney'
+ ChangedPercentage:
+ type: 'string'
+ description: 'The changed percentage.
+
+ In the sample 2.97 means the changed percentage is 2.97%.'
+ example: '2.97'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/CarsLink'
+ xml:
+ wrapped: true
+ description: 'Container for warning codes'
+ CarsError:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ DetailCode:
+ type: 'string'
+ description: 'Detailed error code describing the issue.'
+ example: 'MULTIPLE_AMBIGUOUS_LOCATION'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'Multiple pickup locations found. '
+ LocationKeyword:
+ type: 'string'
+ description: 'The requested location that caused the error.'
+ example: 'Portland. '
+ LocationOptions:
+ type: 'array'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the request. '
+ items:
+ $ref: '#/components/schemas/CarsLocationOption'
+ description: 'Container for error list.'
+ CarsErrors:
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/CarsError'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ CarsLocationOption:
+ required:
+ - 'Locations'
+ - 'RequestedLocation'
+ type: 'object'
+ properties:
+ RequestedLocation:
+ type: 'string'
+ description: 'Location used in partner request.'
+ example: 'Paris'
+ Locations:
+ type: 'array'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ items:
+ $ref: '#/components/schemas/CarsLocation'
+ Type:
+ type: 'string'
+ description: 'Type of the location.'
+ example: 'TRAINSTATION'
+ RegionId:
+ type: 'string'
+ description: 'RegionId the location resides in.'
+ example: '6200275'
+ ShortName:
+ type: 'string'
+ description: 'The name of the location which matches the location keyword.'
+ example: 'Dublin Connolly Station'
+ AirportCode:
+ type: 'string'
+ description: 'Indicates the nearest major airport to the location.'
+ example: 'DUB'
+ Address:
+ type: 'string'
+ description: 'The address of the location.'
+ example: 'Dublin Connolly Station, Ireland'
+ Country:
+ $ref: '#/components/schemas/CarsCountry'
+ GeoLocation:
+ $ref: '#/components/schemas/CarsGeoLocation'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the request. '
+ DisambiguationResponse:
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/CarsError'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'ec007d1c-8d9d-4ed5-a880-da5b477d8c6c'
+ xml:
+ name: 'DisambiguationResponse'
+ CarDetails:
+ required:
+ - 'CancellationPolicy'
+ - 'DropOffDetails'
+ - 'PickupDetails'
+ - 'Price'
+ - 'Supplier'
+ - 'VehicleDetails'
+ type: 'object'
+ properties:
+ OnlineCheckIn:
+ type: 'boolean'
+ description: 'Indicate whether the supplier supports online checkin'
+ example: true
+ SkipTheCounter:
+ type: 'boolean'
+ description: 'Indicate whether the supplier supports skip the counter'
+ example: true
+ VehicleDetails:
+ $ref: '#/components/schemas/VehicleDetails'
+ Supplier:
+ $ref: '#/components/schemas/Supplier'
+ PickupDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ DropOffDetails:
+ $ref: '#/components/schemas/VendorLocationDetails'
+ RateDetails:
+ $ref: '#/components/schemas/RateDetails'
+ Price:
+ $ref: '#/components/schemas/Price'
+ ReferencePrice:
+ $ref: '#/components/schemas/CarsMoney'
+ AdditionalFees:
+ type: 'array'
+ description: 'List of additional fees including both mandatory and optional
+ fees.such as young driver fee/drop off fee /CollisionDamageWaiver'
+ items:
+ $ref: '#/components/schemas/AdditionalFee'
+ TaxesAndFeesDetails:
+ type: 'array'
+ description: 'List of TaxesAndFees Details'
+ items:
+ $ref: '#/components/schemas/TaxesAndFees'
+ ExtraFeesDetails:
+ type: 'array'
+ description: 'List of ExtraFeesDetails'
+ items:
+ $ref: '#/components/schemas/ExtraFees'
+ SpecialEquipments:
+ type: 'array'
+ description: 'Description and costs of any optional special equipment that may
+ be rented with the car.'
+ items:
+ $ref: '#/components/schemas/Equipment'
+ RentalLimits:
+ $ref: '#/components/schemas/RentalLimits'
+ CancellationPolicy:
+ $ref: '#/components/schemas/CarsCancellationPolicy'
+ NoShowPenalty:
+ $ref: '#/components/schemas/PenaltyType'
+ CarPolicies:
+ type: 'array'
+ description: 'A list of policies that apply to this car rental.'
+ items:
+ $ref: '#/components/schemas/CarPolicy'
+ Images:
+ type: 'array'
+ description: 'List of image resources of the car product.'
+ items:
+ $ref: '#/components/schemas/Image'
+ Rating:
+ $ref: '#/components/schemas/Rating'
+ description: 'Details of requested car.'
+ CarDetailsResponse:
+ required:
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for warning codes'
+ items:
+ $ref: '#/components/schemas/CarsWarning'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for this transaction.'
+ example: '1111111-2222-3333-4444-55555555555'
+ CarDetails:
+ $ref: '#/components/schemas/CarDetails'
+ ValidFormsOfPayment:
+ type: 'array'
+ description: 'List of all the forms of payment that will be accepted for the
+ booking of this rental transaction.'
+ items:
+ $ref: '#/components/schemas/CarsValidFormsOfPayment'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/CarsLink'
+ description: 'A map of links to other Car APIs. possible link name: ApiBooking'
+ xml:
+ wrapped: true
+ xml:
+ name: 'CarDetailsResponse'
+ CarPolicy:
+ required:
+ - 'CategoryCode'
+ type: 'object'
+ properties:
+ CategoryCode:
+ type: 'string'
+ description: 'The category that this policy applies to (e.g. cancellation,
+ drivers license requirements, driver age requirements) '
+ example: 'Guarantee'
+ PolicyText:
+ type: 'string'
+ description: 'The raw text of the policy.This is generally localized into the
+ requested language, but may be English if no other translations are
+ available.'
+ example: 'Credit card required.'
+ description: 'A list of policies that apply to this car rental.'
+ Duration:
+ required:
+ - 'Count'
+ - 'Unit'
+ type: 'object'
+ properties:
+ Unit:
+ type: 'string'
+ description: 'The unit for minimum amount of time for a rental.'
+ example: 'Day'
+ Count:
+ type: 'integer'
+ description: 'The minimum number of units that qualify for minimum amount of
+ time for a rental.'
+ format: 'int64'
+ example: 1
+ description: 'The maximum amount of time for a rental that still qualifies for
+ this rate.This may or may not be the same as the current rental
+ duration.'
+ Equipment:
+ required:
+ - 'Code'
+ - 'Name'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Special equipment code'
+ example: 'BabyChildSeat'
+ Name:
+ type: 'string'
+ description: 'Special equipment name'
+ example: 'Baby Child Seat'
+ RatePeriod:
+ type: 'string'
+ description: 'Unit indicating the price of special equipment. Support
+ value:Trip,Daily'
+ example: 'Trip'
+ Price:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'Description and costs of any optional special equipment that may
+ be rented with the car.'
+ ExtraFees:
+ required:
+ - 'Amount'
+ - 'Unit'
+ - 'UnitCount'
+ type: 'object'
+ properties:
+ Unit:
+ type: 'string'
+ description: 'Rate period beyond the base rate. Supported values: ExtraHourly,
+ ExtraDaily'
+ example: 'ExtraHourly'
+ UnitCount:
+ type: 'integer'
+ description: 'Numbers of period'
+ format: 'int64'
+ example: 2
+ Amount:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'List of ExtraFeesDetails'
+ RentalLimits:
+ required:
+ - 'MaxDuration'
+ - 'MinDuration'
+ type: 'object'
+ properties:
+ MinDuration:
+ $ref: '#/components/schemas/Duration'
+ MaxDuration:
+ $ref: '#/components/schemas/Duration'
+ description: 'Limitations that are part of this rental agreement.'
+ TaxesAndFees:
+ required:
+ - 'Amount'
+ - 'Description'
+ type: 'object'
+ properties:
+ Description:
+ type: 'string'
+ description: 'TaxesAndFees description'
+ example: 'Rental, CONSOLIDATED FACILITY CHG 4.00/DAY '
+ Amount:
+ $ref: '#/components/schemas/CarsMoney'
+ description: 'List of TaxesAndFees Details'
+ CarsValidFormsOfPayment:
+ required:
+ - 'BrandName'
+ - 'PaymentMethod'
+ - 'PaymentSubMethod'
+ type: 'object'
+ properties:
+ PaymentMethod:
+ type: 'string'
+ description: 'Method of payment'
+ example: 'CreditCard'
+ PaymentSubMethod:
+ type: 'string'
+ description: 'Sub method of payment'
+ example: 'American Express'
+ BrandName:
+ type: 'string'
+ description: 'The brand name of the payment sub-method to be displayed to the
+ customer. In many cases it will be the same as the payment
+ sub-method, but "Visa/Carte Bleue" and "Visa/Delta are some of the
+ exceptions.'
+ example: 'American Express'
+ description: 'List of all the forms of payment that will be accepted for the
+ booking of this rental transaction.'
+ APIMError:
+ title: 'APIMError'
+ properties:
+ message:
+ type: 'string'
+ PresignedUrlResponse:
+ type: 'object'
+ properties:
+ transactionId:
+ type: 'string'
+ description: 'Unique identifier for each API response.'
+ error:
+ $ref: '#/components/schemas/Fault'
+ warning:
+ $ref: '#/components/schemas/Fault'
+ bestMatchedFile:
+ $ref: '#/components/schemas/FileInfo'
+ otherFileOptions:
+ type: 'array'
+ items:
+ $ref: '#/components/schemas/FileInfo'
+ description: 'Container for file Pre-signed download URL and informations.'
+ FileInfo:
+ type: 'object'
+ properties:
+ partner:
+ nullable: true
+ type: 'string'
+ description: 'The partner associated with the file. List of partners: `Bing`,
+ `Criteo`, `Facebook`, `Google`, `Retarget`, `Snapchat`.'
+ brand:
+ nullable: true
+ type: 'string'
+ description: 'The brand associated with the file content. List of brand:
+ `Expedia`, `Hotels`, `Hotwire`, `Vrbo`, `HomeAway`, `Abritel`,
+ `Bookabach`, `Stayz`, `Ebbokers`, `Travalocity`, `Orbitz`, `Wotif`.'
+ fileContentType:
+ nullable: true
+ type: 'string'
+ description: 'The type associated with the file content. List of types:
+ `Amenities`, `Descriptions`, `Images`, `Listings`, `Locations`,
+ `Policies`, `Regions`, `Reviews`, `Summary`, `VacationRental`'
+ locale:
+ nullable: true
+ type: 'string'
+ description: 'The locale associated with the file content.'
+ fileName:
+ type: 'string'
+ description: 'File name.'
+ size:
+ $ref: '#/components/schemas/FileSize'
+ fileLastUpdated:
+ type: 'string'
+ description: 'The time about the file last updated. The format is
+ uuuu-MM-dd''T''HH:mm:ss.SSSX'
+ downloadUrl:
+ type: 'string'
+ description: 'Pre-signed URL is a self signed URL generated for a resource in S3
+ with a set expiration time.'
+ downloadUrlExpires:
+ type: 'string'
+ description: 'The time about the download Url expires. The format is
+ uuuu-MM-dd''T''HH:mm:ss.SSSX'
+ filterConditions:
+ $ref: '#/components/schemas/FilterConditions'
+ bestMatchedLink:
+ $ref: '#/components/schemas/SdpLink'
+ Fault:
+ type: 'object'
+ description: 'API returned information.'
+ properties:
+ code:
+ type: 'string'
+ description: 'Fault code.'
+ description:
+ type: 'string'
+ description: 'Fault description.'
+ FileSize:
+ type: 'object'
+ description: 'The information about the file size.'
+ properties:
+ unit:
+ type: 'string'
+ enum:
+ - 'KB'
+ - 'MB'
+ - 'GB'
+ description: 'The unit about the file size.'
+ value:
+ type: 'integer'
+ format: 'int64'
+ description: 'The value about the file size.'
+ FilterConditions:
+ nullable: true
+ type: 'object'
+ description: 'Container filter condition for the filtered file.
+ [Filters](https://confluence.expedia.biz/display/EWS/Filtered+Feed+File+Generation+Schedule+and+Access#FilteredFeedFileGenerationScheduleandAccess-Filters)'
+ properties:
+ pointOfSupply:
+ type: 'string'
+ description: 'List of filter condition for PointOfSupplies: `US`,
+ `AT`,`BR`,`CA`,`FR`,`DE`,`GR`,`IT`, `JP`,`KR`,`MX`,`PT`,`ES`,`TR`,
+ `AE`,`GB`.'
+ brand:
+ type: 'string'
+ description: 'List of filter condition for Brands: `VRBO`.'
+ structureType:
+ type: 'string'
+ description: 'List of filter condition for StructureTypes: `VR`, `CONVENTIONAL`.'
+ SdpLink:
+ nullable: true
+ type: 'object'
+ description: 'Contains link information, including link address, request method.
+ Only provided if FileInfo is in OtherFileOptions.'
+ properties:
+ href:
+ type: 'string'
+ description: 'a link address.'
+ method:
+ type: 'string'
+ description: 'Request method, it will support `GET`, `POST`, `DELETE` and `PUT`
+ etc...'
+ SdpAPIMError:
+ type: 'object'
+ description: 'Error from the APIM.'
+ properties:
+ message:
+ type: 'string'
+ description: 'Error from the APIM.'
+ ActivitiesMoney:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ description: 'Container for the discount amount.'
+ ActivitiesPrice:
+ required:
+ - 'TotalRate'
+ type: 'object'
+ properties:
+ Category:
+ type: 'string'
+ description: 'Type of passenger.
+
+ Values supported are:
+
+ ADULT | SENIOR | CHILD'
+ example: 'ADULT'
+ TotalRate:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalTaxesAndFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ ReferencePrice:
+ $ref: '#/components/schemas/ReferencePrice'
+ Savings:
+ $ref: '#/components/schemas/Savings'
+ description: 'The price of the offer'
+ ReferencePrice:
+ required:
+ - 'TotalRate'
+ type: 'object'
+ properties:
+ TotalRate:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ TotalTaxesAndFees:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ description: 'Container for the reference price used for strike out display.'
+ Restrictions:
+ required:
+ - 'Max'
+ - 'Min'
+ - 'Type'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Type of the Restriction.'
+ example: 'AGE'
+ Max:
+ type: 'string'
+ description: 'Maximum value allowed for the restriction type.'
+ example: '255'
+ Min:
+ type: 'string'
+ description: 'Minimum value allowed for the restriction type.'
+ example: '9'
+ Description:
+ type: 'string'
+ description: 'The text to describe the restriction.'
+ example: '9+ years'
+ description: 'Container of the Restrictions associated to this ticket.'
+ Savings:
+ required:
+ - 'Amount'
+ - 'Percentage'
+ type: 'object'
+ properties:
+ Percentage:
+ type: 'integer'
+ description: 'The percentage of the price that has been discounted off the
+ regular price for the current activity.'
+ format: 'int32'
+ example: 10
+ Amount:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ description: 'Container of savings information.'
+ Ticket:
+ required:
+ - 'Code'
+ - 'Count'
+ - 'Id'
+ - 'TicketPrice'
+ type: 'object'
+ properties:
+ Id:
+ type: 'integer'
+ description: 'The numerical identifier for the ticket.'
+ format: 'int32'
+ example: 6429
+ Code:
+ type: 'string'
+ description: 'The code for the ticket.
+
+ Values supported are:
+
+ Adult
+
+ Traveler
+
+ Child
+
+ Group
+
+ Senior
+
+ Infant
+
+ Student'
+ example: 'Adult'
+ Count:
+ type: 'integer'
+ description: 'The number of each ticket type to be booked.'
+ format: 'int32'
+ example: 1
+ Restrictions:
+ $ref: '#/components/schemas/Restrictions'
+ TicketPrice:
+ $ref: '#/components/schemas/ActivitiesPrice'
+ description: 'The list of Ticket information.'
+ ActivitiesAddress:
+ type: 'object'
+ properties:
+ Address1:
+ type: 'string'
+ description: 'Street Number, Street Name, or PO Box.'
+ example: '724 Pine St'
+ Address2:
+ type: 'string'
+ description: 'Apartment, Floor, Suite, Bldg'
+ example: 'Second Floor'
+ Suite:
+ type: 'string'
+ description: 'Suite/apartment number'
+ example: '123'
+ City:
+ type: 'string'
+ description: 'The city'
+ example: 'New York'
+ Province:
+ type: 'string'
+ description: 'The state or province.'
+ example: 'NY'
+ Country:
+ type: 'string'
+ description: '3-letter code for the country.'
+ example: 'USA'
+ PostalCode:
+ type: 'string'
+ description: 'Zip/postal code.'
+ example: '98004'
+ description: 'Address information'
+ ActivitiesCountry:
+ required:
+ - 'IsoCode2'
+ - 'IsoCode3'
+ - 'Name'
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'country name'
+ example: 'Ireland'
+ Code:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ IsoCode2:
+ type: 'string'
+ description: '2-letter code for the country'
+ example: 'IE'
+ IsoCode3:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ description: 'Container for disambiguation country information'
+ ActivitiesError:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ DetailCode:
+ type: 'string'
+ description: 'Detailed error code describing the issue.'
+ example: 'MULTIPLE_AMBIGUOUS_LOCATION'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'Multiple pickup locations found. '
+ LocationKeyword:
+ type: 'string'
+ description: 'The requested location that caused the error.'
+ example: 'Portland. '
+ LocationOptions:
+ type: 'array'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the request. '
+ items:
+ $ref: '#/components/schemas/ActivitiesLocationOption'
+ description: 'Container for error list.'
+ ActivitiesErrors:
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/ActivitiesError'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ ActivitiesGeoLocation:
+ required:
+ - 'Latitude'
+ - 'Longitude'
+ type: 'object'
+ properties:
+ Latitude:
+ type: 'string'
+ description: 'Latitude of the location.'
+ example: '38.184978'
+ Longitude:
+ type: 'string'
+ description: 'Longitude of the location.'
+ example: '85.7412'
+ Obfuscated:
+ type: 'boolean'
+ description: 'Geographic information'
+ ActivitiesLocation:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of location code (MULTICITY | METROCODE).'
+ example: 'MULTICITY'
+ Id:
+ type: 'string'
+ description: 'Expedia Region ID of the specified airport.'
+ example: '6139103'
+ Name:
+ type: 'string'
+ description: 'Location Name'
+ example: 'Seattle-Tacoma International Airport'
+ Code:
+ type: 'string'
+ description: 'Location Code'
+ example: 'SEA'
+ LocationId:
+ type: 'string'
+ description: 'Location id.'
+ example: 'SEAT001'
+ Address:
+ $ref: '#/components/schemas/ActivitiesAddress'
+ PointOfInterest:
+ type: 'string'
+ GeoLocation:
+ $ref: '#/components/schemas/ActivitiesGeoLocation'
+ Neighborhood:
+ $ref: '#/components/schemas/ActivitiesNeighborhood'
+ RegionId:
+ type: 'integer'
+ description: 'RegionId the location resides in.'
+ format: 'int64'
+ example: 6200275
+ Country:
+ $ref: '#/components/schemas/ActivitiesCountry'
+ description: 'List of location(s) where the activity will happen.'
+ ActivitiesLocationOption:
+ required:
+ - 'Locations'
+ - 'RequestedLocation'
+ type: 'object'
+ properties:
+ RequestedLocation:
+ type: 'string'
+ description: 'Location used in partner request.'
+ example: 'Paris'
+ Locations:
+ type: 'array'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ items:
+ $ref: '#/components/schemas/ActivitiesLocation'
+ Type:
+ type: 'string'
+ description: 'Type of the location.'
+ example: 'TRAINSTATION'
+ RegionId:
+ type: 'string'
+ description: 'RegionId the location resides in.'
+ example: '6200275'
+ ShortName:
+ type: 'string'
+ description: 'The name of the location which matches the location keyword.'
+ example: 'Dublin Connolly Station'
+ AirportCode:
+ type: 'string'
+ description: 'Indicates the nearest major airport to the location.'
+ example: 'DUB'
+ Address:
+ type: 'string'
+ description: 'The address of the location.'
+ example: 'Dublin Connolly Station, Ireland'
+ Country:
+ $ref: '#/components/schemas/ActivitiesCountry'
+ GeoLocation:
+ $ref: '#/components/schemas/ActivitiesGeoLocation'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the request. '
+ ActivitiesNeighborhood:
+ required:
+ - 'Id'
+ - 'Name'
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'Neighborhood id.'
+ example: '6160232'
+ Name:
+ type: 'string'
+ description: 'Neighborhood name.'
+ example: 'Le Pharo'
+ description: 'Geography entities which are typically contained within a city.
+ This includes the categories neighborhood and point of interest. Low
+ level regions are not a formally defined concept in the geography
+ model.'
+ Activity:
+ required:
+ - 'Categories'
+ - 'Description'
+ - 'Duration'
+ - 'FreeCancellation'
+ - 'Id'
+ - 'Media'
+ - 'Price'
+ - 'Supplier'
+ - 'Title'
+ type: 'object'
+ properties:
+ Id:
+ type: 'integer'
+ description: 'The numerical identifier for this particular activity'
+ format: 'int32'
+ example: 166597
+ Title:
+ type: 'string'
+ description: 'The display title for this activity.'
+ example: 'Faster Than Skip-the-Line: Vatican, Sistine Chapel & St. Peter''s
+ Tour'
+ Description:
+ type: 'string'
+ description: 'The description of the Activity.'
+ example: 'Enjoy 5 of Seattle''s most popular attractions with a multi-ticket
+ booklet that’s valid for 9 consecutive days. This pass is perfect if
+ you want to explore the city on your schedule, craft your own
+ itinerary, and visit the city’s can’t-miss museums and most
+ iconi...'
+ Media:
+ type: 'array'
+ description: 'List of activity Media.'
+ items:
+ $ref: '#/components/schemas/ActivitiesMedia'
+ Categories:
+ type: 'array'
+ description: 'A list of the Activity categories to which this particular
+ activity belongs.
+
+ Possible values are:
+
+ Adventures
+
+ Air, Balloon & Helicopter Tours
+
+ Attractions
+
+ Cruises & Water Tours
+
+ Day Trips & Excursions
+
+ Food & Drink
+
+ Hop-on Hop-off
+
+ Multi-Day & Extended Tours
+
+ Nightlife
+
+ Private Tours
+
+ Private Transfers
+
+ Shared Transfers
+
+ Show & Sport Tickets
+
+ Sightseeing Passes
+
+ Theme Parks
+
+ Tours & Sightseeing
+
+ Walking & Bike Tours
+
+ Water Activities
+
+ Wedding Ceremonies
+
+ Winter Activities'
+ example:
+ - 'Walking & Bike Tours'
+ items:
+ type: 'string'
+ description: 'A list of the Activity categories to which this particular
+ activity belongs.'
+ example: 'Walking & Bike Tours'
+ xml:
+ name: 'Categories'
+ Duration:
+ type: 'string'
+ description: 'The anticipated time duration for the activity.
+
+ Using java jdk Duration parsing.'
+ example: 'PT1H0M'
+ FreeCancellation:
+ type: 'boolean'
+ description: 'A boolean value describing whether or not this activity
+ reservation can be cancelled without incurring a penalty.'
+ example: true
+ Price:
+ $ref: '#/components/schemas/ActivitiesPrice'
+ Redemption:
+ $ref: '#/components/schemas/Redemption'
+ ActivityLocations:
+ type: 'array'
+ description: 'Container of location information where activity happens.'
+ items:
+ $ref: '#/components/schemas/ActivitiesLocation'
+ Supplier:
+ $ref: '#/components/schemas/ActivitiesSupplier'
+ ReviewScore:
+ type: 'integer'
+ description: 'The overall Expedia score for the activity.'
+ format: 'int32'
+ example: 72
+ ReviewCount:
+ type: 'integer'
+ description: 'The number of Expedia reviews that went into the calculation of
+ the ReviewScore.'
+ format: 'int32'
+ example: 19
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/ActivitiesLink'
+ description: 'HATEOAS links included in this response.'
+ xml:
+ wrapped: true
+ CancellationPolicy:
+ $ref: '#/components/schemas/ActivitiesCancellationPolicy'
+ Highlights:
+ type: 'array'
+ description: 'Web formatted statement of the Highlight(s) for the activity.'
+ items:
+ type: 'string'
+ description: 'Web formatted statement of the Highlight(s) for the activity.'
+ xml:
+ name: 'Highlights'
+ TermsAndConditions:
+ type: 'array'
+ description: 'Terms and Conditions for the Activity.'
+ items:
+ type: 'string'
+ description: 'Terms and Conditions for the Activity.'
+ xml:
+ name: 'TermsAndConditions'
+ Inclusions:
+ type: 'array'
+ description: 'Web formatted statement of what is included in the activity'
+ items:
+ type: 'string'
+ description: 'Web formatted statement of what is included in the activity'
+ xml:
+ name: 'Inclusions'
+ Exclusions:
+ type: 'array'
+ description: 'Web formatted statement of what is NOT included in the activity'
+ items:
+ type: 'string'
+ description: 'Web formatted statement of what is NOT included in the activity'
+ xml:
+ name: 'Exclusions'
+ KnowBeforeYouBook:
+ type: 'array'
+ description: 'Web formatted statement of things that a purchaser should be aware
+ of BEFORE they book this activity.'
+ items:
+ type: 'string'
+ description: 'Web formatted statement of things that a purchaser should be aware
+ of BEFORE they book this activity.'
+ xml:
+ name: 'KnowBeforeYouBook'
+ KnowBeforeYouGo:
+ type: 'array'
+ description: 'Web formatted statement of things that a purchaser should be aware
+ of BEFORE they go to this activity.'
+ items:
+ type: 'string'
+ description: 'Web formatted statement of things that a purchaser should be aware
+ of BEFORE they go to this activity.'
+ xml:
+ name: 'KnowBeforeYouGo'
+ Offers:
+ type: 'array'
+ description: 'Offers for the activity.'
+ items:
+ $ref: '#/components/schemas/Offer'
+ description: 'Detailed information on the Activity.'
+ AvailableTimeSlot:
+ required:
+ - 'AllDayActivity'
+ - 'CancellationPolicy'
+ - 'DateTime'
+ - 'Tickets'
+ type: 'object'
+ properties:
+ DateTime:
+ type: 'string'
+ description: 'The date and time when the activity happens.'
+ format: 'date-time'
+ AllDayActivity:
+ type: 'boolean'
+ description: 'Indicates whether the activity is an all-day activity.'
+ example: true
+ CancellationPolicy:
+ $ref: '#/components/schemas/ActivitiesCancellationPolicy'
+ Tickets:
+ type: 'array'
+ description: 'Container for ticket information.'
+ items:
+ $ref: '#/components/schemas/Ticket'
+ description: 'The list of available Time Slots for the activity.'
+ ActivitiesCancellationPolicy:
+ required:
+ - 'FreeCancellation'
+ type: 'object'
+ properties:
+ FreeCancellation:
+ type: 'boolean'
+ description: 'Indicates whether the activity can be canceled free of charge
+ within the cancellation window or not.'
+ example: true
+ CancelPolicyDescription:
+ type: 'string'
+ description: 'The description of Cancellation Policy.'
+ example: '72 hours'
+ FreeCancellationMinHours:
+ type: 'integer'
+ description: 'The minimum number of hours before activity when the activity can
+ still be cancelled for free.'
+ format: 'int32'
+ example: 72
+ FreeCancellationEndDateTime:
+ type: 'string'
+ description: 'The date and time after which the activity will not be able to be
+ cancelled for free, stated in the local time to where the activity
+ takes place.'
+ format: 'date-time'
+ description: 'Container for the Cancellation Policy information.'
+ ActivitiesLink:
+ required:
+ - 'Href'
+ type: 'object'
+ properties:
+ Accept:
+ type: 'string'
+ description: 'Accept header.'
+ Method:
+ type: 'string'
+ description: 'HTTP method to connect.'
+ example: 'GET'
+ Href:
+ type: 'string'
+ description: 'HATEOAS URL to fetch details.'
+ description: 'Container of HATEOAS URL''s'
+ ActivitiesMedia:
+ required:
+ - 'Size'
+ - 'Type'
+ - 'Url'
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'type of the media. So far there is only one option:
+
+ 1: Image'
+ example: '1'
+ Title:
+ type: 'string'
+ description: 'Image title'
+ example: 'Guestroom'
+ Size:
+ type: 'string'
+ description: 'Image size
+
+ You can find a link to the complete list of Supported Images Sizes
+ in the Related Links section at the bottom of the page.'
+ example: 't'
+ Url:
+ type: 'string'
+ description: 'Image URL'
+ example: 'https://images.trvl-media.com/hotels/1000000/30000/20300/20230/20230_159_t.jpg'
+ description: 'List of activity Media.'
+ Offer:
+ required:
+ - 'AvailableTimeSlots'
+ - 'Duration'
+ - 'Id'
+ - 'OfferPrice'
+ - 'Title'
+ type: 'object'
+ properties:
+ Id:
+ type: 'integer'
+ description: 'The numerical identifier for the offer.'
+ format: 'int32'
+ example: 166597
+ Title:
+ type: 'string'
+ description: 'A descriptive title for this offer.'
+ example: '8:30 AM, Tour in English'
+ Description:
+ type: 'string'
+ description: 'Description of this offer.'
+ Duration:
+ type: 'string'
+ description: 'The anticipated time duration for the activity, e xpressed using
+ Java JDK duration format.'
+ AvailableTimeSlots:
+ type: 'array'
+ description: 'The list of available Time Slots for the activity.'
+ items:
+ $ref: '#/components/schemas/AvailableTimeSlot'
+ OfferPrice:
+ $ref: '#/components/schemas/ActivitiesPrice'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/ActivitiesLink'
+ description: 'Container of HATEOAS URL''s'
+ xml:
+ wrapped: true
+ description: 'Offers for the activity.'
+ ActivitiesPhone:
+ required:
+ - 'CountryCode'
+ - 'Number'
+ type: 'object'
+ properties:
+ CountryCode:
+ type: 'string'
+ description: 'Country code of traveler''s phone number; only digits allowed.'
+ example: '1'
+ AreaCode:
+ type: 'string'
+ description: 'Area code of traveler''s phone number; only digits allowed.'
+ example: '614'
+ Number:
+ type: 'string'
+ description: 'Traveler''s phone number; only digits allowed.'
+ example: '9288472'
+ ExtensionNumber:
+ type: 'string'
+ description: 'The phone of the company providing the activity.'
+ Redemption:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of redemption process associated to the activity.'
+ example: 'Voucherless'
+ RedemptionLocations:
+ type: 'array'
+ description: 'List of redemption locations where the activity will take place,
+ please refer to Location Section below.'
+ items:
+ $ref: '#/components/schemas/ActivitiesLocation'
+ description: 'Container of redemption information.'
+ ActivitiesSupplier:
+ required:
+ - 'Name'
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'The name of the company providing the activity.'
+ example: 'City Wonders'
+ Phone:
+ $ref: '#/components/schemas/ActivitiesPhone'
+ description: 'The details information of company providing the activity.'
+ ActivitiesWarning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Standardized warning code.'
+ example: 'INVALID_CORPORATE_DISCOUNT_CODE'
+ Description:
+ type: 'string'
+ description: 'Standardized warning description message.'
+ example: 'The Corporate DiscountCode ''811490'' is unavailable, but we found
+ other rates for you.'
+ OriginalPrice:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ NewPrice:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ ChangedAmount:
+ $ref: '#/components/schemas/ActivitiesMoney'
+ ChangedPercentage:
+ type: 'string'
+ description: 'The changed percentage.
+
+ In the sample 2.97 means the changed percentage is 2.97%.'
+ example: '2.97'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/ActivitiesLink'
+ xml:
+ wrapped: true
+ description: 'Container for all warnings generated during the transaction.'
+ ActivityListingsResponse:
+ required:
+ - 'Count'
+ - 'Location'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for all warnings generated during the transaction.'
+ items:
+ $ref: '#/components/schemas/ActivitiesWarning'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for this transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ Count:
+ type: 'integer'
+ description: 'The number of activities returned in the response.'
+ format: 'int64'
+ example: 100
+ Location:
+ type: 'string'
+ description: 'The location that the user searched, expressed in the exact format
+ that the inventory system uses to designate the location.'
+ example: 'shenzhen, dg'
+ StartDate:
+ type: 'string'
+ description: 'The startDate of the returned group of activities in YYYY-MM-DD
+ format.'
+ format: 'date'
+ example: '2021-08-01T00:00:00.000Z'
+ EndDate:
+ type: 'string'
+ description: 'The endDate of returned group of activities in YYYY-MM-DD format.'
+ format: 'date'
+ example: '2021-08-10T00:00:00.000Z'
+ Activities:
+ type: 'array'
+ description: 'List of activities matching the search criteria.'
+ items:
+ $ref: '#/components/schemas/Activity'
+ Categories:
+ type: 'array'
+ description: 'Container for a breakdown of how many of each type of Activity
+ have been returned in the API response.'
+ items:
+ $ref: '#/components/schemas/CategoryGroup'
+ CategoryGroup:
+ required:
+ - 'CategoryName'
+ - 'Count'
+ - 'GroupDisplayName'
+ - 'GroupName'
+ type: 'object'
+ properties:
+ Count:
+ type: 'integer'
+ description: 'The count of the number of categories the returned set of
+ activities map to.'
+ format: 'int32'
+ example: 10
+ GroupName:
+ type: 'string'
+ description: 'The group which the category belongs
+
+ Possible value is:
+
+ Recommendations
+
+ Tours
+
+ Activities
+
+ Transportation
+
+ Promotions
+
+ Duration'
+ example: 'Tours'
+ GroupDisplayName:
+ type: 'string'
+ description: 'The localized value for category name.'
+ example: 'Wander- und Fahrradtouren'
+ CategoryName:
+ type: 'string'
+ description: 'The name of one of the categories.'
+ example: 'Walking & Bike Tours'
+ CategoryDisplayName:
+ type: 'string'
+ description: 'Container for a breakdown of how many of each type of Activity
+ have been returned in the API response.'
+ ActivityDetailsResponse:
+ required:
+ - 'Location'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for all warnings generated during the transaction.'
+ items:
+ $ref: '#/components/schemas/ActivitiesWarning'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for this transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ Location:
+ type: 'string'
+ description: 'The location user searched, translated into the full, unambiguous
+ format.'
+ example: 'shenzhen, dg'
+ StartDate:
+ type: 'string'
+ description: 'The startDate of activities in YYY-MM-DD format.'
+ format: 'date'
+ example: '2021-08-01T00:00:00.000Z'
+ EndDate:
+ type: 'string'
+ description: 'The endDate of activities in YYY-MM-DD format.'
+ format: 'date'
+ example: '2021-08-01T00:00:00.000Z'
+ ActivityDetails:
+ $ref: '#/components/schemas/Activity'
+ FlightsV1Error:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'Multiple pickup locations found. '
+ description: 'Container for error list.'
+ FlightsV1Errors:
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/FlightsV1Error'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ Airport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ Name:
+ type: 'string'
+ description: 'Name of departure airport'
+ example: 'San Francisco International Airport'
+ City:
+ type: 'string'
+ description: 'City where departure airport resides'
+ example: 'San Francisco'
+ Province:
+ type: 'string'
+ description: 'Province or State where departure airport resides'
+ example: 'CA'
+ Country:
+ type: 'string'
+ description: 'Country where departure airport resides'
+ example: 'USA'
+ description: 'Container for arrival airport details.'
+ xml:
+ name: 'Airport'
+ BaggageFee:
+ required:
+ - 'BagType'
+ type: 'object'
+ properties:
+ BagType:
+ type: 'string'
+ description: 'Specifies the type of baggage.'
+ example: 'FIRST_BAG'
+ enum:
+ - 'PREPAID_CARRY_ON'
+ - 'PREPAID_FIRST_BAG'
+ - 'PREPAID_SECOND_BAG'
+ - 'CARRY_ON'
+ - 'FIRST_BAG'
+ - 'SECOND_BAG'
+ WeightUnit:
+ type: 'string'
+ description: 'Specifies weight unit for this bagType. This will always be
+ kilograms.'
+ example: 'kg'
+ Weight:
+ type: 'string'
+ description: 'Weight of the bag.'
+ example: '23'
+ Application:
+ type: 'string'
+ description: 'This element specifies descriptive text useful in displaying
+ baggage fees.'
+ example: 'per'
+ enum:
+ - 'upto'
+ - 'per'
+ FixedCharge:
+ $ref: '#/components/schemas/Fee'
+ MaxCharge:
+ $ref: '#/components/schemas/Fee'
+ MinCharge:
+ $ref: '#/components/schemas/Fee'
+ description: 'Container for baggage fee information of each bag type.
+
+ The baggage fee can vary for each bag type. The amount can be zero,
+ fixed amount or will be in a range'
+ xml:
+ name: 'BaggageFees'
+ Fee:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Name:
+ type: 'string'
+ description: 'This is used when a fee range is returned. It specifies the
+ highest value of bag fee.'
+ FlightBaggageFee:
+ required:
+ - 'BaggageFees'
+ - 'FlightSegment'
+ type: 'object'
+ properties:
+ FlightSegment:
+ $ref: '#/components/schemas/BaggageFeeFlightSegment'
+ BaggageFees:
+ type: 'array'
+ description: 'Container for baggage fee information of each bag type.
+
+ The baggage fee can vary for each bag type. The amount can be zero,
+ fixed amount or will be in a range'
+ items:
+ $ref: '#/components/schemas/BaggageFee'
+ description: 'Container for information on Baggage fee information of each Segment.'
+ xml:
+ name: 'FlightBaggageFees'
+ FlightBaggageFeesResponse:
+ required:
+ - 'FlightBaggageFees'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for Warning messages.'
+ items:
+ $ref: '#/components/schemas/FlightsV1Warning'
+ FlightBaggageFees:
+ type: 'array'
+ description: 'Container for information on Baggage fee information of each
+ Segment.'
+ items:
+ $ref: '#/components/schemas/FlightBaggageFee'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ xml:
+ name: 'FlightBaggageFeesResponse'
+ FareRule:
+ required:
+ - 'FareBasisCode'
+ - 'Rules'
+ type: 'object'
+ properties:
+ FareBasisCode:
+ type: 'string'
+ description: 'Fare Basis Code to which the rules are applied.'
+ example: 'W7EB'
+ Rules:
+ type: 'array'
+ description: 'Container for fare rules.'
+ items:
+ $ref: '#/components/schemas/Rule'
+ description: 'Contains the list of fare rule details'
+ Rule:
+ required:
+ - 'Category'
+ - 'Description'
+ type: 'object'
+ properties:
+ Category:
+ type: 'string'
+ description: 'Category name of the rule.'
+ example: 'ELIGIBILITY'
+ Description:
+ type: 'string'
+ description: 'Rule description.'
+ example: 'NO ELIGIBILITY REQUIREMENTS APPLY'
+ description: 'Container for fare rules.'
+ FlightFareRuleItem:
+ required:
+ - 'FlightSegment'
+ type: 'object'
+ properties:
+ FlightSegment:
+ required:
+ - 'AirlineCode'
+ - 'ArrivalAirport'
+ - 'DepartureAirport'
+ type: 'object'
+ properties:
+ AirlineCode:
+ type: 'string'
+ description: 'Specifies the 2 letter IATA airline code of the Most Significant
+ Carrier for the flight. In the case of flights with multiple
+ airlines involves this is the airline who will be charging for
+ the baggage.'
+ example: 'VX'
+ DepartureAirport:
+ $ref: '#/components/schemas/Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/Airport'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV1Link'
+ description: 'Contains the deeplink URLs of api services and websites'
+ xml:
+ wrapped: true
+ FareRules:
+ type: 'array'
+ description: 'Contains the list of fare rule details'
+ xml:
+ wrapped: true
+ items:
+ $ref: '#/components/schemas/FareRule'
+ description: 'Container for flight segment information.'
+ description: 'Container for segment and corresponding fare rules.'
+ xml:
+ name: 'FlightFareRules'
+ FlightFareRulesResponse:
+ required:
+ - 'FlightFareRule'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ FlightFareRule:
+ type: 'array'
+ description: 'Container for segment and corresponding fare rules.'
+ items:
+ $ref: '#/components/schemas/FlightFareRuleItem'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ BaggageFeeFlightSegment:
+ required:
+ - 'AirlineCode'
+ - 'ArrivalAirport'
+ - 'DepartureAirport'
+ type: 'object'
+ properties:
+ AirlineCode:
+ type: 'string'
+ description: 'Specifies the 2 letter IATA airline code of the most significant
+ carrier for the flight. In the case of flights with multiple
+ airlines involves this is the airline who will be charging for the
+ baggage.'
+ example: 'VX'
+ AirlineName:
+ type: 'string'
+ description: 'Specifies the name of the airline. Where possible this is
+ localized to the LangID supplied in the request.'
+ example: 'Virgin America'
+ DepartureAirport:
+ $ref: '#/components/schemas/Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/Airport'
+ CabinClass:
+ type: 'string'
+ description: 'Cabin class name of airline.'
+ example: 'Economy'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV1Link'
+ description: 'Links to airline''s baggage policies.
+
+ Where possible this is localized to the LangID supplied in the
+ request.
+
+ It is possible that special characters will be present in the URL'
+ xml:
+ wrapped: true
+ description: 'Container for information of Segment.'
+ xml:
+ name: 'FlightSegment'
+ FlightsV1Link:
+ required:
+ - 'Href'
+ - 'Method'
+ type: 'object'
+ properties:
+ Accept:
+ type: 'string'
+ description: 'Accept header.'
+ Method:
+ type: 'string'
+ description: 'HTTP method to connect.'
+ example: 'GET'
+ Href:
+ type: 'string'
+ description: 'HATEOAS URL to fetch details.'
+ description: 'Contains the deeplink URLs of api services and websites'
+ FlightsV1Money:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ description: 'Container for showing price.'
+ FlightsV1Warning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Standardized warning code.'
+ example: 'NO_FEE_INFO'
+ Description:
+ type: 'string'
+ description: 'Standardized warning description message.'
+ example: 'Fee Information is not available.'
+ description: 'Container for Warning messages.'
+ FlightsV2Airport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ Name:
+ type: 'string'
+ description: 'Name of departure airport'
+ example: 'San Francisco International Airport'
+ City:
+ type: 'string'
+ description: 'City where departure airport resides'
+ example: 'San Francisco'
+ Province:
+ type: 'string'
+ description: 'Province or State where departure airport resides'
+ example: 'CA'
+ Country:
+ type: 'string'
+ description: 'Country where departure airport resides'
+ example: 'USA'
+ Latitude:
+ type: 'string'
+ description: 'Latitude where departure airport resides'
+ example: '33.641'
+ Longitude:
+ type: 'string'
+ description: 'Longitude where departure airport resides'
+ example: '84.4429'
+ description: 'Container for showing the arrival airport details'
+ xml:
+ name: 'Airport'
+ Row:
+ required:
+ - 'RowNumber'
+ type: 'object'
+ properties:
+ RowNumber:
+ type: 'integer'
+ description: 'Specific row number.'
+ format: 'int32'
+ example: 37
+ RowCharacteristics:
+ type: 'array'
+ description: 'Container for row characteristics.'
+ items:
+ $ref: '#/components/schemas/RowCharacteristic'
+ Seats:
+ type: 'array'
+ description: 'Container for seat information in that particular row.
+
+ It can be null if it is empty row.'
+ items:
+ $ref: '#/components/schemas/Seat'
+ description: 'Container for list of seat row information.'
+ xml:
+ name: 'Row'
+ RowCharacteristic:
+ required:
+ - 'Code'
+ - 'Name'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Code of Row'
+ example: 'E'
+ enum:
+ - 'E'
+ - 'X'
+ - 'S'
+ - 'N'
+ - 'U'
+ - 'W'
+ Name:
+ type: 'string'
+ description: 'Corresponding name for the row code
+
+ Same response will have upper deck and lower deck information if
+ any'
+ example: 'EMPTY'
+ enum:
+ - 'EMPTY'
+ - 'EXIT'
+ - 'SMOKING'
+ - 'NONSMOKING'
+ - 'UPPERDECK'
+ - 'OVERWING'
+ description: 'Container for row characteristics.'
+ xml:
+ name: 'RowCharacteristic'
+ Seat:
+ type: 'object'
+ properties:
+ SeatNumber:
+ type: 'string'
+ description: 'Seat Number
+
+ It can be null if there is no physical seat in the location'
+ example: '37A'
+ SeatToken:
+ type: 'string'
+ description: 'Token used by the Booking service to reserve seats'
+ example: 'AQogCNOiARIEMTMyMRiSASCycSjs09sCMPDU2wI4S0AAWAESBRoDQURUGgMxOEE'
+ SeatOccupancy:
+ type: 'string'
+ description: 'Occupancy details whether it is available or not.
+
+ It can be null if there is no physical seat in that location.
+
+ AVAILABLE - Seat is currently available for selection.
+
+ OCCUPIED - Seat already occupied'
+ example: 'OCCUPIED'
+ enum:
+ - 'AVAILABLE'
+ - 'OCCUPIED'
+ Column:
+ type: 'string'
+ description: 'It can be null if there is no physical seat in that location'
+ example: 'A'
+ SeatCharacteristics:
+ type: 'array'
+ description: 'Container for seat characteristics information.'
+ items:
+ $ref: '#/components/schemas/SeatCharacteristic'
+ PaidSeat:
+ type: 'boolean'
+ description: 'A boolean object (true/false) to indicate whether the seat is paid
+ or not. It can be null'
+ SeatPrice:
+ type: 'object'
+ description: 'Container for seat price to provide fee information associated
+ with a paid seat. It can be null if it is not a paid seat.'
+ required:
+ - 'Value'
+ - 'Currency'
+ properties:
+ Value:
+ type: 'string'
+ example: '17.99'
+ Currency:
+ type: 'string'
+ example: 'USD'
+ description: 'Container for seat information in that particular row.
+
+ It can be null if it is empty row.'
+ xml:
+ name: 'Seat'
+ SeatCharacteristic:
+ required:
+ - 'Code'
+ - 'Name'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Code of seat'
+ example: 'W'
+ enum:
+ - 'E'
+ - 'H'
+ - 'W'
+ - 'A'
+ - 'X'
+ - 'M'
+ - 'S'
+ - 'P'
+ Name:
+ type: 'string'
+ description: 'Corresponding name for the seat code'
+ example: 'WINDOW'
+ enum:
+ - 'EMPTY'
+ - 'ACCESSIBLE'
+ - 'WINDOW'
+ - 'AISLE'
+ - 'EXIT'
+ - 'MAINCABINEXTRA'
+ - 'PREFERRED'
+ - 'PREMIUM'
+ description: 'Container for seat characteristics information.'
+ xml:
+ name: 'SeatCharacteristic'
+ SeatMap:
+ required:
+ - 'CabinClass'
+ - 'Rows'
+ type: 'object'
+ properties:
+ CabinClass:
+ type: 'string'
+ description: 'Cabin code for different class of service offered by the airline'
+ example: 'ECONOMY'
+ enum:
+ - 'ECONOMY'
+ - 'FIRST'
+ - 'BUSINESS'
+ - 'PREMIUM_ECONOMY'
+ Rows:
+ type: 'array'
+ description: 'Container for list of seat row information.'
+ items:
+ $ref: '#/components/schemas/Row'
+ description: 'Container for seatmap information.'
+ xml:
+ name: 'SeatMap'
+ SeatMapResponse:
+ required:
+ - 'ArrivalAirport'
+ - 'DepartureAirport'
+ - 'DepartureDate'
+ - 'EquipmentCode'
+ - 'FlightNumber'
+ - 'MarketingAirLineCode'
+ - 'SeatMap'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ FlightNumber:
+ type: 'string'
+ description: 'Specifies the requested flight number.'
+ example: '0300'
+ DepartureDate:
+ type: 'string'
+ description: 'Specifies the departure date of the requested flight'
+ format: 'date'
+ example: '2021-07-03T00:00:00.000Z'
+ MarketingAirLineCode:
+ type: 'string'
+ description: 'The IATA or Expedia assigned airline codes of the carrier. IATA
+ codes must contain at least one alphabetic character.'
+ example: 'AS'
+ MarketingAirLineName:
+ type: 'string'
+ description: 'The airline name of the marketing airline'
+ example: 'Alaska Airlines'
+ EquipmentCode:
+ type: 'string'
+ description: 'IATA Equipment type codes.'
+ example: '73J'
+ EquipmentName:
+ type: 'string'
+ description: 'Equipment type name.'
+ example: 'Airbus 123'
+ DepartureAirport:
+ $ref: '#/components/schemas/FlightsV2Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/FlightsV2Airport'
+ SeatMap:
+ $ref: '#/components/schemas/SeatMap'
+ Warnings:
+ type: 'array'
+ description: 'Container for Warning messages.'
+ items:
+ $ref: '#/components/schemas/FlightsV2Warning'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ xml:
+ name: 'SeatMapResponse'
+ FlightsV2Warning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Standardized warning code.'
+ example: 'NO_RESULTS_FOUND'
+ Description:
+ type: 'string'
+ description: 'Standardized warning description message.'
+ example: 'No results found for the request.'
+ description: 'Container for Warning message.'
+ FlightsV2Error:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'SERVER_ERROR'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'An error has occurred while processing the request.'
+ description: 'Container for error list.'
+ FlightsV2Errors:
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/FlightsV2Error'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ FlightsV3Country:
+ required:
+ - 'Name'
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'country name'
+ example: 'Ireland'
+ Code:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'IRL'
+ description: 'Container for disambiguation country information'
+ FlightsV3Error:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Error code describing the issue'
+ example: 'AMBIGUOUS_LOCATION'
+ DetailCode:
+ type: 'string'
+ description: 'Detailed error code describing the issue.'
+ example: 'MULTIPLE_AMBIGUOUS_LOCATION'
+ Description:
+ type: 'string'
+ description: 'A simple description of what the error is.'
+ example: 'Multiple pickup locations found. '
+ LocationOptions:
+ type: 'array'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the request. '
+ items:
+ $ref: '#/components/schemas/FlightsV3LocationOption'
+ description: 'Container for error list.'
+ FlightsV3Errors:
+ required:
+ - 'Errors'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Errors:
+ type: 'array'
+ description: 'Container for error list.'
+ items:
+ $ref: '#/components/schemas/FlightsV3Error'
+ TransactionId:
+ type: 'string'
+ description: 'A unique identifier for the transaction.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'ErrorResponse'
+ FlightsV3GeoLocation:
+ required:
+ - 'Latitude'
+ - 'Longitude'
+ type: 'object'
+ properties:
+ Latitude:
+ type: 'string'
+ description: 'Latitude of the location.'
+ example: '38.184978'
+ Longitude:
+ type: 'string'
+ description: 'Longitude of the location.'
+ example: '85.7412'
+ description: 'Container for Geo location.'
+ FlightsV3Location:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'The type of location code (MULTICITY | METROCODE).'
+ example: 'MULTICITY'
+ Id:
+ type: 'string'
+ description: 'Expedia Region ID of the specified airport.'
+ example: '6139103'
+ Name:
+ type: 'string'
+ description: 'Location Name'
+ example: 'Seattle-Tacoma International Airport'
+ Code:
+ type: 'string'
+ description: 'Location Code'
+ example: 'SEA'
+ Address:
+ type: 'string'
+ description: 'Street address of the location (if available)'
+ example: 'Paris, France (PAR-All Airports)'
+ GeoLocation:
+ $ref: '#/components/schemas/FlightsV3GeoLocation'
+ Country:
+ $ref: '#/components/schemas/FlightsV3Country'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ FlightsV3LocationOption:
+ required:
+ - 'Locations'
+ - 'RequestedLocation'
+ type: 'object'
+ properties:
+ RequestedLocation:
+ type: 'string'
+ description: 'Location used in partner request.'
+ example: 'Paris'
+ Locations:
+ type: 'array'
+ description: 'Container for list of possible locations that could be used to
+ disambiguate the query.'
+ items:
+ $ref: '#/components/schemas/FlightsV3Location'
+ description: 'List for possible locations from which the customer must choose
+ the best one to be re-submitted in the request. '
+ AirValidFormsOfPayment:
+ required:
+ - 'Currency'
+ - 'Fee'
+ - 'Name'
+ - 'PaymentMethod'
+ type: 'object'
+ properties:
+ PaymentMethod:
+ type: 'string'
+ description: 'Method of payment'
+ example: 'CreditCard'
+ Name:
+ type: 'string'
+ description: 'Name of Payment Method.'
+ example: 'AmericanExpress'
+ Fee:
+ type: 'string'
+ description: 'The amount of the payment fee.'
+ example: '4.25'
+ Currency:
+ type: 'string'
+ description: 'Currency of the fee in ISO 4217 format'
+ example: 'USD'
+ description: 'Container for fees that are charged for using certain payment
+ methods. Since the method of payment is not known until time of booking,
+ these fees are returned separately and not included in the total price'
+ FlightsV3Airport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ Name:
+ type: 'string'
+ description: 'Name of departure airport'
+ example: 'San Francisco International Airport'
+ City:
+ type: 'string'
+ description: 'City where departure airport resides'
+ example: 'San Francisco'
+ Province:
+ type: 'string'
+ description: 'Province or State where departure airport resides'
+ example: 'CA'
+ Country:
+ type: 'string'
+ description: 'Country where departure airport resides'
+ example: 'USA'
+ Latitude:
+ type: 'string'
+ description: 'Latitude where departure airport resides'
+ example: '33.641'
+ Longitude:
+ type: 'string'
+ description: 'Longitude where departure airport resides'
+ example: '84.4429'
+ description: 'Container for list of Information about each search locations'
+ xml:
+ name: 'Airport'
+ Amenities:
+ type: 'object'
+ properties:
+ Entertainment:
+ $ref: '#/components/schemas/Entertainment'
+ Wifi:
+ $ref: '#/components/schemas/Wifi'
+ Power:
+ $ref: '#/components/schemas/Power'
+ description: 'List of specific amenities available for each flight leg.'
+ AveragePricePerTicket:
+ required:
+ - 'Count'
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'Average price per ticket, excluding infant'
+ example: '100.0'
+ Currency:
+ type: 'string'
+ description: 'Currency in ISO 4217 format'
+ example: 'USD'
+ Count:
+ type: 'integer'
+ description: 'Indicates how many tickets were used to determine the average'
+ format: 'int32'
+ example: 1
+ description: 'Container for average pricing information per ticket.
+
+ If any passenger type (such as Infant in Lap or Seat) has a $0 total
+ price there will be no ticket, so those passengers would not be included
+ in the count.'
+ FlightsV3BaggageFee:
+ required:
+ - 'BagType'
+ type: 'object'
+ properties:
+ BagType:
+ type: 'string'
+ description: 'Specifies the type of baggage.'
+ example: 'FIRST_BAG'
+ enum:
+ - 'PREPAID_CARRY_ON'
+ - 'PREPAID_FIRST_BAG'
+ - 'PREPAID_SECOND_BAG'
+ - 'CARRY_ON'
+ - 'FIRST_BAG'
+ - 'SECOND_BAG'
+ WeightUnit:
+ type: 'string'
+ description: 'Specifies weight unit for this bagType. This will always be
+ kilograms.'
+ example: 'kg'
+ Weight:
+ type: 'string'
+ description: 'Weight of the bag.'
+ example: '23'
+ Application:
+ type: 'string'
+ description: 'This element specifies descriptive text useful in displaying
+ baggage fees.'
+ example: 'per'
+ enum:
+ - 'upto'
+ - 'per'
+ FixedCharge:
+ $ref: '#/components/schemas/Fee'
+ MaxCharge:
+ $ref: '#/components/schemas/Fee'
+ MinCharge:
+ $ref: '#/components/schemas/Fee'
+ description: 'Container for baggage fee information of each bag type. The
+ baggage fee can vary for each bag type. The amount can be zero, fixed
+ amount or will be in a range.'
+ xml:
+ name: 'BaggageFees'
+ FlightsV3Distance:
+ required:
+ - 'Unit'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The number of miles/kilometers of the distance (specified by the
+ Unit).'
+ example: '75'
+ Unit:
+ type: 'string'
+ description: 'The unit (KM or MI) for the distance.'
+ example: 'KM'
+ Direction:
+ type: 'string'
+ description: 'The direction of the location from the search ''center''.Possible
+ values are: N,S,W,E,NW,NE,SW,SE'
+ example: 'N'
+ description: 'Container for distance of flight.'
+ Entertainment:
+ type: 'object'
+ properties:
+ Available:
+ type: 'string'
+ description: 'Indication of whether this amenity is available.'
+ example: 'YES'
+ enum:
+ - 'YES'
+ - 'NO'
+ - 'UNKNOWN'
+ Types:
+ type: 'array'
+ description: 'Type of entertainment'
+ example:
+ - 'LIVE_TV'
+ items:
+ type: 'string'
+ description: 'Type of entertainment'
+ example: 'LIVE_TV'
+ xml:
+ name: 'Types'
+ enum:
+ - 'LIVE_TV'
+ - 'ON_DEMAND'
+ - 'STREAMING'
+ description: 'Container for entertainment amenities available in this flight leg'
+ FlightSearchResponse:
+ required:
+ - 'Offers'
+ - 'SearchCities'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Insights:
+ $ref: '#/components/schemas/Insights'
+ Warnings:
+ type: 'array'
+ description: 'Container for warning messages.'
+ items:
+ $ref: '#/components/schemas/FlightsV3Warning'
+ Segments:
+ type: 'array'
+ description: "Container of information about each flight offer
+
+ (Less information shown if the offer is and opaque flight offer)
+
+ Flights (the complete journey to your final destination by air) are
+ made up of:
+
+ \ Segments (the trip from one stopping place to another) are made up
+ of:
+
+ \ Legs (take off at one airport and land at another)"
+ items:
+ $ref: '#/components/schemas/Segment'
+ Offers:
+ type: 'array'
+ description: 'Container for list of air offers. An offer gives total trip
+ details including flight and pricing information.'
+ items:
+ $ref: '#/components/schemas/FlightsV3Offer'
+ SearchCities:
+ type: 'array'
+ description: 'Container for list of Information about each search locations'
+ items:
+ $ref: '#/components/schemas/FlightsV3Airport'
+ ValidFormsOfPayment:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ items:
+ $ref: '#/components/schemas/AirValidFormsOfPayment'
+ description: 'Container for fees that are charged for using certain payment
+ methods. Since the method of payment is not known until time of
+ booking, these fees are returned separately and not included in the
+ total price'
+ Lounges:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ items:
+ $ref: '#/components/schemas/Lounge'
+ description: 'List of lounges'
+ TransactionId:
+ type: 'string'
+ description: 'Unique Id to identify one individual API response.'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ xml:
+ name: 'FlightSearchResponse'
+ Insights:
+ required:
+ - 'AverageCheapestPrice'
+ - 'CheapestOfferId'
+ - 'MedianCheapestPrice'
+ - 'PercentageOfFaresHigher'
+ - 'SearchComparisonCount'
+ type: 'object'
+ properties:
+ CheapestOfferId:
+ type: 'string'
+ description: 'Container for insights response.'
+ example: 'v5-d58bdd504a70495078a796b218315815-1-1-2~0.S~AQoGCAEQ9LsCEgcI1AQQARgBIAEgDCAHIA0oAlgCcAA'
+ AverageCheapestPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ MedianCheapestPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ SearchComparisonCount:
+ type: 'integer'
+ description: 'Number of searches compared to build the insights information for
+ the given search.'
+ format: 'int32'
+ example: 1200
+ PercentageOfFaresHigher:
+ type: 'integer'
+ description: 'Percentage value that defines where the cheapest fare of the
+ current search result stand comparing the prices for similar
+ searches for nearby dates.'
+ format: 'int32'
+ example: 70
+ PriceTrend:
+ type: 'string'
+ description: 'Shows how the price trends'
+ enum:
+ - 'TRENDING_UP'
+ - 'TRENDING_DOWN'
+ - 'NEUTRAL'
+ PastPerDayMedianCheapestPrices:
+ type: 'array'
+ description: 'List of median of cheapest prices for the specifc search criteria
+ for last 21 days. List will be in the order starting from 21 days
+ ago till yesterday.'
+ example:
+ - '120.9'
+ - '121.8'
+ - '122.7'
+ items:
+ type: 'string'
+ xml:
+ name: 'PastPerDayMedianCheapestPrices'
+ Message:
+ type: 'string'
+ description: 'Shows a custom message in the respective language corresponding to
+ the locale requested.'
+ example: 'Expedia searched 3,415 results and this fare is cheaper than 70% of
+ the prices seen'
+ description: 'Container for insights response.'
+ xml:
+ name: 'Insights'
+ Leg:
+ required:
+ - 'ArrivalAirport'
+ - 'ArrivalDateTime'
+ - 'BookingCode'
+ - 'CabinClass'
+ - 'DepartureAirport'
+ - 'DepartureDateTime'
+ - 'FlightDuration'
+ - 'FlightNumber'
+ - 'MarketingAirlineCode'
+ - 'SeatMapAvailable'
+ type: 'object'
+ properties:
+ StatusCode:
+ type: 'string'
+ description: 'Air segment status.'
+ example: 'HX'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: 'Container for deeplink URL information.'
+ DepartureAirport:
+ $ref: '#/components/schemas/FlightsV3Airport'
+ ArrivalAirport:
+ $ref: '#/components/schemas/FlightsV3Airport'
+ DepartureDateTime:
+ type: 'string'
+ description: 'Flight departure date and time in ISO 8601 format'
+ format: 'date-time'
+ example: '2021-07-05T13:15:00.000Z'
+ ArrivalDateTime:
+ type: 'string'
+ description: 'Flight landing date and time in ISO 8601 format'
+ format: 'date-time'
+ example: '2021-07-05T16:15:00.000Z'
+ FlightNumber:
+ type: 'string'
+ description: 'Flight Number assigned by Carrier.'
+ example: '2537'
+ MarketingAirlineCode:
+ type: 'string'
+ description: 'The two-letter code of the Airline that is marketing the flight.'
+ example: 'AA'
+ MarketingAirlineName:
+ type: 'string'
+ description: 'The display name of the Airline that is marketing the flight.'
+ example: 'American Airlines'
+ OperatingAirlineCode:
+ type: 'string'
+ description: 'The two-letter code of the Airline actually operating the plane.'
+ example: 'UA'
+ OperatingAirlineName:
+ type: 'string'
+ description: 'The display name of the airline actually operating the plane.'
+ example: 'United Airlines'
+ EquipmentCode:
+ type: 'string'
+ description: 'IATA Equipment type codes.'
+ example: '73J'
+ FlightOnTimePercentage:
+ type: 'string'
+ description: 'Percentage of time that this flight on time.'
+ example: '100'
+ EquipmentName:
+ type: 'string'
+ description: 'The name of equipment that is scheduled for the flight.'
+ example: 'Airbus 123'
+ FlightDuration:
+ type: 'string'
+ description: 'The total travel duration for this leg, expressed in ISO 8601
+ standard.'
+ example: 'PT3H58M'
+ ConnectionTime:
+ type: 'string'
+ description: 'Connection time between current leg flight landed time to next
+ flight departure time, expressed in ISO 8601 standard.'
+ example: 'PT1H4M'
+ SeatMapAvailable:
+ type: 'boolean'
+ description: 'If True seat map is available'
+ OperationalDisclosure:
+ type: 'string'
+ description: 'OperationalDisclosure.'
+ FlightDistance:
+ $ref: '#/components/schemas/FlightsV3Distance'
+ BookingCode:
+ type: 'string'
+ description: 'Carrier-specific code used for booking (class of service).'
+ example: 'Y'
+ CabinClass:
+ type: 'string'
+ description: 'Class of service for the air leg.'
+ example: 'ECONOMY'
+ enum:
+ - 'ECONOMY'
+ - 'FIRST'
+ - 'BUSINESS'
+ - 'PREMIUM_ECONOMY'
+ EquipmentChange:
+ type: 'boolean'
+ description: 'True if the upcoming travel Leg will have different equipment
+ (airplane) compared to the previous Leg.'
+ LoungeKeys:
+ type: 'array'
+ description: 'List of keys referring to lounge details for the particular leg.'
+ items:
+ type: 'string'
+ description: 'List of keys referring to lounge details for the particular leg.'
+ xml:
+ name: 'LoungeKeys'
+ FareBasisCode:
+ type: 'string'
+ description: 'Fare Basis Code for the corresponding Leg of Flight Offer.'
+ example: 'T21DVN5'
+ MealOptions:
+ type: 'array'
+ description: 'Different meal options available in this particular Leg.'
+ example:
+ - 'FOOD_FOR_PURCHASE'
+ items:
+ type: 'string'
+ description: 'Different meal options available in this particular Leg.'
+ example: 'FOOD_FOR_PURCHASE'
+ xml:
+ name: 'MealOptions'
+ Amenities:
+ $ref: '#/components/schemas/Amenities'
+ description: 'Container information on each flight leg.'
+ xml:
+ name: 'Leg'
+ FlightsV3Link:
+ required:
+ - 'Href'
+ - 'Method'
+ type: 'object'
+ properties:
+ Accept:
+ type: 'string'
+ description: 'Accept header.'
+ Method:
+ type: 'string'
+ description: 'HTTP method to connect.'
+ example: 'GET'
+ Href:
+ type: 'string'
+ description: 'HATEOAS URL to fetch details.'
+ description: 'Container for deeplink URL information.'
+ Lounge:
+ required:
+ - 'Name'
+ type: 'object'
+ properties:
+ Name:
+ type: 'string'
+ description: 'Name of the lounge corresponding to a lounge key'
+ example: 'The Centurion Lounge'
+ IsConferenceRoomAvailable:
+ type: 'boolean'
+ description: 'Indicates whether the lounge has a conference room.'
+ PhoneNumber:
+ type: 'string'
+ description: 'Phone number of the lounge (if available)'
+ example: 'NA'
+ Description:
+ type: 'string'
+ description: 'Free text field with any extra information about the lounge'
+ example: 'Terminal B on the third level, pre-security, 5:30 am ? 8 pm (Sunday ?
+ Friday), 5:30 am ? 6:30 pm (Saturday)'
+ description: 'List of lounges'
+ xml:
+ name: 'Lounge'
+ FlightsV3Money:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ description: 'Container for price information.'
+ FlightsV3Offer:
+ required:
+ - 'International'
+ - 'Links'
+ - 'OfferPrice'
+ - 'Refundable'
+ - 'SegmentIds'
+ - 'SplitTicket'
+ type: 'object'
+ properties:
+ offerToken:
+ type: 'string'
+ description: 'Unique key to identify each offer.'
+ example: 'v5-21c33c9b411f87e895f9dfa8df82b535-38-1-st-v5-7b789d5a41dd7490c9ffbeaead2aa37a-3'
+ ReferenceId:
+ type: 'string'
+ description: 'Unique key to identify matching private fares.'
+ example: 'Flight_Reference_key_67890'
+ SplitTicket:
+ type: 'boolean'
+ description: 'True if more that one ticket will be issued for this offer per
+ passenger.
+
+ False if only one ticket will be issued per passenger.'
+ MetaApiBook:
+ type: 'boolean'
+ description: 'To indicate meta partners whether the air product is available for
+ TAAS instant book.'
+ OpaqueFlight:
+ type: 'boolean'
+ description: 'Indicate whether the air product is a opaque flight product or
+ not.
+
+ If true, then there will be no Segments node for this air product.'
+ Free24HourCancellation:
+ type: 'boolean'
+ description: 'True if Booking can be cancelled within 24 hours of booking.'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: 'Container for deeplink URL information.'
+ SegmentIds:
+ type: 'array'
+ description: 'Container for list of segment ids in a particular offer.
+
+ For Opaque flight, no segment will be present.'
+ example:
+ - '2816ed613aedd7513c953c33367df2e4'
+ - 'MjNfUHVibGlzaGVk'
+ items:
+ type: 'string'
+ xml:
+ name: 'SegmentIds'
+ OfferPrice:
+ $ref: '#/components/schemas/OfferPrice'
+ VfopKey:
+ type: 'string'
+ description: 'Key generated for Valid form of payment'
+ example: 'VFOP-AA'
+ Refundable:
+ type: 'boolean'
+ description: 'True if flight is refundable,
+
+ False if it''s not refundable.'
+ RefundPenalty:
+ type: 'array'
+ description: 'Contains refund penalty information'
+ items:
+ type: 'object'
+ properties:
+ RefundPenalty:
+ required:
+ - 'SegmentIds'
+ type: 'object'
+ properties:
+ SegmentIds:
+ type: 'array'
+ description: 'Contains a list of segment Ids'
+ example:
+ - '2816ed613aedd7513c953c33367df2e4'
+ items:
+ type: 'string'
+ description: 'Contains a list of segment Ids'
+ example: '2816ed613aedd7513c953c33367df2e4'
+ xml:
+ name: 'SegmentIds'
+ PreTripChange:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ description: 'Contains refund penalty information'
+ International:
+ type: 'boolean'
+ description: 'True, if flight is international.
+
+ False, if flight departs and arrives within the same country'
+ TicketType:
+ type: 'string'
+ description: 'Type of ticket being issued'
+ example: 'E-Ticket'
+ description: 'Container for list of air offers. An offer gives total trip
+ details including flight and pricing information.'
+ xml:
+ name: 'Offer'
+ OfferPrice:
+ required:
+ - 'AveragePricePerTicket'
+ - 'BasePrice'
+ - 'PricePerPassengerCategory'
+ - 'TotalPrice'
+ - 'TotalTaxesAndFees'
+ type: 'object'
+ properties:
+ TotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalRefund:
+ $ref: '#/components/schemas/FlightsV3Money'
+ BasePrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalFees:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Fees:
+ type: 'array'
+ description: 'Container for list of fees charged'
+ items:
+ $ref: '#/components/schemas/Fee'
+ TotalTaxes:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalTaxesAndFees:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Discount:
+ $ref: '#/components/schemas/FlightsV3Money'
+ AveragePricePerTicket:
+ $ref: '#/components/schemas/AveragePricePerTicket'
+ PricePerPassengerCategory:
+ type: 'array'
+ description: 'Container for pricing information for each passenger category.
+
+ (note that passengers are grouped into standard categories based on
+ the age ranges standardized by the airlines)'
+ items:
+ $ref: '#/components/schemas/PricePerPassengerCategory'
+ description: 'The total price of the package if purchased as a standalone hotel
+ and a standalone flight.
+
+ (base price + taxes and fees)'
+ xml:
+ name: 'OfferPrice'
+ Power:
+ type: 'object'
+ properties:
+ Available:
+ type: 'string'
+ description: 'Indication of the availability of Power amenity.'
+ enum:
+ - 'YES'
+ - 'NO'
+ - 'UNKNOWN'
+ description: 'Container for power amenities available in this flight leg'
+ PricePerPassengerCategory:
+ required:
+ - 'BasePrice'
+ - 'Count'
+ - 'Category'
+ type: 'object'
+ properties:
+ Category:
+ type: 'string'
+ description: 'Passenger category'
+ example: 'ADULT'
+ enum:
+ - 'ADULT'
+ - 'SENIOR'
+ - 'ADULT_CHILD'
+ - 'CHILD'
+ - 'INFANT_IN_SEAT'
+ - 'INFANT_IN_LAP'
+ Count:
+ type: 'integer'
+ description: 'Total number of travelers of the same passenger category'
+ format: 'int32'
+ example: 2
+ TotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ BasePrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ TotalTaxes:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Fees:
+ type: 'array'
+ description: 'List of fees per passenger category'
+ items:
+ $ref: '#/components/schemas/Fee'
+ description: 'Container for pricing information for each passenger category.
+
+ (note that passengers are grouped into standard categories based on the
+ age ranges standardized by the airlines)'
+ xml:
+ name: 'PricePerPassengerCategory'
+ RefundPenaltyDetail:
+ required:
+ - 'Allow'
+ type: 'object'
+ properties:
+ Allow:
+ type: 'string'
+ description: 'Status of penalty information'
+ example: 'YES'
+ enum:
+ - 'YES'
+ - 'NO'
+ - 'UNKNOWN'
+ Penalty:
+ $ref: '#/components/schemas/FlightsV3Money'
+ description: 'Container for en route change/cancellations and pre-trip
+ change/cancellations'
+ Segment:
+ required:
+ - 'DepartureArrivalDayDifference'
+ - 'SegmentId'
+ type: 'object'
+ properties:
+ SegmentId:
+ type: 'string'
+ description: 'Unique identifier for a single flight segment.
+
+ Shown in case of opaque flight offer as well.
+
+ Can be alphanumeric or numeric.'
+ example: '2816ed613aedd7513c953c33367df2e4'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: 'Container for deeplink URL information.'
+ Price:
+ $ref: '#/components/schemas/OfferPrice'
+ IncludesNonFlightLeg:
+ type: 'boolean'
+ description: 'True if any Leg associated with this Segment is via a non-flight
+ type of transit (Bus, Train or Boat)'
+ Legs:
+ type: 'array'
+ description: 'Container information on each flight leg.'
+ items:
+ $ref: '#/components/schemas/Leg'
+ BaggageFees:
+ type: 'array'
+ description: 'Container for baggage fee information of each bag type. The
+ baggage fee can vary for each bag type. The amount can be zero,
+ fixed amount or will be in a range.'
+ items:
+ $ref: '#/components/schemas/FlightsV3BaggageFee'
+ AccountCode:
+ type: 'string'
+ description: 'Lists any Account Code that has been applied to this segment.'
+ example: 'RRR11'
+ BasicEconomy:
+ type: 'boolean'
+ description: 'True if the corresponding fare ticket type associated with the
+ segment is Basic Economy'
+ example: false
+ SeatsLeft:
+ type: 'integer'
+ description: 'Remaining number of seats available for this segment offer.'
+ format: 'int32'
+ example: 9
+ FareType:
+ type: 'string'
+ description: 'Type of fare.'
+ example: 'PUBLISHED'
+ enum:
+ - 'NET'
+ - 'PUBLISHED'
+ - 'WEB'
+ DepartureArrivalDayDifference:
+ type: 'integer'
+ description: 'This is an indicator (can have values of -1, 0, 1, 2, etc.) which
+ depends on the relative difference between the arrival and departure
+ dates.'
+ format: 'int32'
+ example: 0
+ AirportChange:
+ type: 'boolean'
+ description: 'True if there the Segment is having a different Departure airport
+ compared to the Arrival airport of previous Segment.'
+ TotalStops:
+ type: 'integer'
+ description: 'The total number of stops in this segment(Nullable in case of
+ Opaque Flights)'
+ format: 'int32'
+ example: 1
+ FlightDuration:
+ type: 'string'
+ description: 'Total duration of the flight segment
+
+ (Nullable in case of Opaque Flights)'
+ example: 'PT9H0M'
+ OpaqueDepartureTime:
+ type: 'string'
+ description: 'Contains the name of the Fare tagged against the specific fare
+ options.'
+ example: 'Comfort+'
+ OpaqueNumberOfStops:
+ type: 'string'
+ description: 'Departure time range will be shown only for opaque flight offers.'
+ example: '12AM_TO_7:59AM'
+ description: "Container of information about each flight offer
+
+ (Less information shown if the offer is and opaque flight offer)
+
+ Flights (the complete journey to your final destination by air) are made
+ up of:
+
+ \ Segments (the trip from one stopping place to another) are made up of:
+
+ \ Legs (take off at one airport and land at another)"
+ xml:
+ name: 'Segment'
+ FlightsV3Warning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Warning message code.'
+ example: 'NO_RESULTS_FOUND'
+ Description:
+ type: 'string'
+ description: 'Warning message description'
+ example: 'No flights solutions found for the request.'
+ description: 'Container for warning messages.'
+ Wifi:
+ type: 'object'
+ properties:
+ Available:
+ type: 'string'
+ description: 'Indication of the availability of WIFI amenity.'
+ enum:
+ - 'YES'
+ - 'NO'
+ - 'UNKNOWN'
+ description: 'Container for WiFi amenities available in this flight leg'
+ FlightsV3APIMError:
+ title: 'APIMError'
+ description: 'Container for error responses from APIM'
+ properties:
+ message:
+ type: 'string'
+ FlightLinksRequest:
+ type: 'object'
+ required:
+ - 'Flights'
+ - 'Passengers'
+ properties:
+ Flights:
+ type: 'array'
+ items:
+ $ref: '#/components/schemas/Flight'
+ Passengers:
+ type: 'object'
+ items:
+ $ref: '#/components/schemas/PassengerDetails'
+ Links:
+ type: 'array'
+ items:
+ type: 'string'
+ Flight:
+ type: 'object'
+ required:
+ - 'FlightId'
+ - 'Segments'
+ properties:
+ FlightId:
+ type: 'string'
+ example: 'abc'
+ Segments:
+ type: 'array'
+ items:
+ type: 'object'
+ properties:
+ Segment:
+ type: 'object'
+ required:
+ - 'FareType'
+ - 'Provider'
+ - 'Legs'
+ properties:
+ FareType:
+ type: 'string'
+ enum:
+ - 'PUBLISHED'
+ - 'NET'
+ - 'WEB'
+ Provider:
+ type: 'string'
+ example: 'Sabre'
+ LowCost:
+ type: 'boolean'
+ Legs:
+ type: 'array'
+ items:
+ type: 'object'
+ required:
+ - 'DepartureAirport'
+ - 'ArrivalAirport'
+ - 'DepartureDateTime'
+ - 'ArrivalDateTime'
+ - 'FlightNumber'
+ - 'MarketingAirlineCode'
+ - 'BookingCode'
+ - 'CabinClass'
+ properties:
+ DepartureAirport:
+ type: 'object'
+ properties:
+ Airport:
+ type: 'object'
+ required:
+ - 'Code'
+ properties:
+ Code:
+ type: 'string'
+ example: 'LAS'
+ ArrivalAirport:
+ type: 'object'
+ properties:
+ Airport:
+ type: 'object'
+ required:
+ - 'Code'
+ properties:
+ Code:
+ type: 'string'
+ example: 'SEA'
+ DepartureDateTime:
+ type: 'string'
+ format: 'date-time'
+ example: '2021-07-05T07:15:00.000-06:00'
+ ArrivalDateTime:
+ type: 'string'
+ format: 'date-time'
+ example: '2021-07-05T09:13:00.000-08:00'
+ FlightNumber:
+ type: 'string'
+ example: '2537'
+ MarketingAirlineCode:
+ type: 'string'
+ example: 'AA'
+ BookingCode:
+ type: 'string'
+ example: 'Y'
+ CabinClass:
+ type: 'string'
+ enum:
+ - 'ECONOMY'
+ - 'FIRST'
+ - 'BUSINESS'
+ - 'PREMIUM_ECONOMY'
+ TotalPrice:
+ type: 'object'
+ required:
+ - 'Value'
+ - 'Currency'
+ properties:
+ Value:
+ type: 'string'
+ example: '300.00'
+ Currency:
+ type: 'string'
+ example: 'USD'
+ PassengerDetails:
+ type: 'object'
+ required:
+ - 'Adult'
+ - 'Senior'
+ properties:
+ Adult:
+ type: 'string'
+ example: '1'
+ Senior:
+ type: 'string'
+ example: '1'
+ ChildrenAges:
+ type: 'string'
+ example: '4,5'
+ InfantInSeat:
+ type: 'string'
+ example: '1'
+ InfantInLap:
+ type: 'string'
+ example: '1'
+ FlightLinksResponse:
+ type: 'object'
+ required:
+ - 'TransactionId'
+ properties:
+ Warnings:
+ type: 'array'
+ items:
+ type: 'object'
+ required:
+ - 'Code'
+ - 'Description'
+ properties:
+ Code:
+ type: 'string'
+ example: 'FLIGHT_LINKS_MISSING'
+ Description:
+ type: 'string'
+ example: '1 of the link(s) requested found missing in the response'
+ Links:
+ type: 'array'
+ items:
+ type: 'object'
+ required:
+ - 'FlightId'
+ properties:
+ FlightId:
+ type: 'string'
+ example: 'abc'
+ WebDetails:
+ type: 'object'
+ required:
+ - 'Method'
+ - 'Href'
+ properties:
+ Method:
+ type: 'string'
+ example: 'GET'
+ Href:
+ type: 'string'
+ example: 'https://www.expedia.com/go/udp?CCheck=1&piid=~null.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSgC~AQpCCh8I0aQBEgM1MTcYwlMgwzsozdvrATDb3esBOFdAAFgBCh8I0aQBEgM3MjUYwzsgrhwont_rATDr5esBOFdAAFgBEgYIARABGAEYBCIECAMQASIECAIQASIECAEQAigCMAE&Price=2576.68&CurrencyCode=USD¤cy=USD&DepartureTLA=L1:COK&ArrivalTLA=L1:ORD&DepartureDate=L1:2021-05-06&ArrivalDate=L1:2021-05-06&NumAdult=1&NumSenior=1&NumChild=2&ChildrenAges=2|14&Sort=10&TripType=OneWay&ProductType=air&eapid=0-1&ServiceVersion=V5&MessageGuid=c8912c1f-269b-4ca0-97d3-2ab4a62ea14a&langid=1033'
+ ApiDetails:
+ type: 'object'
+ required:
+ - 'Accept'
+ - 'Method'
+ - 'Href'
+ properties:
+ Accept:
+ type: 'string'
+ example: 'application/vnd.exp-flight.v3+json'
+ Method:
+ type: 'string'
+ example: 'GET'
+ Href:
+ type: 'string'
+ example: 'https://apim.expedia.com/flights/details/~null.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSgC~AQpCCh8I0aQBEgM1MTcYwlMgwzsozdvrATDb3esBOFdAAFgBCh8I0aQBEgM3MjUYwzsgrhwont_rATDr5esBOFdAAFgBEgYIARABGAEYBCIECAMQASIECAIQASIECAEQAigCMAE?price=2576.68&childrenAges=2%2C14'
+ TransactionId:
+ type: 'string'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ ErrorResponse:
+ type: 'object'
+ required:
+ - 'TransactionId'
+ - 'Errors'
+ properties:
+ TransactionId:
+ type: 'string'
+ example: 'a9e371c4-89d9-4f9c-8df7-df105830e7fe'
+ Errors:
+ type: 'array'
+ items:
+ type: 'object'
+ required:
+ - 'Code'
+ - 'Description'
+ properties:
+ Code:
+ type: 'string'
+ example: 'ERROR_CODE'
+ Description:
+ type: 'string'
+ example: 'Error Description'
+ FlightsV3Address:
+ required:
+ - 'Address1'
+ - 'City'
+ - 'Country'
+ type: 'object'
+ properties:
+ Address1:
+ type: 'string'
+ description: 'Street Number, Street Name, or PO Box'
+ example: '724 Pine St'
+ Address2:
+ type: 'string'
+ description: 'Apartment, Floor, Suite, Bldg # or more specific information about
+ Address1.'
+ example: 'Second Floor'
+ City:
+ type: 'string'
+ description: 'The city'
+ example: 'New York'
+ Province:
+ type: 'string'
+ description: 'The state or province'
+ example: 'NY'
+ Country:
+ type: 'string'
+ description: '3-letter code for the country'
+ example: 'USA'
+ PostalCode:
+ type: 'string'
+ description: 'Zip/postal code'
+ example: '98004'
+ FlightsV3AgeClassRestriction:
+ type: 'object'
+ properties:
+ AgeClass:
+ type: 'string'
+ description: 'Categories for hotel guests, based on age.'
+ example: 'Senior'
+ enum:
+ - 'All Ages'
+ - 'Senior'
+ - 'Adult'
+ - 'Child'
+ - 'Infant'
+ - 'Other'
+ AgeMinimum:
+ type: 'integer'
+ description: 'The minimum age defined in a particular AgeClass.'
+ format: 'int32'
+ example: 2
+ AgeMaximum:
+ type: 'integer'
+ description: 'The maximum age defined in a particular AgeClass.
+
+ If not specified, the AgeClass has no upper bound.'
+ format: 'int32'
+ example: 17
+ MaxGuestCount:
+ type: 'integer'
+ description: 'The max guest count allowed in a particular AgeClass.'
+ format: 'int32'
+ example: 3
+ description: 'Container for room occupancy rules based on the age of the guests.'
+ Amenity:
+ type: 'object'
+ properties:
+ SeatChoice:
+ $ref: '#/components/schemas/SeatChoice'
+ CarryOnBag:
+ $ref: '#/components/schemas/Bag'
+ CheckedBag:
+ type: 'array'
+ description: 'List of Checked Bag Amenity.'
+ items:
+ $ref: '#/components/schemas/Bag'
+ Change:
+ $ref: '#/components/schemas/AmenityInfo'
+ Free24HrCancellation:
+ type: 'boolean'
+ description: 'True if booking can be cancelled with in 24 hours after booking.'
+ Refund:
+ $ref: '#/components/schemas/AmenityInfo'
+ PersonalItem:
+ $ref: '#/components/schemas/AmenityInfo'
+ Upgrade:
+ $ref: '#/components/schemas/AmenityInfo'
+ BoardingGroup:
+ type: 'array'
+ description: 'List of available BoardingGroup Amenity.'
+ example:
+ - 'BASED_ON_SEAT_LOCATION'
+ items:
+ type: 'string'
+ description: 'List of available BoardingGroup Amenity.'
+ example: 'BASED_ON_SEAT_LOCATION'
+ xml:
+ name: 'BoardingGroup'
+ enum:
+ - 'LAST'
+ - 'PRIORITY'
+ - 'BASED_ON_SEAT_LOCATION'
+ - 'PAY_TO_UPGRADE'
+ description: 'Container for various amenities included in a particular segment.'
+ xml:
+ name: 'Amenities'
+ AmenityInfo:
+ type: 'object'
+ properties:
+ Availability:
+ type: 'string'
+ description: 'Availability of Amenity'
+ example: 'INCLUDED'
+ enum:
+ - 'INCLUDED'
+ - 'NOT_AVAILABLE'
+ - 'AVAILABLE_FOR_FEE'
+ description: 'Availability of Passenger Temperature Check.
+
+ Possible values: INCLUDED, NOT_AVAILABLE'
+ xml:
+ name: 'AmenityInfo'
+ Bag:
+ type: 'object'
+ properties:
+ BagNumber:
+ type: 'integer'
+ description: 'Bag number of CarryOnBag amenity for which the Availability
+ applies.'
+ format: 'int32'
+ example: 1
+ Availability:
+ type: 'string'
+ description: 'Availability of Amenity'
+ example: 'INCLUDED'
+ enum:
+ - 'INCLUDED'
+ - 'NOT_AVAILABLE'
+ - 'AVAILABLE_FOR_FEE'
+ description: 'List of Checked Bag Amenity.'
+ xml:
+ name: 'Bag'
+ CrossSell:
+ required:
+ - 'HotelCount'
+ - 'Hotels'
+ - 'NumberOfNights'
+ - 'NumberOfRooms'
+ - 'Occupants'
+ - 'Offers'
+ - 'StayDates'
+ type: 'object'
+ properties:
+ HotelCount:
+ type: 'integer'
+ description: 'Number of hotels available.
+
+ '
+ format: 'int32'
+ StayDates:
+ $ref: '#/components/schemas/FlightsV3StayDates'
+ NumberOfRooms:
+ type: 'integer'
+ description: 'Number of rooms requested.
+
+ '
+ format: 'int32'
+ default: 1
+ NumberOfNights:
+ type: 'integer'
+ description: 'Number of nights guest staying in the hotel.
+
+ '
+ format: 'int32'
+ Occupants:
+ type: 'array'
+ description: 'Container for occupants list.
+
+ '
+ items:
+ $ref: '#/components/schemas/FlightsV3Occupant'
+ Hotels:
+ type: 'array'
+ description: 'Container for information on each hotel offer.
+
+ '
+ items:
+ $ref: '#/components/schemas/FlightsV3Hotel'
+ Offers:
+ type: 'array'
+ description: 'Container for information about the hotel used in this package
+ offer.
+
+ '
+ items:
+ $ref: '#/components/schemas/PackageOffers'
+ description: 'Container for cross sell information'
+ xml:
+ name: 'CrossSell'
+ FlightsV3Description:
+ type: 'object'
+ properties:
+ LocationTeaser:
+ type: 'string'
+ description: 'A description of the property''s location.'
+ example: 'Built on the original site of the University of Washington'
+ HotelTeaser:
+ type: 'string'
+ description: 'A description of the features and amenities of the property itself.'
+ example: 'A top-notch fitness club and spa features a pool'
+ RoomTeaser:
+ type: 'string'
+ description: 'The common description for all of the rooms in the property.'
+ example: 'Renovated in May 2016, guest rooms feature upholstered chairs'
+ description: 'Container for information of the descriptions of the hotel.'
+ FareOptions:
+ required:
+ - 'FareName'
+ - 'FeeApplied'
+ - 'Included'
+ - 'SegmentIds'
+ type: 'object'
+ properties:
+ FareName:
+ type: 'string'
+ description: 'Contains the name of the Fare tagged against the specific fare
+ options.'
+ example: 'Comfort+'
+ SegmentIds:
+ type: 'array'
+ description: 'Contains list of segment Ids to which these FareOptions are
+ provided.'
+ example:
+ - 'MTEx'
+ items:
+ type: 'string'
+ description: 'Contains list of segment Ids to which these FareOptions are
+ provided.'
+ example: 'MTEx'
+ xml:
+ name: 'SegmentIds'
+ Included:
+ type: 'array'
+ description: 'Contains list of options that are already included.'
+ example:
+ - 'CARRY_ON_BAG'
+ items:
+ type: 'string'
+ description: 'Contains list of options that are already included.'
+ example: 'CARRY_ON_BAG'
+ xml:
+ name: 'Included'
+ FeeApplied:
+ type: 'array'
+ description: 'Contains list of options that are fee applied.'
+ example:
+ - 'Meals'
+ items:
+ type: 'string'
+ description: 'Contains list of options that are fee applied.'
+ example: 'Meals'
+ xml:
+ name: 'FeeApplied'
+ NotAvailable:
+ type: 'array'
+ description: 'Contains list of options that are unavailable.'
+ example:
+ - 'CANCELLATION'
+ items:
+ type: 'string'
+ description: 'Contains list of options that are unavailable.'
+ example: 'CANCELLATION'
+ xml:
+ name: 'NotAvailable'
+ Amenities:
+ $ref: '#/components/schemas/Amenity'
+ description: 'Contains list of fare options'
+ xml:
+ name: 'FareOptions'
+ FlightDetailsResponse:
+ required:
+ - 'Offer'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for Warning Codes.'
+ items:
+ $ref: '#/components/schemas/FlightDetailsWarning'
+ Segments:
+ type: 'array'
+ description: 'Container for flight segments.'
+ items:
+ $ref: '#/components/schemas/Segment'
+ Offer:
+ $ref: '#/components/schemas/FlightDetailsOffer'
+ AllOffers:
+ type: 'array'
+ description: 'Contains list of all the available alternate fare upsell/downsell
+ offers.'
+ items:
+ $ref: '#/components/schemas/FlightDetailsOffer'
+ ValidFormsOfPayment:
+ type: 'array'
+ description: 'Container for fees that are charged for using certain payment
+ methods.'
+ items:
+ $ref: '#/components/schemas/AirValidFormsOfPayment'
+ Lounges:
+ type: 'object'
+ additionalProperties:
+ type: 'array'
+ description: 'Container showing list of keys and its related lounge information.
+ This key name can change based on the keys defined.'
+ items:
+ $ref: '#/components/schemas/Lounge'
+ CrossSell:
+ $ref: '#/components/schemas/CrossSell'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ xml:
+ name: 'FlightDetailsResponse'
+ FlightsV3Hotel:
+ required:
+ - 'Id'
+ - 'Name'
+ - 'LocalCurrencyCode'
+ - 'Location'
+ - 'Distance'
+ - 'Description'
+ - 'Status'
+ - 'ThumbnailUrl'
+ - 'StarRating'
+ - 'IsOfficialRating'
+ - 'GuestRating'
+ - 'GuestReviewCount'
+ - 'Links'
+ - 'RoomTypes'
+ - 'Policies'
+ - 'HotelAmenities'
+ - 'RoomAmenities'
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'The unique, Expedia-specific hotel property identifier used to
+ designate a single hotel.'
+ example: '14747'
+ Name:
+ type: 'string'
+ description: 'The common name of the hotel'
+ example: 'Four Seasons Hotel Seattle'
+ LocalCurrencyCode:
+ type: 'string'
+ description: 'The Local Currency Code for Hotel (which will be used for any fees
+ that must be paid at the hotel)'
+ example: 'USD'
+ Location:
+ required:
+ - 'Address'
+ - 'PointOfInterest'
+ - 'GeoLocation'
+ type: 'object'
+ properties:
+ Address:
+ $ref: '#/components/schemas/FlightsV3Address'
+ PointOfInterest:
+ type: 'string'
+ GeoLocation:
+ $ref: '#/components/schemas/FlightsV3GeoLocation'
+ description: 'Hotel address information'
+ Distance:
+ $ref: '#/components/schemas/FlightsV3Distance'
+ Description:
+ $ref: '#/components/schemas/FlightsV3Description'
+ Status:
+ type: 'string'
+ description: "\t
+
+ Indicates whether there are available offers at the property during
+ the dates requested, as well as information as to why.
+
+ Note that pricing will only be present in the API response for a
+ status of 'AVAILABLE'.
+
+ If there are no rooms available at the property for the dates
+ requested, then 'NOT_AVAILABLE' will be returned.
+
+ If there are available rooms, but none that meet the specific
+ parameters of the search request, then one of the other messages
+ will be returned"
+ example: 'AVAILABLE'
+ enum:
+ - 'AVAILABLE'
+ - 'NOT_AVAILABLE'
+ - 'ERROR'
+ - 'NUMBER_OF_ADULTS_NOT_ACCEPTED'
+ - 'NUMBER_OF_CHILDREN_NOT_ACCEPTED'
+ - 'NUMBER_OF_INFANTS_NOT_ACCEPTED'
+ - 'NUMBER_OF_PERSONS_NOT_ACCEPTED'
+ - 'CHECK_IN_AGE_NOT_ACCEPTED'
+ ThumbnailUrl:
+ type: 'string'
+ description: 'URL of the thumbnail image of the hotel.Note that other images
+ sizes are available - You can find a link to the complete list of
+ Supported Hotel Image Sizes in the Related Links section at the
+ bottom of the page'
+ example: 'https://images.trvl-media.com/hotels/3000000/2170000/2163100/2163007/2163007_15_t.jpg'
+ StarRating:
+ type: 'string'
+ description: 'Star rating value of the hotel property.'
+ example: '5.0'
+ enum:
+ - '1.0'
+ - '1.5'
+ - '2.0'
+ - '2.5'
+ - '3.0'
+ - '3.5'
+ - '4.0'
+ - '4.5'
+ - '5.0'
+ IsOfficialRating:
+ type: 'boolean'
+ description: 'Official rating value indicates if the hotel is certified or
+ official.
+
+ (Required in Australia Point of Sale)'
+ example: true
+ GuestRating:
+ type: 'string'
+ description: 'Average overall guest rating of the hotel.
+
+ The value is between 1.0 and 5.0 in 0.1 increments.
+
+ Higher is better.'
+ example: '4.5'
+ GuestReviewCount:
+ type: 'integer'
+ description: 'The total count of guest reviews used to create the average
+ GuestRating above.'
+ format: 'int32'
+ example: 240
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: 'Container for list of HATEOAS links to Expedia/partner website to
+ complete booking.'
+ Policies:
+ $ref: '#/components/schemas/FlightsV3HotelPolicies'
+ Media:
+ type: 'array'
+ description: 'Container for hotel images'
+ items:
+ $ref: '#/components/schemas/FlightsV3Media'
+ HotelAmenities:
+ type: 'array'
+ description: 'Container for all hotel amenities.'
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ RoomAmenities:
+ type: 'array'
+ description: 'Container for all room amenities.'
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ Accessibility:
+ type: 'array'
+ description: 'The accessibility options available for the room.'
+ example:
+ - 'Accessible path of travel'
+ - 'Accessible bathroom'
+ - 'Roll-in shower'
+ - 'Handicapped parking'
+ - 'In-room accessibility'
+ - 'Accessibility equipment for the deaf'
+ - 'Braille or raised signage'
+ items:
+ type: 'string'
+ description: 'The accessibility options available for the room.'
+ example: 'Handicapped parking'
+ xml:
+ name: 'Accessibility'
+ RoomTypes:
+ type: 'array'
+ description: 'Container for all of available room types.'
+ items:
+ $ref: '#/components/schemas/FlightsV3RoomType'
+ description: 'Container for information on each offered hotel.'
+ FlightsV3HotelPolicies:
+ type: 'object'
+ properties:
+ CheckInStartTime:
+ type: 'string'
+ description: 'Beginning of the standard check-in window on the check in date,
+ stated in the local time of the property.'
+ example: '3 PM'
+ CheckInEndTime:
+ type: 'string'
+ description: 'End of the standard check-in window on the check in date, stated
+ in the local time of the property.'
+ example: '5 PM'
+ CheckOutTime:
+ type: 'string'
+ description: 'Customers must check out before this time on the check out date,
+ expressed in the local time of the property.'
+ example: 'noon'
+ PetPolicies:
+ type: 'array'
+ description: 'The policy of the property toward having pets stay with guests.'
+ example:
+ - 'Pets allowed, Up to 20 lb'
+ items:
+ type: 'string'
+ description: 'The policy of the property toward having pets stay with guests.'
+ example: '["Pets allowed, Up to 20 lb"]'
+ xml:
+ name: 'PetPolicies'
+ ChildrenAndExtraBedsPolicies:
+ type: 'array'
+ description: 'The policy of the property for having children stay at the
+ property, as well as for including extra beds in the room.'
+ example:
+ - 'Children are welcome'
+ - 'Cribs/infant beds (surcharge)'
+ items:
+ type: 'string'
+ description: 'The policy of the property for having children stay at the
+ property, as well as for including extra beds in the room.'
+ example: 'Children are welcome, Cribs/infant beds (surcharge)'
+ xml:
+ name: 'ChildrenAndExtraBedsPolicies'
+ description: 'Container for Hotel policy information.'
+ HotelReference:
+ required:
+ - 'HotelId'
+ - 'RoomKey'
+ type: 'object'
+ properties:
+ HotelId:
+ type: 'string'
+ description: 'Unique id to represent a hotel'
+ example: '2163007'
+ RoomKey:
+ type: 'string'
+ description: 'Unique id to represent Room'
+ example: 'CgUyMDIzMBIuCgkyMDEzMDQ1OTcSCTIwNjMyNzYwMRoCMjQqCDIwMTcwNzI1MggyMDE3MDcyNioDCgEy'
+ description: 'Container for Hotel Reference information'
+ FlightsV3LodgingAmenity:
+ required:
+ - 'Id'
+ - 'Name'
+ type: 'object'
+ properties:
+ Id:
+ type: 'string'
+ description: 'The identification of a property amenity.'
+ example: '2065'
+ Name:
+ type: 'string'
+ description: 'The description of a property amenity.'
+ example: 'Business center'
+ description: 'The amenities of the rateplan.'
+ FlightsV3Media:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'type of the media. So far there is only one option:
+
+ 1: Image'
+ example: '1'
+ Title:
+ type: 'string'
+ description: 'Image title'
+ example: 'Guestroom'
+ Size:
+ type: 'string'
+ description: 'Image size
+
+ You can find a link to the complete list of Supported Images Sizes
+ in the Related Links section at the bottom of the page.'
+ example: 't'
+ Url:
+ type: 'string'
+ description: 'Image URL'
+ example: 'https://images.trvl-media.com/hotels/1000000/30000/20300/20230/20230_159_t.jpg'
+ description: 'Container for hotel images'
+ FlightsV3Occupant:
+ type: 'object'
+ properties:
+ Adults:
+ type: 'integer'
+ description: 'The number of adults in a room.
+
+ '
+ format: 'int32'
+ example: 1
+ ChildAges:
+ type: 'array'
+ description: 'The ages of children in a room.
+
+ '
+ example:
+ - 2
+ - 3
+ - 5
+ items:
+ type: 'integer'
+ description: 'The ages of children in a room.
+
+ '
+ format: 'int32'
+ xml:
+ name: 'ChildAges'
+ description: 'Container of occupants. It is an array including occupants of each
+ room.'
+ FlightDetailsOffer:
+ required:
+ - 'International'
+ - 'Links'
+ - 'MerchantName'
+ - 'FareOptions'
+ - 'OpaqueFlight'
+ - 'OfferPrice'
+ - 'Refundable'
+ - 'SplitTicket'
+ - 'TicketType'
+ - 'UndisclosedGenderSupported'
+ - 'UnspecifiedGenderSupported'
+ type: 'object'
+ properties:
+ offerToken:
+ type: 'string'
+ description: 'Unique key to identify each offer.'
+ example: 'v5-21c33c9b411f87e895f9dfa8df82b535-38-1-st-v5-7b789d5a41dd7490c9ffbeaead2aa37a-3'
+ ReferenceId:
+ type: 'string'
+ description: 'Key that allows the user to create a package using this flight.'
+ example: 'Flight_Reference_key_67890'
+ SplitTicket:
+ type: 'boolean'
+ description: 'True if more that one ticket will be issued for this offer per
+ passenger.
+
+ False if only one ticket will be issued per passenger.'
+ MetaApiBook:
+ type: 'boolean'
+ description: 'To indicate meta partners whether the air product is available for
+ TAAS instant book.'
+ OpaqueFlight:
+ type: 'boolean'
+ description: 'Indicate whether the air product is a opaque flight product or
+ not.
+
+ If true, then there will be no Segments node for this air product.'
+ Free24HourCancellation:
+ type: 'boolean'
+ description: 'True if Booking can be cancelled within 24 hours of booking.'
+ MerchantName:
+ type: 'string'
+ description: 'All Merchant name appending them together with a ?*?'
+ example: 'Spirit Airlines*Frontier Airlines'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: 'Container for deeplink URL information.'
+ SegmentIds:
+ type: 'array'
+ description: 'Container for list of segment ids in a particular offer.
+
+ For Opaque flight, no segment will be present.'
+ example:
+ - '2816ed613aedd7513c953c33367df2e4'
+ - 'MjNfUHVibGlzaGVk'
+ items:
+ type: 'string'
+ description: 'Container for list of segment ids in a particular offer.
+
+ For Opaque flight, no segment will be present.'
+ example: '2816ed613aedd7513c953c33367df2e4'
+ xml:
+ name: 'SegmentIds'
+ OfferPrice:
+ $ref: '#/components/schemas/OfferPrice'
+ VfopKey:
+ type: 'string'
+ description: 'Key generated for Valid form of payment'
+ example: 'VFOP-AA'
+ Refundable:
+ type: 'boolean'
+ description: 'True if flight is refundable,
+
+ False if it''s not refundable.'
+ RefundPenalty:
+ type: 'array'
+ description: 'Contains refund penalty information'
+ items:
+ $ref: '#/components/schemas/FlightDetailsRefundPenalty'
+ International:
+ type: 'boolean'
+ description: 'True, if flight is international.
+
+ False, if flight departs and arrives within the same country'
+ TicketType:
+ type: 'string'
+ description: 'Type of ticket being issued'
+ example: 'E-Ticket'
+ FareOptions:
+ type: 'array'
+ description: 'Contains list of fare options'
+ items:
+ $ref: '#/components/schemas/FareOptions'
+ UndisclosedGenderSupported:
+ type: 'boolean'
+ description: 'Whether to support undisclosed gender?
+
+ True = support
+
+ False = not support'
+ UnspecifiedGenderSupported:
+ type: 'boolean'
+ description: 'Whether to support unspecified gender?
+
+ True = support
+
+ False = not support'
+ description: 'Contains list of all the available alternate fare upsell/downsell
+ offers.'
+ xml:
+ name: 'Offer'
+ PackageOffers:
+ required:
+ - 'Links'
+ - 'PackagedOffer'
+ - 'Price'
+ type: 'object'
+ properties:
+ Price:
+ $ref: '#/components/schemas/PackagePrice'
+ Links:
+ type: 'object'
+ additionalProperties:
+ $ref: '#/components/schemas/FlightsV3Link'
+ description: 'Container for HATEOAS links to websites and/or API''s.'
+ PackagedOffer:
+ $ref: '#/components/schemas/PackagedOffer'
+ description: 'Container for information about the hotel used in this package
+ offer.
+
+ '
+ PackagePrice:
+ required:
+ - 'AverageCostPerPerson'
+ - 'Fees'
+ - 'PackageBasePrice'
+ - 'PackageTaxesAndFees'
+ - 'PackageTotalPrice'
+ - 'Savings'
+ - 'StandAloneTotalPrice'
+ type: 'object'
+ properties:
+ PackageBasePrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ PackageTotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ PackageTaxesAndFees:
+ $ref: '#/components/schemas/FlightsV3Money'
+ StandAloneTotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Fees:
+ type: 'array'
+ description: 'Special fees attached to the package (for example, Air Service
+ Fees).
+
+ This amount is not included in PackageTaxesAndFees.'
+ items:
+ $ref: '#/components/schemas/Fee'
+ TotalHotelMandatoryFees:
+ $ref: '#/components/schemas/Fee'
+ Savings:
+ $ref: '#/components/schemas/PackageSavings'
+ AverageCostPerPerson:
+ $ref: '#/components/schemas/FlightsV3Money'
+ description: 'Container for package price information'
+ PackageSavings:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ description: 'The amount of money that the traveler is saving by booking a
+ package over booking the same offers as standalone products.'
+ allOf:
+ - $ref: '#/components/schemas/FlightsV3Money'
+ - type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ LocalCurrencyPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ Type:
+ type: 'string'
+ description: 'Savings type'
+ example: 'HotelDeal'
+ Description:
+ type: 'string'
+ description: 'Description of savings'
+ example: 'Book this and save $55 (7%)'
+ PackagedOffer:
+ required:
+ - 'FlightReferenceId'
+ - 'HotelReference'
+ type: 'object'
+ properties:
+ HotelReference:
+ type: 'array'
+ description: 'Container for Hotel Reference information'
+ items:
+ $ref: '#/components/schemas/HotelReference'
+ FlightReferenceId:
+ type: 'string'
+ description: 'Flight offer id'
+ example: 'v587889e324c42342ec2ab7a8ecddc8a88'
+ StayDates:
+ $ref: '#/components/schemas/FlightsV3StayDates'
+ NumberOfNights:
+ type: 'integer'
+ description: 'Number of nights guest staying in the hotel'
+ format: 'int32'
+ example: 4
+ description: 'Container for Package Offer'
+ FlightsV3Promotion:
+ type: 'object'
+ properties:
+ Type:
+ type: 'string'
+ description: 'Promotion type, possible values: PO | FN'
+ example: 'PO'
+ Description:
+ type: 'string'
+ description: 'The description of the promotion.'
+ example: '20%Off'
+ Value:
+ type: 'number'
+ format: 'double'
+ FlightsV3RatePlan:
+ required:
+ - 'InventorySourceId'
+ - 'RatePlanId'
+ - 'RoomTypeId'
+ type: 'object'
+ properties:
+ RoomTypeId:
+ type: 'string'
+ description: 'The room type identifier.'
+ example: '200287452'
+ RatePlanId:
+ type: 'string'
+ description: 'The rate plan identifier.'
+ example: '201714191'
+ RateRuleId:
+ type: 'string'
+ description: 'The identifier of rate rule.'
+ example: '213544817'
+ InventorySourceId:
+ type: 'string'
+ description: 'The identification number of the source that provides the rate
+ plan.'
+ example: '24'
+ InventorySourceCode:
+ type: 'string'
+ description: 'The source name that provided the rate plan.'
+ example: 'JT'
+ StayDates:
+ $ref: '#/components/schemas/FlightsV3StayDates'
+ RemainingCount:
+ type: 'integer'
+ description: 'The number of rooms remaining through Expedia for this room type.
+
+ NOTE: This value does NOT represent the total number of rooms
+ remaining at the hotel property, only the number of rooms allocated
+ to Expedia for sale by the property that currently remain in
+ Expedia''s inventory. When a hotel is listed as ''sold out'' by
+ Expedia there may still be rooms available for sale by the hotel
+ through other channels.
+
+ CMA Compliance Note (UK): websites in the UK that display
+ remainingCount should make it clear to consumers that this count
+ refers to the number of rooms remaining within Expedia inventory -
+ NOT the number remaining at the property.'
+ format: 'int32'
+ example: 3
+ FreeInternet:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free Internet.
+
+ (either wireless or wired)'
+ example: true
+ FreeWiFi:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free wireless
+ Internet access.'
+ example: true
+ FreeInternetDetails:
+ type: 'array'
+ description: 'The localized details for the free internet amenity (only shown
+ when FreeInternet = true).'
+ example:
+ - 'Free Wireless Internet, Wired high-speed Internet-comp'
+ items:
+ type: 'string'
+ description: 'The localized details for the free internet amenity (only shown
+ when FreeInternet = true).'
+ example: '["Free Wireless Internet, Wired high-speed Internet-comp"]'
+ xml:
+ name: 'FreeInternetDetails'
+ FreeParking:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free parking.'
+ example: true
+ FreeBreakfast:
+ type: 'boolean'
+ description: 'Indicates whether the price of the room includes free breakfast.'
+ example: true
+ FreeBreakfastDetails:
+ type: 'array'
+ description: 'The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).'
+ example:
+ - 'Full Breakfast'
+ - 'Full Board'
+ items:
+ type: 'string'
+ description: 'The localized details for the free breakfast amenity (only shown
+ when FreeBreakfast = true).'
+ example: '["Full Breakfast","Full Board"]'
+ xml:
+ name: 'FreeBreakfastDetails'
+ Amenities:
+ type: 'array'
+ description: 'The amenities of the rateplan.'
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ description: 'Container for rate plan information.'
+ FlightDetailsRefundPenalty:
+ required:
+ - 'SegmentIds'
+ type: 'object'
+ properties:
+ SegmentIds:
+ type: 'array'
+ description: 'Contains a list of segment Ids'
+ example:
+ - '2816ed613aedd7513c953c33367df2e4'
+ items:
+ type: 'string'
+ description: 'Contains a list of segment Ids'
+ example: '2816ed613aedd7513c953c33367df2e4'
+ xml:
+ name: 'SegmentIds'
+ PreTripChange:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ PreTripCancel:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ EnrouteChange:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ EnrouteCancel:
+ $ref: '#/components/schemas/RefundPenaltyDetail'
+ Transferable:
+ type: 'string'
+ enum:
+ - 'YES'
+ - 'NO'
+ - 'UNKNOWN'
+ NameChangeAllowed:
+ type: 'string'
+ enum:
+ - 'YES'
+ - 'NO'
+ - 'UNKNOWN'
+ description: 'Contains refund penalty information'
+ FlightsV3RoomOccupancyPolicy:
+ required:
+ - 'MaxGuestCount'
+ - 'MinCheckInAge'
+ type: 'object'
+ properties:
+ MaxGuestCount:
+ type: 'integer'
+ description: 'The maximum number of guests allowed to stay in a room.'
+ format: 'int32'
+ example: 3
+ AgeClassRestrictions:
+ type: 'array'
+ description: 'Container for room occupancy rules based on the age of the guests.'
+ items:
+ $ref: '#/components/schemas/FlightsV3AgeClassRestriction'
+ description: 'Room occupancy policy.'
+ FlightsV3RoomType:
+ required:
+ - 'offerToken'
+ - 'RatePlanType'
+ - 'RatePlans'
+ - 'Traveler'
+ type: 'object'
+ properties:
+ Description:
+ type: 'string'
+ description: 'Text description of the room type.'
+ example: 'Room, 1 King Bed, City View (Seattle V)'
+ RatePlans:
+ type: 'array'
+ description: 'Container for rate plan information.'
+ items:
+ $ref: '#/components/schemas/FlightsV3RatePlan'
+ Promotions:
+ type: 'array'
+ items:
+ $ref: '#/components/schemas/FlightsV3Promotion'
+ SmokingOption:
+ type: 'string'
+ description: 'The smoking options available for the room type.
+
+ Options could be:
+
+ SmokingOrNonSmoking
+
+ Smoking
+
+ NonSmoking'
+ example: 'SmokingOrNonSmoking'
+ enum:
+ - 'SmokingOrNonSmoking'
+ - 'Smoking'
+ - 'NonSmoking'
+ RoomOccupancyPolicy:
+ $ref: '#/components/schemas/FlightsV3RoomOccupancyPolicy'
+ Amenities:
+ type: 'array'
+ description: 'Container for all room amenities.'
+ items:
+ $ref: '#/components/schemas/FlightsV3LodgingAmenity'
+ Media:
+ type: 'array'
+ description: 'Container for hotel images'
+ items:
+ $ref: '#/components/schemas/FlightsV3Media'
+ SeatChoice:
+ type: 'object'
+ properties:
+ Availability:
+ type: 'string'
+ description: 'Availability of Amenity'
+ example: 'INCLUDED'
+ enum:
+ - 'INCLUDED'
+ - 'NOT_AVAILABLE'
+ - 'AVAILABLE_FOR_FEE'
+ Restriction:
+ type: 'string'
+ description: 'Restriction if any on SeatChoice Amenity.'
+ example: 'ONLY_AT_CHECKIN'
+ enum:
+ - 'ONLY_AT_CHECKIN'
+ description: 'Contains seat choice information.'
+ xml:
+ name: 'SeatChoice'
+ FlightsV3StayDates:
+ required:
+ - 'CheckInDate'
+ - 'CheckOutDate'
+ type: 'object'
+ properties:
+ CheckInDate:
+ type: 'string'
+ description: 'The initial day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ format: 'date'
+ CheckOutDate:
+ type: 'string'
+ description: 'The final day of the hotel stay in an ISO 8601 Date format
+ [YYYY-MM-DD].'
+ format: 'date'
+ description: 'Container for Dates of Stay information'
+ FlightDetailsWarning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Standardized warning code.'
+ example: 'PRICE_INCREASE'
+ Description:
+ type: 'string'
+ description: 'Standardized warning description message.'
+ example: 'A price change was detected.'
+ OriginalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ NewPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ ChangedAmount:
+ $ref: '#/components/schemas/FlightsV3Money'
+ FlexSearchResponse:
+ required:
+ - 'Offers'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for Warning Codes.'
+ items:
+ type: 'object'
+ properties:
+ Warning:
+ required:
+ - 'Code'
+ - 'Description'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Warning message code.'
+ example: 'NO_RESULTS_FOUND'
+ Description:
+ type: 'string'
+ description: 'Warning message description.'
+ example: 'No flights solutions found for the request.'
+ description: 'Container for Warning Codes.'
+ Offers:
+ type: 'array'
+ description: 'Container for list of air offers.
+
+ An offer gives trip details including flight and pricing
+ information.'
+ items:
+ type: 'object'
+ properties:
+ Offer:
+ required:
+ - 'DepartureDates'
+ - 'OfferPrice'
+ type: 'object'
+ properties:
+ DepartureDates:
+ type: 'array'
+ description: 'Container for the list of departure dates for the first Leg in
+ each segment in chronological order.'
+ example:
+ - '2021-02-19T09:12:28.000Z'
+ items:
+ type: 'string'
+ description: 'Container for the list of departure dates for the first Leg in
+ each segment in chronological order.'
+ format: 'date-time'
+ xml:
+ name: 'DepartureDates'
+ OfferPrice:
+ required:
+ - 'TotalPrice'
+ - 'TotalTaxesAndFees'
+ type: 'object'
+ properties:
+ TotalPrice:
+ type: 'object'
+ properties:
+ Money:
+ required:
+ - 'Currency'
+ - 'Value'
+ type: 'object'
+ properties:
+ Value:
+ type: 'string'
+ description: 'The value of the element being defined.'
+ example: '21.9'
+ Currency:
+ type: 'string'
+ description: 'The ISO 4217 Currency Code that the value is expressed in.'
+ example: 'USD'
+ description: 'Container for Taxes per passenger category'
+ description: 'Container for price information corresponding to a particular
+ segment
+
+ (Nullable in case of Opaque Flights)'
+ xml:
+ name: 'OfferPrice'
+ Segments:
+ type: 'array'
+ description: 'Container of information about each flight offer
+
+ Segments (the trip from one stopping place to another) are
+ made up of Legs.
+
+ This will be given back in response if
+ includeSegmentDetails=true'
+ items:
+ type: 'object'
+ properties:
+ Segment:
+ required:
+ - 'DepartureArrivalDayDifference'
+ - 'Legs'
+ type: 'object'
+ properties:
+ DepartureArrivalDayDifference:
+ type: 'integer'
+ description: 'This is an indicator (can have values of -1, 0, 1, 2, etc.) which
+ depends on the relative difference between the
+ arrival and departure dates.'
+ format: 'int32'
+ example: 0
+ AirportChange:
+ type: 'boolean'
+ description: 'True if there the Segment is having a different Departure airport
+ compared to the Arrival airport of previous
+ Segment.'
+ Legs:
+ type: 'array'
+ description: 'Container information on each flight leg.'
+ items:
+ type: 'object'
+ properties:
+ Leg:
+ required:
+ - 'ArrivalAirport'
+ - 'ArrivalDateTime'
+ - 'BookingCode'
+ - 'CabinClass'
+ - 'DepartureAirport'
+ - 'DepartureDateTime'
+ - 'FlightDuration'
+ - 'FlightNumber'
+ - 'MarketingAirlineCode'
+ - 'SeatMapAvailable'
+ type: 'object'
+ properties:
+ DepartureAirport:
+ type: 'object'
+ properties:
+ Airport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ description: 'Container for information on the arrival airport.'
+ xml:
+ name: 'Airport'
+ ArrivalAirport:
+ type: 'object'
+ properties:
+ Airport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ description: 'Container for information on the arrival airport.'
+ xml:
+ name: 'Airport'
+ DepartureDateTime:
+ type: 'string'
+ description: 'Flight departure date and time in ISO 8601 format'
+ format: 'date-time'
+ example: '2021-07-05T13:15:00.000Z'
+ ArrivalDateTime:
+ type: 'string'
+ description: 'Flight landing date and time in ISO 8601 format'
+ format: 'date-time'
+ example: '2021-07-05T16:15:00.000Z'
+ FlightNumber:
+ type: 'string'
+ description: 'Flight Number assigned by Carrier.'
+ example: '2537'
+ MarketingAirlineCode:
+ type: 'string'
+ description: 'The two-letter code of the Airline that is marketing the flight.'
+ example: 'AA'
+ OperatingAirlineCode:
+ type: 'string'
+ description: 'The two-letter code of the Airline actually operating the plane.'
+ example: 'UA'
+ FlightDuration:
+ type: 'string'
+ description: 'The total travel duration for this leg, expressed in ISO 8601
+ standard.'
+ example: 'PT3H58M'
+ CabinClass:
+ type: 'string'
+ description: 'Class of service for the air leg.'
+ example: 'ECONOMY'
+ enum:
+ - 'ECONOMY'
+ - 'FIRST'
+ - 'BUSINESS'
+ - 'PREMIUM_ECONOMY'
+ description: 'Container information on each flight leg.'
+ xml:
+ name: 'Leg'
+ description: 'Container of information about each flight offer
+
+ Segments (the trip from one stopping place to
+ another) are made up of Legs.
+
+ This will be given back in response if
+ includeSegmentDetails=true'
+ xml:
+ name: 'Segment'
+ description: 'Container for list of air offers.
+
+ An offer gives trip details including flight and pricing
+ information.'
+ xml:
+ name: 'Offer'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ xml:
+ name: 'FlexSearchResponse'
+ FareCalendarResponse:
+ required:
+ - 'Offers'
+ - 'TransactionId'
+ type: 'object'
+ properties:
+ Warnings:
+ type: 'array'
+ description: 'Container for Warning Codes.'
+ items:
+ $ref: '#/components/schemas/FlightsV3Warning'
+ Offers:
+ type: 'array'
+ description: 'Container for list of air offers.
+
+ An offer gives total trip details including flight and pricing
+ information.'
+ items:
+ required:
+ - 'DepartureDate'
+ - 'OfferPrice'
+ type: 'object'
+ properties:
+ DepartureDate:
+ type: 'string'
+ description: 'Flight departure date in ISO 8601 format.'
+ format: 'date-time'
+ OfferPrice:
+ required:
+ - 'TotalPrice'
+ type: 'object'
+ properties:
+ TotalPrice:
+ $ref: '#/components/schemas/FlightsV3Money'
+ description: 'Container for offer price information.'
+ Segments:
+ type: 'array'
+ description: 'Container of information about each flight offer
+
+ Segments (the trip from one stopping place to another) are
+ made up of Legs
+
+ This will be given back in response if
+ includeSegmentDetails=true'
+ items:
+ required:
+ - 'Legs'
+ type: 'object'
+ properties:
+ Legs:
+ type: 'array'
+ description: 'Container information on each flight leg.'
+ items:
+ required:
+ - 'ArrivalAirport'
+ - 'ArrivalDateTime'
+ - 'CabinClass'
+ - 'DepartureAirport'
+ - 'DepartureDateTime'
+ - 'FlightNumber'
+ type: 'object'
+ properties:
+ DepartureAirport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ description: 'Container for information on the arrival airport.'
+ ArrivalAirport:
+ required:
+ - 'Code'
+ type: 'object'
+ properties:
+ Code:
+ type: 'string'
+ description: 'Three-letter IATA airport code for departure location'
+ example: 'SFO'
+ description: 'Container for information on the arrival airport.'
+ DepartureDateTime:
+ type: 'string'
+ description: 'Flight departure date and time in ISO 8601 format'
+ format: 'date-time'
+ example: '2021-07-05T13:15:00.000Z'
+ ArrivalDateTime:
+ type: 'string'
+ description: 'Flight landing date and time in ISO 8601 format'
+ format: 'date-time'
+ example: '2021-07-05T16:15:00.000Z'
+ FlightNumber:
+ type: 'string'
+ description: 'Flight Number assigned by Carrier.'
+ example: '2537'
+ MarketingAirlineCode:
+ type: 'string'
+ description: 'The two-letter code of the Airline that is marketing the flight.'
+ example: 'AA'
+ OperatingAirlineCode:
+ type: 'string'
+ description: 'The two-letter code of the Airline actually operating the plane.'
+ example: 'UA'
+ CabinClass:
+ type: 'string'
+ description: 'Class of service for the air leg.'
+ example: 'ECONOMY'
+ enum:
+ - 'ECONOMY'
+ - 'FIRST'
+ - 'BUSINESS'
+ - 'PREMIUM_ECONOMY'
+ description: 'Container information on each flight leg.'
+ description: 'Container of information about each flight offer
+
+ Segments (the trip from one stopping place to another) are
+ made up of Legs
+
+ This will be given back in response if
+ includeSegmentDetails=true'
+ description: 'Container for list of air offers.
+
+ An offer gives total trip details including flight and pricing
+ information.'
+ TransactionId:
+ type: 'string'
+ description: 'Unique identifier for the transaction.'
+ example: 'f06edfa3-27f4-44e6-838c-b8dd3d0a3210'
+ securitySchemes:
+ Authorization:
+ type: 'http'
+ scheme: 'basic'
diff --git a/specs/xap-activity.specs.yaml b/specs/xap-activity.specs.yaml
index 2fe34aff6..037b510d5 100644
--- a/specs/xap-activity.specs.yaml
+++ b/specs/xap-activity.specs.yaml
@@ -2,10 +2,6 @@ openapi: 3.0.1
info:
title: EWSActivity Apis specification
description: OpenAPI Spec for EWS Activity APIs
- contact:
- name: Partner APIs
- url: https://confluence.expedia.biz/pages/viewpage.action?pageId=833040081
- email: autobots@expedia.com
version: v3
x-eg-lifecycle: LIVE
x-eg-tags: ["Partner", "Activities", "EWS", "ActivitySearch", "ActivityDetails", "ActivityLinks"]
diff --git a/specs/xap-car.specs.yaml b/specs/xap-car.specs.yaml
index 777c6dcfb..1a0e3346e 100644
--- a/specs/xap-car.specs.yaml
+++ b/specs/xap-car.specs.yaml
@@ -2,10 +2,6 @@ openapi: 3.0.1
info:
title: EWSCar API
description: EWSCar API allow users search cars and check car details.
- contact:
- name: EWSCar team
- url: 'https://confluence.expedia.biz/display/EWS/EWS+Car'
- email: autobots@expedia.com
version: v3
x-eg-lifecycle: LIVE
x-eg-api-tags:
diff --git a/specs/xap-flight-v1.specs.yaml b/specs/xap-flight-v1.specs.yaml
index cd6aa1f04..8207fc783 100644
--- a/specs/xap-flight-v1.specs.yaml
+++ b/specs/xap-flight-v1.specs.yaml
@@ -2,10 +2,6 @@ openapi: 3.0.1
info:
title: EWSAir V1 APIs
description: OpenAPI Spec for EWS Air V1 APIs
- contact:
- name: Partner APIs
- url: 'https://confluence.expedia.biz/display/EWS/EWS+Air'
- email: EWSTeam@expedia.com
version: v1
x-eg-lifecycle: LIVE
x-eg-tags: ["EWS", "Flights", "Flight FareRules", "Flight BaggageFee"]
@@ -45,7 +41,7 @@ paths:
If this information is not provided, the currency corresponding for that partners default will be selected.
schema:
type: string
- example: en_US
+ example: USD
- name: Key
in: header
description: |-
diff --git a/specs/xap-flight-v2.specs.yaml b/specs/xap-flight-v2.specs.yaml
index ee1695648..fc7a82967 100644
--- a/specs/xap-flight-v2.specs.yaml
+++ b/specs/xap-flight-v2.specs.yaml
@@ -2,10 +2,6 @@ openapi: 3.0.1
info:
title: EWSAir V2 APIs
description: OpenAPI Spec for EWS Air V2 APIs
- contact:
- name: Partner APIs
- url: 'https://confluence.expedia.biz/display/EWS/EWS+Air'
- email: EWSTeam@expedia.com
version: v2
x-eg-lifecycle: LIVE
x-eg-tags: ["EWS", "Flights", "Flight SeatMap"]
diff --git a/specs/xap-flight-v3.specs.yaml b/specs/xap-flight-v3.specs.yaml
index af6f61ab7..0eefa0538 100644
--- a/specs/xap-flight-v3.specs.yaml
+++ b/specs/xap-flight-v3.specs.yaml
@@ -2,10 +2,6 @@ openapi: 3.0.1
info:
title: EWSAir V3 APIs
description: OpenAPI Spec for EWS Air V3 APIs
- contact:
- name: Partner APIs
- url: 'https://confluence.expedia.biz/display/EWS/EWS+Air'
- email: EWSTeam@expedia.com
version: v3
x-eg-lifecycle: LIVE
x-eg-api-tags: ["EWS", "XAP", "Flights", "EWSFlights", "Flight List", "Flight Details", "Flight Links", "Flight FlexSearch",
@@ -260,8 +256,11 @@ paths:
- name: childrenAges
in: query
description: Comma-separated list of the ages of all child travelers (ages 2 - 17).
+ explode: false
schema:
- type: string
+ type: array
+ items:
+ type: integer
example: 4,5
- name: infantInLap
in: query
@@ -328,6 +327,7 @@ paths:
description: Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
schema:
type: string
+ format: date
- name: segment2.departureStartTime
in: query
description: Lower limit of desired departure time window, expressed in the local time of the departure location, in standard ISO format.
@@ -353,6 +353,7 @@ paths:
description: Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
schema:
type: string
+ format: date
- name: segment3.departureStartTime
in: query
description: Lower limit of desired departure time window, expressed in the local time of the departure location, in standard ISO format.
@@ -378,6 +379,7 @@ paths:
description: Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
schema:
type: string
+ format: date
- name: segment4.departureStartTime
in: query
description: Lower limit of desired departure time window, expressed in the local time of the departure location, in standard ISO format.
@@ -403,6 +405,7 @@ paths:
description: Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
schema:
type: string
+ format: date
- name: segment5.departureStartTime
in: query
description: Lower limit of desired departure time window, expressed in the local time of the departure location, in standard ISO format.
@@ -428,6 +431,7 @@ paths:
description: Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
schema:
type: string
+ format: date
- name: segment6.departureStartTime
in: query
description: Lower limit of desired departure time window, expressed in the local time of the departure location, in standard ISO format.
@@ -451,6 +455,11 @@ paths:
Options can be: economy | first | business | premiumeconomy
schema:
type: string
+ enum:
+ - economy
+ - first
+ - business
+ - premiumeconomy
example: economy
- name: numberOfStops
in: query
@@ -480,14 +489,20 @@ paths:
- name: selectedCarriers
in: query
description: Adding comma-separated list of IATA or Expedia airline codes will limit the search results to include flight offers only with the selected carriers.
+ explode: false
schema:
- type: string
+ type: array
+ items:
+ type: string
example: AS
- name: accountCodes
in: query
description: AlphaNumeric characters. Different codes separated by comma
+ explode: false
schema:
- type: string
+ type: array
+ items:
+ type: string
example: AXP01
- name: agent
in: query
@@ -507,8 +522,17 @@ paths:
ABF (Baggage Fee API)
ASM (Seat Map API)
WPS (Web Package Search)
+ explode: false
schema:
- type: string
+ type: array
+ items:
+ type: string
+ enum:
+ - WD
+ - AD
+ - ABF
+ - ASM
+ - WPS
example: WD
- name: refundable
in: query
@@ -542,6 +566,12 @@ paths:
Possible values are: segment1 | segment2 | segment3 | segment4 | segment5
schema:
type: string
+ enum:
+ - segment1
+ - segment2
+ - segment3
+ - segment4
+ - segment5
example: segment1
- name: selectedOffer
in: query
@@ -1462,6 +1492,7 @@ paths:
description: Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
schema:
type: string
+ format: date
- name: includeSegmentDetails
in: query
description: |-
@@ -1882,6 +1913,9 @@ paths:
outbound
schema:
type: string
+ enum:
+ - inbound
+ - outbound
- name: includeSegmentDetails
in: query
description: If the user wants to know the segment details of the offer then they can send this param as true and will get the segment and leg level details in the response. By default this will be set as false.
@@ -2656,7 +2690,6 @@ components:
required:
- International
- Links
- - offerToken
- OfferPrice
- Refundable
- SegmentIds
@@ -3471,7 +3504,6 @@ components:
name: FareOptions
FlightDetailsResponse:
required:
- - Lounges
- Offer
- TransactionId
type: object
@@ -3778,7 +3810,6 @@ components:
- International
- Links
- MerchantName
- - offerToken
- FareOptions
- OpaqueFlight
- OfferPrice
diff --git a/specs/xap-hotel.specs.yaml b/specs/xap-hotel.specs.yaml
index 978fed259..1a02c65fe 100644
--- a/specs/xap-hotel.specs.yaml
+++ b/specs/xap-hotel.specs.yaml
@@ -5,10 +5,6 @@ info:
The XAP Lodging Search APIs can be used by partners both booking via an Expedia website, or by partners that
will be booking via the XAP APIs. Each API also provides pre-configured links to the Expedia website,
the XAP Booking API, or both.
- contact:
- name: PartnerAPIs
- url: https://confluence.expedia.biz/display/EWS/EWSHotel
- email: dreamweaver@expedia.com
version: v3
x-eg-lifecycle: LIVE
x-eg-tags: ["Partner", "EWS", "XAP", "EWSHotel", "Hotel", "Lodging", "LodgingListings", "LodgingDetails", "LodgingRateCalendar"]
diff --git a/specs/xap-lodging.specs.yaml b/specs/xap-lodging.specs.yaml
index 5d919d589..6ec0f8f55 100644
--- a/specs/xap-lodging.specs.yaml
+++ b/specs/xap-lodging.specs.yaml
@@ -5,10 +5,6 @@ info:
The XAP Lodging Search APIs can be used by partners both booking via an Expedia website, or by partners that
will be booking via the XAP APIs. Each API also provides pre-configured links to the Expedia website,
the XAP Booking API, or both.
- contact:
- name: PartnerAPIs
- url: https://confluence.expedia.biz/display/EWS/EWSHotel
- email: dreamweaver@expedia.com
version: v3
x-eg-lifecycle: LIVE
x-eg-tags: ["Partner", "EWS", "XAP", "EWSHotel", "Hotel", "Lodging", "LodgingQuotes","LodgingAvailabilityCalendar"]
diff --git a/specs/xap-sdp-v1.specs.yaml b/specs/xap-sdp-v1.specs.yaml
index 6e7e881d3..20373bc6c 100644
--- a/specs/xap-sdp-v1.specs.yaml
+++ b/specs/xap-sdp-v1.specs.yaml
@@ -3,10 +3,6 @@ info:
title: EWS-Feed-Service APIs specification
version: v1
description: OpenAPI Spec for EWS Feed Service APIs
- contact:
- name: Partner APIs
- url: https://confluence.expedia.biz/display/EWS/EWS-feed-service
- email: skywalker@expedia.com
x-eg-lifecycle: LIVE
x-eg-tags: ["ews", "feeds", "presignedurl", "downloadurl", "sdp", "staticInfo"]
servers:
diff --git a/tests/integration/LICENSE-HEADER.txt b/tests/integration/LICENSE-HEADER.txt
deleted file mode 100644
index 23c93f676..000000000
--- a/tests/integration/LICENSE-HEADER.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (C) ${year} Expedia, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/tests/integration/README.md b/tests/integration/README.md
deleted file mode 100644
index 87117d931..000000000
--- a/tests/integration/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# XAP Java SDK Integrations
-
-This repository contains integration tests of the Expedia Group XAP Java SDK.
-
-_**The following instructions apply if you want to run the integration tests locally.**_
-
-## Requirements
-
-- Ensure you have a valid API key and secret from Expedia Group.
- Check [Getting started with XAP](https://developers.expediagroup.com/xap/products/xap/set-up/getting-started)
- for more info.
-- Java 1.8 or higher
-- Maven
-
-## Setup
-
-1. Clone the repository.
-2. Navigate to the project directory `integrations`.
-3. Run `mvn clean install` to build the project and install the dependencies including the XAP SDK.
-
-## Running the Integration Tests
-
-### Run with IntelliJ IDEA
-
-1. Navigate to the test class you want to run
-2. Right-click on the class name and select `More Run/Debug` -> `Modify Run Configuration`
-3. Check the `Modify options` -> `Add VM options` and add the following VM options:
- ```
- -Dcom.expediagroup.xapjavasdk.apikey="{API_KEY}"
- -Dcom.expediagroup.xapjavasdk.apisecret="{API_SECRET}"
- ```
- Replace `{API_KEY}` and `{API_SECRET}` with your actual API key and secret.
- > **Note:** If you are running the tests for Vrbo, you would need the following VM options
- instead:
- > ```
- > -Dcom.expediagroup.xapjavasdk.vrbokey="{VRBO_KEY}"
- > -Dcom.expediagroup.xapjavasdk.vrbosecret="{VRBO_SECRET}"
- > ```
- > The key you use must be enabled for Vrbo brand. If you are not sure, please reach out to your
- account manager.
-4. Click `OK` and then run the test class.
-
-### Run with Command Line
-
-Run the following command to run all integration tests:
-
-```
-mvn failsafe:integration-test \
- -Dcom.expediagroup.xapjavasdk.apikey="{API_KEY}" \
- -Dcom.expediagroup.xapjavasdk.apisecret="{API_SECRET}" \
- -Dcom.expediagroup.xapjavasdk.vrbokey="{VRBO_KEY}" \
- -Dcom.expediagroup.xapjavasdk.vrbosecret="{VRBO_SECRET}" \
- -f pom.xml
-```
-
-If your key is enabled for both Expedia and Vrbo brands, you may use the same key and secret
-pair for the placeholders. Otherwise, you may run the tests separately by providing only the
-required key and secret. For example:
-
-```
-mvn failsafe:integration-test \
- -Dit.test=TestClassName#testMethodName \
- -Dcom.expediagroup.xapjavasdk.apikey="{API_KEY}" \
- -Dcom.expediagroup.xapjavasdk.apisecret="{API_SECRET}" \
- -f pom.xml
-```
-
-Replace `TestClassName` and `testMethodName` with the actual test class name and method name,
-and `{API_KEY}` and `{API_SECRET}` with your actual API key and secret.
-> If `#testMethodName` is omitted, all test methods in the class will be executed.
-
-If you are running the tests for Vrbo, you should use the following command instead:
-
-```
-mvn failsafe:integration-test \
- -Dit.test=TestClassName#testMethodName \
- -Dcom.expediagroup.xapjavasdk.vrbokey="{VRBO_KEY}" \
- -Dcom.expediagroup.xapjavasdk.vrbosecret="{VRBO_SECRET}"
- -f pom.xml
-```
-
-The key you use must be enabled for Vrbo brand. If you are not sure, please reach out to your
-account manager.
-
-## License
-
-This project is licensed under the Apache License v2.0 - see the [LICENSE](../../LICENSE) for details.
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
deleted file mode 100644
index 6045148be..000000000
--- a/tests/integration/pom.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-
-
- 4.0.0
-
- com.expediagroup
- xap-java-sdk-integrations
- 1.0-SNAPSHOT
-
-
- 1.8
- 1.8
- 1.8
- UTF-8
- 1.1.0
- 5.0.0
-
-
-
-
- oss.sonatype.org-snapshot
- https://oss.sonatype.org/content/repositories/snapshots
-
- false
-
-
- true
-
-
-
-
-
-
- com.expediagroup
- xap-sdk
- ${xap-java-sdk.sdk.version}
-
-
- org.apache.logging.log4j
- log4j-api
- 2.24.3
-
-
- org.apache.logging.log4j
- log4j-slf4j2-impl
- 2.24.3
-
-
- org.junit.jupiter
- junit-jupiter
- 5.12.2
- test
-
-
- com.squareup.okhttp3
- mockwebserver
- 4.12.0
- test
-
-
- io.hosuaby
- inject-resources-junit-jupiter
- 1.0.0
- test
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
- 3.6.0
-
- google_checks.xml
- true
- warning
- true
-
-
-
-
- check
-
-
-
-
-
- org.apache.maven.plugins
- maven-failsafe-plugin
- 3.5.3
-
-
-
- integration-test
- verify
-
-
-
- **/*IntegrationTests.java
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-report-plugin
- 3.5.3
-
-
- report
- integration-test
-
- failsafe-report-only
-
-
-
-
-
- com.mycila
- license-maven-plugin
- ${maven.licence.plugin.version}
-
-
- 2025
-
-
-
-
-
- **/*.java
-
-
-
-
-
-
- add-license-header
- validate
-
- format
-
-
-
-
-
-
-
diff --git a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/common/XapIntegrationTests.java b/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/common/XapIntegrationTests.java
deleted file mode 100644
index ef38d52a4..000000000
--- a/tests/integration/src/test/java/com/expediagroup/sdk/xap/integrations/common/XapIntegrationTests.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2025 Expedia, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.expediagroup.sdk.xap.integrations.common;
-
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_KEY;
-import static com.expediagroup.sdk.xap.integrations.common.Constant.MOCK_SECRET;
-
-import com.expediagroup.sdk.xap.client.XapClient;
-import okhttp3.mockwebserver.MockWebServer;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.TestInstance;
-
-/**
- * Extension for setting up the required components for testing.
- */
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public abstract class XapIntegrationTests {
-
- protected XapClient xapClient;
- protected MockWebServer mockWebServer;
-
- @BeforeEach
- void setup() {
- mockWebServer = new MockWebServer();
-
- xapClient = XapClient.builder()
- .key(MOCK_KEY)
- .secret(MOCK_SECRET)
- .endpoint(mockWebServer.url("/").toString())
- .build();
- }
-
- @AfterEach
- void tearDown() throws Exception {
- // Clean everything after each test to ensure clear state
- if (mockWebServer != null) {
- mockWebServer.shutdown();
- mockWebServer = null;
- }
- xapClient = null;
- }
-}
diff --git a/xap-sdk/LICENSE-HEADER.txt b/xap-sdk/LICENSE-HEADER.txt
deleted file mode 100644
index 732a2da66..000000000
--- a/xap-sdk/LICENSE-HEADER.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (C) 2022 Expedia, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
\ No newline at end of file
diff --git a/xap-sdk/build.gradle.kts b/xap-sdk/build.gradle.kts
index aa516d463..840bbfad3 100644
--- a/xap-sdk/build.gradle.kts
+++ b/xap-sdk/build.gradle.kts
@@ -7,12 +7,12 @@ plugins {
license {
header = rootProject.file("LICENSE-HEADER.txt")
- skipExistingHeaders = true
strictCheck = true
includes(
listOf(
- "**/*.kt"
- )
+ "**/*.kt",
+ "**/*.java",
+ ),
)
}
@@ -20,7 +20,7 @@ group = property("GROUP_ID") as String
version = property("VERSION") as String
dependencies {
- api("com.expediagroup:expediagroup-sdk-rest:0.0.6-alpha")
+ api("com.expediagroup:expediagroup-sdk-rest:0.0.8-alpha")
implementation("com.fasterxml.jackson.core:jackson-databind:2.18.2")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2")
diff --git a/xap-sdk/src/main/kotlin/.openapi-generator/FILES b/xap-sdk/src/main/kotlin/.openapi-generator/FILES
new file mode 100644
index 000000000..6925ec90e
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/.openapi-generator/FILES
@@ -0,0 +1,368 @@
+com/expediagroup/sdk/xap/models/APIGatewayError.kt
+com/expediagroup/sdk/xap/models/APIMError.kt
+com/expediagroup/sdk/xap/models/ActivitiesAddress.kt
+com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt
+com/expediagroup/sdk/xap/models/ActivitiesCountry.kt
+com/expediagroup/sdk/xap/models/ActivitiesError.kt
+com/expediagroup/sdk/xap/models/ActivitiesErrors.kt
+com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt
+com/expediagroup/sdk/xap/models/ActivitiesLink.kt
+com/expediagroup/sdk/xap/models/ActivitiesLocation.kt
+com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt
+com/expediagroup/sdk/xap/models/ActivitiesMedia.kt
+com/expediagroup/sdk/xap/models/ActivitiesMoney.kt
+com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt
+com/expediagroup/sdk/xap/models/ActivitiesPhone.kt
+com/expediagroup/sdk/xap/models/ActivitiesPrice.kt
+com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt
+com/expediagroup/sdk/xap/models/ActivitiesWarning.kt
+com/expediagroup/sdk/xap/models/Activity.kt
+com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt
+com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt
+com/expediagroup/sdk/xap/models/AdditionalFee.kt
+com/expediagroup/sdk/xap/models/Address.kt
+com/expediagroup/sdk/xap/models/AgeClassRestriction.kt
+com/expediagroup/sdk/xap/models/AirValidFormsOfPayment.kt
+com/expediagroup/sdk/xap/models/Airport.kt
+com/expediagroup/sdk/xap/models/Amenities.kt
+com/expediagroup/sdk/xap/models/Amenity.kt
+com/expediagroup/sdk/xap/models/AmenityInfo.kt
+com/expediagroup/sdk/xap/models/AvailabilityCalendar.kt
+com/expediagroup/sdk/xap/models/AvailabilityCalendarResponse.kt
+com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt
+com/expediagroup/sdk/xap/models/AveragePricePerTicket.kt
+com/expediagroup/sdk/xap/models/Bag.kt
+com/expediagroup/sdk/xap/models/BaggageFee.kt
+com/expediagroup/sdk/xap/models/BaggageFeeFlightSegment.kt
+com/expediagroup/sdk/xap/models/BedType.kt
+com/expediagroup/sdk/xap/models/CancellationPenaltyRule.kt
+com/expediagroup/sdk/xap/models/CancellationPenaltyRulePenaltyPrice.kt
+com/expediagroup/sdk/xap/models/CancellationPolicy.kt
+com/expediagroup/sdk/xap/models/Capacity.kt
+com/expediagroup/sdk/xap/models/Car.kt
+com/expediagroup/sdk/xap/models/CarCategory.kt
+com/expediagroup/sdk/xap/models/CarDetails.kt
+com/expediagroup/sdk/xap/models/CarDetailsResponse.kt
+com/expediagroup/sdk/xap/models/CarListingsResponse.kt
+com/expediagroup/sdk/xap/models/CarPolicy.kt
+com/expediagroup/sdk/xap/models/CarType.kt
+com/expediagroup/sdk/xap/models/CarsAddress.kt
+com/expediagroup/sdk/xap/models/CarsCancellationPolicy.kt
+com/expediagroup/sdk/xap/models/CarsCountry.kt
+com/expediagroup/sdk/xap/models/CarsDateRange.kt
+com/expediagroup/sdk/xap/models/CarsDistance.kt
+com/expediagroup/sdk/xap/models/CarsError.kt
+com/expediagroup/sdk/xap/models/CarsErrors.kt
+com/expediagroup/sdk/xap/models/CarsGeoLocation.kt
+com/expediagroup/sdk/xap/models/CarsLink.kt
+com/expediagroup/sdk/xap/models/CarsLocation.kt
+com/expediagroup/sdk/xap/models/CarsLocationOption.kt
+com/expediagroup/sdk/xap/models/CarsMoney.kt
+com/expediagroup/sdk/xap/models/CarsNeighborhood.kt
+com/expediagroup/sdk/xap/models/CarsValidFormsOfPayment.kt
+com/expediagroup/sdk/xap/models/CarsWarning.kt
+com/expediagroup/sdk/xap/models/CategoryGroup.kt
+com/expediagroup/sdk/xap/models/ChainAndBrandInfo.kt
+com/expediagroup/sdk/xap/models/Country.kt
+com/expediagroup/sdk/xap/models/CrossSell.kt
+com/expediagroup/sdk/xap/models/DateRange.kt
+com/expediagroup/sdk/xap/models/DateTimePeriod.kt
+com/expediagroup/sdk/xap/models/Deductible.kt
+com/expediagroup/sdk/xap/models/DepositDetail.kt
+com/expediagroup/sdk/xap/models/DepositPolicy.kt
+com/expediagroup/sdk/xap/models/Description.kt
+com/expediagroup/sdk/xap/models/DisambiguationResponse.kt
+com/expediagroup/sdk/xap/models/Discount.kt
+com/expediagroup/sdk/xap/models/Distance.kt
+com/expediagroup/sdk/xap/models/Duration.kt
+com/expediagroup/sdk/xap/models/Entertainment.kt
+com/expediagroup/sdk/xap/models/Equipment.kt
+com/expediagroup/sdk/xap/models/Error.kt
+com/expediagroup/sdk/xap/models/ErrorResponse.kt
+com/expediagroup/sdk/xap/models/ErrorResponseErrorsInner.kt
+com/expediagroup/sdk/xap/models/Errors.kt
+com/expediagroup/sdk/xap/models/ExtraCostPerDistance.kt
+com/expediagroup/sdk/xap/models/ExtraFees.kt
+com/expediagroup/sdk/xap/models/FareCalendarResponse.kt
+com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInner.kt
+com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerOfferPrice.kt
+com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInner.kt
+com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInner.kt
+com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport.kt
+com/expediagroup/sdk/xap/models/FareOptions.kt
+com/expediagroup/sdk/xap/models/FareRule.kt
+com/expediagroup/sdk/xap/models/Fault.kt
+com/expediagroup/sdk/xap/models/Fee.kt
+com/expediagroup/sdk/xap/models/FileInfo.kt
+com/expediagroup/sdk/xap/models/FileSize.kt
+com/expediagroup/sdk/xap/models/FilterConditions.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponse.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInner.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOffer.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPrice.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInner.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegment.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInner.kt
+com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInnerWarning.kt
+com/expediagroup/sdk/xap/models/Flight.kt
+com/expediagroup/sdk/xap/models/FlightBaggageFee.kt
+com/expediagroup/sdk/xap/models/FlightBaggageFeesResponse.kt
+com/expediagroup/sdk/xap/models/FlightDetailsOffer.kt
+com/expediagroup/sdk/xap/models/FlightDetailsRefundPenalty.kt
+com/expediagroup/sdk/xap/models/FlightDetailsResponse.kt
+com/expediagroup/sdk/xap/models/FlightDetailsWarning.kt
+com/expediagroup/sdk/xap/models/FlightFareRuleItem.kt
+com/expediagroup/sdk/xap/models/FlightFareRuleItemFlightSegment.kt
+com/expediagroup/sdk/xap/models/FlightFareRulesResponse.kt
+com/expediagroup/sdk/xap/models/FlightLinksRequest.kt
+com/expediagroup/sdk/xap/models/FlightLinksResponse.kt
+com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInner.kt
+com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerApiDetails.kt
+com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerWebDetails.kt
+com/expediagroup/sdk/xap/models/FlightLinksResponseWarningsInner.kt
+com/expediagroup/sdk/xap/models/FlightSearchResponse.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInner.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegment.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInner.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirport.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirport.kt
+com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport.kt
+com/expediagroup/sdk/xap/models/FlightTotalPrice.kt
+com/expediagroup/sdk/xap/models/FlightsV1Error.kt
+com/expediagroup/sdk/xap/models/FlightsV1Errors.kt
+com/expediagroup/sdk/xap/models/FlightsV1Link.kt
+com/expediagroup/sdk/xap/models/FlightsV1Money.kt
+com/expediagroup/sdk/xap/models/FlightsV1Warning.kt
+com/expediagroup/sdk/xap/models/FlightsV2Airport.kt
+com/expediagroup/sdk/xap/models/FlightsV2Error.kt
+com/expediagroup/sdk/xap/models/FlightsV2Errors.kt
+com/expediagroup/sdk/xap/models/FlightsV2Warning.kt
+com/expediagroup/sdk/xap/models/FlightsV3APIMError.kt
+com/expediagroup/sdk/xap/models/FlightsV3Address.kt
+com/expediagroup/sdk/xap/models/FlightsV3AgeClassRestriction.kt
+com/expediagroup/sdk/xap/models/FlightsV3Airport.kt
+com/expediagroup/sdk/xap/models/FlightsV3BaggageFee.kt
+com/expediagroup/sdk/xap/models/FlightsV3Country.kt
+com/expediagroup/sdk/xap/models/FlightsV3Description.kt
+com/expediagroup/sdk/xap/models/FlightsV3Distance.kt
+com/expediagroup/sdk/xap/models/FlightsV3Error.kt
+com/expediagroup/sdk/xap/models/FlightsV3Errors.kt
+com/expediagroup/sdk/xap/models/FlightsV3GeoLocation.kt
+com/expediagroup/sdk/xap/models/FlightsV3Hotel.kt
+com/expediagroup/sdk/xap/models/FlightsV3HotelLocation.kt
+com/expediagroup/sdk/xap/models/FlightsV3HotelPolicies.kt
+com/expediagroup/sdk/xap/models/FlightsV3Link.kt
+com/expediagroup/sdk/xap/models/FlightsV3Location.kt
+com/expediagroup/sdk/xap/models/FlightsV3LocationOption.kt
+com/expediagroup/sdk/xap/models/FlightsV3LodgingAmenity.kt
+com/expediagroup/sdk/xap/models/FlightsV3Media.kt
+com/expediagroup/sdk/xap/models/FlightsV3Money.kt
+com/expediagroup/sdk/xap/models/FlightsV3Occupant.kt
+com/expediagroup/sdk/xap/models/FlightsV3Offer.kt
+com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInner.kt
+com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInnerRefundPenalty.kt
+com/expediagroup/sdk/xap/models/FlightsV3Promotion.kt
+com/expediagroup/sdk/xap/models/FlightsV3RatePlan.kt
+com/expediagroup/sdk/xap/models/FlightsV3RoomOccupancyPolicy.kt
+com/expediagroup/sdk/xap/models/FlightsV3RoomType.kt
+com/expediagroup/sdk/xap/models/FlightsV3StayDates.kt
+com/expediagroup/sdk/xap/models/FlightsV3Warning.kt
+com/expediagroup/sdk/xap/models/FuelAC.kt
+com/expediagroup/sdk/xap/models/GeoLocation.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400Response.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInner.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerError.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry.kt
+com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry.kt
+com/expediagroup/sdk/xap/models/GetFlightListingsOperationSegmentParam.kt
+com/expediagroup/sdk/xap/models/Hotel.kt
+com/expediagroup/sdk/xap/models/HotelDetailsResponse.kt
+com/expediagroup/sdk/xap/models/HotelDetailsResponseOccupantsInner.kt
+com/expediagroup/sdk/xap/models/HotelDetailsResponseStayDates.kt
+com/expediagroup/sdk/xap/models/HotelDetailsResponseWarningsInner.kt
+com/expediagroup/sdk/xap/models/HotelHotelAmenitiesInner.kt
+com/expediagroup/sdk/xap/models/HotelLinks.kt
+com/expediagroup/sdk/xap/models/HotelLinksApiRateCalendar.kt
+com/expediagroup/sdk/xap/models/HotelLinksWebSearchResult.kt
+com/expediagroup/sdk/xap/models/HotelListingsResponse.kt
+com/expediagroup/sdk/xap/models/HotelListingsResponseStayDates.kt
+com/expediagroup/sdk/xap/models/HotelLocation.kt
+com/expediagroup/sdk/xap/models/HotelPolicies.kt
+com/expediagroup/sdk/xap/models/HotelPropertyType.kt
+com/expediagroup/sdk/xap/models/HotelRateCalendar.kt
+com/expediagroup/sdk/xap/models/HotelReference.kt
+com/expediagroup/sdk/xap/models/HotelRoomAmenitiesInner.kt
+com/expediagroup/sdk/xap/models/Image.kt
+com/expediagroup/sdk/xap/models/Insights.kt
+com/expediagroup/sdk/xap/models/Leg.kt
+com/expediagroup/sdk/xap/models/Link.kt
+com/expediagroup/sdk/xap/models/Location.kt
+com/expediagroup/sdk/xap/models/LocationGeoLocation.kt
+com/expediagroup/sdk/xap/models/LocationOption.kt
+com/expediagroup/sdk/xap/models/LodgingAmenity.kt
+com/expediagroup/sdk/xap/models/LodgingCancellationPenaltyRule.kt
+com/expediagroup/sdk/xap/models/LodgingCancellationPolicy.kt
+com/expediagroup/sdk/xap/models/LodgingError.kt
+com/expediagroup/sdk/xap/models/LodgingErrors.kt
+com/expediagroup/sdk/xap/models/LodgingLink.kt
+com/expediagroup/sdk/xap/models/LodgingMoney.kt
+com/expediagroup/sdk/xap/models/LodgingOccupant.kt
+com/expediagroup/sdk/xap/models/LodgingPromotion.kt
+com/expediagroup/sdk/xap/models/LodgingQuotesResponse.kt
+com/expediagroup/sdk/xap/models/LodgingRatePlan.kt
+com/expediagroup/sdk/xap/models/LodgingRoomType.kt
+com/expediagroup/sdk/xap/models/LodgingRoomTypeLinks.kt
+com/expediagroup/sdk/xap/models/LodgingRoomTypeLinksWebDetails.kt
+com/expediagroup/sdk/xap/models/LodgingRoomTypeLinksWebSearchResult.kt
+com/expediagroup/sdk/xap/models/LodgingRoomTypePrice.kt
+com/expediagroup/sdk/xap/models/LodgingStayDates.kt
+com/expediagroup/sdk/xap/models/LodgingWarning.kt
+com/expediagroup/sdk/xap/models/Lounge.kt
+com/expediagroup/sdk/xap/models/MandatoryFeesDetail.kt
+com/expediagroup/sdk/xap/models/MandatoryFeesDetailAmount.kt
+com/expediagroup/sdk/xap/models/Media.kt
+com/expediagroup/sdk/xap/models/Mileage.kt
+com/expediagroup/sdk/xap/models/Money.kt
+com/expediagroup/sdk/xap/models/Neighborhood.kt
+com/expediagroup/sdk/xap/models/NightlyRates.kt
+com/expediagroup/sdk/xap/models/NonCancellableDateTimeRange.kt
+com/expediagroup/sdk/xap/models/NonRefundableDateRange.kt
+com/expediagroup/sdk/xap/models/Occupant.kt
+com/expediagroup/sdk/xap/models/Offer.kt
+com/expediagroup/sdk/xap/models/OfferPrice.kt
+com/expediagroup/sdk/xap/models/PackageOffers.kt
+com/expediagroup/sdk/xap/models/PackagePrice.kt
+com/expediagroup/sdk/xap/models/PackageSavings.kt
+com/expediagroup/sdk/xap/models/PackagedOffer.kt
+com/expediagroup/sdk/xap/models/PassengerDetails.kt
+com/expediagroup/sdk/xap/models/PaymentSchedule.kt
+com/expediagroup/sdk/xap/models/PaymentSchedulePrice.kt
+com/expediagroup/sdk/xap/models/PenaltyRule.kt
+com/expediagroup/sdk/xap/models/PenaltyType.kt
+com/expediagroup/sdk/xap/models/Phone.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks401Response.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks403Response.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks404Response.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks405Response.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks429Response.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks503Response.kt
+com/expediagroup/sdk/xap/models/PostFlightLinks504Response.kt
+com/expediagroup/sdk/xap/models/Power.kt
+com/expediagroup/sdk/xap/models/PresignedUrlResponse.kt
+com/expediagroup/sdk/xap/models/Price.kt
+com/expediagroup/sdk/xap/models/PricePerPassengerCategory.kt
+com/expediagroup/sdk/xap/models/Promotion.kt
+com/expediagroup/sdk/xap/models/PromotionAmount.kt
+com/expediagroup/sdk/xap/models/Property.kt
+com/expediagroup/sdk/xap/models/PropertyDetails.kt
+com/expediagroup/sdk/xap/models/PropertyManager.kt
+com/expediagroup/sdk/xap/models/RateCalendar.kt
+com/expediagroup/sdk/xap/models/RateCalendarPrice.kt
+com/expediagroup/sdk/xap/models/RateCalendarResponse.kt
+com/expediagroup/sdk/xap/models/RateDetails.kt
+com/expediagroup/sdk/xap/models/RatePlan.kt
+com/expediagroup/sdk/xap/models/RatePlanAmenitiesInner.kt
+com/expediagroup/sdk/xap/models/RatePlanPrice.kt
+com/expediagroup/sdk/xap/models/RatePlanPriceNightlyRatesInner.kt
+com/expediagroup/sdk/xap/models/RatePlanPriceTaxesAndFeesDetailsInner.kt
+com/expediagroup/sdk/xap/models/RatePlanStandalonePrice.kt
+com/expediagroup/sdk/xap/models/Rating.kt
+com/expediagroup/sdk/xap/models/RatingDetails.kt
+com/expediagroup/sdk/xap/models/RatingWithoutDetails.kt
+com/expediagroup/sdk/xap/models/Redemption.kt
+com/expediagroup/sdk/xap/models/ReferencePrice.kt
+com/expediagroup/sdk/xap/models/RefundPenaltyDetail.kt
+com/expediagroup/sdk/xap/models/RentalLimits.kt
+com/expediagroup/sdk/xap/models/Restrictions.kt
+com/expediagroup/sdk/xap/models/Room.kt
+com/expediagroup/sdk/xap/models/RoomOccupancyPolicy.kt
+com/expediagroup/sdk/xap/models/RoomPreference.kt
+com/expediagroup/sdk/xap/models/RoomRates.kt
+com/expediagroup/sdk/xap/models/RoomRatesBaseRate.kt
+com/expediagroup/sdk/xap/models/RoomRatesNightlyRatesInner.kt
+com/expediagroup/sdk/xap/models/RoomRatesTaxesAndFees.kt
+com/expediagroup/sdk/xap/models/RoomRatesTaxesAndFeesDetailsInner.kt
+com/expediagroup/sdk/xap/models/RoomRatesTotalPrice.kt
+com/expediagroup/sdk/xap/models/RoomRatesTotalStrikeOutPrice.kt
+com/expediagroup/sdk/xap/models/RoomType.kt
+com/expediagroup/sdk/xap/models/RoomTypeAmenitiesInner.kt
+com/expediagroup/sdk/xap/models/RoomTypeLinks.kt
+com/expediagroup/sdk/xap/models/RoomTypeLinksApiDetails.kt
+com/expediagroup/sdk/xap/models/RoomTypeLinksWebDetails.kt
+com/expediagroup/sdk/xap/models/RoomTypeMediaInner.kt
+com/expediagroup/sdk/xap/models/RoomTypePrice.kt
+com/expediagroup/sdk/xap/models/RoomTypeStandalonePrice.kt
+com/expediagroup/sdk/xap/models/Row.kt
+com/expediagroup/sdk/xap/models/RowCharacteristic.kt
+com/expediagroup/sdk/xap/models/Rule.kt
+com/expediagroup/sdk/xap/models/Savings.kt
+com/expediagroup/sdk/xap/models/SdpAPIMError.kt
+com/expediagroup/sdk/xap/models/SdpLink.kt
+com/expediagroup/sdk/xap/models/Seat.kt
+com/expediagroup/sdk/xap/models/SeatCharacteristic.kt
+com/expediagroup/sdk/xap/models/SeatChoice.kt
+com/expediagroup/sdk/xap/models/SeatMap.kt
+com/expediagroup/sdk/xap/models/SeatMapResponse.kt
+com/expediagroup/sdk/xap/models/SeatSeatPrice.kt
+com/expediagroup/sdk/xap/models/Segment.kt
+com/expediagroup/sdk/xap/models/StayDates.kt
+com/expediagroup/sdk/xap/models/Supplier.kt
+com/expediagroup/sdk/xap/models/TaxesAndFees.kt
+com/expediagroup/sdk/xap/models/TaxesAndFeesDetail.kt
+com/expediagroup/sdk/xap/models/Ticket.kt
+com/expediagroup/sdk/xap/models/TimeRange.kt
+com/expediagroup/sdk/xap/models/TransmissionDrive.kt
+com/expediagroup/sdk/xap/models/ValidFormsOfPayment.kt
+com/expediagroup/sdk/xap/models/VehicleDetails.kt
+com/expediagroup/sdk/xap/models/VendorLocationDetails.kt
+com/expediagroup/sdk/xap/models/WaiverPolicy.kt
+com/expediagroup/sdk/xap/models/Warning.kt
+com/expediagroup/sdk/xap/models/When.kt
+com/expediagroup/sdk/xap/models/Wifi.kt
+com/expediagroup/sdk/xap/operations/GetActivityDetailsOperation.kt
+com/expediagroup/sdk/xap/operations/GetActivityDetailsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetActivityListingsOperation.kt
+com/expediagroup/sdk/xap/operations/GetActivityListingsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetCarDetailsOperation.kt
+com/expediagroup/sdk/xap/operations/GetCarDetailsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetCarsListingsOperation.kt
+com/expediagroup/sdk/xap/operations/GetCarsListingsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFeedDownloadUrlOperation.kt
+com/expediagroup/sdk/xap/operations/GetFeedDownloadUrlOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightBagaggefeeOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightBagaggefeeOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightDetailsOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightDetailsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightFarerulesOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightFarerulesOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightFlexsearchOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightFlexsearchOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightListingsOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightListingsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightSeatmapOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightSeatmapOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetFlightsFarecalendarOperation.kt
+com/expediagroup/sdk/xap/operations/GetFlightsFarecalendarOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetLodgingAvailabilityCalendarsOperation.kt
+com/expediagroup/sdk/xap/operations/GetLodgingAvailabilityCalendarsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetLodgingDetailsOperation.kt
+com/expediagroup/sdk/xap/operations/GetLodgingDetailsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetLodgingListingsOperation.kt
+com/expediagroup/sdk/xap/operations/GetLodgingListingsOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetLodgingQuotesOperation.kt
+com/expediagroup/sdk/xap/operations/GetLodgingQuotesOperationParams.kt
+com/expediagroup/sdk/xap/operations/GetLodgingRateCalendarOperation.kt
+com/expediagroup/sdk/xap/operations/GetLodgingRateCalendarOperationParams.kt
+com/expediagroup/sdk/xap/operations/PostFlightLinksOperation.kt
+com/expediagroup/sdk/xap/operations/PostFlightLinksOperationParams.kt
diff --git a/xap-sdk/src/main/kotlin/.openapi-generator/VERSION b/xap-sdk/src/main/kotlin/.openapi-generator/VERSION
new file mode 100644
index 000000000..b23eb2752
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.11.0
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/AsyncXapClient.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/AsyncXapClient.kt
index 4eb562950..ecd7b61b8 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/AsyncXapClient.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/AsyncXapClient.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,15 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.client
import com.expediagroup.sdk.rest.AsyncRestClient
import com.expediagroup.sdk.rest.AsyncRestExecutor
import com.expediagroup.sdk.rest.model.Response
-import com.expediagroup.sdk.rest.trait.operation.JacksonModelOperationResponseBodyTrait
import com.expediagroup.sdk.rest.trait.operation.OperationNoResponseBodyTrait
-import com.expediagroup.sdk.xap.configuration.AsyncClientBuilder
import com.expediagroup.sdk.xap.configuration.AsyncXapClientConfiguration
import com.expediagroup.sdk.xap.configuration.Constant.ENDPOINT
import com.expediagroup.sdk.xap.configuration.OBJECT_MAPPER
@@ -50,30 +47,4 @@ class AsyncXapClient private constructor(
* @return A CompletableFuture containing the response.
*/
fun execute(operation: OperationNoResponseBodyTrait): CompletableFuture> = restExecutor.execute(operation)
-
- /**
- * Executes an operation that expects a response body.
- *
- * @param T The type of the response body.
- * @param operation The operation to execute.
- * @return A CompletableFuture containing the response.
- */
- fun execute(operation: JacksonModelOperationResponseBodyTrait): CompletableFuture> = restExecutor.execute(operation)
-
- companion object {
- /**
- * Builder for creating an instance of [AsyncXapClient].
- */
- class Builder : AsyncClientBuilder() {
- override fun build(): AsyncXapClient = AsyncXapClient(buildConfig())
- }
-
- /**
- * Creates a new builder for [AsyncXapClient].
- *
- * @return A new [Builder] instance.
- */
- @JvmStatic
- fun builder() = Builder()
- }
}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt
index 9c6d8c208..005ed3432 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.client
import com.expediagroup.sdk.rest.RestClient
@@ -21,7 +20,6 @@ import com.expediagroup.sdk.rest.RestExecutor
import com.expediagroup.sdk.rest.model.Response
import com.expediagroup.sdk.rest.trait.operation.JacksonModelOperationResponseBodyTrait
import com.expediagroup.sdk.rest.trait.operation.OperationNoResponseBodyTrait
-import com.expediagroup.sdk.xap.configuration.ClientBuilder
import com.expediagroup.sdk.xap.configuration.Constant.ENDPOINT
import com.expediagroup.sdk.xap.configuration.OBJECT_MAPPER
import com.expediagroup.sdk.xap.configuration.XapClientConfiguration
@@ -32,7 +30,7 @@ import com.expediagroup.sdk.xap.core.RequestExecutor
*
* @property restExecutor The executor for handling REST operations.
*/
-class XapClient private constructor(
+class XapClient(
config: XapClientConfiguration,
) : RestClient() {
override val restExecutor: RestExecutor =
@@ -58,21 +56,4 @@ class XapClient private constructor(
* @return The response of the operation.
*/
fun execute(operation: JacksonModelOperationResponseBodyTrait): Response = restExecutor.execute(operation)
-
- companion object {
- /**
- * Builder for creating an instance of [XapClient].
- */
- class Builder : ClientBuilder() {
- override fun build(): XapClient = XapClient(buildConfig())
- }
-
- /**
- * Creates a new builder for [XapClient].
- *
- * @return A new [Builder] instance.
- */
- @JvmStatic
- fun builder() = Builder()
- }
}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/Constant.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/Constant.kt
index f70e720d8..231a03927 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/Constant.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/Constant.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.configuration
internal object Constant {
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapClientConfiguration.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapClientConfiguration.kt
index caaaafc2a..adeba7118 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapClientConfiguration.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapClientConfiguration.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,129 +13,32 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.configuration
import com.expediagroup.sdk.core.auth.common.Credentials
import com.expediagroup.sdk.core.transport.AsyncTransport
import com.expediagroup.sdk.core.transport.Transport
-import com.expediagroup.sdk.rest.AsyncRestClient
-import com.expediagroup.sdk.rest.RestClient
/**
* Configuration data class for XAP client.
*
* @property transport The transport mechanism. Defaults to null.
*/
-data class XapClientConfiguration(
- val credentials: Credentials,
- val transport: Transport? = null,
-)
+data class XapClientConfiguration
+ @JvmOverloads
+ constructor(
+ val credentials: Credentials,
+ val transport: Transport? = null,
+ )
/**
* Configuration data class for asynchronous XAP client.
*
* @property asyncTransport The asynchronous transport mechanism. Defaults to null.
*/
-data class AsyncXapClientConfiguration(
- val credentials: Credentials,
- val asyncTransport: AsyncTransport? = null,
-)
-
-/**
- * Abstract builder class for creating instances of [RestClient].
- *
- * @param T The type of [RestClient] to build.
- */
-abstract class ClientBuilder {
- private var credentials: Credentials? = null
- private var transport: Transport? = null
-
- /**
- * Sets the credentials used to authenticate with the API.
- *
- * @param credentials
- * @return The builder instance.
- */
- fun credentials(credentials: Credentials) = apply { this.credentials = credentials }
-
- /**
- * Sets the transport mechanism.
- *
- * @param transport The transport mechanism.
- * @return The builder instance.
- */
- fun transport(transport: Transport) = apply { this.transport = transport }
-
- /**
- * Builds the [RestClient] instance.
- *
- * @return The built [RestClient] instance.
- */
- abstract fun build(): T
-
- /**
- * Builds the configuration for the XAP client.
- *
- * @return The built [XapClientConfiguration] instance.
- * @throws IllegalArgumentException If the credentials type is unsupported
- */
- protected fun buildConfig(): XapClientConfiguration {
- requireNotNull(credentials) { "credentials is required" }
-
- return XapClientConfiguration(
- credentials = credentials!!,
- transport = transport,
- )
- }
-}
-
-/**
- * Abstract builder class for creating instances of [AsyncRestClient].
- *
- * @param T The type of [AsyncRestClient] to build.
- */
-abstract class AsyncClientBuilder {
- private var credentials: Credentials? = null
- private var asyncTransport: AsyncTransport? = null
-
- /**
- * Sets the credentials used to authenticate with the API.
- *
- * @param credentials
- * @return The builder instance.
- */
- fun credentials(credentials: Credentials) = apply { this.credentials = credentials }
-
- /**
- * Sets the asynchronous transport mechanism.
- *
- * @param asyncTransport The asynchronous transport mechanism.
- * @return The builder instance.
- */
- fun asyncTransport(asyncTransport: AsyncTransport) = apply { this.asyncTransport = asyncTransport }
-
- /**
- * Builds the [AsyncRestClient] instance.
- *
- * @return The built [AsyncRestClient] instance.
- */
- abstract fun build(): T
-
- /**
- * Builds the configuration for the asynchronous XAP client.
- *
- * @return The built [AsyncXapClientConfiguration] instance.
- * @throws IllegalArgumentException If the credentials type is unsupported
- */
- protected fun buildConfig(): AsyncXapClientConfiguration {
- requireNotNull(credentials) {
- "credentials is required"
- }
-
- return AsyncXapClientConfiguration(
- credentials = credentials!!,
- asyncTransport = asyncTransport,
- )
- }
-}
+data class AsyncXapClientConfiguration
+ @JvmOverloads
+ constructor(
+ val credentials: Credentials,
+ val asyncTransport: AsyncTransport? = null,
+ )
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapJacksonObjectMapper.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapJacksonObjectMapper.kt
index c08df59cf..a374a3f26 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapJacksonObjectMapper.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/configuration/XapJacksonObjectMapper.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.configuration
import com.fasterxml.jackson.databind.DeserializationFeature
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/ApiKeyHeaderStep.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/ApiKeyHeaderStep.kt
index 58326ff93..2c740ff1b 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/ApiKeyHeaderStep.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/ApiKeyHeaderStep.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.core
import com.expediagroup.sdk.core.http.Request
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/AsyncRequestExecutor.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/AsyncRequestExecutor.kt
index 5c809bc1d..bad9ac4ec 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/AsyncRequestExecutor.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/AsyncRequestExecutor.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.core
import com.expediagroup.sdk.core.auth.basic.BasicAuthCredentials
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/RequestExecutor.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/RequestExecutor.kt
index 0d989ebc6..9bb8f7a66 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/RequestExecutor.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/core/RequestExecutor.kt
@@ -1,4 +1,4 @@
-/*
+/**
* Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.expediagroup.sdk.xap.core
import com.expediagroup.sdk.core.auth.basic.BasicAuthCredentials
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/infrastructure/ApiAbstractions.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/infrastructure/ApiAbstractions.kt
deleted file mode 100644
index 35dffb93d..000000000
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/infrastructure/ApiAbstractions.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.expediagroup.sdk.xap.infrastructure
-
-typealias MultiValueMap = MutableMap>
-
-fun collectionDelimiter(collectionFormat: String) =
- when (collectionFormat) {
- "csv" -> ","
- "tsv" -> "\t"
- "pipe" -> "|"
- "space" -> " "
- else -> ""
- }
-
-val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
-
-fun toMultiValue(
- items: Array,
- collectionFormat: String,
- map: (item: T) -> String = defaultMultiValueConverter,
-) = toMultiValue(items.asIterable(), collectionFormat, map)
-
-fun toMultiValue(
- items: Iterable,
- collectionFormat: String,
- map: (item: T) -> String = defaultMultiValueConverter,
-): List =
- when (collectionFormat) {
- "multi" -> items.map(map)
- else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
- }
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIGatewayError.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIGatewayError.kt
index b630c862a..38b3c714e 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIGatewayError.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIGatewayError.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,9 +18,9 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param message
-*/
+ */
data class APIGatewayError(
@JsonProperty("message")
val message: kotlin.String? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIMError.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIMError.kt
index 3892da8ce..721de61e8 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIMError.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/APIMError.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,9 +18,9 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param message
-*/
+ */
data class APIMError(
@JsonProperty("message")
val message: kotlin.String? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt
index 388d70e35..83935a3e0 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Address information
+ * Address information
* @param address1 Street Number, Street Name, or PO Box.
* @param address2 Apartment, Floor, Suite, Bldg
* @param suite Suite/apartment number
@@ -26,7 +26,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param province The state or province.
* @param country 3-letter code for the country.
* @param postalCode Zip/postal code.
-*/
+ */
data class ActivitiesAddress(
// Street Number, Street Name, or PO Box.
@JsonProperty("Address1")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt
index 6871c127b..0c0d63ec1 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for the Cancellation Policy information.
+ * Container for the Cancellation Policy information.
* @param freeCancellation Indicates whether the activity can be canceled free of charge within the cancellation window or not.
* @param cancelPolicyDescription The description of Cancellation Policy.
* @param freeCancellationMinHours The minimum number of hours before activity when the activity can still be cancelled for free.
* @param freeCancellationEndDateTime The date and time after which the activity will not be able to be cancelled for free, stated in the local time to where the activity takes place.
-*/
+ */
data class ActivitiesCancellationPolicy(
// Indicates whether the activity can be canceled free of charge within the cancellation window or not.
@JsonProperty("FreeCancellation")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt
index a06a0a08b..27ce979ca 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for disambiguation country information
+ * Container for disambiguation country information
* @param name country name
* @param isoCode2 2-letter code for the country
* @param isoCode3 3-letter code for the country
* @param code 3-letter code for the country
-*/
+ */
data class ActivitiesCountry(
// country name
@JsonProperty("Name")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt
index 057077a20..cf3e3f563 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,13 +19,13 @@ import com.expediagroup.sdk.xap.models.ActivitiesLocationOption
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for error list.
+ * Container for error list.
* @param code Error code describing the issue
* @param description A simple description of what the error is.
* @param detailCode Detailed error code describing the issue.
* @param locationKeyword The requested location that caused the error.
* @param locationOptions List for possible locations from which the customer must choose the best one to be re-submitted in the request.
-*/
+ */
data class ActivitiesError(
// Error code describing the issue
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt
index 5a91094f5..a6c18e648 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@ import com.expediagroup.sdk.xap.models.ActivitiesError
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param errors Container for error list.
* @param transactionId A unique identifier for the transaction.
-*/
+ */
data class ActivitiesErrors(
// Container for error list.
@JsonProperty("Errors")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt
index 66a7ed867..3aea05601 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Geographic information
+ * Geographic information
* @param latitude Latitude of the location.
* @param longitude Longitude of the location.
* @param obfuscated
-*/
+ */
data class ActivitiesGeoLocation(
// Latitude of the location.
@JsonProperty("Latitude")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt
index 46d50af49..e6ca23599 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container of HATEOAS URL's
+ * Container of HATEOAS URL's
* @param href HATEOAS URL to fetch details.
* @param accept Accept header.
* @param method HTTP method to connect.
-*/
+ */
data class ActivitiesLink(
// HATEOAS URL to fetch details.
@JsonProperty("Href")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt
index a70802764..80b41d46e 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ import com.expediagroup.sdk.xap.models.ActivitiesNeighborhood
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of location(s) where the activity will happen.
+ * List of location(s) where the activity will happen.
* @param type The type of location code (MULTICITY | METROCODE).
* @param id Expedia Region ID of the specified airport.
* @param name Location Name
@@ -34,7 +34,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param neighborhood
* @param regionId RegionId the location resides in.
* @param country
-*/
+ */
data class ActivitiesLocation(
// The type of location code (MULTICITY | METROCODE).
@JsonProperty("Type")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt
index b3783b542..ca8191f8e 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.expediagroup.sdk.xap.models.ActivitiesLocation
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List for possible locations from which the customer must choose the best one to be re-submitted in the request.
+ * List for possible locations from which the customer must choose the best one to be re-submitted in the request.
* @param requestedLocation Location used in partner request.
* @param locations Container for list of possible locations that could be used to disambiguate the query.
* @param type Type of the location.
@@ -31,7 +31,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param address The address of the location.
* @param country
* @param geoLocation
-*/
+ */
data class ActivitiesLocationOption(
// Location used in partner request.
@JsonProperty("RequestedLocation")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt
index 3e8ca71b1..7a6d4943f 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of activity Media.
+ * List of activity Media.
* @param type type of the media. So far there is only one option: 1: Image
* @param propertySize Image size You can find a link to the complete list of Supported Images Sizes in the Related Links section at the bottom of the page.
* @param url Image URL
* @param title Image title
-*/
+ */
data class ActivitiesMedia(
// type of the media. So far there is only one option: 1: Image
@JsonProperty("Type")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt
index d612641a1..3f3b40f45 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for the discount amount.
+ * Container for the discount amount.
* @param `value` The value of the element being defined.
* @param currency The ISO 4217 Currency Code that the value is expressed in.
* @param localCurrencyPrice
-*/
+ */
data class ActivitiesMoney(
// The value of the element being defined.
@JsonProperty("Value")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt
index a6fefde69..c63313950 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Geography entities which are typically contained within a city. This includes the categories neighborhood and point of interest. Low level regions are not a formally defined concept in the geography model.
+ * Geography entities which are typically contained within a city. This includes the categories neighborhood and point of interest. Low level regions are not a formally defined concept in the geography model.
* @param id Neighborhood id.
* @param name Neighborhood name.
-*/
+ */
data class ActivitiesNeighborhood(
// Neighborhood id.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt
index dab6fe50b..a3c8e3de7 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The phone of the company providing the activity.
+ * The phone of the company providing the activity.
* @param countryCode Country code of traveler's phone number; only digits allowed.
* @param number Traveler's phone number; only digits allowed.
* @param areaCode Area code of traveler's phone number; only digits allowed.
* @param extensionNumber
-*/
+ */
data class ActivitiesPhone(
// Country code of traveler's phone number; only digits allowed.
@JsonProperty("CountryCode")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt
index 88a0cde5c..6f8aae431 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,14 +21,14 @@ import com.expediagroup.sdk.xap.models.Savings
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The price of the offer
+ * The price of the offer
* @param totalRate
* @param category Type of passenger. Values supported are: ADULT | SENIOR | CHILD
* @param totalFees
* @param totalTaxesAndFees
* @param referencePrice
* @param savings
-*/
+ */
data class ActivitiesPrice(
@JsonProperty("TotalRate")
val totalRate: ActivitiesMoney,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt
index c0ce2c3c8..cddbadf61 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@ import com.expediagroup.sdk.xap.models.ActivitiesPhone
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The details information of company providing the activity.
+ * The details information of company providing the activity.
* @param name The name of the company providing the activity.
* @param phone
-*/
+ */
data class ActivitiesSupplier(
// The name of the company providing the activity.
@JsonProperty("Name")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt
index 9d35ecfc9..83539f3f4 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import com.expediagroup.sdk.xap.models.ActivitiesMoney
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for all warnings generated during the transaction.
+ * Container for all warnings generated during the transaction.
* @param code Standardized warning code.
* @param description Standardized warning description message.
* @param originalPrice
@@ -28,7 +28,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param changedAmount
* @param changedPercentage The changed percentage. In the sample 2.97 means the changed percentage is 2.97%.
* @param links
-*/
+ */
data class ActivitiesWarning(
// Standardized warning code.
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt
index 80f22080a..b0089f7f5 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,7 +26,7 @@ import com.expediagroup.sdk.xap.models.Redemption
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Detailed information on the Activity.
+ * Detailed information on the Activity.
* @param id The numerical identifier for this particular activity
* @param title The display title for this activity.
* @param description The description of the Activity.
@@ -49,7 +49,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param knowBeforeYouBook Web formatted statement of things that a purchaser should be aware of BEFORE they book this activity.
* @param knowBeforeYouGo Web formatted statement of things that a purchaser should be aware of BEFORE they go to this activity.
* @param offers Offers for the activity.
-*/
+ */
data class Activity(
// The numerical identifier for this particular activity
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt
index 8397d0405..640c1190c 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,14 +20,14 @@ import com.expediagroup.sdk.xap.models.Activity
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param transactionId A unique identifier for this transaction.
* @param location The location user searched, translated into the full, unambiguous format.
* @param warnings Container for all warnings generated during the transaction.
* @param startDate The startDate of activities in YYY-MM-DD format.
* @param endDate The endDate of activities in YYY-MM-DD format.
* @param activityDetails
-*/
+ */
data class ActivityDetailsResponse(
// A unique identifier for this transaction.
@JsonProperty("TransactionId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt
index ed8d5b8a5..21ee19724 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.expediagroup.sdk.xap.models.CategoryGroup
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param transactionId A unique identifier for this transaction.
* @param count The number of activities returned in the response.
* @param location The location that the user searched, expressed in the exact format that the inventory system uses to designate the location.
@@ -30,7 +30,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param endDate The endDate of returned group of activities in YYYY-MM-DD format.
* @param activities List of activities matching the search criteria.
* @param categories Container for a breakdown of how many of each type of Activity have been returned in the API response.
-*/
+ */
data class ActivityListingsResponse(
// A unique identifier for this transaction.
@JsonProperty("TransactionId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AdditionalFee.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AdditionalFee.kt
index 68cdc2732..b2b743e02 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AdditionalFee.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AdditionalFee.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,14 +20,14 @@ import com.expediagroup.sdk.xap.models.Deductible
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of additional fees including both mandatory and optional fees.such as young driver fee/drop off fee /CollisionDamageWaiver
+ * List of additional fees including both mandatory and optional fees.such as young driver fee/drop off fee /CollisionDamageWaiver
* @param isRequired Indicates whether this additional fee is mandatory.
* @param financeCategory Category of the fee / Coverages
* @param financeSubCategory Sub category of the fee / Coverages .
* @param amount
* @param description Description of the fee.
* @param deductible
-*/
+ */
data class AdditionalFee(
// Indicates whether this additional fee is mandatory.
@JsonProperty("IsRequired")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Address.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Address.kt
index 84feff4d6..c25882b5c 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Address.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Address.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,14 +18,14 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The address information of the location.
+ * The address information of the location.
* @param address1 Street Number, Street Name, or PO Box
* @param address2 Apartment, Floor, Suite, Bldg or more specific information about Address1.
* @param city The city
* @param province The state or province
* @param country 3-letter code for the country
* @param postalCode Zip/postal code
-*/
+ */
data class Address(
// Street Number, Street Name, or PO Box
@JsonProperty("Address1")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AgeClassRestriction.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AgeClassRestriction.kt
index 4f20e32f6..6b4d9644b 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AgeClassRestriction.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AgeClassRestriction.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for room occupancy rules based on the age of the guests.
+ * Container for room occupancy rules based on the age of the guests.
* @param ageClass Categories for hotel guests, based on age.
* @param ageMinimum The minimum age defined in a particular `AgeClass`.
* @param ageMaximum The maximum age defined in a particular `AgeClass`. If not specified, the `AgeClass` has no upper bound.
* @param maxGuestCount The max guest count allowed in a particular `AgeClass`.
-*/
+ */
data class AgeClassRestriction(
// Categories for hotel guests, based on age.
@JsonProperty("AgeClass")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AirValidFormsOfPayment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AirValidFormsOfPayment.kt
new file mode 100644
index 000000000..2cd0e2072
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AirValidFormsOfPayment.kt
@@ -0,0 +1,90 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for fees that are charged for using certain payment methods. Since the method of payment is not known until time of booking, these fees are returned separately and not included in the total price
+ * @param paymentMethod Method of payment
+ * @param name Name of Payment Method.
+ * @param fee The amount of the payment fee.
+ * @param currency Currency of the fee in ISO 4217 format
+ */
+data class AirValidFormsOfPayment(
+ // Method of payment
+ @JsonProperty("PaymentMethod")
+ val paymentMethod: kotlin.String,
+ // Name of Payment Method.
+ @JsonProperty("Name")
+ val name: kotlin.String,
+ // The amount of the payment fee.
+ @JsonProperty("Fee")
+ val fee: kotlin.String,
+ // Currency of the fee in ISO 4217 format
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+) {
+ init {
+ require(paymentMethod != null) { "paymentMethod must not be null" }
+
+ require(name != null) { "name must not be null" }
+
+ require(fee != null) { "fee must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var paymentMethod: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ private var fee: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ ) {
+ fun paymentMethod(paymentMethod: kotlin.String) = apply { this.paymentMethod = paymentMethod }
+
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun fee(fee: kotlin.String) = apply { this.fee = fee }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun build(): AirValidFormsOfPayment {
+ val instance =
+ AirValidFormsOfPayment(
+ paymentMethod = paymentMethod!!,
+ name = name!!,
+ fee = fee!!,
+ currency = currency!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ paymentMethod = paymentMethod!!,
+ name = name!!,
+ fee = fee!!,
+ currency = currency!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Airport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Airport.kt
new file mode 100644
index 000000000..64f79ebbd
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Airport.kt
@@ -0,0 +1,93 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for arrival airport details.
+ * @param code Three-letter IATA airport code for departure location
+ * @param name Name of departure airport
+ * @param city City where departure airport resides
+ * @param province Province or State where departure airport resides
+ * @param country Country where departure airport resides
+ */
+data class Airport(
+ // Three-letter IATA airport code for departure location
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Name of departure airport
+ @JsonProperty("Name")
+ val name: kotlin.String? = null,
+ // City where departure airport resides
+ @JsonProperty("City")
+ val city: kotlin.String? = null,
+ // Province or State where departure airport resides
+ @JsonProperty("Province")
+ val province: kotlin.String? = null,
+ // Country where departure airport resides
+ @JsonProperty("Country")
+ val country: kotlin.String? = null,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ private var city: kotlin.String? = null,
+ private var province: kotlin.String? = null,
+ private var country: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun name(name: kotlin.String?) = apply { this.name = name }
+
+ fun city(city: kotlin.String?) = apply { this.city = city }
+
+ fun province(province: kotlin.String?) = apply { this.province = province }
+
+ fun country(country: kotlin.String?) = apply { this.country = country }
+
+ fun build(): Airport {
+ val instance =
+ Airport(
+ code = code!!,
+ name = name,
+ city = city,
+ province = province,
+ country = country,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ name = name,
+ city = city,
+ province = province,
+ country = country,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Amenities.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Amenities.kt
new file mode 100644
index 000000000..44b72aa3e
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Amenities.kt
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Entertainment
+import com.expediagroup.sdk.xap.models.Power
+import com.expediagroup.sdk.xap.models.Wifi
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * List of specific amenities available for each flight leg.
+ * @param entertainment
+ * @param wifi
+ * @param power
+ */
+data class Amenities(
+ @JsonProperty("Entertainment")
+ val entertainment: Entertainment? = null,
+ @JsonProperty("Wifi")
+ val wifi: Wifi? = null,
+ @JsonProperty("Power")
+ val power: Power? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var entertainment: Entertainment? = null,
+ private var wifi: Wifi? = null,
+ private var power: Power? = null,
+ ) {
+ fun entertainment(entertainment: Entertainment?) = apply { this.entertainment = entertainment }
+
+ fun wifi(wifi: Wifi?) = apply { this.wifi = wifi }
+
+ fun power(power: Power?) = apply { this.power = power }
+
+ fun build(): Amenities {
+ val instance =
+ Amenities(
+ entertainment = entertainment,
+ wifi = wifi,
+ power = power,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ entertainment = entertainment,
+ wifi = wifi,
+ power = power,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Amenity.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Amenity.kt
new file mode 100644
index 000000000..a198c8196
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Amenity.kt
@@ -0,0 +1,145 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.AmenityInfo
+import com.expediagroup.sdk.xap.models.Bag
+import com.expediagroup.sdk.xap.models.SeatChoice
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for various amenities included in a particular segment.
+ * @param seatChoice
+ * @param carryOnBag
+ * @param checkedBag List of Checked Bag Amenity.
+ * @param change
+ * @param free24HrCancellation True if booking can be cancelled with in 24 hours after booking.
+ * @param refund
+ * @param personalItem
+ * @param upgrade
+ * @param boardingGroup List of available BoardingGroup Amenity.
+ */
+data class Amenity(
+ @JsonProperty("SeatChoice")
+ val seatChoice: SeatChoice? = null,
+ @JsonProperty("CarryOnBag")
+ val carryOnBag: Bag? = null,
+ // List of Checked Bag Amenity.
+ @JsonProperty("CheckedBag")
+ val checkedBag: kotlin.collections.List? = null,
+ @JsonProperty("Change")
+ val change: AmenityInfo? = null,
+ // True if booking can be cancelled with in 24 hours after booking.
+ @JsonProperty("Free24HrCancellation")
+ val free24HrCancellation: kotlin.Boolean? = null,
+ @JsonProperty("Refund")
+ val refund: AmenityInfo? = null,
+ @JsonProperty("PersonalItem")
+ val personalItem: AmenityInfo? = null,
+ @JsonProperty("Upgrade")
+ val upgrade: AmenityInfo? = null,
+ // List of available BoardingGroup Amenity.
+ @JsonProperty("BoardingGroup")
+ val boardingGroup: kotlin.collections.List? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var seatChoice: SeatChoice? = null,
+ private var carryOnBag: Bag? = null,
+ private var checkedBag: kotlin.collections.List? = null,
+ private var change: AmenityInfo? = null,
+ private var free24HrCancellation: kotlin.Boolean? = null,
+ private var refund: AmenityInfo? = null,
+ private var personalItem: AmenityInfo? = null,
+ private var upgrade: AmenityInfo? = null,
+ private var boardingGroup: kotlin.collections.List? = null,
+ ) {
+ fun seatChoice(seatChoice: SeatChoice?) = apply { this.seatChoice = seatChoice }
+
+ fun carryOnBag(carryOnBag: Bag?) = apply { this.carryOnBag = carryOnBag }
+
+ fun checkedBag(checkedBag: kotlin.collections.List?) = apply { this.checkedBag = checkedBag }
+
+ fun change(change: AmenityInfo?) = apply { this.change = change }
+
+ fun free24HrCancellation(free24HrCancellation: kotlin.Boolean?) = apply { this.free24HrCancellation = free24HrCancellation }
+
+ fun refund(refund: AmenityInfo?) = apply { this.refund = refund }
+
+ fun personalItem(personalItem: AmenityInfo?) = apply { this.personalItem = personalItem }
+
+ fun upgrade(upgrade: AmenityInfo?) = apply { this.upgrade = upgrade }
+
+ fun boardingGroup(boardingGroup: kotlin.collections.List?) = apply { this.boardingGroup = boardingGroup }
+
+ fun build(): Amenity {
+ val instance =
+ Amenity(
+ seatChoice = seatChoice,
+ carryOnBag = carryOnBag,
+ checkedBag = checkedBag,
+ change = change,
+ free24HrCancellation = free24HrCancellation,
+ refund = refund,
+ personalItem = personalItem,
+ upgrade = upgrade,
+ boardingGroup = boardingGroup,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ seatChoice = seatChoice,
+ carryOnBag = carryOnBag,
+ checkedBag = checkedBag,
+ change = change,
+ free24HrCancellation = free24HrCancellation,
+ refund = refund,
+ personalItem = personalItem,
+ upgrade = upgrade,
+ boardingGroup = boardingGroup,
+ )
+
+ /**
+ * List of available BoardingGroup Amenity.
+ * Values: LAST,PRIORITY,BASED_ON_SEAT_LOCATION,PAY_TO_UPGRADE
+ */
+ enum class BoardingGroup(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("LAST")
+ LAST("LAST"),
+
+ @JsonProperty("PRIORITY")
+ PRIORITY("PRIORITY"),
+
+ @JsonProperty("BASED_ON_SEAT_LOCATION")
+ BASED_ON_SEAT_LOCATION("BASED_ON_SEAT_LOCATION"),
+
+ @JsonProperty("PAY_TO_UPGRADE")
+ PAY_TO_UPGRADE("PAY_TO_UPGRADE"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AmenityInfo.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AmenityInfo.kt
new file mode 100644
index 000000000..9a3d8c22f
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AmenityInfo.kt
@@ -0,0 +1,73 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Availability of Passenger Temperature Check. Possible values: INCLUDED, NOT_AVAILABLE
+ * @param availability Availability of Amenity
+ */
+data class AmenityInfo(
+ // Availability of Amenity
+ @JsonProperty("Availability")
+ val availability: AmenityInfo.Availability? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var availability: AmenityInfo.Availability? = null,
+ ) {
+ fun availability(availability: AmenityInfo.Availability?) = apply { this.availability = availability }
+
+ fun build(): AmenityInfo {
+ val instance =
+ AmenityInfo(
+ availability = availability,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ availability = availability,
+ )
+
+ /**
+ * Availability of Amenity
+ * Values: INCLUDED,NOT_AVAILABLE,AVAILABLE_FOR_FEE
+ */
+ enum class Availability(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("INCLUDED")
+ INCLUDED("INCLUDED"),
+
+ @JsonProperty("NOT_AVAILABLE")
+ NOT_AVAILABLE("NOT_AVAILABLE"),
+
+ @JsonProperty("AVAILABLE_FOR_FEE")
+ AVAILABLE_FOR_FEE("AVAILABLE_FOR_FEE"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendar.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendar.kt
index 9cbda940c..d335f8461 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendar.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendar.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@ import com.expediagroup.sdk.xap.models.DateRange
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param propertyId The unique property identifier that designates a single property.
* @param dateRange
* @param availability A string of codes that shows property availability, one for every day in the specified date range. Valid values include Y (available) and N (unavailable). ***Note**: The first code stands for availability on the `StartDate` in the `DateRange` and the last one stands for the `EndDate`.*
@@ -27,7 +27,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param minPriorNotify A comma-separated list of numbers that shows how many days before a reservation the booking must occur, one for every day in the specified date range. Valid values include 0-999, and 0 indicates no prior notification required for a given day. The unit is always day. ***Note**: The first number stands for the minimum advance booking days on the `StartDate` in the `DateRange` and the last one stands for the `EndDate`. No limitation if not returned.*
* @param minStay A comma-separated list of numbers that show the minimum number of days a traveler can stay, one for every day in the specified date range. Valid values include 0-999, and 0 indicates no minimum for a given day. The unit is always day. ***Note**: The first number stands for the minimum stay on the `StartDate` in the `DateRange` and the last one stands for the `EndDate`. No limitation if not returned.*
* @param maxStay A comma-separated list of numbers that show the maximum number of days a traveler can stay, one for every day in the specified date range. Valid values include 0-999, and 0 indicates no maximum for a given day. The unit is always day. ***Note**: The first number stands for the maximum stay on the `StartDate` in the `DateRange` and the last one stands for the `EndDate`. No limitation if not returned.
-*/
+ */
data class AvailabilityCalendar(
// The unique property identifier that designates a single property.
@JsonProperty("PropertyId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendarResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendarResponse.kt
index 5d105f2ea..cdccbe5f1 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendarResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailabilityCalendarResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,11 +20,11 @@ import com.expediagroup.sdk.xap.models.LodgingWarning
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param warnings There were some errors or events during the transaction, but the API has still returned a response. Container for all warnings.
* @param transactionId Unique identifier for the transaction.
* @param availabilityCalendars A list of the calendar entities.
-*/
+ */
data class AvailabilityCalendarResponse(
// There were some errors or events during the transaction, but the API has still returned a response. Container for all warnings.
@JsonProperty("Warnings")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt
index 70a55cf16..e6af96313 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,12 +20,12 @@ import com.expediagroup.sdk.xap.models.Ticket
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The list of available Time Slots for the activity.
+ * The list of available Time Slots for the activity.
* @param dateTime The date and time when the activity happens.
* @param allDayActivity Indicates whether the activity is an all-day activity.
* @param cancellationPolicy
* @param tickets Container for ticket information.
-*/
+ */
data class AvailableTimeSlot(
// The date and time when the activity happens.
@JsonProperty("DateTime")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AveragePricePerTicket.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AveragePricePerTicket.kt
new file mode 100644
index 000000000..028075b65
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/AveragePricePerTicket.kt
@@ -0,0 +1,79 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for average pricing information per ticket. If any passenger type (such as Infant in Lap or Seat) has a $0 total price there will be no ticket, so those passengers would not be included in the count.
+ * @param `value` Average price per ticket, excluding infant
+ * @param currency Currency in ISO 4217 format
+ * @param count Indicates how many tickets were used to determine the average
+ */
+data class AveragePricePerTicket(
+ // Average price per ticket, excluding infant
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ // Currency in ISO 4217 format
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+ // Indicates how many tickets were used to determine the average
+ @JsonProperty("Count")
+ val count: kotlin.Int,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+
+ require(count != null) { "count must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ private var count: kotlin.Int? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun count(count: kotlin.Int) = apply { this.count = count }
+
+ fun build(): AveragePricePerTicket {
+ val instance =
+ AveragePricePerTicket(
+ `value` = `value`!!,
+ currency = currency!!,
+ count = count!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ count = count!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Bag.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Bag.kt
new file mode 100644
index 000000000..8deeeb53d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Bag.kt
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * List of Checked Bag Amenity.
+ * @param bagNumber Bag number of CarryOnBag amenity for which the Availability applies.
+ * @param availability Availability of Amenity
+ */
+data class Bag(
+ // Bag number of CarryOnBag amenity for which the Availability applies.
+ @JsonProperty("BagNumber")
+ val bagNumber: kotlin.Int? = null,
+ // Availability of Amenity
+ @JsonProperty("Availability")
+ val availability: Bag.Availability? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var bagNumber: kotlin.Int? = null,
+ private var availability: Bag.Availability? = null,
+ ) {
+ fun bagNumber(bagNumber: kotlin.Int?) = apply { this.bagNumber = bagNumber }
+
+ fun availability(availability: Bag.Availability?) = apply { this.availability = availability }
+
+ fun build(): Bag {
+ val instance =
+ Bag(
+ bagNumber = bagNumber,
+ availability = availability,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ bagNumber = bagNumber,
+ availability = availability,
+ )
+
+ /**
+ * Availability of Amenity
+ * Values: INCLUDED,NOT_AVAILABLE,AVAILABLE_FOR_FEE
+ */
+ enum class Availability(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("INCLUDED")
+ INCLUDED("INCLUDED"),
+
+ @JsonProperty("NOT_AVAILABLE")
+ NOT_AVAILABLE("NOT_AVAILABLE"),
+
+ @JsonProperty("AVAILABLE_FOR_FEE")
+ AVAILABLE_FOR_FEE("AVAILABLE_FOR_FEE"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BaggageFee.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BaggageFee.kt
new file mode 100644
index 000000000..228356190
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BaggageFee.kt
@@ -0,0 +1,149 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Fee
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for baggage fee information of each bag type. The baggage fee can vary for each bag type. The amount can be zero, fixed amount or will be in a range
+ * @param bagType Specifies the type of baggage.
+ * @param weightUnit Specifies weight unit for this bagType. This will always be kilograms.
+ * @param weight Weight of the bag.
+ * @param application This element specifies descriptive text useful in displaying baggage fees.
+ * @param fixedCharge
+ * @param maxCharge
+ * @param minCharge
+ */
+data class BaggageFee(
+ // Specifies the type of baggage.
+ @JsonProperty("BagType")
+ val bagType: BaggageFee.BagType,
+ // Specifies weight unit for this bagType. This will always be kilograms.
+ @JsonProperty("WeightUnit")
+ val weightUnit: kotlin.String? = null,
+ // Weight of the bag.
+ @JsonProperty("Weight")
+ val weight: kotlin.String? = null,
+ // This element specifies descriptive text useful in displaying baggage fees.
+ @JsonProperty("Application")
+ val application: BaggageFee.Application? = null,
+ @JsonProperty("FixedCharge")
+ val fixedCharge: Fee? = null,
+ @JsonProperty("MaxCharge")
+ val maxCharge: Fee? = null,
+ @JsonProperty("MinCharge")
+ val minCharge: Fee? = null,
+) {
+ init {
+ require(bagType != null) { "bagType must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var bagType: BaggageFee.BagType? = null,
+ private var weightUnit: kotlin.String? = null,
+ private var weight: kotlin.String? = null,
+ private var application: BaggageFee.Application? = null,
+ private var fixedCharge: Fee? = null,
+ private var maxCharge: Fee? = null,
+ private var minCharge: Fee? = null,
+ ) {
+ fun bagType(bagType: BaggageFee.BagType) = apply { this.bagType = bagType }
+
+ fun weightUnit(weightUnit: kotlin.String?) = apply { this.weightUnit = weightUnit }
+
+ fun weight(weight: kotlin.String?) = apply { this.weight = weight }
+
+ fun application(application: BaggageFee.Application?) = apply { this.application = application }
+
+ fun fixedCharge(fixedCharge: Fee?) = apply { this.fixedCharge = fixedCharge }
+
+ fun maxCharge(maxCharge: Fee?) = apply { this.maxCharge = maxCharge }
+
+ fun minCharge(minCharge: Fee?) = apply { this.minCharge = minCharge }
+
+ fun build(): BaggageFee {
+ val instance =
+ BaggageFee(
+ bagType = bagType!!,
+ weightUnit = weightUnit,
+ weight = weight,
+ application = application,
+ fixedCharge = fixedCharge,
+ maxCharge = maxCharge,
+ minCharge = minCharge,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ bagType = bagType!!,
+ weightUnit = weightUnit,
+ weight = weight,
+ application = application,
+ fixedCharge = fixedCharge,
+ maxCharge = maxCharge,
+ minCharge = minCharge,
+ )
+
+ /**
+ * Specifies the type of baggage.
+ * Values: PREPAID_CARRY_ON,PREPAID_FIRST_BAG,PREPAID_SECOND_BAG,CARRY_ON,FIRST_BAG,SECOND_BAG
+ */
+ enum class BagType(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("PREPAID_CARRY_ON")
+ PREPAID_CARRY_ON("PREPAID_CARRY_ON"),
+
+ @JsonProperty("PREPAID_FIRST_BAG")
+ PREPAID_FIRST_BAG("PREPAID_FIRST_BAG"),
+
+ @JsonProperty("PREPAID_SECOND_BAG")
+ PREPAID_SECOND_BAG("PREPAID_SECOND_BAG"),
+
+ @JsonProperty("CARRY_ON")
+ CARRY_ON("CARRY_ON"),
+
+ @JsonProperty("FIRST_BAG")
+ FIRST_BAG("FIRST_BAG"),
+
+ @JsonProperty("SECOND_BAG")
+ SECOND_BAG("SECOND_BAG"),
+ }
+
+ /**
+ * This element specifies descriptive text useful in displaying baggage fees.
+ * Values: UPTO,PER
+ */
+ enum class Application(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("upto")
+ UPTO("upto"),
+
+ @JsonProperty("per")
+ PER("per"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BaggageFeeFlightSegment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BaggageFeeFlightSegment.kt
new file mode 100644
index 000000000..379703ebd
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BaggageFeeFlightSegment.kt
@@ -0,0 +1,106 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Airport
+import com.expediagroup.sdk.xap.models.FlightsV1Link
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for information of Segment.
+ * @param airlineCode Specifies the 2 letter IATA airline code of the most significant carrier for the flight. In the case of flights with multiple airlines involves this is the airline who will be charging for the baggage.
+ * @param departureAirport
+ * @param arrivalAirport
+ * @param airlineName Specifies the name of the airline. Where possible this is localized to the LangID supplied in the request.
+ * @param cabinClass Cabin class name of airline.
+ * @param links Links to airline's baggage policies. Where possible this is localized to the LangID supplied in the request. It is possible that special characters will be present in the URL
+ */
+data class BaggageFeeFlightSegment(
+ // Specifies the 2 letter IATA airline code of the most significant carrier for the flight. In the case of flights with multiple airlines involves this is the airline who will be charging for the baggage.
+ @JsonProperty("AirlineCode")
+ val airlineCode: kotlin.String,
+ @JsonProperty("DepartureAirport")
+ val departureAirport: Airport,
+ @JsonProperty("ArrivalAirport")
+ val arrivalAirport: Airport,
+ // Specifies the name of the airline. Where possible this is localized to the LangID supplied in the request.
+ @JsonProperty("AirlineName")
+ val airlineName: kotlin.String? = null,
+ // Cabin class name of airline.
+ @JsonProperty("CabinClass")
+ val cabinClass: kotlin.String? = null,
+ // Links to airline's baggage policies. Where possible this is localized to the LangID supplied in the request. It is possible that special characters will be present in the URL
+ @JsonProperty("Links")
+ val links: kotlin.collections.Map? = null,
+) {
+ init {
+ require(airlineCode != null) { "airlineCode must not be null" }
+
+ require(departureAirport != null) { "departureAirport must not be null" }
+
+ require(arrivalAirport != null) { "arrivalAirport must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var airlineCode: kotlin.String? = null,
+ private var departureAirport: Airport? = null,
+ private var arrivalAirport: Airport? = null,
+ private var airlineName: kotlin.String? = null,
+ private var cabinClass: kotlin.String? = null,
+ private var links: kotlin.collections.Map? = null,
+ ) {
+ fun airlineCode(airlineCode: kotlin.String) = apply { this.airlineCode = airlineCode }
+
+ fun departureAirport(departureAirport: Airport) = apply { this.departureAirport = departureAirport }
+
+ fun arrivalAirport(arrivalAirport: Airport) = apply { this.arrivalAirport = arrivalAirport }
+
+ fun airlineName(airlineName: kotlin.String?) = apply { this.airlineName = airlineName }
+
+ fun cabinClass(cabinClass: kotlin.String?) = apply { this.cabinClass = cabinClass }
+
+ fun links(links: kotlin.collections.Map?) = apply { this.links = links }
+
+ fun build(): BaggageFeeFlightSegment {
+ val instance =
+ BaggageFeeFlightSegment(
+ airlineCode = airlineCode!!,
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ airlineName = airlineName,
+ cabinClass = cabinClass,
+ links = links,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ airlineCode = airlineCode!!,
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ airlineName = airlineName,
+ cabinClass = cabinClass,
+ links = links,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BedType.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BedType.kt
index 576476d3c..a504b063e 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BedType.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/BedType.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Statement of bed types available for this offer. A room may have several bed type options available. **NOTE**: due to the large number of bed type options available, we no longer publish a list of available bed types. More information is available in [Lodging Bed Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/bed-types).
+ * Statement of bed types available for this offer. A room may have several bed type options available. **NOTE**: due to the large number of bed type options available, we no longer publish a list of available bed types. More information is available in [Lodging Bed Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/bed-types).
* @param id The bed type ID
* @param description The bed type description.
-*/
+ */
data class BedType(
// The bed type ID
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRule.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRule.kt
index 2ff18c011..e629f9b5f 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRule.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRule.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,13 +19,13 @@ import com.expediagroup.sdk.xap.models.CancellationPenaltyRulePenaltyPrice
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param penaltyNightCount Specifies the per-stay cancellation fee charged in terms of the cost of the number of nights listed, in addition to any other penalties. The rate charged is based on the earliest night(s) of the stay.
* @param penaltyPercentOfStay Specifies the per-stay cancellation fee charged as a percentage of the total rate, in addition to any other penalties listed.
* @param penaltyPrice
* @param penaltyStartDateTime The beginning of the window of time when the `CancellationPenaltyRule` is in effect. The date and time are expressed in ISO 8601 International Date format, and local to the hotel.
* @param penaltyEndDateTime The end of the window of time when the `CancellationPenaltyRule` is in effect. The date and time are expressed in ISO 8601 International Date format, and local to the hotel.
-*/
+ */
data class CancellationPenaltyRule(
// Specifies the per-stay cancellation fee charged in terms of the cost of the number of nights listed, in addition to any other penalties. The rate charged is based on the earliest night(s) of the stay.
@JsonProperty("PenaltyNightCount")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRulePenaltyPrice.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRulePenaltyPrice.kt
index b4c7cd623..5d7b4594a 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRulePenaltyPrice.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPenaltyRulePenaltyPrice.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,11 +19,11 @@ import com.expediagroup.sdk.xap.models.Money
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param `value` The value of the element being defined.
* @param currency The ISO 4217 Currency Code that the value is expressed in.
* @param localCurrencyPrice
-*/
+ */
data class CancellationPenaltyRulePenaltyPrice(
// The value of the element being defined.
@JsonProperty("Value")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPolicy.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPolicy.kt
index e1d667006..e09294e25 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPolicy.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CancellationPolicy.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.expediagroup.sdk.xap.models.WaiverPolicy
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for room cancellation policy.
+ * Container for room cancellation policy.
* @param waiverPolicy
* @param cancellableOnline Boolean value to identify if the reservation can be cancelled online. If false, the customer will only be able to cancel a refundable room by calling Expedia Customer Service.
* @param refundable Indicate whether the rate is refundable or not.
@@ -30,7 +30,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param cancellationPenaltyRules Container for cancellation penalty details.
* @param cancelPolicyDescription Additional cancellation policy information available as static text.
* @param nonRefundableDateRanges A list of dates ranges that are non-refundable. **Note**: The stay dates in those date ranges will always be charged whenever there is any cancellation penalty rule.
-*/
+ */
data class CancellationPolicy(
@JsonProperty("WaiverPolicy")
val waiverPolicy: WaiverPolicy? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Capacity.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Capacity.kt
index 9b7489776..a3db0c735 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Capacity.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Capacity.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Capacity for car's properties.
+ * Capacity for car's properties.
* @param adultCount The typical number of adults that can fit comfortably in the car.
* @param childCount The typical number of children that can fit comfortably in the car.
* @param smallLuggageCount The typical number of small pieces of luggage that fit in the cargo space.
* @param largeLuggageCount The typical number of large pieces of luggage that fit in the cargo space.
-*/
+ */
data class Capacity(
// The typical number of adults that can fit comfortably in the car.
@JsonProperty("AdultCount")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Car.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Car.kt
index 94b1d693e..a80c30259 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Car.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Car.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,7 +30,7 @@ import com.expediagroup.sdk.xap.models.VendorLocationDetails
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of cars matching the search criteria.
+ * List of cars matching the search criteria.
* @param id Uniquely identifies a Car Offer.Note: since pay-online and pay-at-the-counter Car Offers have the same associated Rate Code, the Offer ID is the only unique identifier to differentiate between the two offers when referencing or booking.
* @param vehicleDetails
* @param supplier
@@ -48,7 +48,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param noShowPenalty
* @param images List of image resources of the car product.
* @param rating
-*/
+ */
data class Car(
// Uniquely identifies a Car Offer.Note: since pay-online and pay-at-the-counter Car Offers have the same associated Rate Code, the Offer ID is the only unique identifier to differentiate between the two offers when referencing or booking.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarCategory.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarCategory.kt
index d57f96356..93419ec8f 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarCategory.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarCategory.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Car category. Please find list of Car Type Codes in https://expediaintegration.zendesk.com/hc/en-us/articles/115008631767
+ * Car category. Please find list of Car Type Codes in https://expediaintegration.zendesk.com/hc/en-us/articles/115008631767
* @param code Car category code.
* @param `value` Car category value.
-*/
+ */
data class CarCategory(
// Car category code.
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetails.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetails.kt
index 32fc904d1..63d390d85 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetails.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetails.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,7 +34,7 @@ import com.expediagroup.sdk.xap.models.VendorLocationDetails
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Details of requested car.
+ * Details of requested car.
* @param vehicleDetails
* @param supplier
* @param pickupDetails
@@ -54,7 +54,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param carPolicies A list of policies that apply to this car rental.
* @param images List of image resources of the car product.
* @param rating
-*/
+ */
data class CarDetails(
@JsonProperty("VehicleDetails")
val vehicleDetails: VehicleDetails,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetailsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetailsResponse.kt
index bb2837c94..bdcd54435 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetailsResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarDetailsResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,13 +22,13 @@ import com.expediagroup.sdk.xap.models.CarsWarning
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param transactionId A unique identifier for this transaction.
* @param warnings Container for warning codes
* @param carDetails
* @param validFormsOfPayment List of all the forms of payment that will be accepted for the booking of this rental transaction.
* @param links A map of links to other Car APIs. possible link name: ApiBooking
-*/
+ */
data class CarDetailsResponse(
// A unique identifier for this transaction.
@JsonProperty("TransactionId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarListingsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarListingsResponse.kt
index a86f1a5d4..8efd82c32 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarListingsResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarListingsResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,12 +20,12 @@ import com.expediagroup.sdk.xap.models.CarsWarning
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param transactionId A unique identifier for this transaction.
* @param carCount The number of cars offers returned in the response.
* @param warnings Container for warning codes
* @param cars List of cars matching the search criteria.
-*/
+ */
data class CarListingsResponse(
// A unique identifier for this transaction.
@JsonProperty("TransactionId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarPolicy.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarPolicy.kt
index f46c53f83..13094403e 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarPolicy.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarPolicy.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* A list of policies that apply to this car rental.
+ * A list of policies that apply to this car rental.
* @param categoryCode The category that this policy applies to (e.g. cancellation, drivers license requirements, driver age requirements)
* @param policyText The raw text of the policy.This is generally localized into the requested language, but may be English if no other translations are available.
-*/
+ */
data class CarPolicy(
// The category that this policy applies to (e.g. cancellation, drivers license requirements, driver age requirements)
@JsonProperty("CategoryCode")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarType.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarType.kt
index cf1e9d517..01b2d792d 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarType.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarType.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Car type. Please find list of Car Type Codes in https://expediaintegration.zendesk.com/hc/en-us/articles/115002516708
+ * Car type. Please find list of Car Type Codes in https://expediaintegration.zendesk.com/hc/en-us/articles/115002516708
* @param code Car type code.
* @param `value` Car type value.
-*/
+ */
data class CarType(
// Car type code.
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsAddress.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsAddress.kt
index ceafb96fd..7f128b9e8 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsAddress.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsAddress.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Address information
+ * Address information
* @param address1 Street Number, Street Name, or PO Box
* @param city The city
* @param country 3-letter code for the country
@@ -26,7 +26,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param suite Suite/apartment number
* @param province The state or province
* @param postalCode Zip/postal code
-*/
+ */
data class CarsAddress(
// Street Number, Street Name, or PO Box
@JsonProperty("Address1")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCancellationPolicy.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCancellationPolicy.kt
index 8612c6a72..1354554a0 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCancellationPolicy.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCancellationPolicy.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,13 +20,13 @@ import com.expediagroup.sdk.xap.models.PenaltyRule
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Cancellation Policy Container.
+ * Cancellation Policy Container.
* @param cancellable Indicates if this car can be cancelled (free cancel or penalty cancel)
* @param freeCancellation Indicates if this car may be cancelled without a penalty.
* @param freeCancellationEndDateTime Indicates the latest time that the car can be cancelled for free.
* @param penaltyRules Container for penalty rules
* @param nonCancellableDateTimeRange
-*/
+ */
data class CarsCancellationPolicy(
// Indicates if this car can be cancelled (free cancel or penalty cancel)
@JsonProperty("Cancellable")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCountry.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCountry.kt
index 598296bca..66df7bc41 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCountry.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsCountry.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for disambiguation country information
+ * Container for disambiguation country information
* @param name country name
* @param isoCode2 2-letter code for the country
* @param isoCode3 3-letter code for the country
* @param code 3-letter code for the country
-*/
+ */
data class CarsCountry(
// country name
@JsonProperty("Name")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDateRange.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDateRange.kt
index 6c5e42c47..732ef18ec 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDateRange.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDateRange.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Date range of the period.
+ * Date range of the period.
* @param startDate Start date at pickup location of the period.
* @param endDate End date at pickup location of the period.
-*/
+ */
data class CarsDateRange(
// Start date at pickup location of the period.
@JsonProperty("StartDate")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDistance.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDistance.kt
index 922af4f58..aab04a7f1 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDistance.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsDistance.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The extra distance information.
+ * The extra distance information.
* @param `value` The number of miles/kilometers of the distance (specified by the Unit).
* @param unit The unit (KM or MI) for the distance.
* @param direction The direction of the location from the search 'center'.Possible values are: N,S,W,E,NW,NE,SW,SE
-*/
+ */
data class CarsDistance(
// The number of miles/kilometers of the distance (specified by the Unit).
@JsonProperty("Value")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsError.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsError.kt
index 56b829f75..70ba8d319 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsError.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsError.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,13 +19,13 @@ import com.expediagroup.sdk.xap.models.CarsLocationOption
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for error list.
+ * Container for error list.
* @param code Error code describing the issue
* @param description A simple description of what the error is.
* @param detailCode Detailed error code describing the issue.
* @param locationKeyword The requested location that caused the error.
* @param locationOptions List for possible locations from which the customer must choose the best one to be re-submitted in the request.
-*/
+ */
data class CarsError(
// Error code describing the issue
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsErrors.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsErrors.kt
index 0f52c4f60..e586eabed 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsErrors.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsErrors.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@ import com.expediagroup.sdk.xap.models.CarsError
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param errors Container for error list.
* @param transactionId A unique identifier for the transaction.
-*/
+ */
data class CarsErrors(
// Container for error list.
@JsonProperty("Errors")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsGeoLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsGeoLocation.kt
index d0890edd6..3acf688ab 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsGeoLocation.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsGeoLocation.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for Geo location.
+ * Container for Geo location.
* @param latitude Latitude of the location.
* @param longitude Longitude of the location.
* @param obfuscated
-*/
+ */
data class CarsGeoLocation(
// Latitude of the location.
@JsonProperty("Latitude")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLink.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLink.kt
index 7919e90d1..7b230099d 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLink.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLink.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* A map of links to other Car APIs. possible link name: ApiBooking
+ * A map of links to other Car APIs. possible link name: ApiBooking
* @param href HATEOAS URL to fetch details.
* @param accept Accept header.
* @param method HTTP method to connect.
-*/
+ */
data class CarsLink(
// HATEOAS URL to fetch details.
@JsonProperty("Href")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocation.kt
index f8a7bc1dd..45f34ef63 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocation.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocation.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ import com.expediagroup.sdk.xap.models.CarsNeighborhood
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for list of possible locations that could be used to disambiguate the query.
+ * Container for list of possible locations that could be used to disambiguate the query.
* @param locationId Location id.
* @param type The type of location code (MULTICITY | METROCODE).
* @param id Expedia Region ID of the specified airport.
@@ -34,7 +34,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param neighborhood
* @param regionId RegionId the location resides in.
* @param country
-*/
+ */
data class CarsLocation(
// Location id.
@JsonProperty("LocationId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocationOption.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocationOption.kt
index 6a0a20e62..30729ac80 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocationOption.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsLocationOption.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.expediagroup.sdk.xap.models.CarsLocation
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List for possible locations from which the customer must choose the best one to be re-submitted in the request.
+ * List for possible locations from which the customer must choose the best one to be re-submitted in the request.
* @param requestedLocation Location used in partner request.
* @param locations Container for list of possible locations that could be used to disambiguate the query.
* @param type Type of the location.
@@ -31,7 +31,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param address The address of the location.
* @param country
* @param geoLocation
-*/
+ */
data class CarsLocationOption(
// Location used in partner request.
@JsonProperty("RequestedLocation")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsMoney.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsMoney.kt
index e7d364809..d275e00f6 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsMoney.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsMoney.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Price of Special equipment.
+ * Price of Special equipment.
* @param `value` The value of the element being defined.
* @param currency The ISO 4217 Currency Code that the value is expressed in.
* @param localCurrencyPrice
-*/
+ */
data class CarsMoney(
// The value of the element being defined.
@JsonProperty("Value")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsNeighborhood.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsNeighborhood.kt
index a88577f29..7f87a2247 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsNeighborhood.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsNeighborhood.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Geography entities which are typically contained within a city. This includes the categories neighborhood and point of interest. Low level regions are not a formally defined concept in the geography model.
+ * Geography entities which are typically contained within a city. This includes the categories neighborhood and point of interest. Low level regions are not a formally defined concept in the geography model.
* @param id Neighborhood id.
* @param name Neighborhood name.
-*/
+ */
data class CarsNeighborhood(
// Neighborhood id.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsValidFormsOfPayment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsValidFormsOfPayment.kt
index fbf75a987..4f327dd06 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsValidFormsOfPayment.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsValidFormsOfPayment.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of all the forms of payment that will be accepted for the booking of this rental transaction.
+ * List of all the forms of payment that will be accepted for the booking of this rental transaction.
* @param paymentMethod Method of payment
* @param paymentSubMethod Sub method of payment
* @param brandName The brand name of the payment sub-method to be displayed to the customer. In many cases it will be the same as the payment sub-method, but \"Visa/Carte Bleue\" and \"Visa/Delta are some of the exceptions.
-*/
+ */
data class CarsValidFormsOfPayment(
// Method of payment
@JsonProperty("PaymentMethod")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsWarning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsWarning.kt
index 2e2f01e48..4cdee76ba 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsWarning.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CarsWarning.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import com.expediagroup.sdk.xap.models.CarsMoney
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for warning codes
+ * Container for warning codes
* @param code Standardized warning code.
* @param description Standardized warning description message.
* @param originalPrice
@@ -28,7 +28,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param changedAmount
* @param changedPercentage The changed percentage. In the sample 2.97 means the changed percentage is 2.97%.
* @param links
-*/
+ */
data class CarsWarning(
// Standardized warning code.
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt
index d208f112a..9ec242240 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,13 +18,13 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for a breakdown of how many of each type of Activity have been returned in the API response.
+ * Container for a breakdown of how many of each type of Activity have been returned in the API response.
* @param count The count of the number of categories the returned set of activities map to.
* @param groupName The group which the category belongs Possible value is: Recommendations Tours Activities Transportation Promotions Duration
* @param groupDisplayName The localized value for category name.
* @param categoryName The name of one of the categories.
* @param categoryDisplayName
-*/
+ */
data class CategoryGroup(
// The count of the number of categories the returned set of activities map to.
@JsonProperty("Count")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ChainAndBrandInfo.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ChainAndBrandInfo.kt
index 496a4755b..fc50ece7f 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ChainAndBrandInfo.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ChainAndBrandInfo.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The chain and brand information of hotel. Only visible by configuration. Please contact your Expedia Account Manager if you need this node.
+ * The chain and brand information of hotel. Only visible by configuration. Please contact your Expedia Account Manager if you need this node.
* @param chainId The chain id.
* @param chainName The name of the chain.
* @param brandId The brand id.
* @param brandName The name of the brand.
-*/
+ */
data class ChainAndBrandInfo(
// The chain id.
@JsonProperty("ChainId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Country.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Country.kt
index d6aa82193..87fae4de7 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Country.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Country.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for disambiguation country information
+ * Container for disambiguation country information
* @param name country name
* @param isoCode2 2-letter code for the country
* @param isoCode3 3-letter code for the country
-*/
+ */
data class Country(
// country name
@JsonProperty("Name")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CrossSell.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CrossSell.kt
new file mode 100644
index 000000000..e75ee3bf6
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/CrossSell.kt
@@ -0,0 +1,136 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Hotel
+import com.expediagroup.sdk.xap.models.FlightsV3Occupant
+import com.expediagroup.sdk.xap.models.FlightsV3StayDates
+import com.expediagroup.sdk.xap.models.PackageOffers
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for cross sell information
+ * @param hotelCount Number of hotels available.
+ * @param stayDates
+ * @param numberOfRooms Number of rooms requested.
+ * @param numberOfNights Number of nights guest staying in the hotel.
+ * @param occupants Container for occupants list.
+ * @param hotels Container for information on each hotel offer.
+ * @param offers Container for information about the hotel used in this package offer.
+ */
+data class CrossSell(
+ // Number of hotels available.
+ @JsonProperty("HotelCount")
+ val hotelCount: kotlin.Int,
+ @JsonProperty("StayDates")
+ val stayDates: FlightsV3StayDates,
+ // Number of rooms requested.
+ @JsonProperty("NumberOfRooms")
+ val numberOfRooms: kotlin.Int =
+ 1,
+ // Number of nights guest staying in the hotel.
+ @JsonProperty("NumberOfNights")
+ val numberOfNights: kotlin.Int,
+ // Container for occupants list.
+ @JsonProperty("Occupants")
+ val occupants: kotlin.collections
+ .List<
+ FlightsV3Occupant,
+ >,
+ // Container for information on each hotel offer.
+ @JsonProperty("Hotels")
+ val hotels: kotlin.collections
+ .List<
+ FlightsV3Hotel,
+ >,
+ // Container for information about the hotel used in this package offer.
+ @JsonProperty("Offers")
+ val offers: kotlin.collections
+ .List<
+ PackageOffers,
+ >,
+) {
+ init {
+ require(hotelCount != null) { "hotelCount must not be null" }
+
+ require(stayDates != null) { "stayDates must not be null" }
+
+ require(numberOfRooms != null) { "numberOfRooms must not be null" }
+
+ require(numberOfNights != null) { "numberOfNights must not be null" }
+
+ require(occupants != null) { "occupants must not be null" }
+
+ require(hotels != null) { "hotels must not be null" }
+
+ require(offers != null) { "offers must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var hotelCount: kotlin.Int? = null,
+ private var stayDates: FlightsV3StayDates? = null,
+ private var numberOfRooms: kotlin.Int? = null,
+ private var numberOfNights: kotlin.Int? = null,
+ private var occupants: kotlin.collections.List? = null,
+ private var hotels: kotlin.collections.List? = null,
+ private var offers: kotlin.collections.List? = null,
+ ) {
+ fun hotelCount(hotelCount: kotlin.Int) = apply { this.hotelCount = hotelCount }
+
+ fun stayDates(stayDates: FlightsV3StayDates) = apply { this.stayDates = stayDates }
+
+ fun numberOfRooms(numberOfRooms: kotlin.Int) = apply { this.numberOfRooms = numberOfRooms }
+
+ fun numberOfNights(numberOfNights: kotlin.Int) = apply { this.numberOfNights = numberOfNights }
+
+ fun occupants(occupants: kotlin.collections.List) = apply { this.occupants = occupants }
+
+ fun hotels(hotels: kotlin.collections.List) = apply { this.hotels = hotels }
+
+ fun offers(offers: kotlin.collections.List) = apply { this.offers = offers }
+
+ fun build(): CrossSell {
+ val instance =
+ CrossSell(
+ hotelCount = hotelCount!!,
+ stayDates = stayDates!!,
+ numberOfRooms = numberOfRooms!!,
+ numberOfNights = numberOfNights!!,
+ occupants = occupants!!,
+ hotels = hotels!!,
+ offers = offers!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ hotelCount = hotelCount!!,
+ stayDates = stayDates!!,
+ numberOfRooms = numberOfRooms!!,
+ numberOfNights = numberOfNights!!,
+ occupants = occupants!!,
+ hotels = hotels!!,
+ offers = offers!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateRange.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateRange.kt
index 9eb4866b8..8b77e4030 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateRange.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateRange.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The actual date range for the shown availability.
+ * The actual date range for the shown availability.
* @param startDate The initial day of the date range in an ISO 8601 Date format [YYYY-MM-DD].
* @param endDate The final day of the date range in an ISO 8601 Date format [YYYY-MM-DD].
-*/
+ */
data class DateRange(
// The initial day of the date range in an ISO 8601 Date format [YYYY-MM-DD].
@JsonProperty("StartDate")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateTimePeriod.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateTimePeriod.kt
index a05b12db1..ad4796fcd 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateTimePeriod.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DateTimePeriod.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,10 +20,10 @@ import com.expediagroup.sdk.xap.models.TimeRange
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* A List of date time periods to indicate the vendor business hours for the pickup time.
+ * A List of date time periods to indicate the vendor business hours for the pickup time.
* @param dateRange
* @param timeRanges A list of time range to indicate the operation hours of the date range.
-*/
+ */
data class DateTimePeriod(
@JsonProperty("DateRange")
val dateRange: CarsDateRange,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Deductible.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Deductible.kt
index 0e616c9de..2da9212b3 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Deductible.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Deductible.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,11 +19,11 @@ import com.expediagroup.sdk.xap.models.CarsMoney
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Indicate whether it is deductible
+ * Indicate whether it is deductible
* @param excessAmount
* @param liabilityAmount
* @param deductibleAmount
-*/
+ */
data class Deductible(
@JsonProperty("ExcessAmount")
val excessAmount: CarsMoney? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositDetail.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositDetail.kt
index 9908fe4bc..035cbe69f 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositDetail.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositDetail.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,11 +19,11 @@ import com.expediagroup.sdk.xap.models.When
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for deposit policy details
+ * Container for deposit policy details
* @param type Should be one of the following values: PERCENT The deposit amount is calculated as a percentage of the total booking cost. NIGHT The deposit amount is calculated in terms of nights plus tax. AMOUNT The deposit amount in USD. REMAINDER The deposit amount is equal to the booking cost minus any deposits that have been made before this point.
* @param `value` Value to indicate how many/much of the type listed above is going to be charged as a deposit.
* @param `when`
-*/
+ */
data class DepositDetail(
// Should be one of the following values: PERCENT The deposit amount is calculated as a percentage of the total booking cost. NIGHT The deposit amount is calculated in terms of nights plus tax. AMOUNT The deposit amount in USD. REMAINDER The deposit amount is equal to the booking cost minus any deposits that have been made before this point.
@JsonProperty("Type")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositPolicy.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositPolicy.kt
index 7bcd4b10a..bb88cebe5 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositPolicy.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DepositPolicy.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@ import com.expediagroup.sdk.xap.models.DepositDetail
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for deposit policy details
+ * Container for deposit policy details
* @param description
* @param details Container for deposit policy details
-*/
+ */
data class DepositPolicy(
@JsonProperty("Description")
val description: kotlin.collections.List? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Description.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Description.kt
index c9741d227..d8dca2596 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Description.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Description.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for the descriptions of the property.
+ * Container for the descriptions of the property.
* @param locationTeaser A description of the property's location.
* @param hotelTeaser A description of the features and amenities of the property itself.
* @param roomTeaser The common description for all of the rooms in the property.
-*/
+ */
data class Description(
// A description of the property's location.
@JsonProperty("LocationTeaser")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DisambiguationResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DisambiguationResponse.kt
index 34d0e2c68..88f983be2 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DisambiguationResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/DisambiguationResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@ import com.expediagroup.sdk.xap.models.CarsError
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param errors Container for error list.
* @param transactionId A unique identifier for the transaction.
-*/
+ */
data class DisambiguationResponse(
// Container for error list.
@JsonProperty("Errors")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Discount.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Discount.kt
index 3755cfa75..f17fbfd65 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Discount.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Discount.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of discount information.
+ * List of discount information.
* @param type Discount type. Supported values : CorpDiscount | Coupon.
* @param code Discount code.
-*/
+ */
data class Discount(
// Discount type. Supported values : CorpDiscount | Coupon.
@JsonProperty("Type")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Distance.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Distance.kt
index d60450471..3ca716981 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Distance.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Distance.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for distance information. Only returned for city/address search or `geoLocation` search or single `regionId` search.
+ * Container for distance information. Only returned for city/address search or `geoLocation` search or single `regionId` search.
* @param `value` The distance between the center of the search and the hotel.
* @param unit The unit of distance.
* @param direction The direction to the hotel from the center point of the search.
-*/
+ */
data class Distance(
// The distance between the center of the search and the hotel.
@JsonProperty("Value")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Duration.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Duration.kt
index a4d0aca8f..978ed8269 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Duration.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Duration.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The maximum amount of time for a rental that still qualifies for this rate.This may or may not be the same as the current rental duration.
+ * The maximum amount of time for a rental that still qualifies for this rate.This may or may not be the same as the current rental duration.
* @param unit The unit for minimum amount of time for a rental.
* @param count The minimum number of units that qualify for minimum amount of time for a rental.
-*/
+ */
data class Duration(
// The unit for minimum amount of time for a rental.
@JsonProperty("Unit")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Entertainment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Entertainment.kt
new file mode 100644
index 000000000..7026f59c5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Entertainment.kt
@@ -0,0 +1,99 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for entertainment amenities available in this flight leg
+ * @param available Indication of whether this amenity is available.
+ * @param types Type of entertainment
+ */
+data class Entertainment(
+ // Indication of whether this amenity is available.
+ @JsonProperty("Available")
+ val available: Entertainment.Available? = null,
+ // Type of entertainment
+ @JsonProperty("Types")
+ val types: kotlin.collections.List? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var available: Entertainment.Available? = null,
+ private var types: kotlin.collections.List? = null,
+ ) {
+ fun available(available: Entertainment.Available?) = apply { this.available = available }
+
+ fun types(types: kotlin.collections.List?) = apply { this.types = types }
+
+ fun build(): Entertainment {
+ val instance =
+ Entertainment(
+ available = available,
+ types = types,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ available = available,
+ types = types,
+ )
+
+ /**
+ * Indication of whether this amenity is available.
+ * Values: YES,NO,UNKNOWN
+ */
+ enum class Available(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("YES")
+ YES("YES"),
+
+ @JsonProperty("NO")
+ NO("NO"),
+
+ @JsonProperty("UNKNOWN")
+ UNKNOWN("UNKNOWN"),
+ }
+
+ /**
+ * Type of entertainment
+ * Values: LIVE_TV,ON_DEMAND,STREAMING
+ */
+ enum class Types(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("LIVE_TV")
+ LIVE_TV("LIVE_TV"),
+
+ @JsonProperty("ON_DEMAND")
+ ON_DEMAND("ON_DEMAND"),
+
+ @JsonProperty("STREAMING")
+ STREAMING("STREAMING"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Equipment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Equipment.kt
index ce7a573b6..e8645e06b 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Equipment.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Equipment.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,12 +19,12 @@ import com.expediagroup.sdk.xap.models.CarsMoney
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Description and costs of any optional special equipment that may be rented with the car.
+ * Description and costs of any optional special equipment that may be rented with the car.
* @param code Special equipment code
* @param name Special equipment name
* @param ratePeriod Unit indicating the price of special equipment. Support value:Trip,Daily
* @param price
-*/
+ */
data class Equipment(
// Special equipment code
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Error.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Error.kt
index 7f0a68a32..8477b4fe8 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Error.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Error.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,13 +19,13 @@ import com.expediagroup.sdk.xap.models.LocationOption
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for error list.
+ * Container for error list.
* @param code Error code describing the issue
* @param detailCode Detailed error code describing the issue.
* @param description A simple description of what the error is.
* @param locationKeyword The requested location that caused the error.
* @param locationOptions Container for possible matches to your ambiguous `locationKeyword` query.
-*/
+ */
data class Error(
// Error code describing the issue
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ErrorResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ErrorResponse.kt
new file mode 100644
index 000000000..86eac373a
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ErrorResponse.kt
@@ -0,0 +1,70 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.ErrorResponseErrorsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param transactionId
+ * @param errors
+ */
+data class ErrorResponse(
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ @JsonProperty("Errors")
+ val errors: kotlin.collections
+ .List<
+ ErrorResponseErrorsInner,
+ >,
+) {
+ init {
+ require(transactionId != null) { "transactionId must not be null" }
+
+ require(errors != null) { "errors must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var transactionId: kotlin.String? = null,
+ private var errors: kotlin.collections.List? = null,
+ ) {
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun errors(errors: kotlin.collections.List) = apply { this.errors = errors }
+
+ fun build(): ErrorResponse {
+ val instance =
+ ErrorResponse(
+ transactionId = transactionId!!,
+ errors = errors!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ transactionId = transactionId!!,
+ errors = errors!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ErrorResponseErrorsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ErrorResponseErrorsInner.kt
new file mode 100644
index 000000000..2a07b2524
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ErrorResponseErrorsInner.kt
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param code
+ * @param description
+ */
+data class ErrorResponseErrorsInner(
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): ErrorResponseErrorsInner {
+ val instance =
+ ErrorResponseErrorsInner(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Errors.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Errors.kt
index 49b2fcb5d..a9351710c 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Errors.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Errors.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,10 @@ import com.expediagroup.sdk.xap.models.Error
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param errors Container for error list.
* @param transactionId A unique identifier for the transaction.
-*/
+ */
data class Errors(
// Container for error list.
@JsonProperty("Errors")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraCostPerDistance.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraCostPerDistance.kt
index d398e97a8..e5c9ef39b 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraCostPerDistance.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraCostPerDistance.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,10 +20,10 @@ import com.expediagroup.sdk.xap.models.CarsMoney
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Extra cost for each increment of distance used.
+ * Extra cost for each increment of distance used.
* @param distance
* @param cost
-*/
+ */
data class ExtraCostPerDistance(
@JsonProperty("Distance")
val distance: CarsDistance,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraFees.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraFees.kt
index 5b0c0cb1a..8e3ee2eb3 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraFees.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/ExtraFees.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,11 +19,11 @@ import com.expediagroup.sdk.xap.models.CarsMoney
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of ExtraFeesDetails
+ * List of ExtraFeesDetails
* @param unit Rate period beyond the base rate. Supported values: ExtraHourly, ExtraDaily
* @param unitCount Numbers of period
* @param amount
-*/
+ */
data class ExtraFees(
// Rate period beyond the base rate. Supported values: ExtraHourly, ExtraDaily
@JsonProperty("Unit")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponse.kt
new file mode 100644
index 000000000..c68efc480
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponse.kt
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FareCalendarResponseOffersInner
+import com.expediagroup.sdk.xap.models.FlightsV3Warning
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param offers Container for list of air offers. An offer gives total trip details including flight and pricing information.
+ * @param transactionId Unique identifier for the transaction.
+ * @param warnings Container for Warning Codes.
+ */
+data class FareCalendarResponse(
+ // Container for list of air offers. An offer gives total trip details including flight and pricing information.
+ @JsonProperty("Offers")
+ val offers: kotlin.collections
+ .List<
+ FareCalendarResponseOffersInner,
+ >,
+ // Unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ // Container for Warning Codes.
+ @JsonProperty("Warnings")
+ val warnings: kotlin.collections.List? = null,
+) {
+ init {
+ require(offers != null) { "offers must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var offers: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ ) {
+ fun offers(offers: kotlin.collections.List) = apply { this.offers = offers }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun build(): FareCalendarResponse {
+ val instance =
+ FareCalendarResponse(
+ offers = offers!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ offers = offers!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInner.kt
new file mode 100644
index 000000000..3a695640d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInner.kt
@@ -0,0 +1,78 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FareCalendarResponseOffersInnerOfferPrice
+import com.expediagroup.sdk.xap.models.FareCalendarResponseOffersInnerSegmentsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for list of air offers. An offer gives total trip details including flight and pricing information.
+ * @param departureDate Flight departure date in ISO 8601 format.
+ * @param offerPrice
+ * @param segments Container of information about each flight offer Segments (the trip from one stopping place to another) are made up of Legs This will be given back in response if includeSegmentDetails=true
+ */
+data class FareCalendarResponseOffersInner(
+ // Flight departure date in ISO 8601 format.
+ @JsonProperty("DepartureDate")
+ val departureDate: java.time.OffsetDateTime,
+ @JsonProperty("OfferPrice")
+ val offerPrice: FareCalendarResponseOffersInnerOfferPrice,
+ // Container of information about each flight offer Segments (the trip from one stopping place to another) are made up of Legs This will be given back in response if includeSegmentDetails=true
+ @JsonProperty("Segments")
+ val segments: kotlin.collections.List? = null,
+) {
+ init {
+ require(departureDate != null) { "departureDate must not be null" }
+
+ require(offerPrice != null) { "offerPrice must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureDate: java.time.OffsetDateTime? = null,
+ private var offerPrice: FareCalendarResponseOffersInnerOfferPrice? = null,
+ private var segments: kotlin.collections.List? = null,
+ ) {
+ fun departureDate(departureDate: java.time.OffsetDateTime) = apply { this.departureDate = departureDate }
+
+ fun offerPrice(offerPrice: FareCalendarResponseOffersInnerOfferPrice) = apply { this.offerPrice = offerPrice }
+
+ fun segments(segments: kotlin.collections.List?) = apply { this.segments = segments }
+
+ fun build(): FareCalendarResponseOffersInner {
+ val instance =
+ FareCalendarResponseOffersInner(
+ departureDate = departureDate!!,
+ offerPrice = offerPrice!!,
+ segments = segments,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ departureDate = departureDate!!,
+ offerPrice = offerPrice!!,
+ segments = segments,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerOfferPrice.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerOfferPrice.kt
new file mode 100644
index 000000000..7e09dabfe
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerOfferPrice.kt
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Money
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for offer price information.
+ * @param totalPrice
+ */
+data class FareCalendarResponseOffersInnerOfferPrice(
+ @JsonProperty("TotalPrice")
+ val totalPrice: FlightsV3Money,
+) {
+ init {
+ require(totalPrice != null) { "totalPrice must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var totalPrice: FlightsV3Money? = null,
+ ) {
+ fun totalPrice(totalPrice: FlightsV3Money) = apply { this.totalPrice = totalPrice }
+
+ fun build(): FareCalendarResponseOffersInnerOfferPrice {
+ val instance =
+ FareCalendarResponseOffersInnerOfferPrice(
+ totalPrice = totalPrice!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ totalPrice = totalPrice!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInner.kt
new file mode 100644
index 000000000..1a46c086e
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInner.kt
@@ -0,0 +1,61 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FareCalendarResponseOffersInnerSegmentsInnerLegsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container of information about each flight offer Segments (the trip from one stopping place to another) are made up of Legs This will be given back in response if includeSegmentDetails=true
+ * @param legs Container information on each flight leg.
+ */
+data class FareCalendarResponseOffersInnerSegmentsInner(
+ // Container information on each flight leg.
+ @JsonProperty("Legs")
+ val legs: kotlin.collections
+ .List<
+ FareCalendarResponseOffersInnerSegmentsInnerLegsInner,
+ >,
+) {
+ init {
+ require(legs != null) { "legs must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var legs: kotlin.collections.List? = null,
+ ) {
+ fun legs(legs: kotlin.collections.List) = apply { this.legs = legs }
+
+ fun build(): FareCalendarResponseOffersInnerSegmentsInner {
+ val instance =
+ FareCalendarResponseOffersInnerSegmentsInner(
+ legs = legs!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ legs = legs!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInner.kt
new file mode 100644
index 000000000..61de13f3f
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInner.kt
@@ -0,0 +1,149 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container information on each flight leg.
+ * @param departureAirport
+ * @param arrivalAirport
+ * @param departureDateTime Flight departure date and time in ISO 8601 format
+ * @param arrivalDateTime Flight landing date and time in ISO 8601 format
+ * @param flightNumber Flight Number assigned by Carrier.
+ * @param cabinClass Class of service for the air leg.
+ * @param marketingAirlineCode The two-letter code of the Airline that is marketing the flight.
+ * @param operatingAirlineCode The two-letter code of the Airline actually operating the plane.
+ */
+data class FareCalendarResponseOffersInnerSegmentsInnerLegsInner(
+ @JsonProperty("DepartureAirport")
+ val departureAirport: FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport,
+ @JsonProperty("ArrivalAirport")
+ val arrivalAirport: FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport,
+ // Flight departure date and time in ISO 8601 format
+ @JsonProperty("DepartureDateTime")
+ val departureDateTime: java.time.OffsetDateTime,
+ // Flight landing date and time in ISO 8601 format
+ @JsonProperty("ArrivalDateTime")
+ val arrivalDateTime: java.time.OffsetDateTime,
+ // Flight Number assigned by Carrier.
+ @JsonProperty("FlightNumber")
+ val flightNumber: kotlin.String,
+ // Class of service for the air leg.
+ @JsonProperty("CabinClass")
+ val cabinClass: FareCalendarResponseOffersInnerSegmentsInnerLegsInner.CabinClass,
+ // The two-letter code of the Airline that is marketing the flight.
+ @JsonProperty("MarketingAirlineCode")
+ val marketingAirlineCode: kotlin.String? = null,
+ // The two-letter code of the Airline actually operating the plane.
+ @JsonProperty("OperatingAirlineCode")
+ val operatingAirlineCode: kotlin.String? = null,
+) {
+ init {
+ require(departureAirport != null) { "departureAirport must not be null" }
+
+ require(arrivalAirport != null) { "arrivalAirport must not be null" }
+
+ require(departureDateTime != null) { "departureDateTime must not be null" }
+
+ require(arrivalDateTime != null) { "arrivalDateTime must not be null" }
+
+ require(flightNumber != null) { "flightNumber must not be null" }
+
+ require(cabinClass != null) { "cabinClass must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureAirport: FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport? = null,
+ private var arrivalAirport: FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport? = null,
+ private var departureDateTime: java.time.OffsetDateTime? = null,
+ private var arrivalDateTime: java.time.OffsetDateTime? = null,
+ private var flightNumber: kotlin.String? = null,
+ private var cabinClass: FareCalendarResponseOffersInnerSegmentsInnerLegsInner.CabinClass? = null,
+ private var marketingAirlineCode: kotlin.String? = null,
+ private var operatingAirlineCode: kotlin.String? = null,
+ ) {
+ fun departureAirport(departureAirport: FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport) = apply { this.departureAirport = departureAirport }
+
+ fun arrivalAirport(arrivalAirport: FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport) = apply { this.arrivalAirport = arrivalAirport }
+
+ fun departureDateTime(departureDateTime: java.time.OffsetDateTime) = apply { this.departureDateTime = departureDateTime }
+
+ fun arrivalDateTime(arrivalDateTime: java.time.OffsetDateTime) = apply { this.arrivalDateTime = arrivalDateTime }
+
+ fun flightNumber(flightNumber: kotlin.String) = apply { this.flightNumber = flightNumber }
+
+ fun cabinClass(cabinClass: FareCalendarResponseOffersInnerSegmentsInnerLegsInner.CabinClass) = apply { this.cabinClass = cabinClass }
+
+ fun marketingAirlineCode(marketingAirlineCode: kotlin.String?) = apply { this.marketingAirlineCode = marketingAirlineCode }
+
+ fun operatingAirlineCode(operatingAirlineCode: kotlin.String?) = apply { this.operatingAirlineCode = operatingAirlineCode }
+
+ fun build(): FareCalendarResponseOffersInnerSegmentsInnerLegsInner {
+ val instance =
+ FareCalendarResponseOffersInnerSegmentsInnerLegsInner(
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ departureDateTime = departureDateTime!!,
+ arrivalDateTime = arrivalDateTime!!,
+ flightNumber = flightNumber!!,
+ cabinClass = cabinClass!!,
+ marketingAirlineCode = marketingAirlineCode,
+ operatingAirlineCode = operatingAirlineCode,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ departureDateTime = departureDateTime!!,
+ arrivalDateTime = arrivalDateTime!!,
+ flightNumber = flightNumber!!,
+ cabinClass = cabinClass!!,
+ marketingAirlineCode = marketingAirlineCode,
+ operatingAirlineCode = operatingAirlineCode,
+ )
+
+ /**
+ * Class of service for the air leg.
+ * Values: ECONOMY,FIRST,BUSINESS,PREMIUM_ECONOMY
+ */
+ enum class CabinClass(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("ECONOMY")
+ ECONOMY("ECONOMY"),
+
+ @JsonProperty("FIRST")
+ FIRST("FIRST"),
+
+ @JsonProperty("BUSINESS")
+ BUSINESS("BUSINESS"),
+
+ @JsonProperty("PREMIUM_ECONOMY")
+ PREMIUM_ECONOMY("PREMIUM_ECONOMY"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport.kt
new file mode 100644
index 000000000..4d768a706
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport.kt
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for information on the arrival airport.
+ * @param code Three-letter IATA airport code for departure location
+ */
+data class FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport(
+ // Three-letter IATA airport code for departure location
+ @JsonProperty("Code")
+ val code: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun build(): FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport {
+ val instance =
+ FareCalendarResponseOffersInnerSegmentsInnerLegsInnerDepartureAirport(
+ code = code!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareOptions.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareOptions.kt
new file mode 100644
index 000000000..4be75b517
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareOptions.kt
@@ -0,0 +1,117 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Amenity
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Contains list of fare options
+ * @param fareName Contains the name of the Fare tagged against the specific fare options.
+ * @param segmentIds Contains list of segment Ids to which these FareOptions are provided.
+ * @param included Contains list of options that are already included.
+ * @param feeApplied Contains list of options that are fee applied.
+ * @param notAvailable Contains list of options that are unavailable.
+ * @param amenities
+ */
+data class FareOptions(
+ // Contains the name of the Fare tagged against the specific fare options.
+ @JsonProperty("FareName")
+ val fareName: kotlin.String,
+ // Contains list of segment Ids to which these FareOptions are provided.
+ @JsonProperty("SegmentIds")
+ val segmentIds: kotlin.collections
+ .List<
+ kotlin.String,
+ >,
+ // Contains list of options that are already included.
+ @JsonProperty("Included")
+ val included: kotlin.collections
+ .List<
+ kotlin.String,
+ >,
+ // Contains list of options that are fee applied.
+ @JsonProperty("FeeApplied")
+ val feeApplied: kotlin.collections
+ .List<
+ kotlin.String,
+ >,
+ // Contains list of options that are unavailable.
+ @JsonProperty("NotAvailable")
+ val notAvailable: kotlin.collections.List? = null,
+ @JsonProperty("Amenities")
+ val amenities: Amenity? = null,
+) {
+ init {
+ require(fareName != null) { "fareName must not be null" }
+
+ require(segmentIds != null) { "segmentIds must not be null" }
+
+ require(included != null) { "included must not be null" }
+
+ require(feeApplied != null) { "feeApplied must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var fareName: kotlin.String? = null,
+ private var segmentIds: kotlin.collections.List? = null,
+ private var included: kotlin.collections.List? = null,
+ private var feeApplied: kotlin.collections.List? = null,
+ private var notAvailable: kotlin.collections.List? = null,
+ private var amenities: Amenity? = null,
+ ) {
+ fun fareName(fareName: kotlin.String) = apply { this.fareName = fareName }
+
+ fun segmentIds(segmentIds: kotlin.collections.List) = apply { this.segmentIds = segmentIds }
+
+ fun included(included: kotlin.collections.List) = apply { this.included = included }
+
+ fun feeApplied(feeApplied: kotlin.collections.List) = apply { this.feeApplied = feeApplied }
+
+ fun notAvailable(notAvailable: kotlin.collections.List?) = apply { this.notAvailable = notAvailable }
+
+ fun amenities(amenities: Amenity?) = apply { this.amenities = amenities }
+
+ fun build(): FareOptions {
+ val instance =
+ FareOptions(
+ fareName = fareName!!,
+ segmentIds = segmentIds!!,
+ included = included!!,
+ feeApplied = feeApplied!!,
+ notAvailable = notAvailable,
+ amenities = amenities,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ fareName = fareName!!,
+ segmentIds = segmentIds!!,
+ included = included!!,
+ feeApplied = feeApplied!!,
+ notAvailable = notAvailable,
+ amenities = amenities,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareRule.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareRule.kt
new file mode 100644
index 000000000..9e9fc7ba8
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FareRule.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Rule
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Contains the list of fare rule details
+ * @param fareBasisCode Fare Basis Code to which the rules are applied.
+ * @param rules Container for fare rules.
+ */
+data class FareRule(
+ // Fare Basis Code to which the rules are applied.
+ @JsonProperty("FareBasisCode")
+ val fareBasisCode: kotlin.String,
+ // Container for fare rules.
+ @JsonProperty("Rules")
+ val rules: kotlin.collections
+ .List<
+ Rule,
+ >,
+) {
+ init {
+ require(fareBasisCode != null) { "fareBasisCode must not be null" }
+
+ require(rules != null) { "rules must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var fareBasisCode: kotlin.String? = null,
+ private var rules: kotlin.collections.List? = null,
+ ) {
+ fun fareBasisCode(fareBasisCode: kotlin.String) = apply { this.fareBasisCode = fareBasisCode }
+
+ fun rules(rules: kotlin.collections.List) = apply { this.rules = rules }
+
+ fun build(): FareRule {
+ val instance =
+ FareRule(
+ fareBasisCode = fareBasisCode!!,
+ rules = rules!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ fareBasisCode = fareBasisCode!!,
+ rules = rules!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fault.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fault.kt
index 95ad9958f..0855061e1 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fault.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fault.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* API returned information.
+ * API returned information.
* @param code Fault code.
* @param description Fault description.
-*/
+ */
data class Fault(
// Fault code.
@JsonProperty("code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fee.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fee.kt
new file mode 100644
index 000000000..f58adc9d4
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Fee.kt
@@ -0,0 +1,85 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Money
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * This is used when a fee range is returned. It specifies the highest value of bag fee.
+ * @param `value` The value of the element being defined.
+ * @param currency The ISO 4217 Currency Code that the value is expressed in.
+ * @param localCurrencyPrice
+ * @param name
+ */
+data class Fee(
+ // The value of the element being defined.
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ // The ISO 4217 Currency Code that the value is expressed in.
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+ @JsonProperty("LocalCurrencyPrice")
+ val localCurrencyPrice: FlightsV3Money? = null,
+ @JsonProperty("Name")
+ val name: kotlin.String? = null,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ private var localCurrencyPrice: FlightsV3Money? = null,
+ private var name: kotlin.String? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun localCurrencyPrice(localCurrencyPrice: FlightsV3Money?) = apply { this.localCurrencyPrice = localCurrencyPrice }
+
+ fun name(name: kotlin.String?) = apply { this.name = name }
+
+ fun build(): Fee {
+ val instance =
+ Fee(
+ `value` = `value`!!,
+ currency = currency!!,
+ localCurrencyPrice = localCurrencyPrice,
+ name = name,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ localCurrencyPrice = localCurrencyPrice,
+ name = name,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileInfo.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileInfo.kt
index 1acfaf25f..6d82933c2 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileInfo.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileInfo.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@ import com.expediagroup.sdk.xap.models.SdpLink
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param partner The partner associated with the file. List of partners: `Bing`, `Criteo`, `Facebook`, `Google`, `Retarget`, `Snapchat`.
* @param brand The brand associated with the file content. List of brand: `Expedia`, `Hotels`, `Hotwire`, `Vrbo`, `HomeAway`, `Abritel`, `Bookabach`, `Stayz`, `Ebbokers`, `Travalocity`, `Orbitz`, `Wotif`.
* @param fileContentType The type associated with the file content. List of types: `Amenities`, `Descriptions`, `Images`, `Listings`, `Locations`, `Policies`, `Regions`, `Reviews`, `Summary`, `VacationRental`
@@ -33,7 +33,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param downloadUrlExpires The time about the download Url expires. The format is uuuu-MM-dd'T'HH:mm:ss.SSSX
* @param filterConditions
* @param bestMatchedLink
-*/
+ */
data class FileInfo(
// The partner associated with the file. List of partners: `Bing`, `Criteo`, `Facebook`, `Google`, `Retarget`, `Snapchat`.
@JsonProperty("partner")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileSize.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileSize.kt
index f26268d99..a15bfe766 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileSize.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FileSize.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* The information about the file size.
+ * The information about the file size.
* @param unit The unit about the file size.
* @param `value` The value about the file size.
-*/
+ */
data class FileSize(
// The unit about the file size.
@JsonProperty("unit")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FilterConditions.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FilterConditions.kt
index d5171fc34..0362b17d8 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FilterConditions.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FilterConditions.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container filter condition for the filtered file. [Filters](https://confluence.expedia.biz/display/EWS/Filtered+Feed+File+Generation+Schedule+and+Access#FilteredFeedFileGenerationScheduleandAccess-Filters)
+ * Container filter condition for the filtered file. [Filters](https://confluence.expedia.biz/display/EWS/Filtered+Feed+File+Generation+Schedule+and+Access#FilteredFeedFileGenerationScheduleandAccess-Filters)
* @param pointOfSupply List of filter condition for PointOfSupplies: `US`, `AT`,`BR`,`CA`,`FR`,`DE`,`GR`,`IT`, `JP`,`KR`,`MX`,`PT`,`ES`,`TR`, `AE`,`GB`.
* @param brand List of filter condition for Brands: `VRBO`.
* @param structureType List of filter condition for StructureTypes: `VR`, `CONVENTIONAL`.
-*/
+ */
data class FilterConditions(
// List of filter condition for PointOfSupplies: `US`, `AT`,`BR`,`CA`,`FR`,`DE`,`GR`,`IT`, `JP`,`KR`,`MX`,`PT`,`ES`,`TR`, `AE`,`GB`.
@JsonProperty("pointOfSupply")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponse.kt
new file mode 100644
index 000000000..62f62c74f
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponse.kt
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInner
+import com.expediagroup.sdk.xap.models.FlexSearchResponseWarningsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param offers Container for list of air offers. An offer gives trip details including flight and pricing information.
+ * @param transactionId Unique identifier for the transaction.
+ * @param warnings Container for Warning Codes.
+ */
+data class FlexSearchResponse(
+ // Container for list of air offers. An offer gives trip details including flight and pricing information.
+ @JsonProperty("Offers")
+ val offers: kotlin.collections
+ .List<
+ FlexSearchResponseOffersInner,
+ >,
+ // Unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ // Container for Warning Codes.
+ @JsonProperty("Warnings")
+ val warnings: kotlin.collections.List? = null,
+) {
+ init {
+ require(offers != null) { "offers must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var offers: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ ) {
+ fun offers(offers: kotlin.collections.List) = apply { this.offers = offers }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun build(): FlexSearchResponse {
+ val instance =
+ FlexSearchResponse(
+ offers = offers!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ offers = offers!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInner.kt
new file mode 100644
index 000000000..9613f8a32
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOffer
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param offer
+ */
+data class FlexSearchResponseOffersInner(
+ @JsonProperty("Offer")
+ val offer: FlexSearchResponseOffersInnerOffer? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var offer: FlexSearchResponseOffersInnerOffer? = null,
+ ) {
+ fun offer(offer: FlexSearchResponseOffersInnerOffer?) = apply { this.offer = offer }
+
+ fun build(): FlexSearchResponseOffersInner {
+ val instance =
+ FlexSearchResponseOffersInner(
+ offer = offer,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ offer = offer,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOffer.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOffer.kt
new file mode 100644
index 000000000..127cc25b7
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOffer.kt
@@ -0,0 +1,81 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferOfferPrice
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferSegmentsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for list of air offers. An offer gives trip details including flight and pricing information.
+ * @param departureDates Container for the list of departure dates for the first Leg in each segment in chronological order.
+ * @param offerPrice
+ * @param segments Container of information about each flight offer Segments (the trip from one stopping place to another) are made up of Legs. This will be given back in response if includeSegmentDetails=true
+ */
+data class FlexSearchResponseOffersInnerOffer(
+ // Container for the list of departure dates for the first Leg in each segment in chronological order.
+ @JsonProperty("DepartureDates")
+ val departureDates: kotlin.collections
+ .List<
+ java.time.OffsetDateTime,
+ >,
+ @JsonProperty("OfferPrice")
+ val offerPrice: FlexSearchResponseOffersInnerOfferOfferPrice,
+ // Container of information about each flight offer Segments (the trip from one stopping place to another) are made up of Legs. This will be given back in response if includeSegmentDetails=true
+ @JsonProperty("Segments")
+ val segments: kotlin.collections.List? = null,
+) {
+ init {
+ require(departureDates != null) { "departureDates must not be null" }
+
+ require(offerPrice != null) { "offerPrice must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureDates: kotlin.collections.List? = null,
+ private var offerPrice: FlexSearchResponseOffersInnerOfferOfferPrice? = null,
+ private var segments: kotlin.collections.List? = null,
+ ) {
+ fun departureDates(departureDates: kotlin.collections.List) = apply { this.departureDates = departureDates }
+
+ fun offerPrice(offerPrice: FlexSearchResponseOffersInnerOfferOfferPrice) = apply { this.offerPrice = offerPrice }
+
+ fun segments(segments: kotlin.collections.List?) = apply { this.segments = segments }
+
+ fun build(): FlexSearchResponseOffersInnerOffer {
+ val instance =
+ FlexSearchResponseOffersInnerOffer(
+ departureDates = departureDates!!,
+ offerPrice = offerPrice!!,
+ segments = segments,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ departureDates = departureDates!!,
+ offerPrice = offerPrice!!,
+ segments = segments,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPrice.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPrice.kt
new file mode 100644
index 000000000..0a9ce6d81
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPrice.kt
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for price information corresponding to a particular segment (Nullable in case of Opaque Flights)
+ * @param totalPrice
+ */
+data class FlexSearchResponseOffersInnerOfferOfferPrice(
+ @JsonProperty("TotalPrice")
+ val totalPrice: FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice,
+) {
+ init {
+ require(totalPrice != null) { "totalPrice must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var totalPrice: FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice? = null,
+ ) {
+ fun totalPrice(totalPrice: FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice) = apply { this.totalPrice = totalPrice }
+
+ fun build(): FlexSearchResponseOffersInnerOfferOfferPrice {
+ val instance =
+ FlexSearchResponseOffersInnerOfferOfferPrice(
+ totalPrice = totalPrice!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ totalPrice = totalPrice!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice.kt
new file mode 100644
index 000000000..9fcf94b19
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param money
+ */
+data class FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice(
+ @JsonProperty("Money")
+ val money: FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var money: FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney? = null,
+ ) {
+ fun money(money: FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney?) = apply { this.money = money }
+
+ fun build(): FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice {
+ val instance =
+ FlexSearchResponseOffersInnerOfferOfferPriceTotalPrice(
+ money = money,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ money = money,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney.kt
new file mode 100644
index 000000000..7f62d27b1
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Taxes per passenger category
+ * @param `value` The value of the element being defined.
+ * @param currency The ISO 4217 Currency Code that the value is expressed in.
+ */
+data class FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney(
+ // The value of the element being defined.
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ // The ISO 4217 Currency Code that the value is expressed in.
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun build(): FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney {
+ val instance =
+ FlexSearchResponseOffersInnerOfferOfferPriceTotalPriceMoney(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInner.kt
new file mode 100644
index 000000000..b54747769
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferSegmentsInnerSegment
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param segment
+ */
+data class FlexSearchResponseOffersInnerOfferSegmentsInner(
+ @JsonProperty("Segment")
+ val segment: FlexSearchResponseOffersInnerOfferSegmentsInnerSegment? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var segment: FlexSearchResponseOffersInnerOfferSegmentsInnerSegment? = null,
+ ) {
+ fun segment(segment: FlexSearchResponseOffersInnerOfferSegmentsInnerSegment?) = apply { this.segment = segment }
+
+ fun build(): FlexSearchResponseOffersInnerOfferSegmentsInner {
+ val instance =
+ FlexSearchResponseOffersInnerOfferSegmentsInner(
+ segment = segment,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ segment = segment,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegment.kt
new file mode 100644
index 000000000..4b6fa653e
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegment.kt
@@ -0,0 +1,81 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container of information about each flight offer Segments (the trip from one stopping place to another) are made up of Legs. This will be given back in response if includeSegmentDetails=true
+ * @param departureArrivalDayDifference This is an indicator (can have values of -1, 0, 1, 2, etc.) which depends on the relative difference between the arrival and departure dates.
+ * @param legs Container information on each flight leg.
+ * @param airportChange True if there the Segment is having a different Departure airport compared to the Arrival airport of previous Segment.
+ */
+data class FlexSearchResponseOffersInnerOfferSegmentsInnerSegment(
+ // This is an indicator (can have values of -1, 0, 1, 2, etc.) which depends on the relative difference between the arrival and departure dates.
+ @JsonProperty("DepartureArrivalDayDifference")
+ val departureArrivalDayDifference: kotlin.Int,
+ // Container information on each flight leg.
+ @JsonProperty("Legs")
+ val legs: kotlin.collections
+ .List<
+ FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner,
+ >,
+ // True if there the Segment is having a different Departure airport compared to the Arrival airport of previous Segment.
+ @JsonProperty("AirportChange")
+ val airportChange: kotlin.Boolean? = null,
+) {
+ init {
+ require(departureArrivalDayDifference != null) { "departureArrivalDayDifference must not be null" }
+
+ require(legs != null) { "legs must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureArrivalDayDifference: kotlin.Int? = null,
+ private var legs: kotlin.collections.List? = null,
+ private var airportChange: kotlin.Boolean? = null,
+ ) {
+ fun departureArrivalDayDifference(departureArrivalDayDifference: kotlin.Int) = apply { this.departureArrivalDayDifference = departureArrivalDayDifference }
+
+ fun legs(legs: kotlin.collections.List) = apply { this.legs = legs }
+
+ fun airportChange(airportChange: kotlin.Boolean?) = apply { this.airportChange = airportChange }
+
+ fun build(): FlexSearchResponseOffersInnerOfferSegmentsInnerSegment {
+ val instance =
+ FlexSearchResponseOffersInnerOfferSegmentsInnerSegment(
+ departureArrivalDayDifference = departureArrivalDayDifference!!,
+ legs = legs!!,
+ airportChange = airportChange,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ departureArrivalDayDifference = departureArrivalDayDifference!!,
+ legs = legs!!,
+ airportChange = airportChange,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner.kt
new file mode 100644
index 000000000..5ddea3607
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param leg
+ */
+data class FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner(
+ @JsonProperty("Leg")
+ val leg: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var leg: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg? = null,
+ ) {
+ fun leg(leg: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg?) = apply { this.leg = leg }
+
+ fun build(): FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner {
+ val instance =
+ FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInner(
+ leg = leg,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ leg = leg,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.kt
new file mode 100644
index 000000000..b0b3ef768
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.kt
@@ -0,0 +1,162 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container information on each flight leg.
+ * @param departureAirport
+ * @param arrivalAirport
+ * @param departureDateTime Flight departure date and time in ISO 8601 format
+ * @param arrivalDateTime Flight landing date and time in ISO 8601 format
+ * @param flightNumber Flight Number assigned by Carrier.
+ * @param marketingAirlineCode The two-letter code of the Airline that is marketing the flight.
+ * @param flightDuration The total travel duration for this leg, expressed in ISO 8601 standard.
+ * @param cabinClass Class of service for the air leg.
+ * @param operatingAirlineCode The two-letter code of the Airline actually operating the plane.
+ */
+data class FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg(
+ @JsonProperty("DepartureAirport")
+ val departureAirport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport,
+ @JsonProperty("ArrivalAirport")
+ val arrivalAirport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport,
+ // Flight departure date and time in ISO 8601 format
+ @JsonProperty("DepartureDateTime")
+ val departureDateTime: java.time.OffsetDateTime,
+ // Flight landing date and time in ISO 8601 format
+ @JsonProperty("ArrivalDateTime")
+ val arrivalDateTime: java.time.OffsetDateTime,
+ // Flight Number assigned by Carrier.
+ @JsonProperty("FlightNumber")
+ val flightNumber: kotlin.String,
+ // The two-letter code of the Airline that is marketing the flight.
+ @JsonProperty("MarketingAirlineCode")
+ val marketingAirlineCode: kotlin.String,
+ // The total travel duration for this leg, expressed in ISO 8601 standard.
+ @JsonProperty("FlightDuration")
+ val flightDuration: kotlin.String,
+ // Class of service for the air leg.
+ @JsonProperty("CabinClass")
+ val cabinClass: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.CabinClass,
+ // The two-letter code of the Airline actually operating the plane.
+ @JsonProperty("OperatingAirlineCode")
+ val operatingAirlineCode: kotlin.String? = null,
+) {
+ init {
+ require(departureAirport != null) { "departureAirport must not be null" }
+
+ require(arrivalAirport != null) { "arrivalAirport must not be null" }
+
+ require(departureDateTime != null) { "departureDateTime must not be null" }
+
+ require(arrivalDateTime != null) { "arrivalDateTime must not be null" }
+
+ require(flightNumber != null) { "flightNumber must not be null" }
+
+ require(marketingAirlineCode != null) { "marketingAirlineCode must not be null" }
+
+ require(flightDuration != null) { "flightDuration must not be null" }
+
+ require(cabinClass != null) { "cabinClass must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureAirport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport? = null,
+ private var arrivalAirport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport? = null,
+ private var departureDateTime: java.time.OffsetDateTime? = null,
+ private var arrivalDateTime: java.time.OffsetDateTime? = null,
+ private var flightNumber: kotlin.String? = null,
+ private var marketingAirlineCode: kotlin.String? = null,
+ private var flightDuration: kotlin.String? = null,
+ private var cabinClass: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.CabinClass? = null,
+ private var operatingAirlineCode: kotlin.String? = null,
+ ) {
+ fun departureAirport(departureAirport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport) = apply { this.departureAirport = departureAirport }
+
+ fun arrivalAirport(arrivalAirport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport) = apply { this.arrivalAirport = arrivalAirport }
+
+ fun departureDateTime(departureDateTime: java.time.OffsetDateTime) = apply { this.departureDateTime = departureDateTime }
+
+ fun arrivalDateTime(arrivalDateTime: java.time.OffsetDateTime) = apply { this.arrivalDateTime = arrivalDateTime }
+
+ fun flightNumber(flightNumber: kotlin.String) = apply { this.flightNumber = flightNumber }
+
+ fun marketingAirlineCode(marketingAirlineCode: kotlin.String) = apply { this.marketingAirlineCode = marketingAirlineCode }
+
+ fun flightDuration(flightDuration: kotlin.String) = apply { this.flightDuration = flightDuration }
+
+ fun cabinClass(cabinClass: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg.CabinClass) = apply { this.cabinClass = cabinClass }
+
+ fun operatingAirlineCode(operatingAirlineCode: kotlin.String?) = apply { this.operatingAirlineCode = operatingAirlineCode }
+
+ fun build(): FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg {
+ val instance =
+ FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLeg(
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ departureDateTime = departureDateTime!!,
+ arrivalDateTime = arrivalDateTime!!,
+ flightNumber = flightNumber!!,
+ marketingAirlineCode = marketingAirlineCode!!,
+ flightDuration = flightDuration!!,
+ cabinClass = cabinClass!!,
+ operatingAirlineCode = operatingAirlineCode,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ departureDateTime = departureDateTime!!,
+ arrivalDateTime = arrivalDateTime!!,
+ flightNumber = flightNumber!!,
+ marketingAirlineCode = marketingAirlineCode!!,
+ flightDuration = flightDuration!!,
+ cabinClass = cabinClass!!,
+ operatingAirlineCode = operatingAirlineCode,
+ )
+
+ /**
+ * Class of service for the air leg.
+ * Values: ECONOMY,FIRST,BUSINESS,PREMIUM_ECONOMY
+ */
+ enum class CabinClass(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("ECONOMY")
+ ECONOMY("ECONOMY"),
+
+ @JsonProperty("FIRST")
+ FIRST("FIRST"),
+
+ @JsonProperty("BUSINESS")
+ BUSINESS("BUSINESS"),
+
+ @JsonProperty("PREMIUM_ECONOMY")
+ PREMIUM_ECONOMY("PREMIUM_ECONOMY"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport.kt
new file mode 100644
index 000000000..e0afeaed6
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param airport
+ */
+data class FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport(
+ @JsonProperty("Airport")
+ val airport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var airport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport? = null,
+ ) {
+ fun airport(airport: FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport?) = apply { this.airport = airport }
+
+ fun build(): FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport {
+ val instance =
+ FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirport(
+ airport = airport,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ airport = airport,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport.kt
new file mode 100644
index 000000000..74a57070d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport.kt
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for information on the arrival airport.
+ * @param code Three-letter IATA airport code for departure location
+ */
+data class FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport(
+ // Three-letter IATA airport code for departure location
+ @JsonProperty("Code")
+ val code: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun build(): FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport {
+ val instance =
+ FlexSearchResponseOffersInnerOfferSegmentsInnerSegmentLegsInnerLegDepartureAirportAirport(
+ code = code!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInner.kt
new file mode 100644
index 000000000..6119fa7d6
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlexSearchResponseWarningsInnerWarning
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param warning
+ */
+data class FlexSearchResponseWarningsInner(
+ @JsonProperty("Warning")
+ val warning: FlexSearchResponseWarningsInnerWarning? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var warning: FlexSearchResponseWarningsInnerWarning? = null,
+ ) {
+ fun warning(warning: FlexSearchResponseWarningsInnerWarning?) = apply { this.warning = warning }
+
+ fun build(): FlexSearchResponseWarningsInner {
+ val instance =
+ FlexSearchResponseWarningsInner(
+ warning = warning,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ warning = warning,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInnerWarning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInnerWarning.kt
new file mode 100644
index 000000000..75208e281
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlexSearchResponseWarningsInnerWarning.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Warning Codes.
+ * @param code Warning message code.
+ * @param description Warning message description.
+ */
+data class FlexSearchResponseWarningsInnerWarning(
+ // Warning message code.
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Warning message description.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlexSearchResponseWarningsInnerWarning {
+ val instance =
+ FlexSearchResponseWarningsInnerWarning(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Flight.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Flight.kt
new file mode 100644
index 000000000..8c20ec242
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Flight.kt
@@ -0,0 +1,79 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightSegmentsInner
+import com.expediagroup.sdk.xap.models.FlightTotalPrice
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param flightId
+ * @param segments
+ * @param totalPrice
+ */
+data class Flight(
+ @JsonProperty("FlightId")
+ val flightId: kotlin.String,
+ @JsonProperty("Segments")
+ val segments: kotlin.collections
+ .List<
+ FlightSegmentsInner,
+ >,
+ @JsonProperty("TotalPrice")
+ val totalPrice: FlightTotalPrice? = null,
+) {
+ init {
+ require(flightId != null) { "flightId must not be null" }
+
+ require(segments != null) { "segments must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flightId: kotlin.String? = null,
+ private var segments: kotlin.collections.List? = null,
+ private var totalPrice: FlightTotalPrice? = null,
+ ) {
+ fun flightId(flightId: kotlin.String) = apply { this.flightId = flightId }
+
+ fun segments(segments: kotlin.collections.List) = apply { this.segments = segments }
+
+ fun totalPrice(totalPrice: FlightTotalPrice?) = apply { this.totalPrice = totalPrice }
+
+ fun build(): Flight {
+ val instance =
+ Flight(
+ flightId = flightId!!,
+ segments = segments!!,
+ totalPrice = totalPrice,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flightId = flightId!!,
+ segments = segments!!,
+ totalPrice = totalPrice,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightBaggageFee.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightBaggageFee.kt
new file mode 100644
index 000000000..31dbb8033
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightBaggageFee.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.BaggageFee
+import com.expediagroup.sdk.xap.models.BaggageFeeFlightSegment
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for information on Baggage fee information of each Segment.
+ * @param flightSegment
+ * @param baggageFees Container for baggage fee information of each bag type. The baggage fee can vary for each bag type. The amount can be zero, fixed amount or will be in a range
+ */
+data class FlightBaggageFee(
+ @JsonProperty("FlightSegment")
+ val flightSegment: BaggageFeeFlightSegment,
+ // Container for baggage fee information of each bag type. The baggage fee can vary for each bag type. The amount can be zero, fixed amount or will be in a range
+ @JsonProperty("BaggageFees")
+ val baggageFees: kotlin.collections
+ .List<
+ BaggageFee,
+ >,
+) {
+ init {
+ require(flightSegment != null) { "flightSegment must not be null" }
+
+ require(baggageFees != null) { "baggageFees must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flightSegment: BaggageFeeFlightSegment? = null,
+ private var baggageFees: kotlin.collections.List? = null,
+ ) {
+ fun flightSegment(flightSegment: BaggageFeeFlightSegment) = apply { this.flightSegment = flightSegment }
+
+ fun baggageFees(baggageFees: kotlin.collections.List) = apply { this.baggageFees = baggageFees }
+
+ fun build(): FlightBaggageFee {
+ val instance =
+ FlightBaggageFee(
+ flightSegment = flightSegment!!,
+ baggageFees = baggageFees!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flightSegment = flightSegment!!,
+ baggageFees = baggageFees!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightBaggageFeesResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightBaggageFeesResponse.kt
new file mode 100644
index 000000000..4870ddadf
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightBaggageFeesResponse.kt
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightBaggageFee
+import com.expediagroup.sdk.xap.models.FlightsV1Warning
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param flightBaggageFees Container for information on Baggage fee information of each Segment.
+ * @param transactionId Unique identifier for the transaction.
+ * @param warnings Container for Warning messages.
+ */
+data class FlightBaggageFeesResponse(
+ // Container for information on Baggage fee information of each Segment.
+ @JsonProperty("FlightBaggageFees")
+ val flightBaggageFees: kotlin.collections
+ .List<
+ FlightBaggageFee,
+ >,
+ // Unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ // Container for Warning messages.
+ @JsonProperty("Warnings")
+ val warnings: kotlin.collections.List? = null,
+) {
+ init {
+ require(flightBaggageFees != null) { "flightBaggageFees must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flightBaggageFees: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ ) {
+ fun flightBaggageFees(flightBaggageFees: kotlin.collections.List) = apply { this.flightBaggageFees = flightBaggageFees }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun build(): FlightBaggageFeesResponse {
+ val instance =
+ FlightBaggageFeesResponse(
+ flightBaggageFees = flightBaggageFees!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flightBaggageFees = flightBaggageFees!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsOffer.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsOffer.kt
new file mode 100644
index 000000000..8a1e3fea1
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsOffer.kt
@@ -0,0 +1,236 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FareOptions
+import com.expediagroup.sdk.xap.models.FlightDetailsRefundPenalty
+import com.expediagroup.sdk.xap.models.FlightsV3Link
+import com.expediagroup.sdk.xap.models.OfferPrice
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Contains list of all the available alternate fare upsell/downsell offers.
+ * @param splitTicket True if more that one ticket will be issued for this offer per passenger. False if only one ticket will be issued per passenger.
+ * @param opaqueFlight Indicate whether the air product is a opaque flight product or not. If true, then there will be no Segments node for this air product.
+ * @param merchantName All Merchant name appending them together with a ?*?
+ * @param links Container for deeplink URL information.
+ * @param offerPrice
+ * @param refundable True if flight is refundable, False if it's not refundable.
+ * @param international True, if flight is international. False, if flight departs and arrives within the same country
+ * @param ticketType Type of ticket being issued
+ * @param fareOptions Contains list of fare options
+ * @param undisclosedGenderSupported Whether to support undisclosed gender? True = support False = not support
+ * @param unspecifiedGenderSupported Whether to support unspecified gender? True = support False = not support
+ * @param offerToken Unique key to identify each offer.
+ * @param referenceId Key that allows the user to create a package using this flight.
+ * @param metaApiBook To indicate meta partners whether the air product is available for TAAS instant book.
+ * @param free24HourCancellation True if Booking can be cancelled within 24 hours of booking.
+ * @param segmentIds Container for list of segment ids in a particular offer. For Opaque flight, no segment will be present.
+ * @param vfopKey Key generated for Valid form of payment
+ * @param refundPenalty Contains refund penalty information
+ */
+data class FlightDetailsOffer(
+ // True if more that one ticket will be issued for this offer per passenger. False if only one ticket will be issued per passenger.
+ @JsonProperty("SplitTicket")
+ val splitTicket: kotlin.Boolean,
+ // Indicate whether the air product is a opaque flight product or not. If true, then there will be no Segments node for this air product.
+ @JsonProperty("OpaqueFlight")
+ val opaqueFlight: kotlin.Boolean,
+ // All Merchant name appending them together with a ?*?
+ @JsonProperty("MerchantName")
+ val merchantName: kotlin.String,
+ // Container for deeplink URL information.
+ @JsonProperty("Links")
+ val links: kotlin.collections.Map,
+ @JsonProperty("OfferPrice")
+ val offerPrice: OfferPrice,
+ // True if flight is refundable, False if it's not refundable.
+ @JsonProperty("Refundable")
+ val refundable: kotlin.Boolean,
+ // True, if flight is international. False, if flight departs and arrives within the same country
+ @JsonProperty("International")
+ val international: kotlin.Boolean,
+ // Type of ticket being issued
+ @JsonProperty("TicketType")
+ val ticketType: kotlin.String,
+ // Contains list of fare options
+ @JsonProperty("FareOptions")
+ val fareOptions: kotlin.collections
+ .List<
+ FareOptions,
+ >,
+ // Whether to support undisclosed gender? True = support False = not support
+ @JsonProperty("UndisclosedGenderSupported")
+ val undisclosedGenderSupported: kotlin.Boolean,
+ // Whether to support unspecified gender? True = support False = not support
+ @JsonProperty("UnspecifiedGenderSupported")
+ val unspecifiedGenderSupported: kotlin.Boolean,
+ // Unique key to identify each offer.
+ @JsonProperty("offerToken")
+ val offerToken: kotlin.String? = null,
+ // Key that allows the user to create a package using this flight.
+ @JsonProperty("ReferenceId")
+ val referenceId: kotlin.String? = null,
+ // To indicate meta partners whether the air product is available for TAAS instant book.
+ @JsonProperty("MetaApiBook")
+ val metaApiBook: kotlin.Boolean? = null,
+ // True if Booking can be cancelled within 24 hours of booking.
+ @JsonProperty("Free24HourCancellation")
+ val free24HourCancellation: kotlin.Boolean? = null,
+ // Container for list of segment ids in a particular offer. For Opaque flight, no segment will be present.
+ @JsonProperty("SegmentIds")
+ val segmentIds: kotlin.collections.List? = null,
+ // Key generated for Valid form of payment
+ @JsonProperty("VfopKey")
+ val vfopKey: kotlin.String? = null,
+ // Contains refund penalty information
+ @JsonProperty("RefundPenalty")
+ val refundPenalty: kotlin.collections.List? = null,
+) {
+ init {
+ require(splitTicket != null) { "splitTicket must not be null" }
+
+ require(opaqueFlight != null) { "opaqueFlight must not be null" }
+
+ require(merchantName != null) { "merchantName must not be null" }
+
+ require(links != null) { "links must not be null" }
+
+ require(offerPrice != null) { "offerPrice must not be null" }
+
+ require(refundable != null) { "refundable must not be null" }
+
+ require(international != null) { "international must not be null" }
+
+ require(ticketType != null) { "ticketType must not be null" }
+
+ require(fareOptions != null) { "fareOptions must not be null" }
+
+ require(undisclosedGenderSupported != null) { "undisclosedGenderSupported must not be null" }
+
+ require(unspecifiedGenderSupported != null) { "unspecifiedGenderSupported must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var splitTicket: kotlin.Boolean? = null,
+ private var opaqueFlight: kotlin.Boolean? = null,
+ private var merchantName: kotlin.String? = null,
+ private var links: kotlin.collections.Map? = null,
+ private var offerPrice: OfferPrice? = null,
+ private var refundable: kotlin.Boolean? = null,
+ private var international: kotlin.Boolean? = null,
+ private var ticketType: kotlin.String? = null,
+ private var fareOptions: kotlin.collections.List? = null,
+ private var undisclosedGenderSupported: kotlin.Boolean? = null,
+ private var unspecifiedGenderSupported: kotlin.Boolean? = null,
+ private var offerToken: kotlin.String? = null,
+ private var referenceId: kotlin.String? = null,
+ private var metaApiBook: kotlin.Boolean? = null,
+ private var free24HourCancellation: kotlin.Boolean? = null,
+ private var segmentIds: kotlin.collections.List? = null,
+ private var vfopKey: kotlin.String? = null,
+ private var refundPenalty: kotlin.collections.List? = null,
+ ) {
+ fun splitTicket(splitTicket: kotlin.Boolean) = apply { this.splitTicket = splitTicket }
+
+ fun opaqueFlight(opaqueFlight: kotlin.Boolean) = apply { this.opaqueFlight = opaqueFlight }
+
+ fun merchantName(merchantName: kotlin.String) = apply { this.merchantName = merchantName }
+
+ fun links(links: kotlin.collections.Map) = apply { this.links = links }
+
+ fun offerPrice(offerPrice: OfferPrice) = apply { this.offerPrice = offerPrice }
+
+ fun refundable(refundable: kotlin.Boolean) = apply { this.refundable = refundable }
+
+ fun international(international: kotlin.Boolean) = apply { this.international = international }
+
+ fun ticketType(ticketType: kotlin.String) = apply { this.ticketType = ticketType }
+
+ fun fareOptions(fareOptions: kotlin.collections.List) = apply { this.fareOptions = fareOptions }
+
+ fun undisclosedGenderSupported(undisclosedGenderSupported: kotlin.Boolean) = apply { this.undisclosedGenderSupported = undisclosedGenderSupported }
+
+ fun unspecifiedGenderSupported(unspecifiedGenderSupported: kotlin.Boolean) = apply { this.unspecifiedGenderSupported = unspecifiedGenderSupported }
+
+ fun offerToken(offerToken: kotlin.String?) = apply { this.offerToken = offerToken }
+
+ fun referenceId(referenceId: kotlin.String?) = apply { this.referenceId = referenceId }
+
+ fun metaApiBook(metaApiBook: kotlin.Boolean?) = apply { this.metaApiBook = metaApiBook }
+
+ fun free24HourCancellation(free24HourCancellation: kotlin.Boolean?) = apply { this.free24HourCancellation = free24HourCancellation }
+
+ fun segmentIds(segmentIds: kotlin.collections.List?) = apply { this.segmentIds = segmentIds }
+
+ fun vfopKey(vfopKey: kotlin.String?) = apply { this.vfopKey = vfopKey }
+
+ fun refundPenalty(refundPenalty: kotlin.collections.List?) = apply { this.refundPenalty = refundPenalty }
+
+ fun build(): FlightDetailsOffer {
+ val instance =
+ FlightDetailsOffer(
+ splitTicket = splitTicket!!,
+ opaqueFlight = opaqueFlight!!,
+ merchantName = merchantName!!,
+ links = links!!,
+ offerPrice = offerPrice!!,
+ refundable = refundable!!,
+ international = international!!,
+ ticketType = ticketType!!,
+ fareOptions = fareOptions!!,
+ undisclosedGenderSupported = undisclosedGenderSupported!!,
+ unspecifiedGenderSupported = unspecifiedGenderSupported!!,
+ offerToken = offerToken,
+ referenceId = referenceId,
+ metaApiBook = metaApiBook,
+ free24HourCancellation = free24HourCancellation,
+ segmentIds = segmentIds,
+ vfopKey = vfopKey,
+ refundPenalty = refundPenalty,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ splitTicket = splitTicket!!,
+ opaqueFlight = opaqueFlight!!,
+ merchantName = merchantName!!,
+ links = links!!,
+ offerPrice = offerPrice!!,
+ refundable = refundable!!,
+ international = international!!,
+ ticketType = ticketType!!,
+ fareOptions = fareOptions!!,
+ undisclosedGenderSupported = undisclosedGenderSupported!!,
+ unspecifiedGenderSupported = unspecifiedGenderSupported!!,
+ offerToken = offerToken,
+ referenceId = referenceId,
+ metaApiBook = metaApiBook,
+ free24HourCancellation = free24HourCancellation,
+ segmentIds = segmentIds,
+ vfopKey = vfopKey,
+ refundPenalty = refundPenalty,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsRefundPenalty.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsRefundPenalty.kt
new file mode 100644
index 000000000..db3b5f006
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsRefundPenalty.kt
@@ -0,0 +1,143 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.RefundPenaltyDetail
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Contains refund penalty information
+ * @param segmentIds Contains a list of segment Ids
+ * @param preTripChange
+ * @param preTripCancel
+ * @param enrouteChange
+ * @param enrouteCancel
+ * @param transferable
+ * @param nameChangeAllowed
+ */
+data class FlightDetailsRefundPenalty(
+ // Contains a list of segment Ids
+ @JsonProperty("SegmentIds")
+ val segmentIds: kotlin.collections
+ .List<
+ kotlin.String,
+ >,
+ @JsonProperty("PreTripChange")
+ val preTripChange: RefundPenaltyDetail? = null,
+ @JsonProperty("PreTripCancel")
+ val preTripCancel: RefundPenaltyDetail? = null,
+ @JsonProperty("EnrouteChange")
+ val enrouteChange: RefundPenaltyDetail? = null,
+ @JsonProperty("EnrouteCancel")
+ val enrouteCancel: RefundPenaltyDetail? = null,
+ @JsonProperty("Transferable")
+ val transferable: FlightDetailsRefundPenalty.Transferable? = null,
+ @JsonProperty("NameChangeAllowed")
+ val nameChangeAllowed: FlightDetailsRefundPenalty.NameChangeAllowed? = null,
+) {
+ init {
+ require(segmentIds != null) { "segmentIds must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var segmentIds: kotlin.collections.List? = null,
+ private var preTripChange: RefundPenaltyDetail? = null,
+ private var preTripCancel: RefundPenaltyDetail? = null,
+ private var enrouteChange: RefundPenaltyDetail? = null,
+ private var enrouteCancel: RefundPenaltyDetail? = null,
+ private var transferable: FlightDetailsRefundPenalty.Transferable? = null,
+ private var nameChangeAllowed: FlightDetailsRefundPenalty.NameChangeAllowed? = null,
+ ) {
+ fun segmentIds(segmentIds: kotlin.collections.List) = apply { this.segmentIds = segmentIds }
+
+ fun preTripChange(preTripChange: RefundPenaltyDetail?) = apply { this.preTripChange = preTripChange }
+
+ fun preTripCancel(preTripCancel: RefundPenaltyDetail?) = apply { this.preTripCancel = preTripCancel }
+
+ fun enrouteChange(enrouteChange: RefundPenaltyDetail?) = apply { this.enrouteChange = enrouteChange }
+
+ fun enrouteCancel(enrouteCancel: RefundPenaltyDetail?) = apply { this.enrouteCancel = enrouteCancel }
+
+ fun transferable(transferable: FlightDetailsRefundPenalty.Transferable?) = apply { this.transferable = transferable }
+
+ fun nameChangeAllowed(nameChangeAllowed: FlightDetailsRefundPenalty.NameChangeAllowed?) = apply { this.nameChangeAllowed = nameChangeAllowed }
+
+ fun build(): FlightDetailsRefundPenalty {
+ val instance =
+ FlightDetailsRefundPenalty(
+ segmentIds = segmentIds!!,
+ preTripChange = preTripChange,
+ preTripCancel = preTripCancel,
+ enrouteChange = enrouteChange,
+ enrouteCancel = enrouteCancel,
+ transferable = transferable,
+ nameChangeAllowed = nameChangeAllowed,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ segmentIds = segmentIds!!,
+ preTripChange = preTripChange,
+ preTripCancel = preTripCancel,
+ enrouteChange = enrouteChange,
+ enrouteCancel = enrouteCancel,
+ transferable = transferable,
+ nameChangeAllowed = nameChangeAllowed,
+ )
+
+ /**
+ *
+ * Values: YES,NO,UNKNOWN
+ */
+ enum class Transferable(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("YES")
+ YES("YES"),
+
+ @JsonProperty("NO")
+ NO("NO"),
+
+ @JsonProperty("UNKNOWN")
+ UNKNOWN("UNKNOWN"),
+ }
+
+ /**
+ *
+ * Values: YES,NO,UNKNOWN
+ */
+ enum class NameChangeAllowed(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("YES")
+ YES("YES"),
+
+ @JsonProperty("NO")
+ NO("NO"),
+
+ @JsonProperty("UNKNOWN")
+ UNKNOWN("UNKNOWN"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsResponse.kt
new file mode 100644
index 000000000..57ab87399
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsResponse.kt
@@ -0,0 +1,125 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.AirValidFormsOfPayment
+import com.expediagroup.sdk.xap.models.CrossSell
+import com.expediagroup.sdk.xap.models.FlightDetailsOffer
+import com.expediagroup.sdk.xap.models.FlightDetailsWarning
+import com.expediagroup.sdk.xap.models.Lounge
+import com.expediagroup.sdk.xap.models.Segment
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param offer
+ * @param transactionId Unique identifier for the transaction.
+ * @param warnings Container for Warning Codes.
+ * @param segments Container for flight segments.
+ * @param allOffers Contains list of all the available alternate fare upsell/downsell offers.
+ * @param validFormsOfPayment Container for fees that are charged for using certain payment methods.
+ * @param lounges
+ * @param crossSell
+ */
+data class FlightDetailsResponse(
+ @JsonProperty("Offer")
+ val offer: FlightDetailsOffer,
+ // Unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ // Container for Warning Codes.
+ @JsonProperty("Warnings")
+ val warnings: kotlin.collections.List? = null,
+ // Container for flight segments.
+ @JsonProperty("Segments")
+ val segments: kotlin.collections.List? = null,
+ // Contains list of all the available alternate fare upsell/downsell offers.
+ @JsonProperty("AllOffers")
+ val allOffers: kotlin.collections.List? = null,
+ // Container for fees that are charged for using certain payment methods.
+ @JsonProperty("ValidFormsOfPayment")
+ val validFormsOfPayment: kotlin.collections.List? = null,
+ @JsonProperty("Lounges")
+ val lounges: kotlin.collections.Map>? = null,
+ @JsonProperty("CrossSell")
+ val crossSell: CrossSell? = null,
+) {
+ init {
+ require(offer != null) { "offer must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var offer: FlightDetailsOffer? = null,
+ private var transactionId: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ private var segments: kotlin.collections.List? = null,
+ private var allOffers: kotlin.collections.List? = null,
+ private var validFormsOfPayment: kotlin.collections.List? = null,
+ private var lounges: kotlin.collections.Map>? = null,
+ private var crossSell: CrossSell? = null,
+ ) {
+ fun offer(offer: FlightDetailsOffer) = apply { this.offer = offer }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun segments(segments: kotlin.collections.List?) = apply { this.segments = segments }
+
+ fun allOffers(allOffers: kotlin.collections.List?) = apply { this.allOffers = allOffers }
+
+ fun validFormsOfPayment(validFormsOfPayment: kotlin.collections.List?) = apply { this.validFormsOfPayment = validFormsOfPayment }
+
+ fun lounges(lounges: kotlin.collections.Map>?) = apply { this.lounges = lounges }
+
+ fun crossSell(crossSell: CrossSell?) = apply { this.crossSell = crossSell }
+
+ fun build(): FlightDetailsResponse {
+ val instance =
+ FlightDetailsResponse(
+ offer = offer!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ segments = segments,
+ allOffers = allOffers,
+ validFormsOfPayment = validFormsOfPayment,
+ lounges = lounges,
+ crossSell = crossSell,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ offer = offer!!,
+ transactionId = transactionId!!,
+ warnings = warnings,
+ segments = segments,
+ allOffers = allOffers,
+ validFormsOfPayment = validFormsOfPayment,
+ lounges = lounges,
+ crossSell = crossSell,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsWarning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsWarning.kt
new file mode 100644
index 000000000..f41f9adf5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightDetailsWarning.kt
@@ -0,0 +1,93 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Money
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param code Standardized warning code.
+ * @param description Standardized warning description message.
+ * @param originalPrice
+ * @param newPrice
+ * @param changedAmount
+ */
+data class FlightDetailsWarning(
+ // Standardized warning code.
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Standardized warning description message.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+ @JsonProperty("OriginalPrice")
+ val originalPrice: FlightsV3Money? = null,
+ @JsonProperty("NewPrice")
+ val newPrice: FlightsV3Money? = null,
+ @JsonProperty("ChangedAmount")
+ val changedAmount: FlightsV3Money? = null,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ private var originalPrice: FlightsV3Money? = null,
+ private var newPrice: FlightsV3Money? = null,
+ private var changedAmount: FlightsV3Money? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun originalPrice(originalPrice: FlightsV3Money?) = apply { this.originalPrice = originalPrice }
+
+ fun newPrice(newPrice: FlightsV3Money?) = apply { this.newPrice = newPrice }
+
+ fun changedAmount(changedAmount: FlightsV3Money?) = apply { this.changedAmount = changedAmount }
+
+ fun build(): FlightDetailsWarning {
+ val instance =
+ FlightDetailsWarning(
+ code = code!!,
+ description = description!!,
+ originalPrice = originalPrice,
+ newPrice = newPrice,
+ changedAmount = changedAmount,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ originalPrice = originalPrice,
+ newPrice = newPrice,
+ changedAmount = changedAmount,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRuleItem.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRuleItem.kt
new file mode 100644
index 000000000..0959f1d2d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRuleItem.kt
@@ -0,0 +1,57 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightFareRuleItemFlightSegment
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for segment and corresponding fare rules.
+ * @param flightSegment
+ */
+data class FlightFareRuleItem(
+ @JsonProperty("FlightSegment")
+ val flightSegment: FlightFareRuleItemFlightSegment,
+) {
+ init {
+ require(flightSegment != null) { "flightSegment must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flightSegment: FlightFareRuleItemFlightSegment? = null,
+ ) {
+ fun flightSegment(flightSegment: FlightFareRuleItemFlightSegment) = apply { this.flightSegment = flightSegment }
+
+ fun build(): FlightFareRuleItem {
+ val instance =
+ FlightFareRuleItem(
+ flightSegment = flightSegment!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flightSegment = flightSegment!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRuleItemFlightSegment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRuleItemFlightSegment.kt
new file mode 100644
index 000000000..533628e14
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRuleItemFlightSegment.kt
@@ -0,0 +1,98 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Airport
+import com.expediagroup.sdk.xap.models.FareRule
+import com.expediagroup.sdk.xap.models.FlightsV1Link
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for flight segment information.
+ * @param airlineCode Specifies the 2 letter IATA airline code of the Most Significant Carrier for the flight. In the case of flights with multiple airlines involves this is the airline who will be charging for the baggage.
+ * @param departureAirport
+ * @param arrivalAirport
+ * @param links Contains the deeplink URLs of api services and websites
+ * @param fareRules Contains the list of fare rule details
+ */
+data class FlightFareRuleItemFlightSegment(
+ // Specifies the 2 letter IATA airline code of the Most Significant Carrier for the flight. In the case of flights with multiple airlines involves this is the airline who will be charging for the baggage.
+ @JsonProperty("AirlineCode")
+ val airlineCode: kotlin.String,
+ @JsonProperty("DepartureAirport")
+ val departureAirport: Airport,
+ @JsonProperty("ArrivalAirport")
+ val arrivalAirport: Airport,
+ // Contains the deeplink URLs of api services and websites
+ @JsonProperty("Links")
+ val links: kotlin.collections.Map? = null,
+ // Contains the list of fare rule details
+ @JsonProperty("FareRules")
+ val fareRules: kotlin.collections.List? = null,
+) {
+ init {
+ require(airlineCode != null) { "airlineCode must not be null" }
+
+ require(departureAirport != null) { "departureAirport must not be null" }
+
+ require(arrivalAirport != null) { "arrivalAirport must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var airlineCode: kotlin.String? = null,
+ private var departureAirport: Airport? = null,
+ private var arrivalAirport: Airport? = null,
+ private var links: kotlin.collections.Map? = null,
+ private var fareRules: kotlin.collections.List? = null,
+ ) {
+ fun airlineCode(airlineCode: kotlin.String) = apply { this.airlineCode = airlineCode }
+
+ fun departureAirport(departureAirport: Airport) = apply { this.departureAirport = departureAirport }
+
+ fun arrivalAirport(arrivalAirport: Airport) = apply { this.arrivalAirport = arrivalAirport }
+
+ fun links(links: kotlin.collections.Map?) = apply { this.links = links }
+
+ fun fareRules(fareRules: kotlin.collections.List?) = apply { this.fareRules = fareRules }
+
+ fun build(): FlightFareRuleItemFlightSegment {
+ val instance =
+ FlightFareRuleItemFlightSegment(
+ airlineCode = airlineCode!!,
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ links = links,
+ fareRules = fareRules,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ airlineCode = airlineCode!!,
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ links = links,
+ fareRules = fareRules,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRulesResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRulesResponse.kt
new file mode 100644
index 000000000..b302c0703
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightFareRulesResponse.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightFareRuleItem
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param flightFareRule Container for segment and corresponding fare rules.
+ * @param transactionId Unique identifier for the transaction.
+ */
+data class FlightFareRulesResponse(
+ // Container for segment and corresponding fare rules.
+ @JsonProperty("FlightFareRule")
+ val flightFareRule: kotlin.collections
+ .List<
+ FlightFareRuleItem,
+ >,
+ // Unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+) {
+ init {
+ require(flightFareRule != null) { "flightFareRule must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flightFareRule: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ ) {
+ fun flightFareRule(flightFareRule: kotlin.collections.List) = apply { this.flightFareRule = flightFareRule }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun build(): FlightFareRulesResponse {
+ val instance =
+ FlightFareRulesResponse(
+ flightFareRule = flightFareRule!!,
+ transactionId = transactionId!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flightFareRule = flightFareRule!!,
+ transactionId = transactionId!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksRequest.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksRequest.kt
new file mode 100644
index 000000000..a6ed3713b
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksRequest.kt
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Flight
+import com.expediagroup.sdk.xap.models.PassengerDetails
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param flights
+ * @param passengers
+ * @param links
+ */
+data class FlightLinksRequest(
+ @JsonProperty("Flights")
+ val flights: kotlin.collections
+ .List<
+ Flight,
+ >,
+ @JsonProperty("Passengers")
+ val passengers: kotlin.collections
+ .List<
+ PassengerDetails,
+ >,
+ @JsonProperty("Links")
+ val links: kotlin.collections.List? = null,
+) {
+ init {
+ require(flights != null) { "flights must not be null" }
+
+ require(passengers != null) { "passengers must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flights: kotlin.collections.List? = null,
+ private var passengers: kotlin.collections.List? = null,
+ private var links: kotlin.collections.List? = null,
+ ) {
+ fun flights(flights: kotlin.collections.List) = apply { this.flights = flights }
+
+ fun passengers(passengers: kotlin.collections.List) = apply { this.passengers = passengers }
+
+ fun links(links: kotlin.collections.List?) = apply { this.links = links }
+
+ fun build(): FlightLinksRequest {
+ val instance =
+ FlightLinksRequest(
+ flights = flights!!,
+ passengers = passengers!!,
+ links = links,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flights = flights!!,
+ passengers = passengers!!,
+ links = links,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponse.kt
new file mode 100644
index 000000000..2b7ca7a3e
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponse.kt
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightLinksResponseLinksInner
+import com.expediagroup.sdk.xap.models.FlightLinksResponseWarningsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param transactionId
+ * @param warnings
+ * @param links
+ */
+data class FlightLinksResponse(
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ @JsonProperty("Warnings")
+ val warnings: kotlin.collections.List? = null,
+ @JsonProperty("Links")
+ val links: kotlin.collections.List? = null,
+) {
+ init {
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var transactionId: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ private var links: kotlin.collections.List? = null,
+ ) {
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun links(links: kotlin.collections.List?) = apply { this.links = links }
+
+ fun build(): FlightLinksResponse {
+ val instance =
+ FlightLinksResponse(
+ transactionId = transactionId!!,
+ warnings = warnings,
+ links = links,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ transactionId = transactionId!!,
+ warnings = warnings,
+ links = links,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInner.kt
new file mode 100644
index 000000000..0f9dfbb61
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInner.kt
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightLinksResponseLinksInnerApiDetails
+import com.expediagroup.sdk.xap.models.FlightLinksResponseLinksInnerWebDetails
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param flightId
+ * @param webDetails
+ * @param apiDetails
+ */
+data class FlightLinksResponseLinksInner(
+ @JsonProperty("FlightId")
+ val flightId: kotlin.String,
+ @JsonProperty("WebDetails")
+ val webDetails: FlightLinksResponseLinksInnerWebDetails? = null,
+ @JsonProperty("ApiDetails")
+ val apiDetails: FlightLinksResponseLinksInnerApiDetails? = null,
+) {
+ init {
+ require(flightId != null) { "flightId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var flightId: kotlin.String? = null,
+ private var webDetails: FlightLinksResponseLinksInnerWebDetails? = null,
+ private var apiDetails: FlightLinksResponseLinksInnerApiDetails? = null,
+ ) {
+ fun flightId(flightId: kotlin.String) = apply { this.flightId = flightId }
+
+ fun webDetails(webDetails: FlightLinksResponseLinksInnerWebDetails?) = apply { this.webDetails = webDetails }
+
+ fun apiDetails(apiDetails: FlightLinksResponseLinksInnerApiDetails?) = apply { this.apiDetails = apiDetails }
+
+ fun build(): FlightLinksResponseLinksInner {
+ val instance =
+ FlightLinksResponseLinksInner(
+ flightId = flightId!!,
+ webDetails = webDetails,
+ apiDetails = apiDetails,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ flightId = flightId!!,
+ webDetails = webDetails,
+ apiDetails = apiDetails,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerApiDetails.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerApiDetails.kt
new file mode 100644
index 000000000..775db7e6a
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerApiDetails.kt
@@ -0,0 +1,76 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param accept
+ * @param method
+ * @param href
+ */
+data class FlightLinksResponseLinksInnerApiDetails(
+ @JsonProperty("Accept")
+ val accept: kotlin.String,
+ @JsonProperty("Method")
+ val method: kotlin.String,
+ @JsonProperty("Href")
+ val href: kotlin.String,
+) {
+ init {
+ require(accept != null) { "accept must not be null" }
+
+ require(method != null) { "method must not be null" }
+
+ require(href != null) { "href must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var accept: kotlin.String? = null,
+ private var method: kotlin.String? = null,
+ private var href: kotlin.String? = null,
+ ) {
+ fun accept(accept: kotlin.String) = apply { this.accept = accept }
+
+ fun method(method: kotlin.String) = apply { this.method = method }
+
+ fun href(href: kotlin.String) = apply { this.href = href }
+
+ fun build(): FlightLinksResponseLinksInnerApiDetails {
+ val instance =
+ FlightLinksResponseLinksInnerApiDetails(
+ accept = accept!!,
+ method = method!!,
+ href = href!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ accept = accept!!,
+ method = method!!,
+ href = href!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerWebDetails.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerWebDetails.kt
new file mode 100644
index 000000000..c89a0b9d5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseLinksInnerWebDetails.kt
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param method
+ * @param href
+ */
+data class FlightLinksResponseLinksInnerWebDetails(
+ @JsonProperty("Method")
+ val method: kotlin.String,
+ @JsonProperty("Href")
+ val href: kotlin.String,
+) {
+ init {
+ require(method != null) { "method must not be null" }
+
+ require(href != null) { "href must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var method: kotlin.String? = null,
+ private var href: kotlin.String? = null,
+ ) {
+ fun method(method: kotlin.String) = apply { this.method = method }
+
+ fun href(href: kotlin.String) = apply { this.href = href }
+
+ fun build(): FlightLinksResponseLinksInnerWebDetails {
+ val instance =
+ FlightLinksResponseLinksInnerWebDetails(
+ method = method!!,
+ href = href!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ method = method!!,
+ href = href!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseWarningsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseWarningsInner.kt
new file mode 100644
index 000000000..5932f5761
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightLinksResponseWarningsInner.kt
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param code
+ * @param description
+ */
+data class FlightLinksResponseWarningsInner(
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlightLinksResponseWarningsInner {
+ val instance =
+ FlightLinksResponseWarningsInner(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSearchResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSearchResponse.kt
new file mode 100644
index 000000000..1742e3c9a
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSearchResponse.kt
@@ -0,0 +1,140 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.AirValidFormsOfPayment
+import com.expediagroup.sdk.xap.models.FlightsV3Airport
+import com.expediagroup.sdk.xap.models.FlightsV3Offer
+import com.expediagroup.sdk.xap.models.FlightsV3Warning
+import com.expediagroup.sdk.xap.models.Insights
+import com.expediagroup.sdk.xap.models.Lounge
+import com.expediagroup.sdk.xap.models.Segment
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param offers Container for list of air offers. An offer gives total trip details including flight and pricing information.
+ * @param searchCities Container for list of Information about each search locations
+ * @param transactionId Unique Id to identify one individual API response.
+ * @param insights
+ * @param warnings Container for warning messages.
+ * @param segments Container of information about each flight offer (Less information shown if the offer is and opaque flight offer) Flights (the complete journey to your final destination by air) are made up of: Segments (the trip from one stopping place to another) are made up of: Legs (take off at one airport and land at another)
+ * @param validFormsOfPayment Container for fees that are charged for using certain payment methods. Since the method of payment is not known until time of booking, these fees are returned separately and not included in the total price
+ * @param lounges List of lounges
+ */
+data class FlightSearchResponse(
+ // Container for list of air offers. An offer gives total trip details including flight and pricing information.
+ @JsonProperty("Offers")
+ val offers: kotlin.collections
+ .List<
+ FlightsV3Offer,
+ >,
+ // Container for list of Information about each search locations
+ @JsonProperty("SearchCities")
+ val searchCities: kotlin.collections
+ .List<
+ FlightsV3Airport,
+ >,
+ // Unique Id to identify one individual API response.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+ @JsonProperty("Insights")
+ val insights: Insights? = null,
+ // Container for warning messages.
+ @JsonProperty("Warnings")
+ val warnings: kotlin.collections.List? = null,
+ // Container of information about each flight offer (Less information shown if the offer is and opaque flight offer) Flights (the complete journey to your final destination by air) are made up of: Segments (the trip from one stopping place to another) are made up of: Legs (take off at one airport and land at another)
+ @JsonProperty("Segments")
+ val segments: kotlin.collections.List? = null,
+ // Container for fees that are charged for using certain payment methods. Since the method of payment is not known until time of booking, these fees are returned separately and not included in the total price
+ @JsonProperty("ValidFormsOfPayment")
+ val validFormsOfPayment: kotlin.collections.Map>? = null,
+ // List of lounges
+ @JsonProperty("Lounges")
+ val lounges: kotlin.collections.Map>? = null,
+) {
+ init {
+ require(offers != null) { "offers must not be null" }
+
+ require(searchCities != null) { "searchCities must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var offers: kotlin.collections.List? = null,
+ private var searchCities: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ private var insights: Insights? = null,
+ private var warnings: kotlin.collections.List? = null,
+ private var segments: kotlin.collections.List? = null,
+ private var validFormsOfPayment: kotlin.collections.Map>? = null,
+ private var lounges: kotlin.collections.Map>? = null,
+ ) {
+ fun offers(offers: kotlin.collections.List) = apply { this.offers = offers }
+
+ fun searchCities(searchCities: kotlin.collections.List) = apply { this.searchCities = searchCities }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun insights(insights: Insights?) = apply { this.insights = insights }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun segments(segments: kotlin.collections.List?) = apply { this.segments = segments }
+
+ fun validFormsOfPayment(validFormsOfPayment: kotlin.collections.Map>?) =
+ apply {
+ this.validFormsOfPayment =
+ validFormsOfPayment
+ }
+
+ fun lounges(lounges: kotlin.collections.Map>?) = apply { this.lounges = lounges }
+
+ fun build(): FlightSearchResponse {
+ val instance =
+ FlightSearchResponse(
+ offers = offers!!,
+ searchCities = searchCities!!,
+ transactionId = transactionId!!,
+ insights = insights,
+ warnings = warnings,
+ segments = segments,
+ validFormsOfPayment = validFormsOfPayment,
+ lounges = lounges,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ offers = offers!!,
+ searchCities = searchCities!!,
+ transactionId = transactionId!!,
+ insights = insights,
+ warnings = warnings,
+ segments = segments,
+ validFormsOfPayment = validFormsOfPayment,
+ lounges = lounges,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInner.kt
new file mode 100644
index 000000000..67db063b5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightSegmentsInnerSegment
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param segment
+ */
+data class FlightSegmentsInner(
+ @JsonProperty("Segment")
+ val segment: FlightSegmentsInnerSegment? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var segment: FlightSegmentsInnerSegment? = null,
+ ) {
+ fun segment(segment: FlightSegmentsInnerSegment?) = apply { this.segment = segment }
+
+ fun build(): FlightSegmentsInner {
+ val instance =
+ FlightSegmentsInner(
+ segment = segment,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ segment = segment,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegment.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegment.kt
new file mode 100644
index 000000000..74a98101f
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegment.kt
@@ -0,0 +1,105 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightSegmentsInnerSegmentLegsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param fareType
+ * @param provider
+ * @param legs
+ * @param lowCost
+ */
+data class FlightSegmentsInnerSegment(
+ @JsonProperty("FareType")
+ val fareType: FlightSegmentsInnerSegment.FareType,
+ @JsonProperty("Provider")
+ val provider: kotlin.String,
+ @JsonProperty("Legs")
+ val legs: kotlin.collections
+ .List<
+ FlightSegmentsInnerSegmentLegsInner,
+ >,
+ @JsonProperty("LowCost")
+ val lowCost: kotlin.Boolean? = null,
+) {
+ init {
+ require(fareType != null) { "fareType must not be null" }
+
+ require(provider != null) { "provider must not be null" }
+
+ require(legs != null) { "legs must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var fareType: FlightSegmentsInnerSegment.FareType? = null,
+ private var provider: kotlin.String? = null,
+ private var legs: kotlin.collections.List? = null,
+ private var lowCost: kotlin.Boolean? = null,
+ ) {
+ fun fareType(fareType: FlightSegmentsInnerSegment.FareType) = apply { this.fareType = fareType }
+
+ fun provider(provider: kotlin.String) = apply { this.provider = provider }
+
+ fun legs(legs: kotlin.collections.List) = apply { this.legs = legs }
+
+ fun lowCost(lowCost: kotlin.Boolean?) = apply { this.lowCost = lowCost }
+
+ fun build(): FlightSegmentsInnerSegment {
+ val instance =
+ FlightSegmentsInnerSegment(
+ fareType = fareType!!,
+ provider = provider!!,
+ legs = legs!!,
+ lowCost = lowCost,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ fareType = fareType!!,
+ provider = provider!!,
+ legs = legs!!,
+ lowCost = lowCost,
+ )
+
+ /**
+ *
+ * Values: PUBLISHED,NET,WEB
+ */
+ enum class FareType(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("PUBLISHED")
+ PUBLISHED("PUBLISHED"),
+
+ @JsonProperty("NET")
+ NET("NET"),
+
+ @JsonProperty("WEB")
+ WEB("WEB"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInner.kt
new file mode 100644
index 000000000..679d24c10
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInner.kt
@@ -0,0 +1,148 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightSegmentsInnerSegmentLegsInnerArrivalAirport
+import com.expediagroup.sdk.xap.models.FlightSegmentsInnerSegmentLegsInnerDepartureAirport
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param departureAirport
+ * @param arrivalAirport
+ * @param departureDateTime
+ * @param arrivalDateTime
+ * @param flightNumber
+ * @param marketingAirlineCode
+ * @param bookingCode
+ * @param cabinClass
+ */
+data class FlightSegmentsInnerSegmentLegsInner(
+ @JsonProperty("DepartureAirport")
+ val departureAirport: FlightSegmentsInnerSegmentLegsInnerDepartureAirport,
+ @JsonProperty("ArrivalAirport")
+ val arrivalAirport: FlightSegmentsInnerSegmentLegsInnerArrivalAirport,
+ @JsonProperty("DepartureDateTime")
+ val departureDateTime: java.time.OffsetDateTime,
+ @JsonProperty("ArrivalDateTime")
+ val arrivalDateTime: java.time.OffsetDateTime,
+ @JsonProperty("FlightNumber")
+ val flightNumber: kotlin.String,
+ @JsonProperty("MarketingAirlineCode")
+ val marketingAirlineCode: kotlin.String,
+ @JsonProperty("BookingCode")
+ val bookingCode: kotlin.String,
+ @JsonProperty("CabinClass")
+ val cabinClass: FlightSegmentsInnerSegmentLegsInner.CabinClass,
+) {
+ init {
+ require(departureAirport != null) { "departureAirport must not be null" }
+
+ require(arrivalAirport != null) { "arrivalAirport must not be null" }
+
+ require(departureDateTime != null) { "departureDateTime must not be null" }
+
+ require(arrivalDateTime != null) { "arrivalDateTime must not be null" }
+
+ require(flightNumber != null) { "flightNumber must not be null" }
+
+ require(marketingAirlineCode != null) { "marketingAirlineCode must not be null" }
+
+ require(bookingCode != null) { "bookingCode must not be null" }
+
+ require(cabinClass != null) { "cabinClass must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureAirport: FlightSegmentsInnerSegmentLegsInnerDepartureAirport? = null,
+ private var arrivalAirport: FlightSegmentsInnerSegmentLegsInnerArrivalAirport? = null,
+ private var departureDateTime: java.time.OffsetDateTime? = null,
+ private var arrivalDateTime: java.time.OffsetDateTime? = null,
+ private var flightNumber: kotlin.String? = null,
+ private var marketingAirlineCode: kotlin.String? = null,
+ private var bookingCode: kotlin.String? = null,
+ private var cabinClass: FlightSegmentsInnerSegmentLegsInner.CabinClass? = null,
+ ) {
+ fun departureAirport(departureAirport: FlightSegmentsInnerSegmentLegsInnerDepartureAirport) = apply { this.departureAirport = departureAirport }
+
+ fun arrivalAirport(arrivalAirport: FlightSegmentsInnerSegmentLegsInnerArrivalAirport) = apply { this.arrivalAirport = arrivalAirport }
+
+ fun departureDateTime(departureDateTime: java.time.OffsetDateTime) = apply { this.departureDateTime = departureDateTime }
+
+ fun arrivalDateTime(arrivalDateTime: java.time.OffsetDateTime) = apply { this.arrivalDateTime = arrivalDateTime }
+
+ fun flightNumber(flightNumber: kotlin.String) = apply { this.flightNumber = flightNumber }
+
+ fun marketingAirlineCode(marketingAirlineCode: kotlin.String) = apply { this.marketingAirlineCode = marketingAirlineCode }
+
+ fun bookingCode(bookingCode: kotlin.String) = apply { this.bookingCode = bookingCode }
+
+ fun cabinClass(cabinClass: FlightSegmentsInnerSegmentLegsInner.CabinClass) = apply { this.cabinClass = cabinClass }
+
+ fun build(): FlightSegmentsInnerSegmentLegsInner {
+ val instance =
+ FlightSegmentsInnerSegmentLegsInner(
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ departureDateTime = departureDateTime!!,
+ arrivalDateTime = arrivalDateTime!!,
+ flightNumber = flightNumber!!,
+ marketingAirlineCode = marketingAirlineCode!!,
+ bookingCode = bookingCode!!,
+ cabinClass = cabinClass!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ departureAirport = departureAirport!!,
+ arrivalAirport = arrivalAirport!!,
+ departureDateTime = departureDateTime!!,
+ arrivalDateTime = arrivalDateTime!!,
+ flightNumber = flightNumber!!,
+ marketingAirlineCode = marketingAirlineCode!!,
+ bookingCode = bookingCode!!,
+ cabinClass = cabinClass!!,
+ )
+
+ /**
+ *
+ * Values: ECONOMY,FIRST,BUSINESS,PREMIUM_ECONOMY
+ */
+ enum class CabinClass(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("ECONOMY")
+ ECONOMY("ECONOMY"),
+
+ @JsonProperty("FIRST")
+ FIRST("FIRST"),
+
+ @JsonProperty("BUSINESS")
+ BUSINESS("BUSINESS"),
+
+ @JsonProperty("PREMIUM_ECONOMY")
+ PREMIUM_ECONOMY("PREMIUM_ECONOMY"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirport.kt
new file mode 100644
index 000000000..19fb00a49
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirport.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param airport
+ */
+data class FlightSegmentsInnerSegmentLegsInnerArrivalAirport(
+ @JsonProperty("Airport")
+ val airport: FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var airport: FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport? = null,
+ ) {
+ fun airport(airport: FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport?) = apply { this.airport = airport }
+
+ fun build(): FlightSegmentsInnerSegmentLegsInnerArrivalAirport {
+ val instance =
+ FlightSegmentsInnerSegmentLegsInnerArrivalAirport(
+ airport = airport,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ airport = airport,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport.kt
new file mode 100644
index 000000000..53652f38e
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param code
+ */
+data class FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport(
+ @JsonProperty("Code")
+ val code: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun build(): FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport {
+ val instance =
+ FlightSegmentsInnerSegmentLegsInnerArrivalAirportAirport(
+ code = code!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirport.kt
new file mode 100644
index 000000000..540da74af
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirport.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param airport
+ */
+data class FlightSegmentsInnerSegmentLegsInnerDepartureAirport(
+ @JsonProperty("Airport")
+ val airport: FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var airport: FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport? = null,
+ ) {
+ fun airport(airport: FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport?) = apply { this.airport = airport }
+
+ fun build(): FlightSegmentsInnerSegmentLegsInnerDepartureAirport {
+ val instance =
+ FlightSegmentsInnerSegmentLegsInnerDepartureAirport(
+ airport = airport,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ airport = airport,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport.kt
new file mode 100644
index 000000000..fdda328ca
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param code
+ */
+data class FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport(
+ @JsonProperty("Code")
+ val code: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun build(): FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport {
+ val instance =
+ FlightSegmentsInnerSegmentLegsInnerDepartureAirportAirport(
+ code = code!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightTotalPrice.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightTotalPrice.kt
new file mode 100644
index 000000000..0e531141f
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightTotalPrice.kt
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param `value`
+ * @param currency
+ */
+data class FlightTotalPrice(
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun build(): FlightTotalPrice {
+ val instance =
+ FlightTotalPrice(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Error.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Error.kt
new file mode 100644
index 000000000..9bc09c743
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Error.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for error list.
+ * @param code Error code describing the issue
+ * @param description A simple description of what the error is.
+ */
+data class FlightsV1Error(
+ // Error code describing the issue
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // A simple description of what the error is.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlightsV1Error {
+ val instance =
+ FlightsV1Error(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Errors.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Errors.kt
new file mode 100644
index 000000000..d6ce98ed4
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Errors.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV1Error
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param errors Container for error list.
+ * @param transactionId A unique identifier for the transaction.
+ */
+data class FlightsV1Errors(
+ // Container for error list.
+ @JsonProperty("Errors")
+ val errors: kotlin.collections
+ .List<
+ FlightsV1Error,
+ >,
+ // A unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+) {
+ init {
+ require(errors != null) { "errors must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var errors: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ ) {
+ fun errors(errors: kotlin.collections.List) = apply { this.errors = errors }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun build(): FlightsV1Errors {
+ val instance =
+ FlightsV1Errors(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Link.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Link.kt
new file mode 100644
index 000000000..761a167c9
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Link.kt
@@ -0,0 +1,77 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Contains the deeplink URLs of api services and websites
+ * @param method HTTP method to connect.
+ * @param href HATEOAS URL to fetch details.
+ * @param accept Accept header.
+ */
+data class FlightsV1Link(
+ // HTTP method to connect.
+ @JsonProperty("Method")
+ val method: kotlin.String,
+ // HATEOAS URL to fetch details.
+ @JsonProperty("Href")
+ val href: kotlin.String,
+ // Accept header.
+ @JsonProperty("Accept")
+ val accept: kotlin.String? = null,
+) {
+ init {
+ require(method != null) { "method must not be null" }
+
+ require(href != null) { "href must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var method: kotlin.String? = null,
+ private var href: kotlin.String? = null,
+ private var accept: kotlin.String? = null,
+ ) {
+ fun method(method: kotlin.String) = apply { this.method = method }
+
+ fun href(href: kotlin.String) = apply { this.href = href }
+
+ fun accept(accept: kotlin.String?) = apply { this.accept = accept }
+
+ fun build(): FlightsV1Link {
+ val instance =
+ FlightsV1Link(
+ method = method!!,
+ href = href!!,
+ accept = accept,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ method = method!!,
+ href = href!!,
+ accept = accept,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Money.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Money.kt
new file mode 100644
index 000000000..ea9dffb7b
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Money.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for showing price.
+ * @param `value` The value of the element being defined.
+ * @param currency The ISO 4217 Currency Code that the value is expressed in.
+ */
+data class FlightsV1Money(
+ // The value of the element being defined.
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ // The ISO 4217 Currency Code that the value is expressed in.
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun build(): FlightsV1Money {
+ val instance =
+ FlightsV1Money(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Warning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Warning.kt
new file mode 100644
index 000000000..8aa9fffb5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV1Warning.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Warning messages.
+ * @param code Standardized warning code.
+ * @param description Standardized warning description message.
+ */
+data class FlightsV1Warning(
+ // Standardized warning code.
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Standardized warning description message.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlightsV1Warning {
+ val instance =
+ FlightsV1Warning(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Airport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Airport.kt
new file mode 100644
index 000000000..33a9d65a5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Airport.kt
@@ -0,0 +1,111 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for showing the arrival airport details
+ * @param code Three-letter IATA airport code for departure location
+ * @param name Name of departure airport
+ * @param city City where departure airport resides
+ * @param province Province or State where departure airport resides
+ * @param country Country where departure airport resides
+ * @param latitude Latitude where departure airport resides
+ * @param longitude Longitude where departure airport resides
+ */
+data class FlightsV2Airport(
+ // Three-letter IATA airport code for departure location
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Name of departure airport
+ @JsonProperty("Name")
+ val name: kotlin.String? = null,
+ // City where departure airport resides
+ @JsonProperty("City")
+ val city: kotlin.String? = null,
+ // Province or State where departure airport resides
+ @JsonProperty("Province")
+ val province: kotlin.String? = null,
+ // Country where departure airport resides
+ @JsonProperty("Country")
+ val country: kotlin.String? = null,
+ // Latitude where departure airport resides
+ @JsonProperty("Latitude")
+ val latitude: kotlin.String? = null,
+ // Longitude where departure airport resides
+ @JsonProperty("Longitude")
+ val longitude: kotlin.String? = null,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ private var city: kotlin.String? = null,
+ private var province: kotlin.String? = null,
+ private var country: kotlin.String? = null,
+ private var latitude: kotlin.String? = null,
+ private var longitude: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun name(name: kotlin.String?) = apply { this.name = name }
+
+ fun city(city: kotlin.String?) = apply { this.city = city }
+
+ fun province(province: kotlin.String?) = apply { this.province = province }
+
+ fun country(country: kotlin.String?) = apply { this.country = country }
+
+ fun latitude(latitude: kotlin.String?) = apply { this.latitude = latitude }
+
+ fun longitude(longitude: kotlin.String?) = apply { this.longitude = longitude }
+
+ fun build(): FlightsV2Airport {
+ val instance =
+ FlightsV2Airport(
+ code = code!!,
+ name = name,
+ city = city,
+ province = province,
+ country = country,
+ latitude = latitude,
+ longitude = longitude,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ name = name,
+ city = city,
+ province = province,
+ country = country,
+ latitude = latitude,
+ longitude = longitude,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Error.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Error.kt
new file mode 100644
index 000000000..e8e4f6424
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Error.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for error list.
+ * @param code Error code describing the issue
+ * @param description A simple description of what the error is.
+ */
+data class FlightsV2Error(
+ // Error code describing the issue
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // A simple description of what the error is.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlightsV2Error {
+ val instance =
+ FlightsV2Error(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Errors.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Errors.kt
new file mode 100644
index 000000000..32dba4001
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Errors.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV2Error
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param errors Container for error list.
+ * @param transactionId A unique identifier for the transaction.
+ */
+data class FlightsV2Errors(
+ // Container for error list.
+ @JsonProperty("Errors")
+ val errors: kotlin.collections
+ .List<
+ FlightsV2Error,
+ >,
+ // A unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+) {
+ init {
+ require(errors != null) { "errors must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var errors: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ ) {
+ fun errors(errors: kotlin.collections.List) = apply { this.errors = errors }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun build(): FlightsV2Errors {
+ val instance =
+ FlightsV2Errors(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Warning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Warning.kt
new file mode 100644
index 000000000..5c66dec0d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV2Warning.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Warning message.
+ * @param code Standardized warning code.
+ * @param description Standardized warning description message.
+ */
+data class FlightsV2Warning(
+ // Standardized warning code.
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Standardized warning description message.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlightsV2Warning {
+ val instance =
+ FlightsV2Warning(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3APIMError.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3APIMError.kt
new file mode 100644
index 000000000..a2ba0286d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3APIMError.kt
@@ -0,0 +1,55 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for error responses from APIM
+ * @param message
+ */
+data class FlightsV3APIMError(
+ @JsonProperty("message")
+ val message: kotlin.String? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var message: kotlin.String? = null,
+ ) {
+ fun message(message: kotlin.String?) = apply { this.message = message }
+
+ fun build(): FlightsV3APIMError {
+ val instance =
+ FlightsV3APIMError(
+ message = message,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ message = message,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Address.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Address.kt
new file mode 100644
index 000000000..a67aeafa2
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Address.kt
@@ -0,0 +1,106 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param address1 Street Number, Street Name, or PO Box
+ * @param city The city
+ * @param country 3-letter code for the country
+ * @param address2 Apartment, Floor, Suite, Bldg # or more specific information about Address1.
+ * @param province The state or province
+ * @param postalCode Zip/postal code
+ */
+data class FlightsV3Address(
+ // Street Number, Street Name, or PO Box
+ @JsonProperty("Address1")
+ val address1: kotlin.String,
+ // The city
+ @JsonProperty("City")
+ val city: kotlin.String,
+ // 3-letter code for the country
+ @JsonProperty("Country")
+ val country: kotlin.String,
+ // Apartment, Floor, Suite, Bldg # or more specific information about Address1.
+ @JsonProperty("Address2")
+ val address2: kotlin.String? = null,
+ // The state or province
+ @JsonProperty("Province")
+ val province: kotlin.String? = null,
+ // Zip/postal code
+ @JsonProperty("PostalCode")
+ val postalCode: kotlin.String? = null,
+) {
+ init {
+ require(address1 != null) { "address1 must not be null" }
+
+ require(city != null) { "city must not be null" }
+
+ require(country != null) { "country must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var address1: kotlin.String? = null,
+ private var city: kotlin.String? = null,
+ private var country: kotlin.String? = null,
+ private var address2: kotlin.String? = null,
+ private var province: kotlin.String? = null,
+ private var postalCode: kotlin.String? = null,
+ ) {
+ fun address1(address1: kotlin.String) = apply { this.address1 = address1 }
+
+ fun city(city: kotlin.String) = apply { this.city = city }
+
+ fun country(country: kotlin.String) = apply { this.country = country }
+
+ fun address2(address2: kotlin.String?) = apply { this.address2 = address2 }
+
+ fun province(province: kotlin.String?) = apply { this.province = province }
+
+ fun postalCode(postalCode: kotlin.String?) = apply { this.postalCode = postalCode }
+
+ fun build(): FlightsV3Address {
+ val instance =
+ FlightsV3Address(
+ address1 = address1!!,
+ city = city!!,
+ country = country!!,
+ address2 = address2,
+ province = province,
+ postalCode = postalCode,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ address1 = address1!!,
+ city = city!!,
+ country = country!!,
+ address2 = address2,
+ province = province,
+ postalCode = postalCode,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3AgeClassRestriction.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3AgeClassRestriction.kt
new file mode 100644
index 000000000..c52ff6117
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3AgeClassRestriction.kt
@@ -0,0 +1,109 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for room occupancy rules based on the age of the guests.
+ * @param ageClass Categories for hotel guests, based on age.
+ * @param ageMinimum The minimum age defined in a particular AgeClass.
+ * @param ageMaximum The maximum age defined in a particular AgeClass. If not specified, the AgeClass has no upper bound.
+ * @param maxGuestCount The max guest count allowed in a particular AgeClass.
+ */
+data class FlightsV3AgeClassRestriction(
+ // Categories for hotel guests, based on age.
+ @JsonProperty("AgeClass")
+ val ageClass: FlightsV3AgeClassRestriction.AgeClass? = null,
+ // The minimum age defined in a particular AgeClass.
+ @JsonProperty("AgeMinimum")
+ val ageMinimum: kotlin.Int? = null,
+ // The maximum age defined in a particular AgeClass. If not specified, the AgeClass has no upper bound.
+ @JsonProperty("AgeMaximum")
+ val ageMaximum: kotlin.Int? = null,
+ // The max guest count allowed in a particular AgeClass.
+ @JsonProperty("MaxGuestCount")
+ val maxGuestCount: kotlin.Int? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var ageClass: FlightsV3AgeClassRestriction.AgeClass? = null,
+ private var ageMinimum: kotlin.Int? = null,
+ private var ageMaximum: kotlin.Int? = null,
+ private var maxGuestCount: kotlin.Int? = null,
+ ) {
+ fun ageClass(ageClass: FlightsV3AgeClassRestriction.AgeClass?) = apply { this.ageClass = ageClass }
+
+ fun ageMinimum(ageMinimum: kotlin.Int?) = apply { this.ageMinimum = ageMinimum }
+
+ fun ageMaximum(ageMaximum: kotlin.Int?) = apply { this.ageMaximum = ageMaximum }
+
+ fun maxGuestCount(maxGuestCount: kotlin.Int?) = apply { this.maxGuestCount = maxGuestCount }
+
+ fun build(): FlightsV3AgeClassRestriction {
+ val instance =
+ FlightsV3AgeClassRestriction(
+ ageClass = ageClass,
+ ageMinimum = ageMinimum,
+ ageMaximum = ageMaximum,
+ maxGuestCount = maxGuestCount,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ ageClass = ageClass,
+ ageMinimum = ageMinimum,
+ ageMaximum = ageMaximum,
+ maxGuestCount = maxGuestCount,
+ )
+
+ /**
+ * Categories for hotel guests, based on age.
+ * Values: ALL_AGES,SENIOR,ADULT,CHILD,INFANT,OTHER
+ */
+ enum class AgeClass(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("All Ages")
+ ALL_AGES("All Ages"),
+
+ @JsonProperty("Senior")
+ SENIOR("Senior"),
+
+ @JsonProperty("Adult")
+ ADULT("Adult"),
+
+ @JsonProperty("Child")
+ CHILD("Child"),
+
+ @JsonProperty("Infant")
+ INFANT("Infant"),
+
+ @JsonProperty("Other")
+ OTHER("Other"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Airport.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Airport.kt
new file mode 100644
index 000000000..4b28c5ab1
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Airport.kt
@@ -0,0 +1,111 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for list of Information about each search locations
+ * @param code Three-letter IATA airport code for departure location
+ * @param name Name of departure airport
+ * @param city City where departure airport resides
+ * @param province Province or State where departure airport resides
+ * @param country Country where departure airport resides
+ * @param latitude Latitude where departure airport resides
+ * @param longitude Longitude where departure airport resides
+ */
+data class FlightsV3Airport(
+ // Three-letter IATA airport code for departure location
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Name of departure airport
+ @JsonProperty("Name")
+ val name: kotlin.String? = null,
+ // City where departure airport resides
+ @JsonProperty("City")
+ val city: kotlin.String? = null,
+ // Province or State where departure airport resides
+ @JsonProperty("Province")
+ val province: kotlin.String? = null,
+ // Country where departure airport resides
+ @JsonProperty("Country")
+ val country: kotlin.String? = null,
+ // Latitude where departure airport resides
+ @JsonProperty("Latitude")
+ val latitude: kotlin.String? = null,
+ // Longitude where departure airport resides
+ @JsonProperty("Longitude")
+ val longitude: kotlin.String? = null,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ private var city: kotlin.String? = null,
+ private var province: kotlin.String? = null,
+ private var country: kotlin.String? = null,
+ private var latitude: kotlin.String? = null,
+ private var longitude: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun name(name: kotlin.String?) = apply { this.name = name }
+
+ fun city(city: kotlin.String?) = apply { this.city = city }
+
+ fun province(province: kotlin.String?) = apply { this.province = province }
+
+ fun country(country: kotlin.String?) = apply { this.country = country }
+
+ fun latitude(latitude: kotlin.String?) = apply { this.latitude = latitude }
+
+ fun longitude(longitude: kotlin.String?) = apply { this.longitude = longitude }
+
+ fun build(): FlightsV3Airport {
+ val instance =
+ FlightsV3Airport(
+ code = code!!,
+ name = name,
+ city = city,
+ province = province,
+ country = country,
+ latitude = latitude,
+ longitude = longitude,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ name = name,
+ city = city,
+ province = province,
+ country = country,
+ latitude = latitude,
+ longitude = longitude,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3BaggageFee.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3BaggageFee.kt
new file mode 100644
index 000000000..360e676ae
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3BaggageFee.kt
@@ -0,0 +1,149 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Fee
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for baggage fee information of each bag type. The baggage fee can vary for each bag type. The amount can be zero, fixed amount or will be in a range.
+ * @param bagType Specifies the type of baggage.
+ * @param weightUnit Specifies weight unit for this bagType. This will always be kilograms.
+ * @param weight Weight of the bag.
+ * @param application This element specifies descriptive text useful in displaying baggage fees.
+ * @param fixedCharge
+ * @param maxCharge
+ * @param minCharge
+ */
+data class FlightsV3BaggageFee(
+ // Specifies the type of baggage.
+ @JsonProperty("BagType")
+ val bagType: FlightsV3BaggageFee.BagType,
+ // Specifies weight unit for this bagType. This will always be kilograms.
+ @JsonProperty("WeightUnit")
+ val weightUnit: kotlin.String? = null,
+ // Weight of the bag.
+ @JsonProperty("Weight")
+ val weight: kotlin.String? = null,
+ // This element specifies descriptive text useful in displaying baggage fees.
+ @JsonProperty("Application")
+ val application: FlightsV3BaggageFee.Application? = null,
+ @JsonProperty("FixedCharge")
+ val fixedCharge: Fee? = null,
+ @JsonProperty("MaxCharge")
+ val maxCharge: Fee? = null,
+ @JsonProperty("MinCharge")
+ val minCharge: Fee? = null,
+) {
+ init {
+ require(bagType != null) { "bagType must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var bagType: FlightsV3BaggageFee.BagType? = null,
+ private var weightUnit: kotlin.String? = null,
+ private var weight: kotlin.String? = null,
+ private var application: FlightsV3BaggageFee.Application? = null,
+ private var fixedCharge: Fee? = null,
+ private var maxCharge: Fee? = null,
+ private var minCharge: Fee? = null,
+ ) {
+ fun bagType(bagType: FlightsV3BaggageFee.BagType) = apply { this.bagType = bagType }
+
+ fun weightUnit(weightUnit: kotlin.String?) = apply { this.weightUnit = weightUnit }
+
+ fun weight(weight: kotlin.String?) = apply { this.weight = weight }
+
+ fun application(application: FlightsV3BaggageFee.Application?) = apply { this.application = application }
+
+ fun fixedCharge(fixedCharge: Fee?) = apply { this.fixedCharge = fixedCharge }
+
+ fun maxCharge(maxCharge: Fee?) = apply { this.maxCharge = maxCharge }
+
+ fun minCharge(minCharge: Fee?) = apply { this.minCharge = minCharge }
+
+ fun build(): FlightsV3BaggageFee {
+ val instance =
+ FlightsV3BaggageFee(
+ bagType = bagType!!,
+ weightUnit = weightUnit,
+ weight = weight,
+ application = application,
+ fixedCharge = fixedCharge,
+ maxCharge = maxCharge,
+ minCharge = minCharge,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ bagType = bagType!!,
+ weightUnit = weightUnit,
+ weight = weight,
+ application = application,
+ fixedCharge = fixedCharge,
+ maxCharge = maxCharge,
+ minCharge = minCharge,
+ )
+
+ /**
+ * Specifies the type of baggage.
+ * Values: PREPAID_CARRY_ON,PREPAID_FIRST_BAG,PREPAID_SECOND_BAG,CARRY_ON,FIRST_BAG,SECOND_BAG
+ */
+ enum class BagType(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("PREPAID_CARRY_ON")
+ PREPAID_CARRY_ON("PREPAID_CARRY_ON"),
+
+ @JsonProperty("PREPAID_FIRST_BAG")
+ PREPAID_FIRST_BAG("PREPAID_FIRST_BAG"),
+
+ @JsonProperty("PREPAID_SECOND_BAG")
+ PREPAID_SECOND_BAG("PREPAID_SECOND_BAG"),
+
+ @JsonProperty("CARRY_ON")
+ CARRY_ON("CARRY_ON"),
+
+ @JsonProperty("FIRST_BAG")
+ FIRST_BAG("FIRST_BAG"),
+
+ @JsonProperty("SECOND_BAG")
+ SECOND_BAG("SECOND_BAG"),
+ }
+
+ /**
+ * This element specifies descriptive text useful in displaying baggage fees.
+ * Values: UPTO,PER
+ */
+ enum class Application(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("upto")
+ UPTO("upto"),
+
+ @JsonProperty("per")
+ PER("per"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Country.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Country.kt
new file mode 100644
index 000000000..f193cd429
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Country.kt
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for disambiguation country information
+ * @param name country name
+ * @param code 3-letter code for the country
+ */
+data class FlightsV3Country(
+ // country name
+ @JsonProperty("Name")
+ val name: kotlin.String,
+ // 3-letter code for the country
+ @JsonProperty("Code")
+ val code: kotlin.String? = null,
+) {
+ init {
+ require(name != null) { "name must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var name: kotlin.String? = null,
+ private var code: kotlin.String? = null,
+ ) {
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun code(code: kotlin.String?) = apply { this.code = code }
+
+ fun build(): FlightsV3Country {
+ val instance =
+ FlightsV3Country(
+ name = name!!,
+ code = code,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ name = name!!,
+ code = code,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Description.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Description.kt
new file mode 100644
index 000000000..8c59f8a6f
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Description.kt
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for information of the descriptions of the hotel.
+ * @param locationTeaser A description of the property's location.
+ * @param hotelTeaser A description of the features and amenities of the property itself.
+ * @param roomTeaser The common description for all of the rooms in the property.
+ */
+data class FlightsV3Description(
+ // A description of the property's location.
+ @JsonProperty("LocationTeaser")
+ val locationTeaser: kotlin.String? = null,
+ // A description of the features and amenities of the property itself.
+ @JsonProperty("HotelTeaser")
+ val hotelTeaser: kotlin.String? = null,
+ // The common description for all of the rooms in the property.
+ @JsonProperty("RoomTeaser")
+ val roomTeaser: kotlin.String? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var locationTeaser: kotlin.String? = null,
+ private var hotelTeaser: kotlin.String? = null,
+ private var roomTeaser: kotlin.String? = null,
+ ) {
+ fun locationTeaser(locationTeaser: kotlin.String?) = apply { this.locationTeaser = locationTeaser }
+
+ fun hotelTeaser(hotelTeaser: kotlin.String?) = apply { this.hotelTeaser = hotelTeaser }
+
+ fun roomTeaser(roomTeaser: kotlin.String?) = apply { this.roomTeaser = roomTeaser }
+
+ fun build(): FlightsV3Description {
+ val instance =
+ FlightsV3Description(
+ locationTeaser = locationTeaser,
+ hotelTeaser = hotelTeaser,
+ roomTeaser = roomTeaser,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ locationTeaser = locationTeaser,
+ hotelTeaser = hotelTeaser,
+ roomTeaser = roomTeaser,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Distance.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Distance.kt
new file mode 100644
index 000000000..ee3f0c3be
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Distance.kt
@@ -0,0 +1,77 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for distance of flight.
+ * @param `value` The number of miles/kilometers of the distance (specified by the Unit).
+ * @param unit The unit (KM or MI) for the distance.
+ * @param direction The direction of the location from the search 'center'.Possible values are: N,S,W,E,NW,NE,SW,SE
+ */
+data class FlightsV3Distance(
+ // The number of miles/kilometers of the distance (specified by the Unit).
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ // The unit (KM or MI) for the distance.
+ @JsonProperty("Unit")
+ val unit: kotlin.String,
+ // The direction of the location from the search 'center'.Possible values are: N,S,W,E,NW,NE,SW,SE
+ @JsonProperty("Direction")
+ val direction: kotlin.String? = null,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(unit != null) { "unit must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var unit: kotlin.String? = null,
+ private var direction: kotlin.String? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun unit(unit: kotlin.String) = apply { this.unit = unit }
+
+ fun direction(direction: kotlin.String?) = apply { this.direction = direction }
+
+ fun build(): FlightsV3Distance {
+ val instance =
+ FlightsV3Distance(
+ `value` = `value`!!,
+ unit = unit!!,
+ direction = direction,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ unit = unit!!,
+ direction = direction,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Error.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Error.kt
new file mode 100644
index 000000000..b7bd5d2a7
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Error.kt
@@ -0,0 +1,87 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3LocationOption
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for error list.
+ * @param code Error code describing the issue
+ * @param description A simple description of what the error is.
+ * @param detailCode Detailed error code describing the issue.
+ * @param locationOptions List for possible locations from which the customer must choose the best one to be re-submitted in the request.
+ */
+data class FlightsV3Error(
+ // Error code describing the issue
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // A simple description of what the error is.
+ @JsonProperty("Description")
+ val description: kotlin.String,
+ // Detailed error code describing the issue.
+ @JsonProperty("DetailCode")
+ val detailCode: kotlin.String? = null,
+ // List for possible locations from which the customer must choose the best one to be re-submitted in the request.
+ @JsonProperty("LocationOptions")
+ val locationOptions: kotlin.collections.List? = null,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ private var detailCode: kotlin.String? = null,
+ private var locationOptions: kotlin.collections.List? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun detailCode(detailCode: kotlin.String?) = apply { this.detailCode = detailCode }
+
+ fun locationOptions(locationOptions: kotlin.collections.List?) = apply { this.locationOptions = locationOptions }
+
+ fun build(): FlightsV3Error {
+ val instance =
+ FlightsV3Error(
+ code = code!!,
+ description = description!!,
+ detailCode = detailCode,
+ locationOptions = locationOptions,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ detailCode = detailCode,
+ locationOptions = locationOptions,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Errors.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Errors.kt
new file mode 100644
index 000000000..75c2a81f5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Errors.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Error
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param errors Container for error list.
+ * @param transactionId A unique identifier for the transaction.
+ */
+data class FlightsV3Errors(
+ // Container for error list.
+ @JsonProperty("Errors")
+ val errors: kotlin.collections
+ .List<
+ FlightsV3Error,
+ >,
+ // A unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+) {
+ init {
+ require(errors != null) { "errors must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var errors: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ ) {
+ fun errors(errors: kotlin.collections.List) = apply { this.errors = errors }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun build(): FlightsV3Errors {
+ val instance =
+ FlightsV3Errors(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3GeoLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3GeoLocation.kt
new file mode 100644
index 000000000..78ce273ba
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3GeoLocation.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Geo location.
+ * @param latitude Latitude of the location.
+ * @param longitude Longitude of the location.
+ */
+data class FlightsV3GeoLocation(
+ // Latitude of the location.
+ @JsonProperty("Latitude")
+ val latitude: kotlin.String,
+ // Longitude of the location.
+ @JsonProperty("Longitude")
+ val longitude: kotlin.String,
+) {
+ init {
+ require(latitude != null) { "latitude must not be null" }
+
+ require(longitude != null) { "longitude must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var latitude: kotlin.String? = null,
+ private var longitude: kotlin.String? = null,
+ ) {
+ fun latitude(latitude: kotlin.String) = apply { this.latitude = latitude }
+
+ fun longitude(longitude: kotlin.String) = apply { this.longitude = longitude }
+
+ fun build(): FlightsV3GeoLocation {
+ val instance =
+ FlightsV3GeoLocation(
+ latitude = latitude!!,
+ longitude = longitude!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ latitude = latitude!!,
+ longitude = longitude!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Hotel.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Hotel.kt
new file mode 100644
index 000000000..e021d737b
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Hotel.kt
@@ -0,0 +1,331 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Description
+import com.expediagroup.sdk.xap.models.FlightsV3Distance
+import com.expediagroup.sdk.xap.models.FlightsV3HotelLocation
+import com.expediagroup.sdk.xap.models.FlightsV3HotelPolicies
+import com.expediagroup.sdk.xap.models.FlightsV3Link
+import com.expediagroup.sdk.xap.models.FlightsV3LodgingAmenity
+import com.expediagroup.sdk.xap.models.FlightsV3Media
+import com.expediagroup.sdk.xap.models.FlightsV3RoomType
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for information on each offered hotel.
+ * @param id The unique, Expedia-specific hotel property identifier used to designate a single hotel.
+ * @param name The common name of the hotel
+ * @param localCurrencyCode The Local Currency Code for Hotel (which will be used for any fees that must be paid at the hotel)
+ * @param location
+ * @param distance
+ * @param description
+ * @param status Indicates whether there are available offers at the property during the dates requested, as well as information as to why. Note that pricing will only be present in the API response for a status of 'AVAILABLE'. If there are no rooms available at the property for the dates requested, then 'NOT_AVAILABLE' will be returned. If there are available rooms, but none that meet the specific parameters of the search request, then one of the other messages will be returned
+ * @param thumbnailUrl URL of the thumbnail image of the hotel.Note that other images sizes are available - You can find a link to the complete list of Supported Hotel Image Sizes in the Related Links section at the bottom of the page
+ * @param starRating Star rating value of the hotel property.
+ * @param isOfficialRating Official rating value indicates if the hotel is certified or official. (Required in Australia Point of Sale)
+ * @param guestRating Average overall guest rating of the hotel. The value is between 1.0 and 5.0 in 0.1 increments. Higher is better.
+ * @param guestReviewCount The total count of guest reviews used to create the average GuestRating above.
+ * @param links Container for list of HATEOAS links to Expedia/partner website to complete booking.
+ * @param policies
+ * @param hotelAmenities Container for all hotel amenities.
+ * @param roomAmenities Container for all room amenities.
+ * @param roomTypes Container for all of available room types.
+ * @param media Container for hotel images
+ * @param accessibility The accessibility options available for the room.
+ */
+data class FlightsV3Hotel(
+ // The unique, Expedia-specific hotel property identifier used to designate a single hotel.
+ @JsonProperty("Id")
+ val id: kotlin.String,
+ // The common name of the hotel
+ @JsonProperty("Name")
+ val name: kotlin.String,
+ // The Local Currency Code for Hotel (which will be used for any fees that must be paid at the hotel)
+ @JsonProperty("LocalCurrencyCode")
+ val localCurrencyCode: kotlin.String,
+ @JsonProperty("Location")
+ val location: FlightsV3HotelLocation,
+ @JsonProperty("Distance")
+ val distance: FlightsV3Distance,
+ @JsonProperty("Description")
+ val description: FlightsV3Description,
+ // Indicates whether there are available offers at the property during the dates requested, as well as information as to why. Note that pricing will only be present in the API response for a status of 'AVAILABLE'. If there are no rooms available at the property for the dates requested, then 'NOT_AVAILABLE' will be returned. If there are available rooms, but none that meet the specific parameters of the search request, then one of the other messages will be returned
+ @JsonProperty("Status")
+ val status: FlightsV3Hotel.Status,
+ // URL of the thumbnail image of the hotel.Note that other images sizes are available - You can find a link to the complete list of Supported Hotel Image Sizes in the Related Links section at the bottom of the page
+ @JsonProperty("ThumbnailUrl")
+ val thumbnailUrl: kotlin.String,
+ // Star rating value of the hotel property.
+ @JsonProperty("StarRating")
+ val starRating: FlightsV3Hotel.StarRating,
+ // Official rating value indicates if the hotel is certified or official. (Required in Australia Point of Sale)
+ @JsonProperty("IsOfficialRating")
+ val isOfficialRating: kotlin.Boolean,
+ // Average overall guest rating of the hotel. The value is between 1.0 and 5.0 in 0.1 increments. Higher is better.
+ @JsonProperty("GuestRating")
+ val guestRating: kotlin.String,
+ // The total count of guest reviews used to create the average GuestRating above.
+ @JsonProperty("GuestReviewCount")
+ val guestReviewCount: kotlin.Int,
+ // Container for list of HATEOAS links to Expedia/partner website to complete booking.
+ @JsonProperty("Links")
+ val links: kotlin.collections.Map,
+ @JsonProperty("Policies")
+ val policies: FlightsV3HotelPolicies,
+ // Container for all hotel amenities.
+ @JsonProperty("HotelAmenities")
+ val hotelAmenities: kotlin.collections
+ .List<
+ FlightsV3LodgingAmenity,
+ >,
+ // Container for all room amenities.
+ @JsonProperty("RoomAmenities")
+ val roomAmenities: kotlin.collections
+ .List<
+ FlightsV3LodgingAmenity,
+ >,
+ // Container for all of available room types.
+ @JsonProperty("RoomTypes")
+ val roomTypes: kotlin.collections
+ .List<
+ FlightsV3RoomType,
+ >,
+ // Container for hotel images
+ @JsonProperty("Media")
+ val media: kotlin.collections.List? = null,
+ // The accessibility options available for the room.
+ @JsonProperty("Accessibility")
+ val accessibility: kotlin.collections.List? = null,
+) {
+ init {
+ require(id != null) { "id must not be null" }
+
+ require(name != null) { "name must not be null" }
+
+ require(localCurrencyCode != null) { "localCurrencyCode must not be null" }
+
+ require(location != null) { "location must not be null" }
+
+ require(distance != null) { "distance must not be null" }
+
+ require(description != null) { "description must not be null" }
+
+ require(status != null) { "status must not be null" }
+
+ require(thumbnailUrl != null) { "thumbnailUrl must not be null" }
+
+ require(starRating != null) { "starRating must not be null" }
+
+ require(isOfficialRating != null) { "isOfficialRating must not be null" }
+
+ require(guestRating != null) { "guestRating must not be null" }
+
+ require(guestReviewCount != null) { "guestReviewCount must not be null" }
+
+ require(links != null) { "links must not be null" }
+
+ require(policies != null) { "policies must not be null" }
+
+ require(hotelAmenities != null) { "hotelAmenities must not be null" }
+
+ require(roomAmenities != null) { "roomAmenities must not be null" }
+
+ require(roomTypes != null) { "roomTypes must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var id: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ private var localCurrencyCode: kotlin.String? = null,
+ private var location: FlightsV3HotelLocation? = null,
+ private var distance: FlightsV3Distance? = null,
+ private var description: FlightsV3Description? = null,
+ private var status: FlightsV3Hotel.Status? = null,
+ private var thumbnailUrl: kotlin.String? = null,
+ private var starRating: FlightsV3Hotel.StarRating? = null,
+ private var isOfficialRating: kotlin.Boolean? = null,
+ private var guestRating: kotlin.String? = null,
+ private var guestReviewCount: kotlin.Int? = null,
+ private var links: kotlin.collections.Map? = null,
+ private var policies: FlightsV3HotelPolicies? = null,
+ private var hotelAmenities: kotlin.collections.List? = null,
+ private var roomAmenities: kotlin.collections.List? = null,
+ private var roomTypes: kotlin.collections.List? = null,
+ private var media: kotlin.collections.List? = null,
+ private var accessibility: kotlin.collections.List? = null,
+ ) {
+ fun id(id: kotlin.String) = apply { this.id = id }
+
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun localCurrencyCode(localCurrencyCode: kotlin.String) = apply { this.localCurrencyCode = localCurrencyCode }
+
+ fun location(location: FlightsV3HotelLocation) = apply { this.location = location }
+
+ fun distance(distance: FlightsV3Distance) = apply { this.distance = distance }
+
+ fun description(description: FlightsV3Description) = apply { this.description = description }
+
+ fun status(status: FlightsV3Hotel.Status) = apply { this.status = status }
+
+ fun thumbnailUrl(thumbnailUrl: kotlin.String) = apply { this.thumbnailUrl = thumbnailUrl }
+
+ fun starRating(starRating: FlightsV3Hotel.StarRating) = apply { this.starRating = starRating }
+
+ fun isOfficialRating(isOfficialRating: kotlin.Boolean) = apply { this.isOfficialRating = isOfficialRating }
+
+ fun guestRating(guestRating: kotlin.String) = apply { this.guestRating = guestRating }
+
+ fun guestReviewCount(guestReviewCount: kotlin.Int) = apply { this.guestReviewCount = guestReviewCount }
+
+ fun links(links: kotlin.collections.Map) = apply { this.links = links }
+
+ fun policies(policies: FlightsV3HotelPolicies) = apply { this.policies = policies }
+
+ fun hotelAmenities(hotelAmenities: kotlin.collections.List) = apply { this.hotelAmenities = hotelAmenities }
+
+ fun roomAmenities(roomAmenities: kotlin.collections.List) = apply { this.roomAmenities = roomAmenities }
+
+ fun roomTypes(roomTypes: kotlin.collections.List) = apply { this.roomTypes = roomTypes }
+
+ fun media(media: kotlin.collections.List?) = apply { this.media = media }
+
+ fun accessibility(accessibility: kotlin.collections.List?) = apply { this.accessibility = accessibility }
+
+ fun build(): FlightsV3Hotel {
+ val instance =
+ FlightsV3Hotel(
+ id = id!!,
+ name = name!!,
+ localCurrencyCode = localCurrencyCode!!,
+ location = location!!,
+ distance = distance!!,
+ description = description!!,
+ status = status!!,
+ thumbnailUrl = thumbnailUrl!!,
+ starRating = starRating!!,
+ isOfficialRating = isOfficialRating!!,
+ guestRating = guestRating!!,
+ guestReviewCount = guestReviewCount!!,
+ links = links!!,
+ policies = policies!!,
+ hotelAmenities = hotelAmenities!!,
+ roomAmenities = roomAmenities!!,
+ roomTypes = roomTypes!!,
+ media = media,
+ accessibility = accessibility,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ id = id!!,
+ name = name!!,
+ localCurrencyCode = localCurrencyCode!!,
+ location = location!!,
+ distance = distance!!,
+ description = description!!,
+ status = status!!,
+ thumbnailUrl = thumbnailUrl!!,
+ starRating = starRating!!,
+ isOfficialRating = isOfficialRating!!,
+ guestRating = guestRating!!,
+ guestReviewCount = guestReviewCount!!,
+ links = links!!,
+ policies = policies!!,
+ hotelAmenities = hotelAmenities!!,
+ roomAmenities = roomAmenities!!,
+ roomTypes = roomTypes!!,
+ media = media,
+ accessibility = accessibility,
+ )
+
+ /**
+ * Indicates whether there are available offers at the property during the dates requested, as well as information as to why. Note that pricing will only be present in the API response for a status of 'AVAILABLE'. If there are no rooms available at the property for the dates requested, then 'NOT_AVAILABLE' will be returned. If there are available rooms, but none that meet the specific parameters of the search request, then one of the other messages will be returned
+ * Values: AVAILABLE,NOT_AVAILABLE,ERROR,NUMBER_OF_ADULTS_NOT_ACCEPTED,NUMBER_OF_CHILDREN_NOT_ACCEPTED,NUMBER_OF_INFANTS_NOT_ACCEPTED,NUMBER_OF_PERSONS_NOT_ACCEPTED,CHECK_IN_AGE_NOT_ACCEPTED
+ */
+ enum class Status(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("AVAILABLE")
+ AVAILABLE("AVAILABLE"),
+
+ @JsonProperty("NOT_AVAILABLE")
+ NOT_AVAILABLE("NOT_AVAILABLE"),
+
+ @JsonProperty("ERROR")
+ ERROR("ERROR"),
+
+ @JsonProperty("NUMBER_OF_ADULTS_NOT_ACCEPTED")
+ NUMBER_OF_ADULTS_NOT_ACCEPTED("NUMBER_OF_ADULTS_NOT_ACCEPTED"),
+
+ @JsonProperty("NUMBER_OF_CHILDREN_NOT_ACCEPTED")
+ NUMBER_OF_CHILDREN_NOT_ACCEPTED("NUMBER_OF_CHILDREN_NOT_ACCEPTED"),
+
+ @JsonProperty("NUMBER_OF_INFANTS_NOT_ACCEPTED")
+ NUMBER_OF_INFANTS_NOT_ACCEPTED("NUMBER_OF_INFANTS_NOT_ACCEPTED"),
+
+ @JsonProperty("NUMBER_OF_PERSONS_NOT_ACCEPTED")
+ NUMBER_OF_PERSONS_NOT_ACCEPTED("NUMBER_OF_PERSONS_NOT_ACCEPTED"),
+
+ @JsonProperty("CHECK_IN_AGE_NOT_ACCEPTED")
+ CHECK_IN_AGE_NOT_ACCEPTED("CHECK_IN_AGE_NOT_ACCEPTED"),
+ }
+
+ /**
+ * Star rating value of the hotel property.
+ * Values: _1_PERIOD0,_1_PERIOD5,_2_PERIOD0,_2_PERIOD5,_3_PERIOD0,_3_PERIOD5,_4_PERIOD0,_4_PERIOD5,_5_PERIOD0
+ */
+ enum class StarRating(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("1.0")
+ _1_PERIOD0("1.0"),
+
+ @JsonProperty("1.5")
+ _1_PERIOD5("1.5"),
+
+ @JsonProperty("2.0")
+ _2_PERIOD0("2.0"),
+
+ @JsonProperty("2.5")
+ _2_PERIOD5("2.5"),
+
+ @JsonProperty("3.0")
+ _3_PERIOD0("3.0"),
+
+ @JsonProperty("3.5")
+ _3_PERIOD5("3.5"),
+
+ @JsonProperty("4.0")
+ _4_PERIOD0("4.0"),
+
+ @JsonProperty("4.5")
+ _4_PERIOD5("4.5"),
+
+ @JsonProperty("5.0")
+ _5_PERIOD0("5.0"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3HotelLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3HotelLocation.kt
new file mode 100644
index 000000000..d418b410b
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3HotelLocation.kt
@@ -0,0 +1,78 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Address
+import com.expediagroup.sdk.xap.models.FlightsV3GeoLocation
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Hotel address information
+ * @param address
+ * @param pointOfInterest
+ * @param geoLocation
+ */
+data class FlightsV3HotelLocation(
+ @JsonProperty("Address")
+ val address: FlightsV3Address,
+ @JsonProperty("PointOfInterest")
+ val pointOfInterest: kotlin.String,
+ @JsonProperty("GeoLocation")
+ val geoLocation: FlightsV3GeoLocation,
+) {
+ init {
+ require(address != null) { "address must not be null" }
+
+ require(pointOfInterest != null) { "pointOfInterest must not be null" }
+
+ require(geoLocation != null) { "geoLocation must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var address: FlightsV3Address? = null,
+ private var pointOfInterest: kotlin.String? = null,
+ private var geoLocation: FlightsV3GeoLocation? = null,
+ ) {
+ fun address(address: FlightsV3Address) = apply { this.address = address }
+
+ fun pointOfInterest(pointOfInterest: kotlin.String) = apply { this.pointOfInterest = pointOfInterest }
+
+ fun geoLocation(geoLocation: FlightsV3GeoLocation) = apply { this.geoLocation = geoLocation }
+
+ fun build(): FlightsV3HotelLocation {
+ val instance =
+ FlightsV3HotelLocation(
+ address = address!!,
+ pointOfInterest = pointOfInterest!!,
+ geoLocation = geoLocation!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ address = address!!,
+ pointOfInterest = pointOfInterest!!,
+ geoLocation = geoLocation!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3HotelPolicies.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3HotelPolicies.kt
new file mode 100644
index 000000000..44c687f63
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3HotelPolicies.kt
@@ -0,0 +1,92 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Hotel policy information.
+ * @param checkInStartTime Beginning of the standard check-in window on the check in date, stated in the local time of the property.
+ * @param checkInEndTime End of the standard check-in window on the check in date, stated in the local time of the property.
+ * @param checkOutTime Customers must check out before this time on the check out date, expressed in the local time of the property.
+ * @param petPolicies The policy of the property toward having pets stay with guests.
+ * @param childrenAndExtraBedsPolicies The policy of the property for having children stay at the property, as well as for including extra beds in the room.
+ */
+data class FlightsV3HotelPolicies(
+ // Beginning of the standard check-in window on the check in date, stated in the local time of the property.
+ @JsonProperty("CheckInStartTime")
+ val checkInStartTime: kotlin.String? = null,
+ // End of the standard check-in window on the check in date, stated in the local time of the property.
+ @JsonProperty("CheckInEndTime")
+ val checkInEndTime: kotlin.String? = null,
+ // Customers must check out before this time on the check out date, expressed in the local time of the property.
+ @JsonProperty("CheckOutTime")
+ val checkOutTime: kotlin.String? = null,
+ // The policy of the property toward having pets stay with guests.
+ @JsonProperty("PetPolicies")
+ val petPolicies: kotlin.collections.List? = null,
+ // The policy of the property for having children stay at the property, as well as for including extra beds in the room.
+ @JsonProperty("ChildrenAndExtraBedsPolicies")
+ val childrenAndExtraBedsPolicies: kotlin.collections.List? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var checkInStartTime: kotlin.String? = null,
+ private var checkInEndTime: kotlin.String? = null,
+ private var checkOutTime: kotlin.String? = null,
+ private var petPolicies: kotlin.collections.List? = null,
+ private var childrenAndExtraBedsPolicies: kotlin.collections.List? = null,
+ ) {
+ fun checkInStartTime(checkInStartTime: kotlin.String?) = apply { this.checkInStartTime = checkInStartTime }
+
+ fun checkInEndTime(checkInEndTime: kotlin.String?) = apply { this.checkInEndTime = checkInEndTime }
+
+ fun checkOutTime(checkOutTime: kotlin.String?) = apply { this.checkOutTime = checkOutTime }
+
+ fun petPolicies(petPolicies: kotlin.collections.List?) = apply { this.petPolicies = petPolicies }
+
+ fun childrenAndExtraBedsPolicies(childrenAndExtraBedsPolicies: kotlin.collections.List?) = apply { this.childrenAndExtraBedsPolicies = childrenAndExtraBedsPolicies }
+
+ fun build(): FlightsV3HotelPolicies {
+ val instance =
+ FlightsV3HotelPolicies(
+ checkInStartTime = checkInStartTime,
+ checkInEndTime = checkInEndTime,
+ checkOutTime = checkOutTime,
+ petPolicies = petPolicies,
+ childrenAndExtraBedsPolicies = childrenAndExtraBedsPolicies,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ checkInStartTime = checkInStartTime,
+ checkInEndTime = checkInEndTime,
+ checkOutTime = checkOutTime,
+ petPolicies = petPolicies,
+ childrenAndExtraBedsPolicies = childrenAndExtraBedsPolicies,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Link.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Link.kt
new file mode 100644
index 000000000..2e200a10c
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Link.kt
@@ -0,0 +1,77 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for deeplink URL information.
+ * @param method HTTP method to connect.
+ * @param href HATEOAS URL to fetch details.
+ * @param accept Accept header.
+ */
+data class FlightsV3Link(
+ // HTTP method to connect.
+ @JsonProperty("Method")
+ val method: kotlin.String,
+ // HATEOAS URL to fetch details.
+ @JsonProperty("Href")
+ val href: kotlin.String,
+ // Accept header.
+ @JsonProperty("Accept")
+ val accept: kotlin.String? = null,
+) {
+ init {
+ require(method != null) { "method must not be null" }
+
+ require(href != null) { "href must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var method: kotlin.String? = null,
+ private var href: kotlin.String? = null,
+ private var accept: kotlin.String? = null,
+ ) {
+ fun method(method: kotlin.String) = apply { this.method = method }
+
+ fun href(href: kotlin.String) = apply { this.href = href }
+
+ fun accept(accept: kotlin.String?) = apply { this.accept = accept }
+
+ fun build(): FlightsV3Link {
+ val instance =
+ FlightsV3Link(
+ method = method!!,
+ href = href!!,
+ accept = accept,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ method = method!!,
+ href = href!!,
+ accept = accept,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Location.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Location.kt
new file mode 100644
index 000000000..5cf7748ab
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Location.kt
@@ -0,0 +1,110 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Country
+import com.expediagroup.sdk.xap.models.FlightsV3GeoLocation
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for list of possible locations that could be used to disambiguate the query.
+ * @param type The type of location code (MULTICITY | METROCODE).
+ * @param id Expedia Region ID of the specified airport.
+ * @param name Location Name
+ * @param code Location Code
+ * @param address Street address of the location (if available)
+ * @param geoLocation
+ * @param country
+ */
+data class FlightsV3Location(
+ // The type of location code (MULTICITY | METROCODE).
+ @JsonProperty("Type")
+ val type: kotlin.String? = null,
+ // Expedia Region ID of the specified airport.
+ @JsonProperty("Id")
+ val id: kotlin.String? = null,
+ // Location Name
+ @JsonProperty("Name")
+ val name: kotlin.String? = null,
+ // Location Code
+ @JsonProperty("Code")
+ val code: kotlin.String? = null,
+ // Street address of the location (if available)
+ @JsonProperty("Address")
+ val address: kotlin.String? = null,
+ @JsonProperty("GeoLocation")
+ val geoLocation: FlightsV3GeoLocation? = null,
+ @JsonProperty("Country")
+ val country: FlightsV3Country? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var type: kotlin.String? = null,
+ private var id: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ private var code: kotlin.String? = null,
+ private var address: kotlin.String? = null,
+ private var geoLocation: FlightsV3GeoLocation? = null,
+ private var country: FlightsV3Country? = null,
+ ) {
+ fun type(type: kotlin.String?) = apply { this.type = type }
+
+ fun id(id: kotlin.String?) = apply { this.id = id }
+
+ fun name(name: kotlin.String?) = apply { this.name = name }
+
+ fun code(code: kotlin.String?) = apply { this.code = code }
+
+ fun address(address: kotlin.String?) = apply { this.address = address }
+
+ fun geoLocation(geoLocation: FlightsV3GeoLocation?) = apply { this.geoLocation = geoLocation }
+
+ fun country(country: FlightsV3Country?) = apply { this.country = country }
+
+ fun build(): FlightsV3Location {
+ val instance =
+ FlightsV3Location(
+ type = type,
+ id = id,
+ name = name,
+ code = code,
+ address = address,
+ geoLocation = geoLocation,
+ country = country,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ type = type,
+ id = id,
+ name = name,
+ code = code,
+ address = address,
+ geoLocation = geoLocation,
+ country = country,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3LocationOption.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3LocationOption.kt
new file mode 100644
index 000000000..675015fd3
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3LocationOption.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Location
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * List for possible locations from which the customer must choose the best one to be re-submitted in the request.
+ * @param requestedLocation Location used in partner request.
+ * @param locations Container for list of possible locations that could be used to disambiguate the query.
+ */
+data class FlightsV3LocationOption(
+ // Location used in partner request.
+ @JsonProperty("RequestedLocation")
+ val requestedLocation: kotlin.String,
+ // Container for list of possible locations that could be used to disambiguate the query.
+ @JsonProperty("Locations")
+ val locations: kotlin.collections
+ .List<
+ FlightsV3Location,
+ >,
+) {
+ init {
+ require(requestedLocation != null) { "requestedLocation must not be null" }
+
+ require(locations != null) { "locations must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var requestedLocation: kotlin.String? = null,
+ private var locations: kotlin.collections.List? = null,
+ ) {
+ fun requestedLocation(requestedLocation: kotlin.String) = apply { this.requestedLocation = requestedLocation }
+
+ fun locations(locations: kotlin.collections.List) = apply { this.locations = locations }
+
+ fun build(): FlightsV3LocationOption {
+ val instance =
+ FlightsV3LocationOption(
+ requestedLocation = requestedLocation!!,
+ locations = locations!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ requestedLocation = requestedLocation!!,
+ locations = locations!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3LodgingAmenity.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3LodgingAmenity.kt
new file mode 100644
index 000000000..dfaf7c639
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3LodgingAmenity.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * The amenities of the rateplan.
+ * @param id The identification of a property amenity.
+ * @param name The description of a property amenity.
+ */
+data class FlightsV3LodgingAmenity(
+ // The identification of a property amenity.
+ @JsonProperty("Id")
+ val id: kotlin.String,
+ // The description of a property amenity.
+ @JsonProperty("Name")
+ val name: kotlin.String,
+) {
+ init {
+ require(id != null) { "id must not be null" }
+
+ require(name != null) { "name must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var id: kotlin.String? = null,
+ private var name: kotlin.String? = null,
+ ) {
+ fun id(id: kotlin.String) = apply { this.id = id }
+
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun build(): FlightsV3LodgingAmenity {
+ val instance =
+ FlightsV3LodgingAmenity(
+ id = id!!,
+ name = name!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ id = id!!,
+ name = name!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Media.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Media.kt
new file mode 100644
index 000000000..c33e8688a
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Media.kt
@@ -0,0 +1,83 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for hotel images
+ * @param type type of the media. So far there is only one option: 1: Image
+ * @param title Image title
+ * @param propertySize Image size You can find a link to the complete list of Supported Images Sizes in the Related Links section at the bottom of the page.
+ * @param url Image URL
+ */
+data class FlightsV3Media(
+ // type of the media. So far there is only one option: 1: Image
+ @JsonProperty("Type")
+ val type: kotlin.String? = null,
+ // Image title
+ @JsonProperty("Title")
+ val title: kotlin.String? = null,
+ // Image size You can find a link to the complete list of Supported Images Sizes in the Related Links section at the bottom of the page.
+ @JsonProperty("Size")
+ val propertySize: kotlin.String? = null,
+ // Image URL
+ @JsonProperty("Url")
+ val url: kotlin.String? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var type: kotlin.String? = null,
+ private var title: kotlin.String? = null,
+ private var propertySize: kotlin.String? = null,
+ private var url: kotlin.String? = null,
+ ) {
+ fun type(type: kotlin.String?) = apply { this.type = type }
+
+ fun title(title: kotlin.String?) = apply { this.title = title }
+
+ fun propertySize(propertySize: kotlin.String?) = apply { this.propertySize = propertySize }
+
+ fun url(url: kotlin.String?) = apply { this.url = url }
+
+ fun build(): FlightsV3Media {
+ val instance =
+ FlightsV3Media(
+ type = type,
+ title = title,
+ propertySize = propertySize,
+ url = url,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ type = type,
+ title = title,
+ propertySize = propertySize,
+ url = url,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Money.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Money.kt
new file mode 100644
index 000000000..b9a97491c
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Money.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for price information.
+ * @param `value` The value of the element being defined.
+ * @param currency The ISO 4217 Currency Code that the value is expressed in.
+ */
+data class FlightsV3Money(
+ // The value of the element being defined.
+ @JsonProperty("Value")
+ val `value`: kotlin.String,
+ // The ISO 4217 Currency Code that the value is expressed in.
+ @JsonProperty("Currency")
+ val currency: kotlin.String,
+) {
+ init {
+ require(`value` != null) { "`value` must not be null" }
+
+ require(currency != null) { "currency must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun build(): FlightsV3Money {
+ val instance =
+ FlightsV3Money(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Occupant.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Occupant.kt
new file mode 100644
index 000000000..4607f0cfc
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Occupant.kt
@@ -0,0 +1,65 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container of occupants. It is an array including occupants of each room.
+ * @param adults The number of adults in a room.
+ * @param childAges The ages of children in a room.
+ */
+data class FlightsV3Occupant(
+ // The number of adults in a room.
+ @JsonProperty("Adults")
+ val adults: kotlin.Int? = null,
+ // The ages of children in a room.
+ @JsonProperty("ChildAges")
+ val childAges: kotlin.collections.List? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var adults: kotlin.Int? = null,
+ private var childAges: kotlin.collections.List? = null,
+ ) {
+ fun adults(adults: kotlin.Int?) = apply { this.adults = adults }
+
+ fun childAges(childAges: kotlin.collections.List?) = apply { this.childAges = childAges }
+
+ fun build(): FlightsV3Occupant {
+ val instance =
+ FlightsV3Occupant(
+ adults = adults,
+ childAges = childAges,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ adults = adults,
+ childAges = childAges,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Offer.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Offer.kt
new file mode 100644
index 000000000..48c66b191
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Offer.kt
@@ -0,0 +1,189 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Link
+import com.expediagroup.sdk.xap.models.FlightsV3OfferRefundPenaltyInner
+import com.expediagroup.sdk.xap.models.OfferPrice
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for list of air offers. An offer gives total trip details including flight and pricing information.
+ * @param splitTicket True if more that one ticket will be issued for this offer per passenger. False if only one ticket will be issued per passenger.
+ * @param links Container for deeplink URL information.
+ * @param segmentIds Container for list of segment ids in a particular offer. For Opaque flight, no segment will be present.
+ * @param offerPrice
+ * @param refundable True if flight is refundable, False if it's not refundable.
+ * @param international True, if flight is international. False, if flight departs and arrives within the same country
+ * @param offerToken Unique key to identify each offer.
+ * @param referenceId Unique key to identify matching private fares.
+ * @param metaApiBook To indicate meta partners whether the air product is available for TAAS instant book.
+ * @param opaqueFlight Indicate whether the air product is a opaque flight product or not. If true, then there will be no Segments node for this air product.
+ * @param free24HourCancellation True if Booking can be cancelled within 24 hours of booking.
+ * @param vfopKey Key generated for Valid form of payment
+ * @param refundPenalty Contains refund penalty information
+ * @param ticketType Type of ticket being issued
+ */
+data class FlightsV3Offer(
+ // True if more that one ticket will be issued for this offer per passenger. False if only one ticket will be issued per passenger.
+ @JsonProperty("SplitTicket")
+ val splitTicket: kotlin.Boolean,
+ // Container for deeplink URL information.
+ @JsonProperty("Links")
+ val links: kotlin.collections.Map,
+ // Container for list of segment ids in a particular offer. For Opaque flight, no segment will be present.
+ @JsonProperty("SegmentIds")
+ val segmentIds: kotlin.collections
+ .List<
+ kotlin.String,
+ >,
+ @JsonProperty("OfferPrice")
+ val offerPrice: OfferPrice,
+ // True if flight is refundable, False if it's not refundable.
+ @JsonProperty("Refundable")
+ val refundable: kotlin.Boolean,
+ // True, if flight is international. False, if flight departs and arrives within the same country
+ @JsonProperty("International")
+ val international: kotlin.Boolean,
+ // Unique key to identify each offer.
+ @JsonProperty("offerToken")
+ val offerToken: kotlin.String? = null,
+ // Unique key to identify matching private fares.
+ @JsonProperty("ReferenceId")
+ val referenceId: kotlin.String? = null,
+ // To indicate meta partners whether the air product is available for TAAS instant book.
+ @JsonProperty("MetaApiBook")
+ val metaApiBook: kotlin.Boolean? = null,
+ // Indicate whether the air product is a opaque flight product or not. If true, then there will be no Segments node for this air product.
+ @JsonProperty("OpaqueFlight")
+ val opaqueFlight: kotlin.Boolean? = null,
+ // True if Booking can be cancelled within 24 hours of booking.
+ @JsonProperty("Free24HourCancellation")
+ val free24HourCancellation: kotlin.Boolean? = null,
+ // Key generated for Valid form of payment
+ @JsonProperty("VfopKey")
+ val vfopKey: kotlin.String? = null,
+ // Contains refund penalty information
+ @JsonProperty("RefundPenalty")
+ val refundPenalty: kotlin.collections.List? = null,
+ // Type of ticket being issued
+ @JsonProperty("TicketType")
+ val ticketType: kotlin.String? = null,
+) {
+ init {
+ require(splitTicket != null) { "splitTicket must not be null" }
+
+ require(links != null) { "links must not be null" }
+
+ require(segmentIds != null) { "segmentIds must not be null" }
+
+ require(offerPrice != null) { "offerPrice must not be null" }
+
+ require(refundable != null) { "refundable must not be null" }
+
+ require(international != null) { "international must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var splitTicket: kotlin.Boolean? = null,
+ private var links: kotlin.collections.Map? = null,
+ private var segmentIds: kotlin.collections.List? = null,
+ private var offerPrice: OfferPrice? = null,
+ private var refundable: kotlin.Boolean? = null,
+ private var international: kotlin.Boolean? = null,
+ private var offerToken: kotlin.String? = null,
+ private var referenceId: kotlin.String? = null,
+ private var metaApiBook: kotlin.Boolean? = null,
+ private var opaqueFlight: kotlin.Boolean? = null,
+ private var free24HourCancellation: kotlin.Boolean? = null,
+ private var vfopKey: kotlin.String? = null,
+ private var refundPenalty: kotlin.collections.List? = null,
+ private var ticketType: kotlin.String? = null,
+ ) {
+ fun splitTicket(splitTicket: kotlin.Boolean) = apply { this.splitTicket = splitTicket }
+
+ fun links(links: kotlin.collections.Map) = apply { this.links = links }
+
+ fun segmentIds(segmentIds: kotlin.collections.List) = apply { this.segmentIds = segmentIds }
+
+ fun offerPrice(offerPrice: OfferPrice) = apply { this.offerPrice = offerPrice }
+
+ fun refundable(refundable: kotlin.Boolean) = apply { this.refundable = refundable }
+
+ fun international(international: kotlin.Boolean) = apply { this.international = international }
+
+ fun offerToken(offerToken: kotlin.String?) = apply { this.offerToken = offerToken }
+
+ fun referenceId(referenceId: kotlin.String?) = apply { this.referenceId = referenceId }
+
+ fun metaApiBook(metaApiBook: kotlin.Boolean?) = apply { this.metaApiBook = metaApiBook }
+
+ fun opaqueFlight(opaqueFlight: kotlin.Boolean?) = apply { this.opaqueFlight = opaqueFlight }
+
+ fun free24HourCancellation(free24HourCancellation: kotlin.Boolean?) = apply { this.free24HourCancellation = free24HourCancellation }
+
+ fun vfopKey(vfopKey: kotlin.String?) = apply { this.vfopKey = vfopKey }
+
+ fun refundPenalty(refundPenalty: kotlin.collections.List?) = apply { this.refundPenalty = refundPenalty }
+
+ fun ticketType(ticketType: kotlin.String?) = apply { this.ticketType = ticketType }
+
+ fun build(): FlightsV3Offer {
+ val instance =
+ FlightsV3Offer(
+ splitTicket = splitTicket!!,
+ links = links!!,
+ segmentIds = segmentIds!!,
+ offerPrice = offerPrice!!,
+ refundable = refundable!!,
+ international = international!!,
+ offerToken = offerToken,
+ referenceId = referenceId,
+ metaApiBook = metaApiBook,
+ opaqueFlight = opaqueFlight,
+ free24HourCancellation = free24HourCancellation,
+ vfopKey = vfopKey,
+ refundPenalty = refundPenalty,
+ ticketType = ticketType,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ splitTicket = splitTicket!!,
+ links = links!!,
+ segmentIds = segmentIds!!,
+ offerPrice = offerPrice!!,
+ refundable = refundable!!,
+ international = international!!,
+ offerToken = offerToken,
+ referenceId = referenceId,
+ metaApiBook = metaApiBook,
+ opaqueFlight = opaqueFlight,
+ free24HourCancellation = free24HourCancellation,
+ vfopKey = vfopKey,
+ refundPenalty = refundPenalty,
+ ticketType = ticketType,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInner.kt
new file mode 100644
index 000000000..1d5c9ffe5
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3OfferRefundPenaltyInnerRefundPenalty
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param refundPenalty
+ */
+data class FlightsV3OfferRefundPenaltyInner(
+ @JsonProperty("RefundPenalty")
+ val refundPenalty: FlightsV3OfferRefundPenaltyInnerRefundPenalty? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var refundPenalty: FlightsV3OfferRefundPenaltyInnerRefundPenalty? = null,
+ ) {
+ fun refundPenalty(refundPenalty: FlightsV3OfferRefundPenaltyInnerRefundPenalty?) = apply { this.refundPenalty = refundPenalty }
+
+ fun build(): FlightsV3OfferRefundPenaltyInner {
+ val instance =
+ FlightsV3OfferRefundPenaltyInner(
+ refundPenalty = refundPenalty,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ refundPenalty = refundPenalty,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInnerRefundPenalty.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInnerRefundPenalty.kt
new file mode 100644
index 000000000..92cf48a9d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3OfferRefundPenaltyInnerRefundPenalty.kt
@@ -0,0 +1,69 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.RefundPenaltyDetail
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Contains refund penalty information
+ * @param segmentIds Contains a list of segment Ids
+ * @param preTripChange
+ */
+data class FlightsV3OfferRefundPenaltyInnerRefundPenalty(
+ // Contains a list of segment Ids
+ @JsonProperty("SegmentIds")
+ val segmentIds: kotlin.collections
+ .List<
+ kotlin.String,
+ >,
+ @JsonProperty("PreTripChange")
+ val preTripChange: RefundPenaltyDetail? = null,
+) {
+ init {
+ require(segmentIds != null) { "segmentIds must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var segmentIds: kotlin.collections.List? = null,
+ private var preTripChange: RefundPenaltyDetail? = null,
+ ) {
+ fun segmentIds(segmentIds: kotlin.collections.List) = apply { this.segmentIds = segmentIds }
+
+ fun preTripChange(preTripChange: RefundPenaltyDetail?) = apply { this.preTripChange = preTripChange }
+
+ fun build(): FlightsV3OfferRefundPenaltyInnerRefundPenalty {
+ val instance =
+ FlightsV3OfferRefundPenaltyInnerRefundPenalty(
+ segmentIds = segmentIds!!,
+ preTripChange = preTripChange,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ segmentIds = segmentIds!!,
+ preTripChange = preTripChange,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Promotion.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Promotion.kt
new file mode 100644
index 000000000..2b77b03b2
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Promotion.kt
@@ -0,0 +1,73 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param type Promotion type, possible values: PO | FN
+ * @param description The description of the promotion.
+ * @param `value`
+ */
+data class FlightsV3Promotion(
+ // Promotion type, possible values: PO | FN
+ @JsonProperty("Type")
+ val type: kotlin.String? = null,
+ // The description of the promotion.
+ @JsonProperty("Description")
+ val description: kotlin.String? = null,
+ @JsonProperty("Value")
+ val `value`: kotlin.Double? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var type: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ private var `value`: kotlin.Double? = null,
+ ) {
+ fun type(type: kotlin.String?) = apply { this.type = type }
+
+ fun description(description: kotlin.String?) = apply { this.description = description }
+
+ fun `value`(`value`: kotlin.Double?) = apply { this.`value` = `value` }
+
+ fun build(): FlightsV3Promotion {
+ val instance =
+ FlightsV3Promotion(
+ type = type,
+ description = description,
+ `value` = `value`,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ type = type,
+ description = description,
+ `value` = `value`,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RatePlan.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RatePlan.kt
new file mode 100644
index 000000000..e7044dc68
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RatePlan.kt
@@ -0,0 +1,179 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3LodgingAmenity
+import com.expediagroup.sdk.xap.models.FlightsV3StayDates
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for rate plan information.
+ * @param roomTypeId The room type identifier.
+ * @param ratePlanId The rate plan identifier.
+ * @param inventorySourceId The identification number of the source that provides the rate plan.
+ * @param rateRuleId The identifier of rate rule.
+ * @param inventorySourceCode The source name that provided the rate plan.
+ * @param stayDates
+ * @param remainingCount The number of rooms remaining through Expedia for this room type. NOTE: This value does NOT represent the total number of rooms remaining at the hotel property, only the number of rooms allocated to Expedia for sale by the property that currently remain in Expedia's inventory. When a hotel is listed as 'sold out' by Expedia there may still be rooms available for sale by the hotel through other channels. CMA Compliance Note (UK): websites in the UK that display remainingCount should make it clear to consumers that this count refers to the number of rooms remaining within Expedia inventory - NOT the number remaining at the property.
+ * @param freeInternet Indicates whether the price of the room includes free Internet. (either wireless or wired)
+ * @param freeWiFi Indicates whether the price of the room includes free wireless Internet access.
+ * @param freeInternetDetails The localized details for the free internet amenity (only shown when FreeInternet = true).
+ * @param freeParking Indicates whether the price of the room includes free parking.
+ * @param freeBreakfast Indicates whether the price of the room includes free breakfast.
+ * @param freeBreakfastDetails The localized details for the free breakfast amenity (only shown when FreeBreakfast = true).
+ * @param amenities The amenities of the rateplan.
+ */
+data class FlightsV3RatePlan(
+ // The room type identifier.
+ @JsonProperty("RoomTypeId")
+ val roomTypeId: kotlin.String,
+ // The rate plan identifier.
+ @JsonProperty("RatePlanId")
+ val ratePlanId: kotlin.String,
+ // The identification number of the source that provides the rate plan.
+ @JsonProperty("InventorySourceId")
+ val inventorySourceId: kotlin.String,
+ // The identifier of rate rule.
+ @JsonProperty("RateRuleId")
+ val rateRuleId: kotlin.String? = null,
+ // The source name that provided the rate plan.
+ @JsonProperty("InventorySourceCode")
+ val inventorySourceCode: kotlin.String? = null,
+ @JsonProperty("StayDates")
+ val stayDates: FlightsV3StayDates? = null,
+ // The number of rooms remaining through Expedia for this room type. NOTE: This value does NOT represent the total number of rooms remaining at the hotel property, only the number of rooms allocated to Expedia for sale by the property that currently remain in Expedia's inventory. When a hotel is listed as 'sold out' by Expedia there may still be rooms available for sale by the hotel through other channels. CMA Compliance Note (UK): websites in the UK that display remainingCount should make it clear to consumers that this count refers to the number of rooms remaining within Expedia inventory - NOT the number remaining at the property.
+ @JsonProperty("RemainingCount")
+ val remainingCount: kotlin.Int? = null,
+ // Indicates whether the price of the room includes free Internet. (either wireless or wired)
+ @JsonProperty("FreeInternet")
+ val freeInternet: kotlin.Boolean? = null,
+ // Indicates whether the price of the room includes free wireless Internet access.
+ @JsonProperty("FreeWiFi")
+ val freeWiFi: kotlin.Boolean? = null,
+ // The localized details for the free internet amenity (only shown when FreeInternet = true).
+ @JsonProperty("FreeInternetDetails")
+ val freeInternetDetails: kotlin.collections.List? = null,
+ // Indicates whether the price of the room includes free parking.
+ @JsonProperty("FreeParking")
+ val freeParking: kotlin.Boolean? = null,
+ // Indicates whether the price of the room includes free breakfast.
+ @JsonProperty("FreeBreakfast")
+ val freeBreakfast: kotlin.Boolean? = null,
+ // The localized details for the free breakfast amenity (only shown when FreeBreakfast = true).
+ @JsonProperty("FreeBreakfastDetails")
+ val freeBreakfastDetails: kotlin.collections.List? = null,
+ // The amenities of the rateplan.
+ @JsonProperty("Amenities")
+ val amenities: kotlin.collections.List? = null,
+) {
+ init {
+ require(roomTypeId != null) { "roomTypeId must not be null" }
+
+ require(ratePlanId != null) { "ratePlanId must not be null" }
+
+ require(inventorySourceId != null) { "inventorySourceId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var roomTypeId: kotlin.String? = null,
+ private var ratePlanId: kotlin.String? = null,
+ private var inventorySourceId: kotlin.String? = null,
+ private var rateRuleId: kotlin.String? = null,
+ private var inventorySourceCode: kotlin.String? = null,
+ private var stayDates: FlightsV3StayDates? = null,
+ private var remainingCount: kotlin.Int? = null,
+ private var freeInternet: kotlin.Boolean? = null,
+ private var freeWiFi: kotlin.Boolean? = null,
+ private var freeInternetDetails: kotlin.collections.List? = null,
+ private var freeParking: kotlin.Boolean? = null,
+ private var freeBreakfast: kotlin.Boolean? = null,
+ private var freeBreakfastDetails: kotlin.collections.List? = null,
+ private var amenities: kotlin.collections.List? = null,
+ ) {
+ fun roomTypeId(roomTypeId: kotlin.String) = apply { this.roomTypeId = roomTypeId }
+
+ fun ratePlanId(ratePlanId: kotlin.String) = apply { this.ratePlanId = ratePlanId }
+
+ fun inventorySourceId(inventorySourceId: kotlin.String) = apply { this.inventorySourceId = inventorySourceId }
+
+ fun rateRuleId(rateRuleId: kotlin.String?) = apply { this.rateRuleId = rateRuleId }
+
+ fun inventorySourceCode(inventorySourceCode: kotlin.String?) = apply { this.inventorySourceCode = inventorySourceCode }
+
+ fun stayDates(stayDates: FlightsV3StayDates?) = apply { this.stayDates = stayDates }
+
+ fun remainingCount(remainingCount: kotlin.Int?) = apply { this.remainingCount = remainingCount }
+
+ fun freeInternet(freeInternet: kotlin.Boolean?) = apply { this.freeInternet = freeInternet }
+
+ fun freeWiFi(freeWiFi: kotlin.Boolean?) = apply { this.freeWiFi = freeWiFi }
+
+ fun freeInternetDetails(freeInternetDetails: kotlin.collections.List?) = apply { this.freeInternetDetails = freeInternetDetails }
+
+ fun freeParking(freeParking: kotlin.Boolean?) = apply { this.freeParking = freeParking }
+
+ fun freeBreakfast(freeBreakfast: kotlin.Boolean?) = apply { this.freeBreakfast = freeBreakfast }
+
+ fun freeBreakfastDetails(freeBreakfastDetails: kotlin.collections.List?) = apply { this.freeBreakfastDetails = freeBreakfastDetails }
+
+ fun amenities(amenities: kotlin.collections.List?) = apply { this.amenities = amenities }
+
+ fun build(): FlightsV3RatePlan {
+ val instance =
+ FlightsV3RatePlan(
+ roomTypeId = roomTypeId!!,
+ ratePlanId = ratePlanId!!,
+ inventorySourceId = inventorySourceId!!,
+ rateRuleId = rateRuleId,
+ inventorySourceCode = inventorySourceCode,
+ stayDates = stayDates,
+ remainingCount = remainingCount,
+ freeInternet = freeInternet,
+ freeWiFi = freeWiFi,
+ freeInternetDetails = freeInternetDetails,
+ freeParking = freeParking,
+ freeBreakfast = freeBreakfast,
+ freeBreakfastDetails = freeBreakfastDetails,
+ amenities = amenities,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ roomTypeId = roomTypeId!!,
+ ratePlanId = ratePlanId!!,
+ inventorySourceId = inventorySourceId!!,
+ rateRuleId = rateRuleId,
+ inventorySourceCode = inventorySourceCode,
+ stayDates = stayDates,
+ remainingCount = remainingCount,
+ freeInternet = freeInternet,
+ freeWiFi = freeWiFi,
+ freeInternetDetails = freeInternetDetails,
+ freeParking = freeParking,
+ freeBreakfast = freeBreakfast,
+ freeBreakfastDetails = freeBreakfastDetails,
+ amenities = amenities,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RoomOccupancyPolicy.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RoomOccupancyPolicy.kt
new file mode 100644
index 000000000..9b53d3dfa
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RoomOccupancyPolicy.kt
@@ -0,0 +1,67 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3AgeClassRestriction
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Room occupancy policy.
+ * @param maxGuestCount The maximum number of guests allowed to stay in a room.
+ * @param ageClassRestrictions Container for room occupancy rules based on the age of the guests.
+ */
+data class FlightsV3RoomOccupancyPolicy(
+ // The maximum number of guests allowed to stay in a room.
+ @JsonProperty("MaxGuestCount")
+ val maxGuestCount: kotlin.Int,
+ // Container for room occupancy rules based on the age of the guests.
+ @JsonProperty("AgeClassRestrictions")
+ val ageClassRestrictions: kotlin.collections.List? = null,
+) {
+ init {
+ require(maxGuestCount != null) { "maxGuestCount must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var maxGuestCount: kotlin.Int? = null,
+ private var ageClassRestrictions: kotlin.collections.List? = null,
+ ) {
+ fun maxGuestCount(maxGuestCount: kotlin.Int) = apply { this.maxGuestCount = maxGuestCount }
+
+ fun ageClassRestrictions(ageClassRestrictions: kotlin.collections.List?) = apply { this.ageClassRestrictions = ageClassRestrictions }
+
+ fun build(): FlightsV3RoomOccupancyPolicy {
+ val instance =
+ FlightsV3RoomOccupancyPolicy(
+ maxGuestCount = maxGuestCount!!,
+ ageClassRestrictions = ageClassRestrictions,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ maxGuestCount = maxGuestCount!!,
+ ageClassRestrictions = ageClassRestrictions,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RoomType.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RoomType.kt
new file mode 100644
index 000000000..2bc559c25
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3RoomType.kt
@@ -0,0 +1,134 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3LodgingAmenity
+import com.expediagroup.sdk.xap.models.FlightsV3Media
+import com.expediagroup.sdk.xap.models.FlightsV3Promotion
+import com.expediagroup.sdk.xap.models.FlightsV3RatePlan
+import com.expediagroup.sdk.xap.models.FlightsV3RoomOccupancyPolicy
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param ratePlans Container for rate plan information.
+ * @param description Text description of the room type.
+ * @param promotions
+ * @param smokingOption The smoking options available for the room type. Options could be: SmokingOrNonSmoking Smoking NonSmoking
+ * @param roomOccupancyPolicy
+ * @param amenities Container for all room amenities.
+ * @param media Container for hotel images
+ */
+data class FlightsV3RoomType(
+ // Container for rate plan information.
+ @JsonProperty("RatePlans")
+ val ratePlans: kotlin.collections
+ .List<
+ FlightsV3RatePlan,
+ >,
+ // Text description of the room type.
+ @JsonProperty("Description")
+ val description: kotlin.String? = null,
+ @JsonProperty("Promotions")
+ val promotions: kotlin.collections.List? = null,
+ // The smoking options available for the room type. Options could be: SmokingOrNonSmoking Smoking NonSmoking
+ @JsonProperty("SmokingOption")
+ val smokingOption: FlightsV3RoomType.SmokingOption? = null,
+ @JsonProperty("RoomOccupancyPolicy")
+ val roomOccupancyPolicy: FlightsV3RoomOccupancyPolicy? = null,
+ // Container for all room amenities.
+ @JsonProperty("Amenities")
+ val amenities: kotlin.collections.List? = null,
+ // Container for hotel images
+ @JsonProperty("Media")
+ val media: kotlin.collections.List? = null,
+) {
+ init {
+ require(ratePlans != null) { "ratePlans must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var ratePlans: kotlin.collections.List? = null,
+ private var description: kotlin.String? = null,
+ private var promotions: kotlin.collections.List? = null,
+ private var smokingOption: FlightsV3RoomType.SmokingOption? = null,
+ private var roomOccupancyPolicy: FlightsV3RoomOccupancyPolicy? = null,
+ private var amenities: kotlin.collections.List? = null,
+ private var media: kotlin.collections.List? = null,
+ ) {
+ fun ratePlans(ratePlans: kotlin.collections.List) = apply { this.ratePlans = ratePlans }
+
+ fun description(description: kotlin.String?) = apply { this.description = description }
+
+ fun promotions(promotions: kotlin.collections.List?) = apply { this.promotions = promotions }
+
+ fun smokingOption(smokingOption: FlightsV3RoomType.SmokingOption?) = apply { this.smokingOption = smokingOption }
+
+ fun roomOccupancyPolicy(roomOccupancyPolicy: FlightsV3RoomOccupancyPolicy?) = apply { this.roomOccupancyPolicy = roomOccupancyPolicy }
+
+ fun amenities(amenities: kotlin.collections.List?) = apply { this.amenities = amenities }
+
+ fun media(media: kotlin.collections.List?) = apply { this.media = media }
+
+ fun build(): FlightsV3RoomType {
+ val instance =
+ FlightsV3RoomType(
+ ratePlans = ratePlans!!,
+ description = description,
+ promotions = promotions,
+ smokingOption = smokingOption,
+ roomOccupancyPolicy = roomOccupancyPolicy,
+ amenities = amenities,
+ media = media,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ ratePlans = ratePlans!!,
+ description = description,
+ promotions = promotions,
+ smokingOption = smokingOption,
+ roomOccupancyPolicy = roomOccupancyPolicy,
+ amenities = amenities,
+ media = media,
+ )
+
+ /**
+ * The smoking options available for the room type. Options could be: SmokingOrNonSmoking Smoking NonSmoking
+ * Values: SMOKING_OR_NON_SMOKING,SMOKING,NON_SMOKING
+ */
+ enum class SmokingOption(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("SmokingOrNonSmoking")
+ SMOKING_OR_NON_SMOKING("SmokingOrNonSmoking"),
+
+ @JsonProperty("Smoking")
+ SMOKING("Smoking"),
+
+ @JsonProperty("NonSmoking")
+ NON_SMOKING("NonSmoking"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3StayDates.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3StayDates.kt
new file mode 100644
index 000000000..11f3c1ff4
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3StayDates.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Dates of Stay information
+ * @param checkInDate The initial day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
+ * @param checkOutDate The final day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
+ */
+data class FlightsV3StayDates(
+ // The initial day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
+ @JsonProperty("CheckInDate")
+ val checkInDate: java.time.LocalDate,
+ // The final day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
+ @JsonProperty("CheckOutDate")
+ val checkOutDate: java.time.LocalDate,
+) {
+ init {
+ require(checkInDate != null) { "checkInDate must not be null" }
+
+ require(checkOutDate != null) { "checkOutDate must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var checkInDate: java.time.LocalDate? = null,
+ private var checkOutDate: java.time.LocalDate? = null,
+ ) {
+ fun checkInDate(checkInDate: java.time.LocalDate) = apply { this.checkInDate = checkInDate }
+
+ fun checkOutDate(checkOutDate: java.time.LocalDate) = apply { this.checkOutDate = checkOutDate }
+
+ fun build(): FlightsV3StayDates {
+ val instance =
+ FlightsV3StayDates(
+ checkInDate = checkInDate!!,
+ checkOutDate = checkOutDate!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ checkInDate = checkInDate!!,
+ checkOutDate = checkOutDate!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Warning.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Warning.kt
new file mode 100644
index 000000000..dea49d457
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FlightsV3Warning.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for warning messages.
+ * @param code Warning message code.
+ * @param description Warning message description
+ */
+data class FlightsV3Warning(
+ // Warning message code.
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Warning message description
+ @JsonProperty("Description")
+ val description: kotlin.String,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+
+ require(description != null) { "description must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun build(): FlightsV3Warning {
+ val instance =
+ FlightsV3Warning(
+ code = code!!,
+ description = description!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FuelAC.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FuelAC.kt
index 48ae5d7b1..f9c7e145d 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FuelAC.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/FuelAC.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Car fuel type and whether Air Conditioning is included. Please find list of Car Fuel AC Codes in https://expediaintegration.zendesk.com/hc/en-us/articles/115005378328
+ * Car fuel type and whether Air Conditioning is included. Please find list of Car Fuel AC Codes in https://expediaintegration.zendesk.com/hc/en-us/articles/115005378328
* @param code Car FuelAC code.
* @param `value` Car FuelAC value.
-*/
+ */
data class FuelAC(
// Car FuelAC code.
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GeoLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GeoLocation.kt
index 745ec5e72..07521d532 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GeoLocation.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GeoLocation.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for Geo location.
+ * Container for Geo location.
* @param latitude Latitude of the location.
* @param longitude Longitude of the location.
* @param obfuscated
-*/
+ */
data class GeoLocation(
// Latitude of the location.
@JsonProperty("Latitude")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400Response.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400Response.kt
new file mode 100644
index 000000000..299d8d7a6
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400Response.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param errors Container for error list.
+ * @param transactionId A unique identifier for the transaction.
+ */
+data class GetFlightFlexsearch400Response(
+ // Container for error list.
+ @JsonProperty("Errors")
+ val errors: kotlin.collections
+ .List<
+ GetFlightFlexsearch400ResponseErrorsInner,
+ >,
+ // A unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ val transactionId: kotlin.String,
+) {
+ init {
+ require(errors != null) { "errors must not be null" }
+
+ require(transactionId != null) { "transactionId must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var errors: kotlin.collections.List? = null,
+ private var transactionId: kotlin.String? = null,
+ ) {
+ fun errors(errors: kotlin.collections.List) = apply { this.errors = errors }
+
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun build(): GetFlightFlexsearch400Response {
+ val instance =
+ GetFlightFlexsearch400Response(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ errors = errors!!,
+ transactionId = transactionId!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInner.kt
new file mode 100644
index 000000000..9dc12354a
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerError
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param error
+ */
+data class GetFlightFlexsearch400ResponseErrorsInner(
+ @JsonProperty("Error")
+ val error: GetFlightFlexsearch400ResponseErrorsInnerError? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var error: GetFlightFlexsearch400ResponseErrorsInnerError? = null,
+ ) {
+ fun error(error: GetFlightFlexsearch400ResponseErrorsInnerError?) = apply { this.error = error }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInner {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInner(
+ error = error,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ error = error,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerError.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerError.kt
new file mode 100644
index 000000000..2d149eb51
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerError.kt
@@ -0,0 +1,67 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for error list.
+ * @param code Error code describing the issue
+ * @param locationOptions Container for list of matching locations corresponding to the value entered in the location keyword search.
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerError(
+ // Error code describing the issue
+ @JsonProperty("Code")
+ val code: kotlin.String,
+ // Container for list of matching locations corresponding to the value entered in the location keyword search.
+ @JsonProperty("LocationOptions")
+ val locationOptions: kotlin.collections.List? = null,
+) {
+ init {
+ require(code != null) { "code must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var locationOptions: kotlin.collections.List? = null,
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun locationOptions(locationOptions: kotlin.collections.List?) = apply { this.locationOptions = locationOptions }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerError {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerError(
+ code = code!!,
+ locationOptions = locationOptions,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ locationOptions = locationOptions,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner.kt
new file mode 100644
index 000000000..da83b0398
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param locationOption
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner(
+ @JsonProperty("LocationOption")
+ val locationOption: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var locationOption: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption? = null,
+ ) {
+ fun locationOption(locationOption: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption?) = apply { this.locationOption = locationOption }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInner(
+ locationOption = locationOption,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ locationOption = locationOption,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption.kt
new file mode 100644
index 000000000..a76acdf56
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption.kt
@@ -0,0 +1,72 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * List for possible locations from which the customer must choose the best one to be re-submitted in the request.
+ * @param requestedLocation Location used in partner request.
+ * @param locations Container for list of possible locations that could be used to disambiguate the query.
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption(
+ // Location used in partner request.
+ @JsonProperty("RequestedLocation")
+ val requestedLocation: kotlin.String,
+ // Container for list of possible locations that could be used to disambiguate the query.
+ @JsonProperty("Locations")
+ val locations: kotlin.collections
+ .List<
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner,
+ >,
+) {
+ init {
+ require(requestedLocation != null) { "requestedLocation must not be null" }
+
+ require(locations != null) { "locations must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var requestedLocation: kotlin.String? = null,
+ private var locations: kotlin.collections.List? = null,
+ ) {
+ fun requestedLocation(requestedLocation: kotlin.String) = apply { this.requestedLocation = requestedLocation }
+
+ fun locations(locations: kotlin.collections.List) = apply { this.locations = locations }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOption(
+ requestedLocation = requestedLocation!!,
+ locations = locations!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ requestedLocation = requestedLocation!!,
+ locations = locations!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner.kt
new file mode 100644
index 000000000..2fca2a28c
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param location
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner(
+ @JsonProperty("Location")
+ val location: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var location: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation? = null,
+ ) {
+ fun location(location: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation?) = apply { this.location = location }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInner(
+ location = location,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ location = location,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation.kt
new file mode 100644
index 000000000..0c5f1ae19
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation.kt
@@ -0,0 +1,111 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3GeoLocation
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for list of possible locations that could be used to disambiguate the query.
+ * @param name Location Name
+ * @param type The type of location code (MULTICITY | METROCODE).
+ * @param id Expedia Region ID of the specified airport.
+ * @param code Location Code
+ * @param address Street address of the location (if available)
+ * @param geoLocation
+ * @param country
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation(
+ // Location Name
+ @JsonProperty("Name")
+ val name: kotlin.String,
+ // The type of location code (MULTICITY | METROCODE).
+ @JsonProperty("Type")
+ val type: kotlin.String? = null,
+ // Expedia Region ID of the specified airport.
+ @JsonProperty("Id")
+ val id: kotlin.String? = null,
+ // Location Code
+ @JsonProperty("Code")
+ val code: kotlin.String? = null,
+ // Street address of the location (if available)
+ @JsonProperty("Address")
+ val address: kotlin.String? = null,
+ @JsonProperty("GeoLocation")
+ val geoLocation: FlightsV3GeoLocation? = null,
+ @JsonProperty("Country")
+ val country: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry? = null,
+) {
+ init {
+ require(name != null) { "name must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var name: kotlin.String? = null,
+ private var type: kotlin.String? = null,
+ private var id: kotlin.String? = null,
+ private var code: kotlin.String? = null,
+ private var address: kotlin.String? = null,
+ private var geoLocation: FlightsV3GeoLocation? = null,
+ private var country: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry? = null,
+ ) {
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun type(type: kotlin.String?) = apply { this.type = type }
+
+ fun id(id: kotlin.String?) = apply { this.id = id }
+
+ fun code(code: kotlin.String?) = apply { this.code = code }
+
+ fun address(address: kotlin.String?) = apply { this.address = address }
+
+ fun geoLocation(geoLocation: FlightsV3GeoLocation?) = apply { this.geoLocation = geoLocation }
+
+ fun country(country: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry?) = apply { this.country = country }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocation(
+ name = name!!,
+ type = type,
+ id = id,
+ code = code,
+ address = address,
+ geoLocation = geoLocation,
+ country = country,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ name = name!!,
+ type = type,
+ id = id,
+ code = code,
+ address = address,
+ geoLocation = geoLocation,
+ country = country,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry.kt
new file mode 100644
index 000000000..13459fe78
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ *
+ * @param country
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry(
+ @JsonProperty("Country")
+ val country: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var country: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry? = null,
+ ) {
+ fun country(country: GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry?) = apply { this.country = country }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountry(
+ country = country,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ country = country,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry.kt
new file mode 100644
index 000000000..bd6614652
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for disambiguation country information
+ * @param code 3-letter code for the country
+ */
+data class GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry(
+ // 3-letter code for the country
+ @JsonProperty("Code")
+ val code: kotlin.String? = null,
+) {
+ init {
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ ) {
+ fun code(code: kotlin.String?) = apply { this.code = code }
+
+ fun build(): GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry {
+ val instance =
+ GetFlightFlexsearch400ResponseErrorsInnerErrorLocationOptionsInnerLocationOptionLocationsInnerLocationCountryCountry(
+ code = code,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightListingsOperationSegmentParam.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightListingsOperationSegmentParam.kt
new file mode 100644
index 000000000..60b24ceed
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/GetFlightListingsOperationSegmentParam.kt
@@ -0,0 +1,56 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+data class GetFlightListingsOperationSegmentParam(
+ val origin: String,
+ val destination: String,
+ val departureDate: java.time.LocalDate,
+ val departureStartTime: String?,
+ val departureEndTime: String?,
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var origin: String? = null,
+ private var destination: String? = null,
+ private var departureDate: java.time.LocalDate? = null,
+ private var departureStartTime: String? = null,
+ private var departureEndTime: String? = null,
+ ) {
+ fun origin(origin: String?) = apply { this.origin = origin }
+
+ fun destination(destination: String?) = apply { this.destination = destination }
+
+ fun departureDate(departureDate: java.time.LocalDate?) = apply { this.departureDate = departureDate }
+
+ fun departureStartTime(departureStartTime: String?) = apply { this.departureStartTime = departureStartTime }
+
+ fun departureEndTime(departureEndTime: String?) = apply { this.departureEndTime = departureEndTime }
+
+ fun build(): GetFlightListingsOperationSegmentParam =
+ GetFlightListingsOperationSegmentParam(
+ origin = this.origin!!,
+ destination = this.destination!!,
+ departureDate = this.departureDate!!,
+ departureStartTime = this.departureStartTime,
+ departureEndTime = this.departureEndTime,
+ )
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Hotel.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Hotel.kt
index 412f9acf8..2b98e1e5c 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Hotel.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Hotel.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,7 +31,7 @@ import com.expediagroup.sdk.xap.models.RoomType
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for information on each offered hotel.
+ * Container for information on each offered hotel.
* @param id The unique, Expedia-specific hotel property identifier used to designate a single hotel.
* @param hcomId The unique, Hotels.com-specific hotel property identifier used to designate a single hotel. This will only be returned if searching via hcomHotelIds in request.
* @param name The common name of the hotel
@@ -64,7 +64,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param accessibility The accessibility options available for the room. Possible accessibility include: - Accessible path of travel - Accessible bathroom - Roll-in shower - Handicapped parking - In-room accessibility - Accessibility equipment for the deaf - Braille or raised signage
* @param memberOnlyDealAvailable Indicates whether the property has member only deal rates available.
* @param roomTypes Container for all of available room types.
-*/
+ */
data class Hotel(
// The unique, Expedia-specific hotel property identifier used to designate a single hotel.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponse.kt
index f48658156..f39caf4a1 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@ import com.expediagroup.sdk.xap.models.ValidFormsOfPayment
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param warnings There were some errors or events during the transaction, but the API has still returned a response. Container for all warnings.
* @param transactionId Unique identifier for the transaction.
* @param stayDates
@@ -32,7 +32,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param occupants Container for the list of rooms requested by the traveler. Occupancy for each room is specified in this node.
* @param validFormsOfPayment Container for payment information.
* @param hotelDetails
-*/
+ */
data class HotelDetailsResponse(
// There were some errors or events during the transaction, but the API has still returned a response. Container for all warnings.
@JsonProperty("Warnings")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseOccupantsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseOccupantsInner.kt
index fb0d01f98..639bbd9bd 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseOccupantsInner.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseOccupantsInner.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param adults Specifies the number of adults staying in each room.
* @param childAges Specifies the age(s) of each of the children staying in the room, as well as the number of children in the room.
-*/
+ */
data class HotelDetailsResponseOccupantsInner(
// Specifies the number of adults staying in each room.
@JsonProperty("Adults")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseStayDates.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseStayDates.kt
index 1c086ad04..be24cf7d1 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseStayDates.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseStayDates.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param checkInDate Check-in date for property stay in an ISO 8601 Date format [YYYY-MM-DD]. This parameter should be used in combination with the `checkOut` parameter. The maximum advanced search window is 330 days in the future. The maximum length of stay is 28 days.
* @param checkOutDate Checkout date for property stay in an ISO 8601 Date format [YYYY-MM-DD]. This parameter should be used in combination with the `checkIn` parameter. The maximum advanced search window is 330 days in the future. The maximum length of stay is 28 days.
-*/
+ */
data class HotelDetailsResponseStayDates(
// Check-in date for property stay in an ISO 8601 Date format [YYYY-MM-DD]. This parameter should be used in combination with the `checkOut` parameter. The maximum advanced search window is 330 days in the future. The maximum length of stay is 28 days.
@JsonProperty("CheckInDate")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseWarningsInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseWarningsInner.kt
index af67cc130..14665fab5 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseWarningsInner.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelDetailsResponseWarningsInner.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,14 +18,14 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param code The code of the warning. Available values are: - PRICE_DECREASED: The price decreased after shopping. - PRICE_INCREASED: The price increased after shopping. - CURRENCY_CHANGE: You will be charged in a different currency.
* @param description A detail information of what happened.
* @param originalPrice The original price from the Lodging Search API response.
* @param newPrice The new price.
* @param changedAmount The difference between `OriginalPrice` and `NewPrice`.
* @param changedPercentage The changed percentage. In the sample 2.97 means the changed percentage is 2.97%.
-*/
+ */
data class HotelDetailsResponseWarningsInner(
// The code of the warning. Available values are: - PRICE_DECREASED: The price decreased after shopping. - PRICE_INCREASED: The price increased after shopping. - CURRENCY_CHANGE: You will be charged in a different currency.
@JsonProperty("Code")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelHotelAmenitiesInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelHotelAmenitiesInner.kt
index 4765a03b3..ac26da2c5 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelHotelAmenitiesInner.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelHotelAmenitiesInner.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param id The identification number for a hotel amenity.
* @param name The description of a hotel amenity.
-*/
+ */
data class HotelHotelAmenitiesInner(
// The identification number for a hotel amenity.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinks.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinks.kt
index e7abe2e66..986ba0b9e 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinks.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinks.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,10 +21,10 @@ import com.expediagroup.sdk.xap.models.Link
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for list of **HATEOAS** links to Expedia website to complete booking. This links section will only return a deeplink to the Website Search Results page by default. If you have selected AD deeplinks they will only appear within the `RoomTypes` section of the response, as the Lodging Details API returns details at the room offer level, and not at the property level.
+ * Container for list of **HATEOAS** links to Expedia website to complete booking. This links section will only return a deeplink to the Website Search Results page by default. If you have selected AD deeplinks they will only appear within the `RoomTypes` section of the response, as the Lodging Details API returns details at the room offer level, and not at the property level.
* @param webSearchResult
* @param apiRateCalendar
-*/
+ */
data class HotelLinks(
@JsonProperty("WebSearchResult")
val webSearchResult: HotelLinksWebSearchResult? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksApiRateCalendar.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksApiRateCalendar.kt
index a5f015a35..fa42a929a 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksApiRateCalendar.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksApiRateCalendar.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param accept The Accept request header (for API queries only - not included for page URLs).
* @param method Method of request.
* @param href The URL of the destination web page or API query.
-*/
+ */
data class HotelLinksApiRateCalendar(
// The Accept request header (for API queries only - not included for page URLs).
@JsonProperty("Accept")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksWebSearchResult.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksWebSearchResult.kt
index b2c105756..dd578fd25 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksWebSearchResult.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLinksWebSearchResult.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param accept The Accept request header (for API queries only - not included for page URLs).
* @param method Method of request.
* @param href The URL of the destination web page or API query.
-*/
+ */
data class HotelLinksWebSearchResult(
// The Accept request header (for API queries only - not included for page URLs).
@JsonProperty("Accept")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponse.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponse.kt
index 1df832a92..f52e61a07 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponse.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponse.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ import com.expediagroup.sdk.xap.models.Warning
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param warnings There were some errors or events during the transaction, but the API has still returned a response. Container for all warnings.
* @param count The number of hotels actually returned in the response.
* @param totalHotelCount The number of hotels present in the location.
@@ -32,7 +32,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
* @param numberOfRooms The number of the rooms requested on behalf of the user.
* @param occupants Container of occupants. It is an array including occupants of each room.
* @param hotels Container for all hotels.
-*/
+ */
data class HotelListingsResponse(
// There were some errors or events during the transaction, but the API has still returned a response. Container for all warnings.
@JsonProperty("Warnings")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponseStayDates.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponseStayDates.kt
index 7f030f4fe..ab2125de5 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponseStayDates.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelListingsResponseStayDates.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param checkInDate The initial day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
* @param checkOutDate The final day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
-*/
+ */
data class HotelListingsResponseStayDates(
// The initial day of the hotel stay in an ISO 8601 Date format [YYYY-MM-DD].
@JsonProperty("CheckInDate")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLocation.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLocation.kt
index 7a69fd9fb..0bde20126 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLocation.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelLocation.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,11 +21,11 @@ import com.expediagroup.sdk.xap.models.Neighborhood
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param address
* @param geoLocation
* @param neighborhood
-*/
+ */
data class HotelLocation(
@JsonProperty("Address")
val address: Address? = null,
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPolicies.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPolicies.kt
index 7f9a4caf7..6027903ed 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPolicies.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPolicies.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,14 +18,14 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for Hotel policy information.
+ * Container for Hotel policy information.
* @param checkInStartTime Beginning of the standard check-in window on the check in date, and in the local time of the hotel.
* @param checkInEndTime End of the standard check-in window on the check in date, and in the local time of the hotel.
* @param specialCheckInInstructions Some special instructions needed care by customer when check in.
* @param checkOutTime Customers must check out before this time on the check out date, expressed in the local time of the hotel.
* @param petPolicies The policy of the property toward having pets stay with guests.
* @param childrenAndExtraBedsPolicies The policy of the hotel for having children stay at the hotel, as well as for including extra beds in the room.
-*/
+ */
data class HotelPolicies(
// Beginning of the standard check-in window on the check in date, and in the local time of the hotel.
@JsonProperty("CheckInStartTime")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPropertyType.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPropertyType.kt
index b50a94128..6f0f11b0a 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPropertyType.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelPropertyType.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for information on hotel property type. You can find a complete list of Lodging Property Types in [Lodging Property Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/property-types).
+ * Container for information on hotel property type. You can find a complete list of Lodging Property Types in [Lodging Property Types](https://developers.expediagroup.com/xap/products/xap/lodging/references/property-types).
* @param id The id of hotel property type.
* @param name The name of hotel property type.
-*/
+ */
data class HotelPropertyType(
// The id of hotel property type.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRateCalendar.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRateCalendar.kt
index ed7689f8c..26e20bdbd 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRateCalendar.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRateCalendar.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,11 +19,11 @@ import com.expediagroup.sdk.xap.models.RateCalendar
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* Container for all hotel rate calendar data.
+ * Container for all hotel rate calendar data.
* @param ecomHotelId The unique, Expedia-specific hotel property identifier used to designate a single hotel.
* @param hcomHotelId The unique, Hotels.com-specific hotel property identifier used to designate a single hotel. This will be returned if searching via `hcomHotelId` in request or the request is coming from Hcom partner.
* @param rateCalendar Container for all rate calendar data.
-*/
+ */
data class HotelRateCalendar(
// The unique, Expedia-specific hotel property identifier used to designate a single hotel.
@JsonProperty("EcomHotelId")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelReference.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelReference.kt
new file mode 100644
index 000000000..10c6d019d
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelReference.kt
@@ -0,0 +1,68 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for Hotel Reference information
+ * @param hotelId Unique id to represent a hotel
+ * @param roomKey Unique id to represent Room
+ */
+data class HotelReference(
+ // Unique id to represent a hotel
+ @JsonProperty("HotelId")
+ val hotelId: kotlin.String,
+ // Unique id to represent Room
+ @JsonProperty("RoomKey")
+ val roomKey: kotlin.String,
+) {
+ init {
+ require(hotelId != null) { "hotelId must not be null" }
+
+ require(roomKey != null) { "roomKey must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var hotelId: kotlin.String? = null,
+ private var roomKey: kotlin.String? = null,
+ ) {
+ fun hotelId(hotelId: kotlin.String) = apply { this.hotelId = hotelId }
+
+ fun roomKey(roomKey: kotlin.String) = apply { this.roomKey = roomKey }
+
+ fun build(): HotelReference {
+ val instance =
+ HotelReference(
+ hotelId = hotelId!!,
+ roomKey = roomKey!!,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ hotelId = hotelId!!,
+ roomKey = roomKey!!,
+ )
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRoomAmenitiesInner.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRoomAmenitiesInner.kt
index 71007d0b5..41023165c 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRoomAmenitiesInner.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/HotelRoomAmenitiesInner.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-*
+ *
* @param id The identification number for a room amenity.
* @param name The description of a room amenity.
-*/
+ */
data class HotelRoomAmenitiesInner(
// The identification number for a room amenity.
@JsonProperty("Id")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Image.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Image.kt
index 1495b0553..d76ce40da 100644
--- a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Image.kt
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Image.kt
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2022 Expedia, Inc.
+/**
+ * Copyright (C) 2025 Expedia, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ package com.expediagroup.sdk.xap.models
import com.fasterxml.jackson.annotation.JsonProperty
/**
-* List of image resources of the car product.
+ * List of image resources of the car product.
* @param type Resource typeSupported values :Thumbnail - (70 pixels wide)Image - (165 pixels wide)
* @param propertySize Size of imageSupported values :s - (165 pixels wide)t - (70 pixels wide)
* @param href URL for the image.
-*/
+ */
data class Image(
// Resource typeSupported values :Thumbnail - (70 pixels wide)Image - (165 pixels wide)
@JsonProperty("Type")
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Insights.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Insights.kt
new file mode 100644
index 000000000..b53660878
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Insights.kt
@@ -0,0 +1,148 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.FlightsV3Money
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container for insights response.
+ * @param cheapestOfferId Container for insights response.
+ * @param averageCheapestPrice
+ * @param medianCheapestPrice
+ * @param searchComparisonCount Number of searches compared to build the insights information for the given search.
+ * @param percentageOfFaresHigher Percentage value that defines where the cheapest fare of the current search result stand comparing the prices for similar searches for nearby dates.
+ * @param priceTrend Shows how the price trends
+ * @param pastPerDayMedianCheapestPrices List of median of cheapest prices for the specifc search criteria for last 21 days. List will be in the order starting from 21 days ago till yesterday.
+ * @param message Shows a custom message in the respective language corresponding to the locale requested.
+ */
+data class Insights(
+ // Container for insights response.
+ @JsonProperty("CheapestOfferId")
+ val cheapestOfferId: kotlin.String,
+ @JsonProperty("AverageCheapestPrice")
+ val averageCheapestPrice: FlightsV3Money,
+ @JsonProperty("MedianCheapestPrice")
+ val medianCheapestPrice: FlightsV3Money,
+ // Number of searches compared to build the insights information for the given search.
+ @JsonProperty("SearchComparisonCount")
+ val searchComparisonCount: kotlin.Int,
+ // Percentage value that defines where the cheapest fare of the current search result stand comparing the prices for similar searches for nearby dates.
+ @JsonProperty("PercentageOfFaresHigher")
+ val percentageOfFaresHigher: kotlin.Int,
+ // Shows how the price trends
+ @JsonProperty("PriceTrend")
+ val priceTrend: Insights.PriceTrend? = null,
+ // List of median of cheapest prices for the specifc search criteria for last 21 days. List will be in the order starting from 21 days ago till yesterday.
+ @JsonProperty("PastPerDayMedianCheapestPrices")
+ val pastPerDayMedianCheapestPrices: kotlin.collections.List? = null,
+ // Shows a custom message in the respective language corresponding to the locale requested.
+ @JsonProperty("Message")
+ val message: kotlin.String? = null,
+) {
+ init {
+ require(cheapestOfferId != null) { "cheapestOfferId must not be null" }
+
+ require(averageCheapestPrice != null) { "averageCheapestPrice must not be null" }
+
+ require(medianCheapestPrice != null) { "medianCheapestPrice must not be null" }
+
+ require(searchComparisonCount != null) { "searchComparisonCount must not be null" }
+
+ require(percentageOfFaresHigher != null) { "percentageOfFaresHigher must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var cheapestOfferId: kotlin.String? = null,
+ private var averageCheapestPrice: FlightsV3Money? = null,
+ private var medianCheapestPrice: FlightsV3Money? = null,
+ private var searchComparisonCount: kotlin.Int? = null,
+ private var percentageOfFaresHigher: kotlin.Int? = null,
+ private var priceTrend: Insights.PriceTrend? = null,
+ private var pastPerDayMedianCheapestPrices: kotlin.collections.List? = null,
+ private var message: kotlin.String? = null,
+ ) {
+ fun cheapestOfferId(cheapestOfferId: kotlin.String) = apply { this.cheapestOfferId = cheapestOfferId }
+
+ fun averageCheapestPrice(averageCheapestPrice: FlightsV3Money) = apply { this.averageCheapestPrice = averageCheapestPrice }
+
+ fun medianCheapestPrice(medianCheapestPrice: FlightsV3Money) = apply { this.medianCheapestPrice = medianCheapestPrice }
+
+ fun searchComparisonCount(searchComparisonCount: kotlin.Int) = apply { this.searchComparisonCount = searchComparisonCount }
+
+ fun percentageOfFaresHigher(percentageOfFaresHigher: kotlin.Int) = apply { this.percentageOfFaresHigher = percentageOfFaresHigher }
+
+ fun priceTrend(priceTrend: Insights.PriceTrend?) = apply { this.priceTrend = priceTrend }
+
+ fun pastPerDayMedianCheapestPrices(pastPerDayMedianCheapestPrices: kotlin.collections.List?) =
+ apply {
+ this.pastPerDayMedianCheapestPrices =
+ pastPerDayMedianCheapestPrices
+ }
+
+ fun message(message: kotlin.String?) = apply { this.message = message }
+
+ fun build(): Insights {
+ val instance =
+ Insights(
+ cheapestOfferId = cheapestOfferId!!,
+ averageCheapestPrice = averageCheapestPrice!!,
+ medianCheapestPrice = medianCheapestPrice!!,
+ searchComparisonCount = searchComparisonCount!!,
+ percentageOfFaresHigher = percentageOfFaresHigher!!,
+ priceTrend = priceTrend,
+ pastPerDayMedianCheapestPrices = pastPerDayMedianCheapestPrices,
+ message = message,
+ )
+
+ return instance
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ cheapestOfferId = cheapestOfferId!!,
+ averageCheapestPrice = averageCheapestPrice!!,
+ medianCheapestPrice = medianCheapestPrice!!,
+ searchComparisonCount = searchComparisonCount!!,
+ percentageOfFaresHigher = percentageOfFaresHigher!!,
+ priceTrend = priceTrend,
+ pastPerDayMedianCheapestPrices = pastPerDayMedianCheapestPrices,
+ message = message,
+ )
+
+ /**
+ * Shows how the price trends
+ * Values: TRENDING_UP,TRENDING_DOWN,NEUTRAL
+ */
+ enum class PriceTrend(
+ val value: kotlin.String,
+ ) {
+ @JsonProperty("TRENDING_UP")
+ TRENDING_UP("TRENDING_UP"),
+
+ @JsonProperty("TRENDING_DOWN")
+ TRENDING_DOWN("TRENDING_DOWN"),
+
+ @JsonProperty("NEUTRAL")
+ NEUTRAL("NEUTRAL"),
+ }
+}
diff --git a/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Leg.kt b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Leg.kt
new file mode 100644
index 000000000..9eec3ff8b
--- /dev/null
+++ b/xap-sdk/src/main/kotlin/com/expediagroup/sdk/xap/models/Leg.kt
@@ -0,0 +1,320 @@
+/**
+ * Copyright (C) 2025 Expedia, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.xap.models.Amenities
+import com.expediagroup.sdk.xap.models.FlightsV3Airport
+import com.expediagroup.sdk.xap.models.FlightsV3Distance
+import com.expediagroup.sdk.xap.models.FlightsV3Link
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Container information on each flight leg.
+ * @param departureAirport
+ * @param arrivalAirport
+ * @param departureDateTime Flight departure date and time in ISO 8601 format
+ * @param arrivalDateTime Flight landing date and time in ISO 8601 format
+ * @param flightNumber Flight Number assigned by Carrier.
+ * @param marketingAirlineCode The two-letter code of the Airline that is marketing the flight.
+ * @param flightDuration The total travel duration for this leg, expressed in ISO 8601 standard.
+ * @param seatMapAvailable If True seat map is available
+ * @param bookingCode Carrier-specific code used for booking (class of service).
+ * @param cabinClass Class of service for the air leg.
+ * @param statusCode Air segment status.
+ * @param links Container for deeplink URL information.
+ * @param marketingAirlineName The display name of the Airline that is marketing the flight.
+ * @param operatingAirlineCode The two-letter code of the Airline actually operating the plane.
+ * @param operatingAirlineName The display name of the airline actually operating the plane.
+ * @param equipmentCode IATA Equipment type codes.
+ * @param flightOnTimePercentage Percentage of time that this flight on time.
+ * @param equipmentName The name of equipment that is scheduled for the flight.
+ * @param connectionTime Connection time between current leg flight landed time to next flight departure time, expressed in ISO 8601 standard.
+ * @param operationalDisclosure OperationalDisclosure.
+ * @param flightDistance
+ * @param equipmentChange True if the upcoming travel Leg will have different equipment (airplane) compared to the previous Leg.
+ * @param loungeKeys List of keys referring to lounge details for the particular leg.
+ * @param fareBasisCode Fare Basis Code for the corresponding Leg of Flight Offer.
+ * @param mealOptions Different meal options available in this particular Leg.
+ * @param amenities
+ */
+data class Leg(
+ @JsonProperty("DepartureAirport")
+ val departureAirport: FlightsV3Airport,
+ @JsonProperty("ArrivalAirport")
+ val arrivalAirport: FlightsV3Airport,
+ // Flight departure date and time in ISO 8601 format
+ @JsonProperty("DepartureDateTime")
+ val departureDateTime: java.time.OffsetDateTime,
+ // Flight landing date and time in ISO 8601 format
+ @JsonProperty("ArrivalDateTime")
+ val arrivalDateTime: java.time.OffsetDateTime,
+ // Flight Number assigned by Carrier.
+ @JsonProperty("FlightNumber")
+ val flightNumber: kotlin.String,
+ // The two-letter code of the Airline that is marketing the flight.
+ @JsonProperty("MarketingAirlineCode")
+ val marketingAirlineCode: kotlin.String,
+ // The total travel duration for this leg, expressed in ISO 8601 standard.
+ @JsonProperty("FlightDuration")
+ val flightDuration: kotlin.String,
+ // If True seat map is available
+ @JsonProperty("SeatMapAvailable")
+ val seatMapAvailable: kotlin.Boolean,
+ // Carrier-specific code used for booking (class of service).
+ @JsonProperty("BookingCode")
+ val bookingCode: kotlin.String,
+ // Class of service for the air leg.
+ @JsonProperty("CabinClass")
+ val cabinClass: Leg.CabinClass,
+ // Air segment status.
+ @JsonProperty("StatusCode")
+ val statusCode: kotlin.String? = null,
+ // Container for deeplink URL information.
+ @JsonProperty("Links")
+ val links: kotlin.collections.Map? = null,
+ // The display name of the Airline that is marketing the flight.
+ @JsonProperty("MarketingAirlineName")
+ val marketingAirlineName: kotlin.String? = null,
+ // The two-letter code of the Airline actually operating the plane.
+ @JsonProperty("OperatingAirlineCode")
+ val operatingAirlineCode: kotlin.String? = null,
+ // The display name of the airline actually operating the plane.
+ @JsonProperty("OperatingAirlineName")
+ val operatingAirlineName: kotlin.String? = null,
+ // IATA Equipment type codes.
+ @JsonProperty("EquipmentCode")
+ val equipmentCode: kotlin.String? = null,
+ // Percentage of time that this flight on time.
+ @JsonProperty("FlightOnTimePercentage")
+ val flightOnTimePercentage: kotlin.String? = null,
+ // The name of equipment that is scheduled for the flight.
+ @JsonProperty("EquipmentName")
+ val equipmentName: kotlin.String? = null,
+ // Connection time between current leg flight landed time to next flight departure time, expressed in ISO 8601 standard.
+ @JsonProperty("ConnectionTime")
+ val connectionTime: kotlin.String? = null,
+ // OperationalDisclosure.
+ @JsonProperty("OperationalDisclosure")
+ val operationalDisclosure: kotlin.String? = null,
+ @JsonProperty("FlightDistance")
+ val flightDistance: FlightsV3Distance? = null,
+ // True if the upcoming travel Leg will have different equipment (airplane) compared to the previous Leg.
+ @JsonProperty("EquipmentChange")
+ val equipmentChange: kotlin.Boolean? = null,
+ // List of keys referring to lounge details for the particular leg.
+ @JsonProperty("LoungeKeys")
+ val loungeKeys: kotlin.collections.List? = null,
+ // Fare Basis Code for the corresponding Leg of Flight Offer.
+ @JsonProperty("FareBasisCode")
+ val fareBasisCode: kotlin.String? = null,
+ // Different meal options available in this particular Leg.
+ @JsonProperty("MealOptions")
+ val mealOptions: kotlin.collections.List? = null,
+ @JsonProperty("Amenities")
+ val amenities: Amenities? = null,
+) {
+ init {
+ require(departureAirport != null) { "departureAirport must not be null" }
+
+ require(arrivalAirport != null) { "arrivalAirport must not be null" }
+
+ require(departureDateTime != null) { "departureDateTime must not be null" }
+
+ require(arrivalDateTime != null) { "arrivalDateTime must not be null" }
+
+ require(flightNumber != null) { "flightNumber must not be null" }
+
+ require(marketingAirlineCode != null) { "marketingAirlineCode must not be null" }
+
+ require(flightDuration != null) { "flightDuration must not be null" }
+
+ require(seatMapAvailable != null) { "seatMapAvailable must not be null" }
+
+ require(bookingCode != null) { "bookingCode must not be null" }
+
+ require(cabinClass != null) { "cabinClass must not be null" }
+ }
+
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var departureAirport: FlightsV3Airport? = null,
+ private var arrivalAirport: FlightsV3Airport? = null,
+ private var departureDateTime: java.time.OffsetDateTime? = null,
+ private var arrivalDateTime: java.time.OffsetDateTime? = null,
+ private var flightNumber: kotlin.String? = null,
+ private var marketingAirlineCode: kotlin.String? = null,
+ private var flightDuration: kotlin.String? = null,
+ private var seatMapAvailable: kotlin.Boolean? = null,
+ private var bookingCode: kotlin.String? = null,
+ private var cabinClass: Leg.CabinClass? = null,
+ private var statusCode: kotlin.String? = null,
+ private var links: kotlin.collections.Map? = null,
+ private var marketingAirlineName: kotlin.String? = null,
+ private var operatingAirlineCode: kotlin.String? = null,
+ private var operatingAirlineName: kotlin.String? = null,
+ private var equipmentCode: kotlin.String? = null,
+ private var flightOnTimePercentage: kotlin.String? = null,
+ private var equipmentName: kotlin.String? = null,
+ private var connectionTime: kotlin.String? = null,
+ private var operationalDisclosure: kotlin.String? = null,
+ private var flightDistance: FlightsV3Distance? = null,
+ private var equipmentChange: kotlin.Boolean? = null,
+ private var loungeKeys: kotlin.collections.List? = null,
+ private var fareBasisCode: kotlin.String? = null,
+ private var mealOptions: kotlin.collections.List? = null,
+ private var amenities: Amenities? = null,
+ ) {
+ fun departureAirport(departureAirport: FlightsV3Airport) = apply { this.departureAirport = departureAirport }
+
+ fun arrivalAirport(arrivalAirport: FlightsV3Airport) = apply { this.arrivalAirport = arrivalAirport }
+
+ fun departureDateTime(departureDateTime: java.time.OffsetDateTime) = apply { this.departureDateTime = departureDateTime }
+
+ fun arrivalDateTime(arrivalDateTime: java.time.OffsetDateTime) = apply { this.arrivalDateTime = arrivalDateTime }
+
+ fun flightNumber(flightNumber: kotlin.String) = apply { this.flightNumber = flightNumber }
+
+ fun marketingAirlineCode(marketingAirlineCode: kotlin.String) = apply { this.marketingAirlineCode = marketingAirlineCode }
+
+ fun flightDuration(flightDuration: kotlin.String) = apply { this.flightDuration = flightDuration }
+
+ fun seatMapAvailable(seatMapAvailable: kotlin.Boolean) = apply { this.seatMapAvailable = seatMapAvailable }
+
+ fun bookingCode(bookingCode: kotlin.String) = apply { this.bookingCode = bookingCode }
+
+ fun cabinClass(cabinClass: Leg.CabinClass) = apply { this.cabinClass = cabinClass }
+
+ fun statusCode(statusCode: kotlin.String?) = apply { this.statusCode = statusCode }
+
+ fun links(links: kotlin.collections.Map?) = apply { this.links = links }
+
+ fun marketingAirlineName(marketingAirlineName: kotlin.String?) = apply { this.marketingAirlineName = marketingAirlineName }
+
+ fun operatingAirlineCode(operatingAirlineCode: kotlin.String?) = apply { this.operatingAirlineCode = operatingAirlineCode }
+
+ fun operatingAirlineName(operatingAirlineName: kotlin.String?) = apply { this.operatingAirlineName = operatingAirlineName }
+
+ fun equipmentCode(equipmentCode: kotlin.String?) = apply { this.equipmentCode = equipmentCode }
+
+ fun flightOnTimePercentage(flightOnTimePercentage: kotlin.String?) = apply { this.flightOnTimePercentage = flightOnTimePercentage }
+
+ fun equipmentName(equipmentName: kotlin.String?) = apply { this.equipmentName = equipmentName }
+
+ fun connectionTime(connectionTime: kotlin.String?) = apply { this.connectionTime = connectionTime }
+
+ fun operationalDisclosure(operationalDisclosure: kotlin.String?) = apply { this.operationalDisclosure = operationalDisclosure }
+
+ fun flightDistance(flightDistance: FlightsV3Distance?) = apply { this.flightDistance = flightDistance }
+
+ fun equipmentChange(equipmentChange: kotlin.Boolean?) = apply { this.equipmentChange = equipmentChange }
+
+ fun loungeKeys(loungeKeys: kotlin.collections.List