diff --git a/code/README.md b/code/README.md
index 779b9c3..2677ed1 100644
--- a/code/README.md
+++ b/code/README.md
@@ -5,7 +5,7 @@
com.expediagroup
xap-sdk
- 1.0.0
+ 1.1.0-SNAPSHOT
```
diff --git a/code/pom.xml b/code/pom.xml
index da29731..b2b8599 100644
--- a/code/pom.xml
+++ b/code/pom.xml
@@ -4,9 +4,9 @@
4.0.0
com.expediagroup
xap-sdk
- 1.0.0
+ 1.1.0-SNAPSHOT
EG xap-sdk for Java
- EG xap-sdk v1.0.0
+ EG xap-sdk v1.1.0-SNAPSHOT
https://github.com/ExpediaGroup/test-sdk
2022
jar
@@ -82,7 +82,7 @@
2.0.21
1.9.0
2.3.13
- 0.26.0
+ 0.26.1
2.0.16
1.7.0
3.2.7
@@ -131,7 +131,7 @@
com.fasterxml.jackson
jackson-bom
- 2.18.1
+ 2.18.2
pom
import
@@ -153,7 +153,7 @@
com.fasterxml.jackson.core
jackson-annotations
- 2.18.1
+ 2.18.2
@@ -744,13 +744,13 @@
com.ebay.ejmask
ejmask-api
- 1.0.3
+ 1.2.1
com.ebay.ejmask
ejmask-extensions
- 1.0.3
+ 1.2.1
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt
index d29a414..0be57e5 100644
--- a/code/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/client/XapClient.kt
@@ -29,11 +29,14 @@ import com.expediagroup.sdk.xap.models.*
import com.expediagroup.sdk.xap.models.exception.ErrorObjectMapper
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiAPIGatewayErrorException
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiAPIMErrorException
+import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiActivitiesErrorsException
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiCarsErrorsException
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiErrorsException
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiLodgingErrorsException
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiPresignedUrlResponseException
import com.expediagroup.sdk.xap.models.exception.ExpediaGroupApiSdpAPIMErrorException
+import com.expediagroup.sdk.xap.operations.GetActivityDetailsOperation
+import com.expediagroup.sdk.xap.operations.GetActivityListingsOperation
import com.expediagroup.sdk.xap.operations.GetCarDetailsOperation
import com.expediagroup.sdk.xap.operations.GetCarsListingsOperation
import com.expediagroup.sdk.xap.operations.GetFeedDownloadUrlOperation
@@ -154,6 +157,50 @@ class XapClient private constructor(clientConfiguration: XapClientConfiguration)
}
}
+ /**
+ *
+ * The Activity Details API provides detailed information about one selected activity.
+ * @param operation [GetActivityDetailsOperation]
+ * @throws ExpediaGroupApiActivitiesErrorsException
+ * @throws ExpediaGroupApiAPIMErrorException
+ * @throws ExpediaGroupApiException
+ * @return a [Response] object with a body of type ActivityDetailsResponse
+ */
+ fun execute(operation: GetActivityDetailsOperation): Response = execute(operation)
+
+ /**
+ *
+ * The Activity Details API provides detailed information about one selected activity.
+ * @param operation [GetActivityDetailsOperation]
+ * @throws ExpediaGroupApiActivitiesErrorsException
+ * @throws ExpediaGroupApiAPIMErrorException
+ * @throws ExpediaGroupApiException
+ * @return a [CompletableFuture] object with a body of type ActivityDetailsResponse
+ */
+ fun executeAsync(operation: GetActivityDetailsOperation): CompletableFuture> = executeAsync(operation)
+
+ /**
+ *
+ * The Activities Search API allows partners to search for Expedia Activity inventory.
+ * @param operation [GetActivityListingsOperation]
+ * @throws ExpediaGroupApiActivitiesErrorsException
+ * @throws ExpediaGroupApiAPIMErrorException
+ * @throws ExpediaGroupApiException
+ * @return a [Response] object with a body of type ActivityListingsResponse
+ */
+ fun execute(operation: GetActivityListingsOperation): Response = execute(operation)
+
+ /**
+ *
+ * The Activities Search API allows partners to search for Expedia Activity inventory.
+ * @param operation [GetActivityListingsOperation]
+ * @throws ExpediaGroupApiActivitiesErrorsException
+ * @throws ExpediaGroupApiAPIMErrorException
+ * @throws ExpediaGroupApiException
+ * @return a [CompletableFuture] object with a body of type ActivityListingsResponse
+ */
+ fun executeAsync(operation: GetActivityListingsOperation): CompletableFuture> = executeAsync(operation)
+
/**
* Get Extended information with a single car offer
* Extended information about the rates, charges, fees, and other terms associated with a single car offer.
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt
new file mode 100644
index 0000000..d8adaa3
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesAddress.kt
@@ -0,0 +1,157 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Address information
+ * @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
+ * @param suite Suite/apartment number
+ * @param province The state or province.
+ * @param postalCode Zip/postal code.
+ */
+data class ActivitiesAddress(
+ // Street Number, Street Name, or PO Box.
+ @JsonProperty("Address1")
+ @field:NotNull
+ @field:Valid
+ val address1: kotlin.String,
+ // The city
+ @JsonProperty("City")
+ @field:NotNull
+ @field:Valid
+ val city: kotlin.String,
+ // 3-letter code for the country.
+ @JsonProperty("Country")
+ @field:NotNull
+ @field:Valid
+ val country: kotlin.String,
+ // Apartment, Floor, Suite, Bldg
+ @JsonProperty("Address2")
+ @field:Valid
+ val address2: kotlin.String? = null,
+ // Suite/apartment number
+ @JsonProperty("Suite")
+ @field:Valid
+ val suite: kotlin.String? = null,
+ // The state or province.
+ @JsonProperty("Province")
+ @field:Valid
+ val province: kotlin.String? = null,
+ // Zip/postal code.
+ @JsonProperty("PostalCode")
+ @field:Valid
+ val postalCode: kotlin.String? = 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 suite: 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 suite(suite: kotlin.String?) = apply { this.suite = suite }
+
+ fun province(province: kotlin.String?) = apply { this.province = province }
+
+ fun postalCode(postalCode: kotlin.String?) = apply { this.postalCode = postalCode }
+
+ fun build(): ActivitiesAddress {
+ val instance =
+ ActivitiesAddress(
+ address1 = address1!!,
+ city = city!!,
+ country = country!!,
+ address2 = address2,
+ suite = suite,
+ province = province,
+ postalCode = postalCode
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesAddress) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ address1 = address1!!,
+ city = city!!,
+ country = country!!,
+ address2 = address2,
+ suite = suite,
+ province = province,
+ postalCode = postalCode
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt
new file mode 100644
index 0000000..c32b0a6
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCancellationPolicy.kt
@@ -0,0 +1,123 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val freeCancellation: kotlin.Boolean,
+ // The description of Cancellation Policy.
+ @JsonProperty("CancelPolicyDescription")
+ @field:Valid
+ val cancelPolicyDescription: kotlin.String? = null,
+ // The minimum number of hours before activity when the activity can still be cancelled for free.
+ @JsonProperty("FreeCancellationMinHours")
+ val freeCancellationMinHours: kotlin.Int? = null,
+ // 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.
+ @JsonProperty("FreeCancellationEndDateTime")
+ val freeCancellationEndDateTime: java.time.OffsetDateTime? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var freeCancellation: kotlin.Boolean? = null,
+ private var cancelPolicyDescription: kotlin.String? = null,
+ private var freeCancellationMinHours: kotlin.Int? = null,
+ private var freeCancellationEndDateTime: java.time.OffsetDateTime? = null
+ ) {
+ fun freeCancellation(freeCancellation: kotlin.Boolean) = apply { this.freeCancellation = freeCancellation }
+
+ fun cancelPolicyDescription(cancelPolicyDescription: kotlin.String?) = apply { this.cancelPolicyDescription = cancelPolicyDescription }
+
+ fun freeCancellationMinHours(freeCancellationMinHours: kotlin.Int?) = apply { this.freeCancellationMinHours = freeCancellationMinHours }
+
+ fun freeCancellationEndDateTime(freeCancellationEndDateTime: java.time.OffsetDateTime?) = apply { this.freeCancellationEndDateTime = freeCancellationEndDateTime }
+
+ fun build(): ActivitiesCancellationPolicy {
+ val instance =
+ ActivitiesCancellationPolicy(
+ freeCancellation = freeCancellation!!,
+ cancelPolicyDescription = cancelPolicyDescription,
+ freeCancellationMinHours = freeCancellationMinHours,
+ freeCancellationEndDateTime = freeCancellationEndDateTime
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesCancellationPolicy) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ freeCancellation = freeCancellation!!,
+ cancelPolicyDescription = cancelPolicyDescription,
+ freeCancellationMinHours = freeCancellationMinHours,
+ freeCancellationEndDateTime = freeCancellationEndDateTime
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt
new file mode 100644
index 0000000..c8b05c7
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesCountry.kt
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val name: kotlin.String,
+ // 2-letter code for the country
+ @JsonProperty("IsoCode2")
+ @field:NotNull
+ @field:Valid
+ val isoCode2: kotlin.String,
+ // 3-letter code for the country
+ @JsonProperty("IsoCode3")
+ @field:NotNull
+ @field:Valid
+ val isoCode3: kotlin.String,
+ // 3-letter code for the country
+ @JsonProperty("Code")
+ @field:Valid
+ val code: kotlin.String? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var name: kotlin.String? = null,
+ private var isoCode2: kotlin.String? = null,
+ private var isoCode3: kotlin.String? = null,
+ private var code: kotlin.String? = null
+ ) {
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun isoCode2(isoCode2: kotlin.String) = apply { this.isoCode2 = isoCode2 }
+
+ fun isoCode3(isoCode3: kotlin.String) = apply { this.isoCode3 = isoCode3 }
+
+ fun code(code: kotlin.String?) = apply { this.code = code }
+
+ fun build(): ActivitiesCountry {
+ val instance =
+ ActivitiesCountry(
+ name = name!!,
+ isoCode2 = isoCode2!!,
+ isoCode3 = isoCode3!!,
+ code = code
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesCountry) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ name = name!!,
+ isoCode2 = isoCode2!!,
+ isoCode3 = isoCode3!!,
+ code = code
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt
new file mode 100644
index 0000000..af04013
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesError.kt
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesLocationOption
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val code: kotlin.String,
+ // A simple description of what the error is.
+ @JsonProperty("Description")
+ @field:NotNull
+ @field:Valid
+ val description: kotlin.String,
+ // Detailed error code describing the issue.
+ @JsonProperty("DetailCode")
+ @field:Valid
+ val detailCode: kotlin.String? = null,
+ // The requested location that caused the error.
+ @JsonProperty("LocationKeyword")
+ @field:Valid
+ val locationKeyword: 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")
+ @field:Valid
+ val locationOptions: kotlin.collections.List? = 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 locationKeyword: 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 locationKeyword(locationKeyword: kotlin.String?) = apply { this.locationKeyword = locationKeyword }
+
+ fun locationOptions(locationOptions: kotlin.collections.List?) = apply { this.locationOptions = locationOptions }
+
+ fun build(): ActivitiesError {
+ val instance =
+ ActivitiesError(
+ code = code!!,
+ description = description!!,
+ detailCode = detailCode,
+ locationKeyword = locationKeyword,
+ locationOptions = locationOptions
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesError) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ detailCode = detailCode,
+ locationKeyword = locationKeyword,
+ locationOptions = locationOptions
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt
new file mode 100644
index 0000000..1295fed
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesErrors.kt
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesError
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ *
+ * @param errors Container for error list.
+ * @param transactionId A unique identifier for the transaction.
+ */
+data class ActivitiesErrors(
+ // Container for error list.
+ @JsonProperty("Errors")
+ @field:NotNull
+ @field:Valid
+ val errors: kotlin.collections
+ .List<
+ ActivitiesError
+ >,
+ // A unique identifier for the transaction.
+ @JsonProperty("TransactionId")
+ @field:NotNull
+ @field:Valid
+ val transactionId: kotlin.String
+) {
+ 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(): ActivitiesErrors {
+ val instance =
+ ActivitiesErrors(
+ errors = errors!!,
+ transactionId = transactionId!!
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesErrors) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ errors = errors!!,
+ transactionId = transactionId!!
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt
new file mode 100644
index 0000000..e14ba36
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesGeoLocation.kt
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val latitude: kotlin.String,
+ // Longitude of the location.
+ @JsonProperty("Longitude")
+ @field:NotNull
+ @field:Valid
+ val longitude: kotlin.String,
+ @JsonProperty("Obfuscated")
+ @field:Valid
+ val obfuscated: kotlin.Boolean? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var latitude: kotlin.String? = null,
+ private var longitude: kotlin.String? = null,
+ private var obfuscated: kotlin.Boolean? = null
+ ) {
+ fun latitude(latitude: kotlin.String) = apply { this.latitude = latitude }
+
+ fun longitude(longitude: kotlin.String) = apply { this.longitude = longitude }
+
+ fun obfuscated(obfuscated: kotlin.Boolean?) = apply { this.obfuscated = obfuscated }
+
+ fun build(): ActivitiesGeoLocation {
+ val instance =
+ ActivitiesGeoLocation(
+ latitude = latitude!!,
+ longitude = longitude!!,
+ obfuscated = obfuscated
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesGeoLocation) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ latitude = latitude!!,
+ longitude = longitude!!,
+ obfuscated = obfuscated
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt
new file mode 100644
index 0000000..8d454bd
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLink.kt
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Container of HATEOAS URL's
+ * @param accept Accept header.
+ * @param method HTTP method to connect.
+ * @param href HATEOAS URL to fetch details.
+ */
+data class ActivitiesLink(
+ // Accept header.
+ @JsonProperty("Accept")
+ @field:NotNull
+ @field:Valid
+ val accept: kotlin.String,
+ // HTTP method to connect.
+ @JsonProperty("Method")
+ @field:NotNull
+ @field:Valid
+ val method: kotlin.String,
+ // HATEOAS URL to fetch details.
+ @JsonProperty("Href")
+ @field:NotNull
+ @field:Valid
+ val href: kotlin.String
+) {
+ 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(): ActivitiesLink {
+ val instance =
+ ActivitiesLink(
+ accept = accept!!,
+ method = method!!,
+ href = href!!
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesLink) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ accept = accept!!,
+ method = method!!,
+ href = href!!
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt
new file mode 100644
index 0000000..9877554
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocation.kt
@@ -0,0 +1,194 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesAddress
+import com.expediagroup.sdk.xap.models.ActivitiesCountry
+import com.expediagroup.sdk.xap.models.ActivitiesGeoLocation
+import com.expediagroup.sdk.xap.models.ActivitiesNeighborhood
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * List of location(s) where the activity will happen.
+ * @param name Location Name
+ * @param locationId Location id.
+ * @param type The type of location code (MULTICITY | METROCODE).
+ * @param id Expedia Region ID of the specified airport.
+ * @param code Location Code
+ * @param address
+ * @param pointOfInterest
+ * @param geoLocation
+ * @param neighborhood
+ * @param regionId RegionId the location resides in.
+ * @param country
+ */
+data class ActivitiesLocation(
+ // Location Name
+ @JsonProperty("Name")
+ @field:NotNull
+ @field:Valid
+ val name: kotlin.String,
+ // Location id.
+ @JsonProperty("LocationId")
+ @field:NotNull
+ @field:Valid
+ val locationId: kotlin.String,
+ // The type of location code (MULTICITY | METROCODE).
+ @JsonProperty("Type")
+ @field:Valid
+ val type: kotlin.String? = null,
+ // Expedia Region ID of the specified airport.
+ @JsonProperty("Id")
+ @field:Valid
+ val id: kotlin.String? = null,
+ // Location Code
+ @JsonProperty("Code")
+ @field:Valid
+ val code: kotlin.String? = null,
+ @JsonProperty("Address")
+ @field:Valid
+ val address: ActivitiesAddress? = null,
+ @JsonProperty("PointOfInterest")
+ @field:Valid
+ val pointOfInterest: kotlin.String? = null,
+ @JsonProperty("GeoLocation")
+ @field:Valid
+ val geoLocation: ActivitiesGeoLocation? = null,
+ @JsonProperty("Neighborhood")
+ @field:Valid
+ val neighborhood: ActivitiesNeighborhood? = null,
+ // RegionId the location resides in.
+ @JsonProperty("RegionId")
+ val regionId: kotlin.Long? = null,
+ @JsonProperty("Country")
+ @field:Valid
+ val country: ActivitiesCountry? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var name: kotlin.String? = null,
+ private var locationId: kotlin.String? = null,
+ private var type: kotlin.String? = null,
+ private var id: kotlin.String? = null,
+ private var code: kotlin.String? = null,
+ private var address: ActivitiesAddress? = null,
+ private var pointOfInterest: kotlin.String? = null,
+ private var geoLocation: ActivitiesGeoLocation? = null,
+ private var neighborhood: ActivitiesNeighborhood? = null,
+ private var regionId: kotlin.Long? = null,
+ private var country: ActivitiesCountry? = null
+ ) {
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun locationId(locationId: kotlin.String) = apply { this.locationId = locationId }
+
+ 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: ActivitiesAddress?) = apply { this.address = address }
+
+ fun pointOfInterest(pointOfInterest: kotlin.String?) = apply { this.pointOfInterest = pointOfInterest }
+
+ fun geoLocation(geoLocation: ActivitiesGeoLocation?) = apply { this.geoLocation = geoLocation }
+
+ fun neighborhood(neighborhood: ActivitiesNeighborhood?) = apply { this.neighborhood = neighborhood }
+
+ fun regionId(regionId: kotlin.Long?) = apply { this.regionId = regionId }
+
+ fun country(country: ActivitiesCountry?) = apply { this.country = country }
+
+ fun build(): ActivitiesLocation {
+ val instance =
+ ActivitiesLocation(
+ name = name!!,
+ locationId = locationId!!,
+ type = type,
+ id = id,
+ code = code,
+ address = address,
+ pointOfInterest = pointOfInterest,
+ geoLocation = geoLocation,
+ neighborhood = neighborhood,
+ regionId = regionId,
+ country = country
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesLocation) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ name = name!!,
+ locationId = locationId!!,
+ type = type,
+ id = id,
+ code = code,
+ address = address,
+ pointOfInterest = pointOfInterest,
+ geoLocation = geoLocation,
+ neighborhood = neighborhood,
+ regionId = regionId,
+ country = country
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt
new file mode 100644
index 0000000..88e54b6
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesLocationOption.kt
@@ -0,0 +1,180 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesCountry
+import com.expediagroup.sdk.xap.models.ActivitiesGeoLocation
+import com.expediagroup.sdk.xap.models.ActivitiesLocation
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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.
+ * @param regionId RegionId the location resides in.
+ * @param shortName The name of the location which matches the location keyword.
+ * @param airportCode Indicates the nearest major airport to the location.
+ * @param address The address of the location.
+ * @param country
+ * @param geoLocation
+ */
+data class ActivitiesLocationOption(
+ // Location used in partner request.
+ @JsonProperty("RequestedLocation")
+ @field:NotNull
+ @field:Valid
+ val requestedLocation: kotlin.String,
+ // Container for list of possible locations that could be used to disambiguate the query.
+ @JsonProperty("Locations")
+ @field:NotNull
+ @field:Valid
+ val locations: kotlin.collections
+ .List<
+ ActivitiesLocation
+ >,
+ // Type of the location.
+ @JsonProperty("Type")
+ @field:Valid
+ val type: kotlin.String? = null,
+ // RegionId the location resides in.
+ @JsonProperty("RegionId")
+ @field:Valid
+ val regionId: kotlin.String? = null,
+ // The name of the location which matches the location keyword.
+ @JsonProperty("ShortName")
+ @field:Valid
+ val shortName: kotlin.String? = null,
+ // Indicates the nearest major airport to the location.
+ @JsonProperty("AirportCode")
+ @field:Valid
+ val airportCode: kotlin.String? = null,
+ // The address of the location.
+ @JsonProperty("Address")
+ @field:Valid
+ val address: kotlin.String? = null,
+ @JsonProperty("Country")
+ @field:Valid
+ val country: ActivitiesCountry? = null,
+ @JsonProperty("GeoLocation")
+ @field:Valid
+ val geoLocation: ActivitiesGeoLocation? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var requestedLocation: kotlin.String? = null,
+ private var locations: kotlin.collections.List? = null,
+ private var type: kotlin.String? = null,
+ private var regionId: kotlin.String? = null,
+ private var shortName: kotlin.String? = null,
+ private var airportCode: kotlin.String? = null,
+ private var address: kotlin.String? = null,
+ private var country: ActivitiesCountry? = null,
+ private var geoLocation: ActivitiesGeoLocation? = null
+ ) {
+ fun requestedLocation(requestedLocation: kotlin.String) = apply { this.requestedLocation = requestedLocation }
+
+ fun locations(locations: kotlin.collections.List) = apply { this.locations = locations }
+
+ fun type(type: kotlin.String?) = apply { this.type = type }
+
+ fun regionId(regionId: kotlin.String?) = apply { this.regionId = regionId }
+
+ fun shortName(shortName: kotlin.String?) = apply { this.shortName = shortName }
+
+ fun airportCode(airportCode: kotlin.String?) = apply { this.airportCode = airportCode }
+
+ fun address(address: kotlin.String?) = apply { this.address = address }
+
+ fun country(country: ActivitiesCountry?) = apply { this.country = country }
+
+ fun geoLocation(geoLocation: ActivitiesGeoLocation?) = apply { this.geoLocation = geoLocation }
+
+ fun build(): ActivitiesLocationOption {
+ val instance =
+ ActivitiesLocationOption(
+ requestedLocation = requestedLocation!!,
+ locations = locations!!,
+ type = type,
+ regionId = regionId,
+ shortName = shortName,
+ airportCode = airportCode,
+ address = address,
+ country = country,
+ geoLocation = geoLocation
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesLocationOption) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ requestedLocation = requestedLocation!!,
+ locations = locations!!,
+ type = type,
+ regionId = regionId,
+ shortName = shortName,
+ airportCode = airportCode,
+ address = address,
+ country = country,
+ geoLocation = geoLocation
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt
new file mode 100644
index 0000000..b8ffe6a
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMedia.kt
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val type: kotlin.String,
+ // 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")
+ @field:NotNull
+ @field:Valid
+ val propertySize: kotlin.String,
+ // Image URL
+ @JsonProperty("Url")
+ @field:NotNull
+ @field:Valid
+ val url: kotlin.String,
+ // Image title
+ @JsonProperty("Title")
+ @field:Valid
+ val title: kotlin.String? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var type: kotlin.String? = null,
+ private var propertySize: kotlin.String? = null,
+ private var url: kotlin.String? = null,
+ private var title: kotlin.String? = null
+ ) {
+ fun type(type: kotlin.String) = apply { this.type = type }
+
+ fun propertySize(propertySize: kotlin.String) = apply { this.propertySize = propertySize }
+
+ fun url(url: kotlin.String) = apply { this.url = url }
+
+ fun title(title: kotlin.String?) = apply { this.title = title }
+
+ fun build(): ActivitiesMedia {
+ val instance =
+ ActivitiesMedia(
+ type = type!!,
+ propertySize = propertySize!!,
+ url = url!!,
+ title = title
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesMedia) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ type = type!!,
+ propertySize = propertySize!!,
+ url = url!!,
+ title = title
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt
new file mode 100644
index 0000000..524a014
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesMoney.kt
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val `value`: kotlin.String,
+ // The ISO 4217 Currency Code that the value is expressed in.
+ @JsonProperty("Currency")
+ @field:NotNull
+ @field:Valid
+ val currency: kotlin.String,
+ @JsonProperty("LocalCurrencyPrice")
+ @field:Valid
+ val localCurrencyPrice: ActivitiesMoney? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var `value`: kotlin.String? = null,
+ private var currency: kotlin.String? = null,
+ private var localCurrencyPrice: ActivitiesMoney? = null
+ ) {
+ fun `value`(`value`: kotlin.String) = apply { this.`value` = `value` }
+
+ fun currency(currency: kotlin.String) = apply { this.currency = currency }
+
+ fun localCurrencyPrice(localCurrencyPrice: ActivitiesMoney?) = apply { this.localCurrencyPrice = localCurrencyPrice }
+
+ fun build(): ActivitiesMoney {
+ val instance =
+ ActivitiesMoney(
+ `value` = `value`!!,
+ currency = currency!!,
+ localCurrencyPrice = localCurrencyPrice
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesMoney) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ `value` = `value`!!,
+ currency = currency!!,
+ localCurrencyPrice = localCurrencyPrice
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt
new file mode 100644
index 0000000..a7cec9c
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesNeighborhood.kt
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val id: kotlin.String,
+ // Neighborhood name.
+ @JsonProperty("Name")
+ @field:NotNull
+ @field:Valid
+ val name: kotlin.String
+) {
+ 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(): ActivitiesNeighborhood {
+ val instance =
+ ActivitiesNeighborhood(
+ id = id!!,
+ name = name!!
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesNeighborhood) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ id = id!!,
+ name = name!!
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt
new file mode 100644
index 0000000..8af792a
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPhone.kt
@@ -0,0 +1,125 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val countryCode: kotlin.String,
+ // Traveler's phone number; only digits allowed.
+ @JsonProperty("Number")
+ @field:NotNull
+ @field:Valid
+ val number: kotlin.String,
+ // Area code of traveler's phone number; only digits allowed.
+ @JsonProperty("AreaCode")
+ @field:Valid
+ val areaCode: kotlin.String? = null,
+ @JsonProperty("ExtensionNumber")
+ @field:Valid
+ val extensionNumber: kotlin.String? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var countryCode: kotlin.String? = null,
+ private var number: kotlin.String? = null,
+ private var areaCode: kotlin.String? = null,
+ private var extensionNumber: kotlin.String? = null
+ ) {
+ fun countryCode(countryCode: kotlin.String) = apply { this.countryCode = countryCode }
+
+ fun number(number: kotlin.String) = apply { this.number = number }
+
+ fun areaCode(areaCode: kotlin.String?) = apply { this.areaCode = areaCode }
+
+ fun extensionNumber(extensionNumber: kotlin.String?) = apply { this.extensionNumber = extensionNumber }
+
+ fun build(): ActivitiesPhone {
+ val instance =
+ ActivitiesPhone(
+ countryCode = countryCode!!,
+ number = number!!,
+ areaCode = areaCode,
+ extensionNumber = extensionNumber
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesPhone) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ countryCode = countryCode!!,
+ number = number!!,
+ areaCode = areaCode,
+ extensionNumber = extensionNumber
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt
new file mode 100644
index 0000000..fd679c1
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesPrice.kt
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesMoney
+import com.expediagroup.sdk.xap.models.ReferencePrice
+import com.expediagroup.sdk.xap.models.Savings
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * The price of the offer
+ * @param category Type of passenger. Values supported are: ADULT | SENIOR | CHILD
+ * @param totalRate
+ * @param totalFees
+ * @param totalTaxesAndFees
+ * @param referencePrice
+ * @param savings
+ */
+data class ActivitiesPrice(
+ // Type of passenger. Values supported are: ADULT | SENIOR | CHILD
+ @JsonProperty("Category")
+ @field:NotNull
+ @field:Valid
+ val category: kotlin.String,
+ @JsonProperty("TotalRate")
+ @field:NotNull
+ @field:Valid
+ val totalRate: ActivitiesMoney,
+ @JsonProperty("TotalFees")
+ @field:NotNull
+ @field:Valid
+ val totalFees: ActivitiesMoney,
+ @JsonProperty("TotalTaxesAndFees")
+ @field:NotNull
+ @field:Valid
+ val totalTaxesAndFees: ActivitiesMoney,
+ @JsonProperty("ReferencePrice")
+ @field:Valid
+ val referencePrice: ReferencePrice? = null,
+ @JsonProperty("Savings")
+ @field:Valid
+ val savings: Savings? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var category: kotlin.String? = null,
+ private var totalRate: ActivitiesMoney? = null,
+ private var totalFees: ActivitiesMoney? = null,
+ private var totalTaxesAndFees: ActivitiesMoney? = null,
+ private var referencePrice: ReferencePrice? = null,
+ private var savings: Savings? = null
+ ) {
+ fun category(category: kotlin.String) = apply { this.category = category }
+
+ fun totalRate(totalRate: ActivitiesMoney) = apply { this.totalRate = totalRate }
+
+ fun totalFees(totalFees: ActivitiesMoney) = apply { this.totalFees = totalFees }
+
+ fun totalTaxesAndFees(totalTaxesAndFees: ActivitiesMoney) = apply { this.totalTaxesAndFees = totalTaxesAndFees }
+
+ fun referencePrice(referencePrice: ReferencePrice?) = apply { this.referencePrice = referencePrice }
+
+ fun savings(savings: Savings?) = apply { this.savings = savings }
+
+ fun build(): ActivitiesPrice {
+ val instance =
+ ActivitiesPrice(
+ category = category!!,
+ totalRate = totalRate!!,
+ totalFees = totalFees!!,
+ totalTaxesAndFees = totalTaxesAndFees!!,
+ referencePrice = referencePrice,
+ savings = savings
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesPrice) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ category = category!!,
+ totalRate = totalRate!!,
+ totalFees = totalFees!!,
+ totalTaxesAndFees = totalTaxesAndFees!!,
+ referencePrice = referencePrice,
+ savings = savings
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt
new file mode 100644
index 0000000..2d5698f
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesSupplier.kt
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesPhone
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ @field:NotNull
+ @field:Valid
+ val name: kotlin.String,
+ @JsonProperty("Phone")
+ @field:NotNull
+ @field:Valid
+ val phone: ActivitiesPhone
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var name: kotlin.String? = null,
+ private var phone: ActivitiesPhone? = null
+ ) {
+ fun name(name: kotlin.String) = apply { this.name = name }
+
+ fun phone(phone: ActivitiesPhone) = apply { this.phone = phone }
+
+ fun build(): ActivitiesSupplier {
+ val instance =
+ ActivitiesSupplier(
+ name = name!!,
+ phone = phone!!
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesSupplier) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ name = name!!,
+ phone = phone!!
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt
new file mode 100644
index 0000000..71c3fae
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivitiesWarning.kt
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesLink
+import com.expediagroup.sdk.xap.models.ActivitiesMoney
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Container for all warnings generated during the transaction.
+ * @param code Standardized warning code.
+ * @param description Standardized warning description message.
+ * @param originalPrice
+ * @param newPrice
+ * @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")
+ @field:NotNull
+ @field:Valid
+ val code: kotlin.String,
+ // Standardized warning description message.
+ @JsonProperty("Description")
+ @field:NotNull
+ @field:Valid
+ val description: kotlin.String,
+ @JsonProperty("OriginalPrice")
+ @field:Valid
+ val originalPrice: ActivitiesMoney? = null,
+ @JsonProperty("NewPrice")
+ @field:Valid
+ val newPrice: ActivitiesMoney? = null,
+ @JsonProperty("ChangedAmount")
+ @field:Valid
+ val changedAmount: ActivitiesMoney? = null,
+ // The changed percentage. In the sample 2.97 means the changed percentage is 2.97%.
+ @JsonProperty("ChangedPercentage")
+ @field:Valid
+ val changedPercentage: kotlin.String? = null,
+ @JsonProperty("Links")
+ @field:Valid
+ val links: kotlin.collections.Map? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var code: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ private var originalPrice: ActivitiesMoney? = null,
+ private var newPrice: ActivitiesMoney? = null,
+ private var changedAmount: ActivitiesMoney? = null,
+ private var changedPercentage: kotlin.String? = null,
+ private var links: kotlin.collections.Map? = null
+ ) {
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun originalPrice(originalPrice: ActivitiesMoney?) = apply { this.originalPrice = originalPrice }
+
+ fun newPrice(newPrice: ActivitiesMoney?) = apply { this.newPrice = newPrice }
+
+ fun changedAmount(changedAmount: ActivitiesMoney?) = apply { this.changedAmount = changedAmount }
+
+ fun changedPercentage(changedPercentage: kotlin.String?) = apply { this.changedPercentage = changedPercentage }
+
+ fun links(links: kotlin.collections.Map?) = apply { this.links = links }
+
+ fun build(): ActivitiesWarning {
+ val instance =
+ ActivitiesWarning(
+ code = code!!,
+ description = description!!,
+ originalPrice = originalPrice,
+ newPrice = newPrice,
+ changedAmount = changedAmount,
+ changedPercentage = changedPercentage,
+ links = links
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivitiesWarning) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ code = code!!,
+ description = description!!,
+ originalPrice = originalPrice,
+ newPrice = newPrice,
+ changedAmount = changedAmount,
+ changedPercentage = changedPercentage,
+ links = links
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt
new file mode 100644
index 0000000..ee3f8f4
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Activity.kt
@@ -0,0 +1,323 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesCancellationPolicy
+import com.expediagroup.sdk.xap.models.ActivitiesLink
+import com.expediagroup.sdk.xap.models.ActivitiesLocation
+import com.expediagroup.sdk.xap.models.ActivitiesMedia
+import com.expediagroup.sdk.xap.models.ActivitiesPrice
+import com.expediagroup.sdk.xap.models.ActivitiesSupplier
+import com.expediagroup.sdk.xap.models.Offer
+import com.expediagroup.sdk.xap.models.Redemption
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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.
+ * @param media List of activity Media.
+ * @param categories 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
+ * @param duration The anticipated time duration for the activity. Using java jdk Duration parsing.
+ * @param freeCancellation A boolean value describing whether or not this activity reservation can be cancelled without incurring a penalty.
+ * @param price
+ * @param supplier
+ * @param offers Offers for the activity.
+ * @param redemption
+ * @param activityLocations Container of location information where activity happens.
+ * @param reviewScore The overall Expedia score for the activity.
+ * @param reviewCount The number of Expedia reviews that went into the calculation of the ReviewScore.
+ * @param links HATEOAS links included in this response.
+ * @param cancellationPolicy
+ * @param highlights Web formatted statement of the Highlight(s) for the activity.
+ * @param termsAndConditions Terms and Conditions for the Activity.
+ * @param inclusions Web formatted statement of what is included in the activity
+ * @param exclusions Web formatted statement of what is NOT included in the activity
+ * @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.
+ */
+data class Activity(
+ // The numerical identifier for this particular activity
+ @JsonProperty("Id")
+ val id: kotlin.Int,
+ // The display title for this activity.
+ @JsonProperty("Title")
+ @field:NotNull
+ @field:Valid
+ val title: kotlin.String,
+ // The description of the Activity.
+ @JsonProperty("Description")
+ @field:NotNull
+ @field:Valid
+ val description: kotlin.String,
+ // List of activity Media.
+ @JsonProperty("Media")
+ @field:NotNull
+ @field:Valid
+ val media: kotlin.collections
+ .List<
+ ActivitiesMedia
+ >,
+ // 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
+ @JsonProperty("Categories")
+ @field:NotNull
+ @field:Valid
+ val categories: kotlin.collections
+ .List<
+ kotlin.String
+ >,
+ // The anticipated time duration for the activity. Using java jdk Duration parsing.
+ @JsonProperty("Duration")
+ @field:NotNull
+ @field:Valid
+ val duration: kotlin.String,
+ // A boolean value describing whether or not this activity reservation can be cancelled without incurring a penalty.
+ @JsonProperty("FreeCancellation")
+ @field:NotNull
+ @field:Valid
+ val freeCancellation: kotlin.Boolean,
+ @JsonProperty("Price")
+ @field:NotNull
+ @field:Valid
+ val price: ActivitiesPrice,
+ @JsonProperty("Supplier")
+ @field:NotNull
+ @field:Valid
+ val supplier: ActivitiesSupplier,
+ // Offers for the activity.
+ @JsonProperty("Offers")
+ @field:NotNull
+ @field:Valid
+ val offers: kotlin.collections
+ .List<
+ Offer
+ >,
+ @JsonProperty("Redemption")
+ @field:Valid
+ val redemption: Redemption? = null,
+ // Container of location information where activity happens.
+ @JsonProperty("ActivityLocations")
+ @field:Valid
+ val activityLocations: kotlin.collections.List? = null,
+ // The overall Expedia score for the activity.
+ @JsonProperty("ReviewScore")
+ val reviewScore: kotlin.Int? = null,
+ // The number of Expedia reviews that went into the calculation of the ReviewScore.
+ @JsonProperty("ReviewCount")
+ val reviewCount: kotlin.Int? = null,
+ // HATEOAS links included in this response.
+ @JsonProperty("Links")
+ @field:Valid
+ val links: kotlin.collections.Map? = null,
+ @JsonProperty("CancellationPolicy")
+ @field:Valid
+ val cancellationPolicy: ActivitiesCancellationPolicy? = null,
+ // Web formatted statement of the Highlight(s) for the activity.
+ @JsonProperty("Highlights")
+ @field:Valid
+ val highlights: kotlin.collections.List? = null,
+ // Terms and Conditions for the Activity.
+ @JsonProperty("TermsAndConditions")
+ @field:Valid
+ val termsAndConditions: kotlin.collections.List? = null,
+ // Web formatted statement of what is included in the activity
+ @JsonProperty("Inclusions")
+ @field:Valid
+ val inclusions: kotlin.collections.List? = null,
+ // Web formatted statement of what is NOT included in the activity
+ @JsonProperty("Exclusions")
+ @field:Valid
+ val exclusions: kotlin.collections.List? = null,
+ // Web formatted statement of things that a purchaser should be aware of BEFORE they book this activity.
+ @JsonProperty("KnowBeforeYouBook")
+ @field:Valid
+ val knowBeforeYouBook: kotlin.collections.List? = null,
+ // Web formatted statement of things that a purchaser should be aware of BEFORE they go to this activity.
+ @JsonProperty("KnowBeforeYouGo")
+ @field:Valid
+ val knowBeforeYouGo: kotlin.collections.List? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var id: kotlin.Int? = null,
+ private var title: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ private var media: kotlin.collections.List? = null,
+ private var categories: kotlin.collections.List? = null,
+ private var duration: kotlin.String? = null,
+ private var freeCancellation: kotlin.Boolean? = null,
+ private var price: ActivitiesPrice? = null,
+ private var supplier: ActivitiesSupplier? = null,
+ private var offers: kotlin.collections.List? = null,
+ private var redemption: Redemption? = null,
+ private var activityLocations: kotlin.collections.List? = null,
+ private var reviewScore: kotlin.Int? = null,
+ private var reviewCount: kotlin.Int? = null,
+ private var links: kotlin.collections.Map? = null,
+ private var cancellationPolicy: ActivitiesCancellationPolicy? = null,
+ private var highlights: kotlin.collections.List? = null,
+ private var termsAndConditions: kotlin.collections.List? = null,
+ private var inclusions: kotlin.collections.List? = null,
+ private var exclusions: kotlin.collections.List? = null,
+ private var knowBeforeYouBook: kotlin.collections.List? = null,
+ private var knowBeforeYouGo: kotlin.collections.List? = null
+ ) {
+ fun id(id: kotlin.Int) = apply { this.id = id }
+
+ fun title(title: kotlin.String) = apply { this.title = title }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun media(media: kotlin.collections.List) = apply { this.media = media }
+
+ fun categories(categories: kotlin.collections.List) = apply { this.categories = categories }
+
+ fun duration(duration: kotlin.String) = apply { this.duration = duration }
+
+ fun freeCancellation(freeCancellation: kotlin.Boolean) = apply { this.freeCancellation = freeCancellation }
+
+ fun price(price: ActivitiesPrice) = apply { this.price = price }
+
+ fun supplier(supplier: ActivitiesSupplier) = apply { this.supplier = supplier }
+
+ fun offers(offers: kotlin.collections.List) = apply { this.offers = offers }
+
+ fun redemption(redemption: Redemption?) = apply { this.redemption = redemption }
+
+ fun activityLocations(activityLocations: kotlin.collections.List?) = apply { this.activityLocations = activityLocations }
+
+ fun reviewScore(reviewScore: kotlin.Int?) = apply { this.reviewScore = reviewScore }
+
+ fun reviewCount(reviewCount: kotlin.Int?) = apply { this.reviewCount = reviewCount }
+
+ fun links(links: kotlin.collections.Map?) = apply { this.links = links }
+
+ fun cancellationPolicy(cancellationPolicy: ActivitiesCancellationPolicy?) = apply { this.cancellationPolicy = cancellationPolicy }
+
+ fun highlights(highlights: kotlin.collections.List?) = apply { this.highlights = highlights }
+
+ fun termsAndConditions(termsAndConditions: kotlin.collections.List?) = apply { this.termsAndConditions = termsAndConditions }
+
+ fun inclusions(inclusions: kotlin.collections.List?) = apply { this.inclusions = inclusions }
+
+ fun exclusions(exclusions: kotlin.collections.List?) = apply { this.exclusions = exclusions }
+
+ fun knowBeforeYouBook(knowBeforeYouBook: kotlin.collections.List?) = apply { this.knowBeforeYouBook = knowBeforeYouBook }
+
+ fun knowBeforeYouGo(knowBeforeYouGo: kotlin.collections.List?) = apply { this.knowBeforeYouGo = knowBeforeYouGo }
+
+ fun build(): Activity {
+ val instance =
+ Activity(
+ id = id!!,
+ title = title!!,
+ description = description!!,
+ media = media!!,
+ categories = categories!!,
+ duration = duration!!,
+ freeCancellation = freeCancellation!!,
+ price = price!!,
+ supplier = supplier!!,
+ offers = offers!!,
+ redemption = redemption,
+ activityLocations = activityLocations,
+ reviewScore = reviewScore,
+ reviewCount = reviewCount,
+ links = links,
+ cancellationPolicy = cancellationPolicy,
+ highlights = highlights,
+ termsAndConditions = termsAndConditions,
+ inclusions = inclusions,
+ exclusions = exclusions,
+ knowBeforeYouBook = knowBeforeYouBook,
+ knowBeforeYouGo = knowBeforeYouGo
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: Activity) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ id = id!!,
+ title = title!!,
+ description = description!!,
+ media = media!!,
+ categories = categories!!,
+ duration = duration!!,
+ freeCancellation = freeCancellation!!,
+ price = price!!,
+ supplier = supplier!!,
+ offers = offers!!,
+ redemption = redemption,
+ activityLocations = activityLocations,
+ reviewScore = reviewScore,
+ reviewCount = reviewCount,
+ links = links,
+ cancellationPolicy = cancellationPolicy,
+ highlights = highlights,
+ termsAndConditions = termsAndConditions,
+ inclusions = inclusions,
+ exclusions = exclusions,
+ knowBeforeYouBook = knowBeforeYouBook,
+ knowBeforeYouGo = knowBeforeYouGo
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt
new file mode 100644
index 0000000..337bba6
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityDetailsResponse.kt
@@ -0,0 +1,145 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesWarning
+import com.expediagroup.sdk.xap.models.Activity
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ *
+ * @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")
+ @field:NotNull
+ @field:Valid
+ val transactionId: kotlin.String,
+ // The location user searched, translated into the full, unambiguous format.
+ @JsonProperty("Location")
+ @field:NotNull
+ @field:Valid
+ val location: kotlin.String,
+ // Container for all warnings generated during the transaction.
+ @JsonProperty("Warnings")
+ @field:Valid
+ val warnings: kotlin.collections.List? = null,
+ // The startDate of activities in YYY-MM-DD format.
+ @JsonProperty("StartDate")
+ val startDate: java.time.LocalDate? = null,
+ // The endDate of activities in YYY-MM-DD format.
+ @JsonProperty("EndDate")
+ val endDate: java.time.LocalDate? = null,
+ @JsonProperty("ActivityDetails")
+ @field:Valid
+ val activityDetails: Activity? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var transactionId: kotlin.String? = null,
+ private var location: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ private var startDate: java.time.LocalDate? = null,
+ private var endDate: java.time.LocalDate? = null,
+ private var activityDetails: Activity? = null
+ ) {
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun location(location: kotlin.String) = apply { this.location = location }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun startDate(startDate: java.time.LocalDate?) = apply { this.startDate = startDate }
+
+ fun endDate(endDate: java.time.LocalDate?) = apply { this.endDate = endDate }
+
+ fun activityDetails(activityDetails: Activity?) = apply { this.activityDetails = activityDetails }
+
+ fun build(): ActivityDetailsResponse {
+ val instance =
+ ActivityDetailsResponse(
+ transactionId = transactionId!!,
+ location = location!!,
+ warnings = warnings,
+ startDate = startDate,
+ endDate = endDate,
+ activityDetails = activityDetails
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivityDetailsResponse) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ transactionId = transactionId!!,
+ location = location!!,
+ warnings = warnings,
+ startDate = startDate,
+ endDate = endDate,
+ activityDetails = activityDetails
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt
new file mode 100644
index 0000000..79cbaf4
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ActivityListingsResponse.kt
@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesWarning
+import com.expediagroup.sdk.xap.models.Activity
+import com.expediagroup.sdk.xap.models.CategoryGroup
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ *
+ * @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.
+ * @param warnings Container for all warnings generated during the transaction.
+ * @param startDate The startDate of the returned group of activities in YYYY-MM-DD format.
+ * @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")
+ @field:NotNull
+ @field:Valid
+ val transactionId: kotlin.String,
+ // The number of activities returned in the response.
+ @JsonProperty("Count")
+ val count: kotlin.Long,
+ // The location that the user searched, expressed in the exact format that the inventory system uses to designate the location.
+ @JsonProperty("Location")
+ @field:NotNull
+ @field:Valid
+ val location: kotlin.String,
+ // Container for all warnings generated during the transaction.
+ @JsonProperty("Warnings")
+ @field:Valid
+ val warnings: kotlin.collections.List? = null,
+ // The startDate of the returned group of activities in YYYY-MM-DD format.
+ @JsonProperty("StartDate")
+ val startDate: java.time.LocalDate? = null,
+ // The endDate of returned group of activities in YYYY-MM-DD format.
+ @JsonProperty("EndDate")
+ val endDate: java.time.LocalDate? = null,
+ // List of activities matching the search criteria.
+ @JsonProperty("Activities")
+ @field:Valid
+ val activities: kotlin.collections.List? = null,
+ // Container for a breakdown of how many of each type of Activity have been returned in the API response.
+ @JsonProperty("Categories")
+ @field:Valid
+ val categories: kotlin.collections.List? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var transactionId: kotlin.String? = null,
+ private var count: kotlin.Long? = null,
+ private var location: kotlin.String? = null,
+ private var warnings: kotlin.collections.List? = null,
+ private var startDate: java.time.LocalDate? = null,
+ private var endDate: java.time.LocalDate? = null,
+ private var activities: kotlin.collections.List? = null,
+ private var categories: kotlin.collections.List? = null
+ ) {
+ fun transactionId(transactionId: kotlin.String) = apply { this.transactionId = transactionId }
+
+ fun count(count: kotlin.Long) = apply { this.count = count }
+
+ fun location(location: kotlin.String) = apply { this.location = location }
+
+ fun warnings(warnings: kotlin.collections.List?) = apply { this.warnings = warnings }
+
+ fun startDate(startDate: java.time.LocalDate?) = apply { this.startDate = startDate }
+
+ fun endDate(endDate: java.time.LocalDate?) = apply { this.endDate = endDate }
+
+ fun activities(activities: kotlin.collections.List?) = apply { this.activities = activities }
+
+ fun categories(categories: kotlin.collections.List?) = apply { this.categories = categories }
+
+ fun build(): ActivityListingsResponse {
+ val instance =
+ ActivityListingsResponse(
+ transactionId = transactionId!!,
+ count = count!!,
+ location = location!!,
+ warnings = warnings,
+ startDate = startDate,
+ endDate = endDate,
+ activities = activities,
+ categories = categories
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ActivityListingsResponse) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ transactionId = transactionId!!,
+ count = count!!,
+ location = location!!,
+ warnings = warnings,
+ startDate = startDate,
+ endDate = endDate,
+ activities = activities,
+ categories = categories
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt
new file mode 100644
index 0000000..4504f17
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/AvailableTimeSlot.kt
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesCancellationPolicy
+import com.expediagroup.sdk.xap.models.Ticket
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ val dateTime: java.time.OffsetDateTime,
+ // Indicates whether the activity is an all-day activity.
+ @JsonProperty("AllDayActivity")
+ @field:NotNull
+ @field:Valid
+ val allDayActivity: kotlin.Boolean,
+ @JsonProperty("CancellationPolicy")
+ @field:NotNull
+ @field:Valid
+ val cancellationPolicy: ActivitiesCancellationPolicy,
+ // Container for ticket information.
+ @JsonProperty("Tickets")
+ @field:NotNull
+ @field:Valid
+ val tickets: kotlin.collections
+ .List<
+ Ticket
+ >
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var dateTime: java.time.OffsetDateTime? = null,
+ private var allDayActivity: kotlin.Boolean? = null,
+ private var cancellationPolicy: ActivitiesCancellationPolicy? = null,
+ private var tickets: kotlin.collections.List? = null
+ ) {
+ fun dateTime(dateTime: java.time.OffsetDateTime) = apply { this.dateTime = dateTime }
+
+ fun allDayActivity(allDayActivity: kotlin.Boolean) = apply { this.allDayActivity = allDayActivity }
+
+ fun cancellationPolicy(cancellationPolicy: ActivitiesCancellationPolicy) = apply { this.cancellationPolicy = cancellationPolicy }
+
+ fun tickets(tickets: kotlin.collections.List) = apply { this.tickets = tickets }
+
+ fun build(): AvailableTimeSlot {
+ val instance =
+ AvailableTimeSlot(
+ dateTime = dateTime!!,
+ allDayActivity = allDayActivity!!,
+ cancellationPolicy = cancellationPolicy!!,
+ tickets = tickets!!
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: AvailableTimeSlot) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ dateTime = dateTime!!,
+ allDayActivity = allDayActivity!!,
+ cancellationPolicy = cancellationPolicy!!,
+ tickets = tickets!!
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt
new file mode 100644
index 0000000..ec433a7
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/CategoryGroup.kt
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * 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")
+ val count: kotlin.Int,
+ // The group which the category belongs Possible value is: Recommendations Tours Activities Transportation Promotions Duration
+ @JsonProperty("GroupName")
+ @field:NotNull
+ @field:Valid
+ val groupName: kotlin.String,
+ // The localized value for category name.
+ @JsonProperty("GroupDisplayName")
+ @field:NotNull
+ @field:Valid
+ val groupDisplayName: kotlin.String,
+ // The name of one of the categories.
+ @JsonProperty("CategoryName")
+ @field:NotNull
+ @field:Valid
+ val categoryName: kotlin.String,
+ @JsonProperty("CategoryDisplayName")
+ @field:Valid
+ val categoryDisplayName: kotlin.String? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var count: kotlin.Int? = null,
+ private var groupName: kotlin.String? = null,
+ private var groupDisplayName: kotlin.String? = null,
+ private var categoryName: kotlin.String? = null,
+ private var categoryDisplayName: kotlin.String? = null
+ ) {
+ fun count(count: kotlin.Int) = apply { this.count = count }
+
+ fun groupName(groupName: kotlin.String) = apply { this.groupName = groupName }
+
+ fun groupDisplayName(groupDisplayName: kotlin.String) = apply { this.groupDisplayName = groupDisplayName }
+
+ fun categoryName(categoryName: kotlin.String) = apply { this.categoryName = categoryName }
+
+ fun categoryDisplayName(categoryDisplayName: kotlin.String?) = apply { this.categoryDisplayName = categoryDisplayName }
+
+ fun build(): CategoryGroup {
+ val instance =
+ CategoryGroup(
+ count = count!!,
+ groupName = groupName!!,
+ groupDisplayName = groupDisplayName!!,
+ categoryName = categoryName!!,
+ categoryDisplayName = categoryDisplayName
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: CategoryGroup) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ count = count!!,
+ groupName = groupName!!,
+ groupDisplayName = groupDisplayName!!,
+ categoryName = categoryName!!,
+ categoryDisplayName = categoryDisplayName
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Offer.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Offer.kt
new file mode 100644
index 0000000..ad76293
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Offer.kt
@@ -0,0 +1,163 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesLink
+import com.expediagroup.sdk.xap.models.ActivitiesPrice
+import com.expediagroup.sdk.xap.models.AvailableTimeSlot
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Offers for the activity.
+ * @param id The numerical identifier for the offer.
+ * @param title A descriptive title for this offer.
+ * @param description Description of this offer.
+ * @param duration The anticipated time duration for the activity, e xpressed using Java JDK duration format.
+ * @param availableTimeSlots The list of available Time Slots for the activity.
+ * @param offerPrice
+ * @param links Container of HATEOAS URL's
+ */
+data class Offer(
+ // The numerical identifier for the offer.
+ @JsonProperty("Id")
+ val id: kotlin.Int,
+ // A descriptive title for this offer.
+ @JsonProperty("Title")
+ @field:NotNull
+ @field:Valid
+ val title: kotlin.String,
+ // Description of this offer.
+ @JsonProperty("Description")
+ @field:NotNull
+ @field:Valid
+ val description: kotlin.String,
+ // The anticipated time duration for the activity, e xpressed using Java JDK duration format.
+ @JsonProperty("Duration")
+ @field:NotNull
+ @field:Valid
+ val duration: kotlin.String,
+ // The list of available Time Slots for the activity.
+ @JsonProperty("AvailableTimeSlots")
+ @field:NotNull
+ @field:Valid
+ val availableTimeSlots: kotlin.collections
+ .List<
+ AvailableTimeSlot
+ >,
+ @JsonProperty("OfferPrice")
+ @field:NotNull
+ @field:Valid
+ val offerPrice: ActivitiesPrice,
+ // Container of HATEOAS URL's
+ @JsonProperty("Links")
+ @field:Valid
+ val links: kotlin.collections.Map? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var id: kotlin.Int? = null,
+ private var title: kotlin.String? = null,
+ private var description: kotlin.String? = null,
+ private var duration: kotlin.String? = null,
+ private var availableTimeSlots: kotlin.collections.List? = null,
+ private var offerPrice: ActivitiesPrice? = null,
+ private var links: kotlin.collections.Map? = null
+ ) {
+ fun id(id: kotlin.Int) = apply { this.id = id }
+
+ fun title(title: kotlin.String) = apply { this.title = title }
+
+ fun description(description: kotlin.String) = apply { this.description = description }
+
+ fun duration(duration: kotlin.String) = apply { this.duration = duration }
+
+ fun availableTimeSlots(availableTimeSlots: kotlin.collections.List) = apply { this.availableTimeSlots = availableTimeSlots }
+
+ fun offerPrice(offerPrice: ActivitiesPrice) = apply { this.offerPrice = offerPrice }
+
+ fun links(links: kotlin.collections.Map?) = apply { this.links = links }
+
+ fun build(): Offer {
+ val instance =
+ Offer(
+ id = id!!,
+ title = title!!,
+ description = description!!,
+ duration = duration!!,
+ availableTimeSlots = availableTimeSlots!!,
+ offerPrice = offerPrice!!,
+ links = links
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: Offer) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ id = id!!,
+ title = title!!,
+ description = description!!,
+ duration = duration!!,
+ availableTimeSlots = availableTimeSlots!!,
+ offerPrice = offerPrice!!,
+ links = links
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Redemption.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Redemption.kt
new file mode 100644
index 0000000..32a02d0
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Redemption.kt
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesLocation
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+
+/**
+ * Container of redemption information.
+ * @param type The type of redemption process associated to the activity.
+ * @param redemptionLocations List of redemption locations where the activity will take place, please refer to Location Section below.
+ */
+data class Redemption(
+ // The type of redemption process associated to the activity.
+ @JsonProperty("Type")
+ @field:Valid
+ val type: kotlin.String? = null,
+ // List of redemption locations where the activity will take place, please refer to Location Section below.
+ @JsonProperty("RedemptionLocations")
+ @field:Valid
+ val redemptionLocations: kotlin.collections.List? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var type: kotlin.String? = null,
+ private var redemptionLocations: kotlin.collections.List? = null
+ ) {
+ fun type(type: kotlin.String?) = apply { this.type = type }
+
+ fun redemptionLocations(redemptionLocations: kotlin.collections.List?) = apply { this.redemptionLocations = redemptionLocations }
+
+ fun build(): Redemption {
+ val instance =
+ Redemption(
+ type = type,
+ redemptionLocations = redemptionLocations
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: Redemption) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ type = type,
+ redemptionLocations = redemptionLocations
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ReferencePrice.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ReferencePrice.kt
new file mode 100644
index 0000000..8657fc4
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/ReferencePrice.kt
@@ -0,0 +1,113 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesMoney
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Container for the reference price used for strike out display.
+ * @param totalRate
+ * @param totalFees
+ * @param totalTaxesAndFees
+ */
+data class ReferencePrice(
+ @JsonProperty("TotalRate")
+ @field:NotNull
+ @field:Valid
+ val totalRate: ActivitiesMoney,
+ @JsonProperty("TotalFees")
+ @field:Valid
+ val totalFees: ActivitiesMoney? = null,
+ @JsonProperty("TotalTaxesAndFees")
+ @field:Valid
+ val totalTaxesAndFees: ActivitiesMoney? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var totalRate: ActivitiesMoney? = null,
+ private var totalFees: ActivitiesMoney? = null,
+ private var totalTaxesAndFees: ActivitiesMoney? = null
+ ) {
+ fun totalRate(totalRate: ActivitiesMoney) = apply { this.totalRate = totalRate }
+
+ fun totalFees(totalFees: ActivitiesMoney?) = apply { this.totalFees = totalFees }
+
+ fun totalTaxesAndFees(totalTaxesAndFees: ActivitiesMoney?) = apply { this.totalTaxesAndFees = totalTaxesAndFees }
+
+ fun build(): ReferencePrice {
+ val instance =
+ ReferencePrice(
+ totalRate = totalRate!!,
+ totalFees = totalFees,
+ totalTaxesAndFees = totalTaxesAndFees
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: ReferencePrice) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ totalRate = totalRate!!,
+ totalFees = totalFees,
+ totalTaxesAndFees = totalTaxesAndFees
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Restrictions.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Restrictions.kt
new file mode 100644
index 0000000..e442400
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Restrictions.kt
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Container of the Restrictions associated to this ticket.
+ * @param type Type of the Restriction.
+ * @param max Maximum value allowed for the restriction type.
+ * @param min Minimum value allowed for the restriction type.
+ * @param description The text to describe the restriction.
+ */
+data class Restrictions(
+ // Type of the Restriction.
+ @JsonProperty("Type")
+ @field:NotNull
+ @field:Valid
+ val type: kotlin.String,
+ // Maximum value allowed for the restriction type.
+ @JsonProperty("Max")
+ @field:NotNull
+ @field:Valid
+ val max: kotlin.String,
+ // Minimum value allowed for the restriction type.
+ @JsonProperty("Min")
+ @field:NotNull
+ @field:Valid
+ val min: kotlin.String,
+ // The text to describe the restriction.
+ @JsonProperty("Description")
+ @field:Valid
+ val description: kotlin.String? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var type: kotlin.String? = null,
+ private var max: kotlin.String? = null,
+ private var min: kotlin.String? = null,
+ private var description: kotlin.String? = null
+ ) {
+ fun type(type: kotlin.String) = apply { this.type = type }
+
+ fun max(max: kotlin.String) = apply { this.max = max }
+
+ fun min(min: kotlin.String) = apply { this.min = min }
+
+ fun description(description: kotlin.String?) = apply { this.description = description }
+
+ fun build(): Restrictions {
+ val instance =
+ Restrictions(
+ type = type!!,
+ max = max!!,
+ min = min!!,
+ description = description
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: Restrictions) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ type = type!!,
+ max = max!!,
+ min = min!!,
+ description = description
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Savings.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Savings.kt
new file mode 100644
index 0000000..9282cb6
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Savings.kt
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesMoney
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * Container of savings information.
+ * @param percentage The percentage of the price that has been discounted off the regular price for the current activity.
+ * @param amount
+ */
+data class Savings(
+ // The percentage of the price that has been discounted off the regular price for the current activity.
+ @JsonProperty("Percentage")
+ val percentage: kotlin.Int,
+ @JsonProperty("Amount")
+ @field:NotNull
+ @field:Valid
+ val amount: ActivitiesMoney
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var percentage: kotlin.Int? = null,
+ private var amount: ActivitiesMoney? = null
+ ) {
+ fun percentage(percentage: kotlin.Int) = apply { this.percentage = percentage }
+
+ fun amount(amount: ActivitiesMoney) = apply { this.amount = amount }
+
+ fun build(): Savings {
+ val instance =
+ Savings(
+ percentage = percentage!!,
+ amount = amount!!
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: Savings) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ percentage = percentage!!,
+ amount = amount!!
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Ticket.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Ticket.kt
new file mode 100644
index 0000000..741c82f
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/Ticket.kt
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+ "ArrayInDataClass",
+ "EnumEntryName",
+ "RemoveRedundantQualifierName",
+ "UnusedImport"
+)
+
+package com.expediagroup.sdk.xap.models
+
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.models.ActivitiesPrice
+import com.expediagroup.sdk.xap.models.Restrictions
+import com.fasterxml.jackson.annotation.JsonProperty
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * The list of Ticket information.
+ * @param id The numerical identifier for the ticket.
+ * @param code The code for the ticket. Values supported are: Adult Traveler Child Group Senior Infant Student
+ * @param count The number of each ticket type to be booked.
+ * @param ticketPrice
+ * @param restrictions
+ */
+data class Ticket(
+ // The numerical identifier for the ticket.
+ @JsonProperty("Id")
+ val id: kotlin.Int,
+ // The code for the ticket. Values supported are: Adult Traveler Child Group Senior Infant Student
+ @JsonProperty("Code")
+ @field:NotNull
+ @field:Valid
+ val code: kotlin.String,
+ // The number of each ticket type to be booked.
+ @JsonProperty("Count")
+ val count: kotlin.Int,
+ @JsonProperty("TicketPrice")
+ @field:NotNull
+ @field:Valid
+ val ticketPrice: ActivitiesPrice,
+ @JsonProperty("Restrictions")
+ @field:Valid
+ val restrictions: Restrictions? = null
+) {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ private var id: kotlin.Int? = null,
+ private var code: kotlin.String? = null,
+ private var count: kotlin.Int? = null,
+ private var ticketPrice: ActivitiesPrice? = null,
+ private var restrictions: Restrictions? = null
+ ) {
+ fun id(id: kotlin.Int) = apply { this.id = id }
+
+ fun code(code: kotlin.String) = apply { this.code = code }
+
+ fun count(count: kotlin.Int) = apply { this.count = count }
+
+ fun ticketPrice(ticketPrice: ActivitiesPrice) = apply { this.ticketPrice = ticketPrice }
+
+ fun restrictions(restrictions: Restrictions?) = apply { this.restrictions = restrictions }
+
+ fun build(): Ticket {
+ val instance =
+ Ticket(
+ id = id!!,
+ code = code!!,
+ count = count!!,
+ ticketPrice = ticketPrice!!,
+ restrictions = restrictions
+ )
+
+ validate(instance)
+
+ return instance
+ }
+
+ private fun validate(instance: Ticket) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(instance)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ id = id!!,
+ code = code!!,
+ count = count!!,
+ ticketPrice = ticketPrice!!,
+ restrictions = restrictions
+ )
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/exception/ApiException.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/exception/ApiException.kt
index 6a67cbd..56dc289 100644
--- a/code/src/main/kotlin/com/expediagroup/sdk/xap/models/exception/ApiException.kt
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/models/exception/ApiException.kt
@@ -64,6 +64,40 @@ internal object ErrorObjectMapper {
private val defaultHttpStatusCodeRanges = listOf(DefaultHttpStatusCodeRange)
private val httpStatusCodeRanges: Map> =
mapOf(
+ Pair(
+ "getActivityDetails",
+ listOf(
+ HttpStatusCodeRange("400") {
+ ExpediaGroupApiActivitiesErrorsException(it.status.value, fetchErrorObject(it) as ActivitiesErrors, it.headers.getTransactionId())
+ },
+ HttpStatusCodeRange("401") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("403") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("404") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("429") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("500") {
+ ExpediaGroupApiActivitiesErrorsException(it.status.value, fetchErrorObject(it) as ActivitiesErrors, it.headers.getTransactionId())
+ },
+ HttpStatusCodeRange("503") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ DefaultHttpStatusCodeRange
+ )
+ ),
+ Pair(
+ "getActivityListings",
+ listOf(
+ HttpStatusCodeRange("400") {
+ ExpediaGroupApiActivitiesErrorsException(it.status.value, fetchErrorObject(it) as ActivitiesErrors, it.headers.getTransactionId())
+ },
+ HttpStatusCodeRange("401") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("403") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("404") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("429") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ HttpStatusCodeRange("500") {
+ ExpediaGroupApiActivitiesErrorsException(it.status.value, fetchErrorObject(it) as ActivitiesErrors, it.headers.getTransactionId())
+ },
+ HttpStatusCodeRange("503") { ExpediaGroupApiAPIMErrorException(it.status.value, fetchErrorObject(it) as APIMError, it.headers.getTransactionId()) },
+ DefaultHttpStatusCodeRange
+ )
+ ),
Pair(
"getCarDetails",
listOf(
@@ -238,10 +272,12 @@ internal object ErrorObjectMapper {
}
}
-class ExpediaGroupApiCarsErrorsException(code: Int, override val errorObject: CarsErrors, transactionId: String?) : ExpediaGroupApiException(code, errorObject, transactionId)
+class ExpediaGroupApiActivitiesErrorsException(code: Int, override val errorObject: ActivitiesErrors, transactionId: String?) : ExpediaGroupApiException(code, errorObject, transactionId)
class ExpediaGroupApiAPIMErrorException(code: Int, override val errorObject: APIMError, transactionId: String?) : ExpediaGroupApiException(code, errorObject, transactionId)
+class ExpediaGroupApiCarsErrorsException(code: Int, override val errorObject: CarsErrors, transactionId: String?) : ExpediaGroupApiException(code, errorObject, transactionId)
+
class ExpediaGroupApiPresignedUrlResponseException(code: Int, override val errorObject: PresignedUrlResponse, transactionId: String?) : ExpediaGroupApiException(
code,
errorObject,
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityDetailsOperation.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityDetailsOperation.kt
new file mode 100644
index 0000000..ce54554
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityDetailsOperation.kt
@@ -0,0 +1,44 @@
+/*
+ * 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.operations
+
+import com.expediagroup.sdk.core.model.Nothing
+import com.expediagroup.sdk.core.model.Operation
+import org.apache.commons.text.StringSubstitutor
+
+/**
+ *
+ * @property params [GetActivityDetailsOperationParams]
+ */
+class GetActivityDetailsOperation(
+ params: GetActivityDetailsOperationParams
+) : Operation<
+ Nothing
+ >(
+ url(params),
+ "GET",
+ "getActivityDetails",
+ null,
+ params
+ ) {
+ companion object {
+ fun url(params: GetActivityDetailsOperationParams): String {
+ val url = "/activities/details/{offerToken}"
+ val substitutor = StringSubstitutor(params.getPathParams(), "{", "}")
+ return substitutor.replace(url)
+ }
+ }
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityDetailsOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityDetailsOperationParams.kt
new file mode 100644
index 0000000..55c0c9d
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityDetailsOperationParams.kt
@@ -0,0 +1,132 @@
+/*
+ * 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.operations
+
+import com.expediagroup.sdk.core.model.OperationParams
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.infrastructure.*
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import io.ktor.http.Headers
+import io.ktor.http.Parameters
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * @property offerToken the offerToken of a activity
+ * @property partnerTransactionID Partner-generated identifier.
+ * @property locale 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.
+ */
+@JsonDeserialize(builder = GetActivityDetailsOperationParams.Builder::class)
+data class GetActivityDetailsOperationParams(
+ @field:NotNull
+ @field:Valid
+ val offerToken: kotlin.String,
+ @field:NotNull
+ @field:Valid
+ val partnerTransactionID: kotlin.String,
+ @field:Valid
+ val locale: kotlin.String? =
+ null
+) : OperationParams {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ @JsonProperty("offerToken") private var offerToken: kotlin.String? = null,
+ @JsonProperty("Partner-Transaction-ID") private var partnerTransactionID: kotlin.String? = null,
+ @JsonProperty("locale") private var locale: kotlin.String? = null
+ ) {
+ /**
+ * @param offerToken the offerToken of a activity
+ */
+ fun offerToken(offerToken: kotlin.String) = apply { this.offerToken = offerToken }
+
+ /**
+ * @param partnerTransactionID Partner-generated identifier.
+ */
+ fun partnerTransactionID(partnerTransactionID: kotlin.String) = apply { this.partnerTransactionID = partnerTransactionID }
+
+ /**
+ * @param locale 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.
+ */
+ fun locale(locale: kotlin.String) = apply { this.locale = locale }
+
+ fun build(): GetActivityDetailsOperationParams {
+ val params =
+ GetActivityDetailsOperationParams(
+ offerToken = offerToken!!,
+ partnerTransactionID = partnerTransactionID!!,
+ locale = locale
+ )
+
+ validate(params)
+
+ return params
+ }
+
+ private fun validate(params: GetActivityDetailsOperationParams) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(params)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ offerToken = offerToken,
+ partnerTransactionID = partnerTransactionID,
+ locale = locale
+ )
+
+ override fun getHeaders(): Headers =
+ Headers.build {
+ partnerTransactionID?.let {
+ append("Partner-Transaction-ID", it)
+ }
+ append("Accept", "application/vnd.exp-activity.v3+json")
+ }
+
+ override fun getQueryParams(): Parameters =
+ Parameters.build {
+ locale?.let {
+ append("locale", it)
+ }
+ }
+
+ override fun getPathParams(): Map =
+ buildMap {
+ offerToken?.also {
+ put("offerToken", offerToken)
+ }
+ }
+}
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityListingsOperation.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityListingsOperation.kt
new file mode 100644
index 0000000..7957846
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityListingsOperation.kt
@@ -0,0 +1,35 @@
+/*
+ * 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.operations
+
+import com.expediagroup.sdk.core.model.Nothing
+import com.expediagroup.sdk.core.model.Operation
+
+/**
+ *
+ * @property params [GetActivityListingsOperationParams]
+ */
+class GetActivityListingsOperation(
+ params: GetActivityListingsOperationParams
+) : Operation<
+ Nothing
+ >(
+ "/activities/listings",
+ "GET",
+ "getActivityListings",
+ null,
+ params
+ )
diff --git a/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityListingsOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityListingsOperationParams.kt
new file mode 100644
index 0000000..33736c9
--- /dev/null
+++ b/code/src/main/kotlin/com/expediagroup/sdk/xap/operations/GetActivityListingsOperationParams.kt
@@ -0,0 +1,192 @@
+/*
+ * 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.operations
+
+import com.expediagroup.sdk.core.model.OperationParams
+import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException
+import com.expediagroup.sdk.xap.infrastructure.*
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import io.ktor.http.Headers
+import io.ktor.http.Parameters
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator
+import javax.validation.Valid
+import javax.validation.Validation
+import javax.validation.constraints.NotNull
+
+/**
+ * @property partnerTransactionID Partner-generated identifier.
+ * @property location 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)
+ * @property geoLocation 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.
+ * @property startDate Start date for the activity window in YYY-MM-DD format. If an endDate value is supplied there must also be a startDate.
+ * @property endDate End date for the activity window in YYY-MM-DD format.
+ * @property locale 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.
+ * @property links 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)
+ */
+@JsonDeserialize(builder = GetActivityListingsOperationParams.Builder::class)
+data class GetActivityListingsOperationParams(
+ @field:NotNull
+ @field:Valid
+ val partnerTransactionID: kotlin.String,
+ @field:Valid
+ val location: kotlin.String? =
+ null,
+ @field:Valid
+ val geoLocation: kotlin.String? =
+ null,
+ @field:Valid
+ val startDate: kotlin.String? =
+ "currentDate",
+ @field:Valid
+ val endDate: kotlin.String? =
+ "startDate+14",
+ @field:Valid
+ val locale: kotlin.String? =
+ null,
+ @field:Valid
+ val links: kotlin.String? =
+ null
+) : OperationParams {
+ companion object {
+ @JvmStatic
+ fun builder() = Builder()
+ }
+
+ class Builder(
+ @JsonProperty("Partner-Transaction-ID") private var partnerTransactionID: kotlin.String? = null,
+ @JsonProperty("location") private var location: kotlin.String? = null,
+ @JsonProperty("geoLocation") private var geoLocation: kotlin.String? = null,
+ @JsonProperty("startDate") private var startDate: kotlin.String? = null,
+ @JsonProperty("endDate") private var endDate: kotlin.String? = null,
+ @JsonProperty("locale") private var locale: kotlin.String? = null,
+ @JsonProperty("links") private var links: kotlin.String? = null
+ ) {
+ /**
+ * @param partnerTransactionID Partner-generated identifier.
+ */
+ fun partnerTransactionID(partnerTransactionID: kotlin.String) = apply { this.partnerTransactionID = partnerTransactionID }
+
+ /**
+ * @param location 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)
+ */
+ fun location(location: kotlin.String) = apply { this.location = location }
+
+ /**
+ * @param geoLocation 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.
+ */
+ fun geoLocation(geoLocation: kotlin.String) = apply { this.geoLocation = geoLocation }
+
+ /**
+ * @param startDate Start date for the activity window in YYY-MM-DD format. If an endDate value is supplied there must also be a startDate.
+ */
+ fun startDate(startDate: kotlin.String) = apply { this.startDate = startDate }
+
+ /**
+ * @param endDate End date for the activity window in YYY-MM-DD format.
+ */
+ fun endDate(endDate: kotlin.String) = apply { this.endDate = endDate }
+
+ /**
+ * @param locale 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.
+ */
+ fun locale(locale: kotlin.String) = apply { this.locale = locale }
+
+ /**
+ * @param links 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)
+ */
+ fun links(links: kotlin.String) = apply { this.links = links }
+
+ fun build(): GetActivityListingsOperationParams {
+ val params =
+ GetActivityListingsOperationParams(
+ partnerTransactionID = partnerTransactionID!!,
+ location = location,
+ geoLocation = geoLocation,
+ startDate = startDate,
+ endDate = endDate,
+ locale = locale,
+ links = links
+ )
+
+ validate(params)
+
+ return params
+ }
+
+ private fun validate(params: GetActivityListingsOperationParams) {
+ val validator =
+ Validation
+ .byDefaultProvider()
+ .configure()
+ .messageInterpolator(ParameterMessageInterpolator())
+ .buildValidatorFactory()
+ .validator
+
+ val violations = validator.validate(params)
+
+ if (violations.isNotEmpty()) {
+ throw PropertyConstraintViolationException(
+ constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" }
+ )
+ }
+ }
+ }
+
+ fun toBuilder() =
+ Builder(
+ partnerTransactionID = partnerTransactionID,
+ location = location,
+ geoLocation = geoLocation,
+ startDate = startDate,
+ endDate = endDate,
+ locale = locale,
+ links = links
+ )
+
+ override fun getHeaders(): Headers =
+ Headers.build {
+ partnerTransactionID?.let {
+ append("Partner-Transaction-ID", it)
+ }
+ append("Accept", "application/vnd.exp-activity.v3+json")
+ }
+
+ override fun getQueryParams(): Parameters =
+ Parameters.build {
+ location?.let {
+ append("location", it)
+ }
+ geoLocation?.let {
+ append("geoLocation", it)
+ }
+ startDate?.let {
+ append("startDate", it)
+ }
+ endDate?.let {
+ append("endDate", it)
+ }
+ locale?.let {
+ append("locale", it)
+ }
+ links?.let {
+ append("links", it)
+ }
+ }
+
+ override fun getPathParams(): Map =
+ buildMap {
+ }
+}
diff --git a/code/transformedSpecs.yaml b/code/transformedSpecs.yaml
index 577a0d7..c8600b5 100644
--- a/code/transformedSpecs.yaml
+++ b/code/transformedSpecs.yaml
@@ -38,6 +38,8 @@ tags:
- name: Cars Listings
- name: Cars Detail
- name: download-url
+ - name: Activities List
+ - name: Activities Details
paths:
"/hotels/details/{offerToken}":
get:
@@ -2838,6 +2840,494 @@ paths:
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.
+ schema:
+ type: string
+ default: currentDate
+ example: 2021-10-01T00:00:00.000Z
+ - name: endDate
+ in: query
+ description: End date for the activity window in YYY-MM-DD format.
+ schema:
+ type: string
+ default: startDate+14
+ 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)
+ schema:
+ type: string
+ 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: []
components:
schemas:
Address:
@@ -7064,6 +7554,890 @@ components:
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:
+ - Category
+ - TotalFees
+ - TotalRate
+ - TotalTaxesAndFees
+ 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:
+ 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
+ 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:
+ 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
+ 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
+ - Offers
+ - 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:
+ - Accept
+ - 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 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
+ - Description
+ - 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
+ - Phone
+ 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"
securitySchemes:
Authorization:
type: http