ReferenceCompliance

updateUnitRegistration mutation

Updates registration information for a property at the room type (unit) level.

  • If an empty or invalid registration number is specified in the mutation, warnings are generated.
  • If the specified unit ID does not belong to the specified property, an error is generated.
  • Expedia property IDs are specified in the following mutation examples, though supplier IDs are also supported.
Note: We strongly recommend that you include warningStatus in your implementation to ensure that you capture warnings if they are generated. warningStatus is a field on the UnitRegistrationDetail object. (Warnings are different than errors; errors are described in Error handling.)

To determine the registration requirements to set using the updateUnitRegistration mutation, you must

  1. Examine the requirements object in the districtByCoordinates or district query’s response.
  2. For each regulatory category, review the value of registrationNumberRequirements : isOptional.
  3. When isOptional is set to false, you must set registration numbers for those registration number types.

Consider this partial response from the districtByCoordinates query for a Maui property:

1"requirements": [
2 {
3 "regulatoryCategory": "BED_AND_BREAKFAST",
4 "regulatoryCategoryLabel": "Bed and breakfast",
5 "qualifiedPropertyTypes": [
6 {
7 "type": "bnb",
8 "subtype": null
9 }
10 ],
11 "registrationNumberRequirements": [
12 {
13 "numberType": "PARCEL_NUMBER_TAX_MAP_KEY",
14 "numberTypeLabel": "Parcel Number (Tax Map Key)",
15 "localName": "Parcel Number (Tax Map Key)",
16 "format": "123456789012 or 1234567890123",
17 "regex": "^[0-9]{12,13}$",
18 "isOptional": false,
19 "isExpirationDateRequired": false,
20 "allowPendingRegistrations": false
21 },
22 {
23 "numberType": "GENERAL_EXCISE_TAX_ID",
24 "numberTypeLabel": "General Excise Tax ID (GET)",
25 "localName": "General Excise Tax ID (GET)",
26 "format": "GE-123-456-7890-01, W12345678-01",
27 "regex": "(^GE-[0-9]{3}-[0-9]{3}-[0-9]{4}-[0-9]{2}$)|(^W[0-9]{8}-[0-9]{2}$)",
28 "isOptional": false,
29 "isExpirationDateRequired": false,
30 "allowPendingRegistrations": false
31 },
32 {
33 "numberType": "REGISTRATION_NUMBER",
34 "numberTypeLabel": "Registration Number",
35 "localName": "Supplemental permit number",
36 "format": null,
37 "regex": "^.{1,20}$",
38 "isOptional": true,
39 "isExpirationDateRequired": false,
40 "allowPendingRegistrations": false
41 },
42 {
43 "numberType": "TRANSIENT_ACCOMMODATIONS_TAX_ID",
44 "numberTypeLabel": "Transient Accomodation Tax ID (TAT)",
45 "localName": "Transient Accomodation Tax ID (TAT)",
46 "format": "TA-123-456-7890-01, W12345678-01",
47 "regex": "(^TA-[0-9]{3}-[0-9]{3}-[0-9]{4}-[0-9]{2}$)|(^W[0-9]{8}-[0-9]{2}$)",
48 "isOptional": false,
49 "isExpirationDateRequired": false,
50 "allowPendingRegistrations": false
51 }
52 ],
53 "additionalDataRequirements": [],
54 "minStayNights": 1,
55 "maxNightCap": null,
56 "exemptions": null,
57 "isVacationRental": false
58 },
59 ...

So, for the BED_AND_BREAKFAST regulatory category, these registration number types are mandatory (because isOptional is set to false):

  • PARCEL_NUMBER_TAX_MAP_KEY
  • GENERAL_EXCISE_TAX_ID
  • TRANSIENT_ACCOMMODATIONS_TAX_ID

The format and regex fields describe how to set the values.

If mandatory requirements are not provided by the mutation, this warning is returned:

"warningStatus": { "description": "Update Unsuccessful. Invalid registration details provided. Please provide valid details to ensure compliance.

Finally, the updateUnitRegistration mutation includes the forceSave input argument, which forces the API to save the registration information for mandatory registration requirements even if the information is not valid.

  • If optional registration requirements need to be updated for a unit and forceSave is set to false, you must include the mandatory requirements in the request (even if there is no update to their values). If they are not specified, the mutation will fail and the optional requirements will not be not updated.
  • If forceSave is set to false and a value of a mandatory registration field is not valid, the value is not saved. If set to true, the value is saved. In both cases, warningStatus field will describe the issue in the response payload.
  • If a specified registration field is optional, the information is saved no matter how forceSave is set and the warning will indicate that the update was successful.

Syntax

1mutation {
2 updateUnitRegistration(
3 propertyId: String!,
4 propertyIdSource: IdSource!,
5 forceSave: Boolean,
8}

Example

In this example, all of the included registration types are mandatory. Because forceSave is set to false, these types need to be included even if only an optional type were included.

Refer to Updating registration information for more examples.

1mutation {
2 updateUnitRegistration(
3 propertyId: "9309956",
4 propertyIdSource: EXPEDIA,
5 forceSave: false,
6 registration: {
7 details: [
8 {
9 unitId: "200299052",
10 regulatoryType: “bnb”,
11 regulatoryCategory: BED_AND_BREAKFAST,
12 registrationRecords: [
13 {
14 registrationNumber: "HSR12-34567",
15 registrationNumberType: PARCEL_NUMBER_TAX_MAP_KEY
16 }
17 {
18 registrationNumber:122334,
19 registrationNumberType: GENERAL_EXCISE_TAX_ID
20 }
21 {
22 registrationNumber: “6P-938373,
23 registrationNumberType: TRANSIENT_ACCOMMODATIONS_TAX_ID
24 }
25 ]
26 }
27 ]
28 }) {
29 complete
30 details {
31 unitId
32 compliant {
33 status
34 reason
35 }
36 registrationRecords {
37 registrationNumber
38 registrationNumberType
39 }
40 warningStatus {
41 description
42 code
43 }
44 }
45 }
46}

Arguments

NameDescription

forceSave

Whether to save the registration information for mandatory registration requirements even if the information is not valid. If this argument is omitted, the default value is true.

  • If optional registration requirements need to be updated for a unit and forceSave is set to false, you must include the mandatory requirements in the request (even if there is no update to their values). If they are not specified, the mutation will fail and the optional requirements will not be not updated.
  • If forceSave is set to false and a value of a mandatory registration field is not valid, the value is not saved. If set to true, the value is saved. In both cases, warningStatus field will describe the issue in the response payload.
  • If a specified registration field is optional, the information is saved no matter how forceSave is set and the warning will indicate that the update was successful.

To determine whether registration information is mandatory or optional, use the district query and retrieve the isOptional field on the AdditionalDataRequirement object.

Type: Boolean

propertyId

Required.

Property ID. If using an external ID (from your system, source is SUPPLIER) for a Vrbo property, specify the ID in this format: systemId/advertiserId/listingExternalId. If the source is EXPEDIA, this is the Expedia ID (EID).

Type: String

propertyIdSource

Required.

Source of the ID.

Type: IdSource

registration

Required.

Registration details.

Type: UpdateUnitRegistrationInput

Types


Name
Type
AcknowledgementRecord
Object

Acknowledgement record for a bookable unit.

FieldDescription
acknowledgementType

Type of acknowledgement record.

Type: AcknowledgementType
id

ID of the acknowledgement record.

Type: String
lastUpdated

Date when the acknowledgment record was last updated.

Type: String
AcknowledgementRecordInput
InputObject

Acknowledgement record for the bookable unit. This is displayed to the traveler to confirm that they understand the regulatory requirements.

FieldDescription
acknowledgementType

Type of acknowledgement record.

Type: AcknowledgementType
idNot nullable.

ID of the acknowledgement record.

Type: String
AcknowledgementType
Enum

Acknowledgement type values.

NameDescription
PLATFORM
LTR_POLICY
PLATFORM_ACK
PLATFORM_ACK_STATEMENT
PLATFORM_ATTESTATION
PLATFORM_ATTESTATION_LEGAL
PLATFORM_ATTESTATION_LINK
PLATFORM_ATTESTATION_NEVADA
PLATFORM_ATTESTATION_VER
PLATFORM_CERTIFY
PLATFORM_COMPLY
PLATFORM_JAPAN
PLATFORM_LEGAL
PLATFORM_READ
ApplicableRegulations
Object

Additional registration information required by some districts.

FieldDescription
key

Identifier for additional information required by the district.

Type: ApplicableRegulationsKey
value

Value of the key required by the district.

Type: String
ApplicableRegulationsInput
InputObject

Additional registration information required by some districts.

FieldDescription
key

Identifier for additional information required by the district.

Type: ApplicableRegulationsKey
value

Value of the key required by the district.

Type: String
ApplicableRegulationsKey
Enum

Regulation key values.

NameDescription
LICENSE_DEPARTMENT_NAME

Name of the department in the issuing government body that approved the attribute (registration number).

LICENSE_GOVERNMENT_NAME

Name of the government body that issued the attribute.

LICENSE_HOLDER_NAME

Name of the person (holder) who holds the license, which may be different from the lodging partner.

LICENSE_HOLDER_STREET_ADDRESS_1

Street address of the person (holder) who holds the license, which may be different from the lodging partner.

LICENSE_HOLDER_STREET_ADDRESS_2

Secondary street address of the person (holder) who holds the license, which may be different from the lodging partner.

LICENSE_HOLDER_CITY

City of the person (holder) who holds the license, which may be different from the lodging partner.

LICENSE_HOLDER_PREFECTURE

Prefecture of the person (holder) who holds the license, which may be different from the lodging partner.

LICENSE_HOLDER_COUNTRY

County of the person (holder) who holds the license, which may be different from the lodging partner.

LICENSE_HOLDER_POSTAL

Postal code of the person (holder) who holds the license, which may be different from the lodging partner.

IS_VACATION_RENTAL
REGISTRATION_NUMBER
REGISTRATION_NUMBER_TYPE
AttachmentType
Enum

Exemption category types.

NameDescription
DRIVERS_LICENSE
AttachmentUrl
Object

Registration document information.

FieldDescription
key

Type of document referenced.

Type: AttachmentType
value

URL of the registration document file.

Type: String
AttachmentUrlInput
InputObject

Information about the registration document file.

FieldDescription
keyNot nullable.

Type of document referenced.

Type: AttachmentType
value

URL of the registration document file.

Type: String
Boolean
Boolean

The Boolean scalar type represents true or false.

Compliant
Object

Compliance status for mandatory requirements only (at the unit level) according to the local jurisdiction's regulatory requirements. If invalid information is provided for an optional regulatory requirement, or if regulatory information is set in a jurisdiction that does not require regulatory information, status: COMPLIANT is returned. For optional requirements, a warning is returned in the warningStatus field of the updateUnitRegistration mutation's payload.

FieldDescription
reasonNot nullable.

Reason why the unit is in or out of compliance. The label used for the registration number in this string comes from the numberTypeLabel field on the RegistrationNumberRequirement type.

Type: String
statusNot nullable.

Whether the unit is compliant or not.

Type: RegulatoryStatus
ExemptionCategory
Enum

Exemption types.

NameDescription
MAX_NIGHT_CAP
ID
ID

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

IdSource
Enum

Source of a given ID.

NameDescription
EXPEDIA

Expedia is the source of the ID.

SUPPLIER

Connectivity provider or lodging partner is the source of the ID. This value is not supported for use in promotions.

VRBO

Unsupported.

Int
Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

PropertyRegistration
Object

Government registration information for a given property.

FieldDescription
applicableRegulations

Additional property registration information required by certain districts.

Type: Array of non nullable ApplicableRegulations
completeNot nullable.

Whether a valid registration record was successfully written by the mutation. This field does not report whether the record fulfills the requirements of the property's district. Also, it reports information at the property level, though the property may contain deleted or inactive units and may provide inaccurate information for some properties. We do not recommend including this field.

Type: Boolean
detailsNot nullable.

Registration information for each bookable unit.

Type: Array of non nullable UnitRegistrationDetail
district

Geographical jurisdiction identifier. For non-configured districts, this is null.

Type: String
RegistrationDetailInput
InputObject

Registration information for the unit or room type.

FieldDescription
acknowledgementRecords

Acknowledgement records for the bookable unit. These are displayed to the traveler to confirm that they understand the regulatory requirements.

Type: Array of non nullable AcknowledgementRecordInput
applicableRegulations

Additional information about the bookable unit required by certain districts.

Type: Array of non nullable ApplicableRegulationsInput
attachmentUrls

Links for registration documentation files (if required).

Type: Array of non nullable AttachmentUrlInput
displayRegistrationNumber

Registration number displayed to the traveler.

Type: String
exemptionCategories

List of exemptions for the property, such as maximum night cap.

Type: Array of non nullable ExemptionCategory
numberOfPhysicalRooms

The number of bookable rooms for each room type, such as a king bedroom or a room with twin beds (how many of each).

Type: Int
registrationRecordsNot nullable.

Registration records for the bookable unit filed with the governing jurisdiction.

Type: Array of non nullable RegistrationRecordInput
regulatoryCategoryNot nullable.

Property classification category as maintained by the governing jurisdiction.

Type: RegulatoryCategory
regulatorySubType

Property subtype, such as primary or secondary, or null if not applicable. This value and the value of regulatoryType should align with the value provided for regulatoryCategory. (This field provides the value that is returned in the requirements:qualifiedPropertyTypes:subtype field in the districtByCoordinates and property queries.)

Type: String
regulatoryTypeNot nullable.

Property type, such as residence, condo, and so on. This value and the value of regulatorySubType should align with the value provided for regulatoryCategory. (This field provides the value that is returned in the requirements:qualifiedPropertyTypes:type field in the districtByCoordinates and property queries.)

Type: String
unitIdNot nullable.

Unit ID assigned by Expedia Group, to update a unit’s registration data.

Type: String
RegistrationNumberType
Enum

Types of registration numbers (licenses).

NameDescription
LICENSE_NUMBER
LICENSE_ID
PARTIAL_TAX_ID
REGISTRATION_NUMBER
BUSINESS_LICENSE_NUMBER
OPERATOR_LICENCE_ID
OPERATOR_LICENSE_ID
BUSINESS_TAX_ID
RESORT_TAX_ID
SHORT_TERM_RENTAL_LICENSE
PERMIT_NUMBER
PLANNING_NUMBER
HOTEL_LICENSE
IS_IN_ZONING_PLAN
IS_PROFESSIONAL_HOST
TOURIST_DEVELOPMENT_TAX_ACCOUNT_NUMBER
HOME_SHARING_NUMBER
HOME_SHARING_PERMIT_NUMBER
CERTIFICATE_OF_USE_NUMBER
GENERAL_EXCISE_TAX_ID
TRANSIENT_ACCOMMODATIONS_TAX_ID
REGISTRATION_CERTIFICATE_NUMBER
PROPERTY_REGISTRY_NUMBER
SPECIAL_OPERATION_SIGN
TRANSIENT_REGISTRATION_NUMBER
PROVINCIAL_TOURIST_IDENTIFICATION_CODE
PARCEL_NUMBER_TAX_MAP_KEY
BUSINESS_TAX_RECEIPT_NUMBER
OPERATOR_LICENSE_NUMBER
OPERATOR_PERMIT
OWNER_PERMIT
TAX_IDENTIFICATION_NUMBER
MA_REGISTRATION_CERTIFICATE_NUMBER
BOSTON_REGISTRATION_NUMBER
OWNER_NAME
CADASTRAL_REFERENCE
OWNER_IS_CITIZEN
OWNER_ID
ZIPCODE
HOUSE_NUMBER
IS_CONDITION
ENTITY_TYPE
IS_TRADED
IS_GOVERNMENT_ENTITY
IS_ADDRESS_IN_EU
IS_RESIDENCE_IN_EU
LEGAL_ADDRESS
ISSUED_TAX_ID
PERMANENT_ESTABLISHMENT_COUNTRY
BUSINESS_REGISTRATION_NUMBER
LAND_REGISTRATION_NUMBER
BIRTH_DATE
IS_VAT_REGISTERED
VAT_ID
DATE
CITIZEN_ID
FOREIGN_ID
NEIGHBORHOOD_NAME
NATIONAL_ADDRESS_NUMBER
FLOOR_SYSTEM_NUMBER
JOURNAL_NUMBER
IS_ZONING_LAW_APPLIED
APPLICATION_NUMBER
ISSUANCE_DATE
RegistrationRecord
Object

Registration record for the bookable unit that has been filed with the jurisdiction.

FieldDescription
expiry

Registration record expiration date in this format: yyyy-mm-dd

Type: String
registrationNumberNot nullable.

Registration record ID.

Type: String
registrationNumberType

Type of registration/license.

Type: RegistrationNumberType
registrationNumberTypeLabel

Localized registration number type.

Type: String
RegistrationRecordInput
InputObject

Registration record for the bookable unit that has been filed with the governing jurisdiction.

FieldDescription
expiry

Registration record expiration date in this format: yyyy-mm-dd

Type: String
registrationNumberNot nullable.

Registration record ID.

Type: String
registrationNumberType

Type of registration/license. (This field provides the value that is returned in the requirements: registrationNumberRequirements:numberType field in the districtByCoordinates and property queries.)

Type: RegistrationNumberType
RegulatoryCategory
Enum

Category values for regulatory categories. Most of jurisdiction districts only allow for two categories, HOTEL and VACATION_RENTAL, though more values GRAPHQL_VALIDATION_FAILED are provided to satisfy local government requirements.

NameDescription
HOTEL
BED_AND_BREAKFAST
HOTEL_OR_BNB
PRIMARY_HOME
PRIMARY_HOME_WITH_EXCEPTION
SECONDARY_HOME
VACATION_RENTAL
LONG_TERM_ONLY
SHORT_TERM_RENTAL
MINPAKU
SIMPLE_LODGING
EVENT
SPECIAL
NO_LICENSE
HOTEL_RYOKAN
RYOKAN
PRIMARY_OR_SECONDARY
TRANSIENT_OCCUPANCY_RESIDENTIAL_STRUCTURE
MOTEL
HOME_SHARING_NUMBER
VACATION_RENTAL_OTHER
HOSTEL
CAMPING_SITES
RURAL_LODGING
APARTMENT_HOTEL
RegulatoryStatus
Enum

Values for regulatory status.

NameDescription
COMPLIANT

Unit meets all regulatory requirements.

COMPLIANT_ACTION_NEEDED

Unit meets requirements to remain listed but will need to provide additional information (or other action) in order to not be delisted.

NOT_COMPLIANT

Unit does not meet all regulatory requirements and cannot be shown.

NOT_COMPLIANT_ACTION_NEEDED

Unit is not compliant, but enforcement hasn't started yet. Action should be taken for the listing to be compliant after enforcement date.

NOT_ALLOWED

Platform does not allow units in this jurisdiction; no actions from partner can affect status.

NONE

Unit's status cannot be determined.

String
String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

UnitRegistrationDetail
Object

Registration information for the unit or room type.

FieldDescription
acknowledgementRecordsNot nullable.

Acknowledgement records for the bookable unit. These are displayed to the traveler to confirm that they understand the regulatory requirements.

Type: Array of non nullable AcknowledgementRecord
applicableRegulationsNot nullable.

Additional information about the bookable unit required by certain districts.

Type: Array of non nullable ApplicableRegulations
attachmentUrls

Links for registration documentation files (if required).

Type: Array of non nullable AttachmentUrl
compliant

Compliance status for mandatory requirements only (at the unit level) according to the local jurisdiction's regulatory requirements. If invalid information is provided for an optional regulatory requirement, or if regulatory information is set in a jurisdiction that does not require regulatory information, status: COMPLIANT is returned. For optional requirements, a warning is returned in the warningStatus field of the updateUnitRegistration mutation's payload.

Type: Compliant
displayRegistrationNumber

Registration number displayed to the traveler.

Type: String
exemptionCategories

List of exemptions for the property, such as maximum night cap.

Type: Array of non nullable ExemptionCategory
numberOfPhysicalRooms

Number of rooms in the bookable unit.

Type: Int
registrationRecordsNot nullable.

Registration records for the bookable unit filed with the governing jurisdiction.

Type: Array of non nullable RegistrationRecord
regulatoryCategoryNot nullable.

Property classification category as maintained by the governing jurisdiction.

Type: RegulatoryCategory
regulatoryCategoryLabelNot nullable.

Regulatory category in the specified locale.

Type: String
regulatorySubType

Property subtype, such as primary or secondary, or null if not applicable.

Type: String
regulatoryType

Property type, such as residence, condo, boat, etc.

Type: String
unitIdNot nullable.

Expedia ID of the unit or room type.

Note: We strongly recommend that you include this field in your implementation even though it is nullable. This field provides an audit trail for reporting purposes.

Type: ID
warningStatus

Warning information, if the mutation had issues.

Note: We strongly recommend that you include this field/object in your implementation even though it is nullable. This field provides a warning if the specified room type ID does not belong to the specified property or if an empty or invalid information number is provided.

Type: WarningStatus
UpdateUnitRegistrationInput
InputObject

Government registration information for the unit.

FieldDescription
applicableRegulations

Additional registration information required by certain districts.

Type: Array of non nullable ApplicableRegulationsInput
detailsNot nullable.

Registration information for each unit.

Type: Array of non nullable RegistrationDetailInput
WarningStatus
Object

Warning message and code that is provided if an issue arose with the mutation.

FieldDescription
codeNot nullable.

Warning code. Here are the possible values:

  • INVALID_LICENSE_NUMBERS - An invalid registration number was specified
  • REGULATORY_CATEGORY_NOT_CONFIGURED_FOR_DISTRICT - The specified regulatory category is not supported by the property's district
  • REGISTRATION_NUMBER_TYPE_MISSING - Registration number type was not specified -REGISTRATION_NUMBER_TYPE_NOT_APPLICABLE - The specified registration number type is not applicable to the property type
  • MISSING_ADDITIONAL_DATA - Additional registration data is required
  • MISSING_PROPERTY_ADDITIONAL_DATA - Additional property registration data is required
  • INVALID_REGULATORY_CATEGORY - An invalid regulatory category was specified
  • DIFFERENT_REGULATORY_CATEGORIES - The same regulatory category must be specified for all bookable units of the property
  • MISSING_REGISTRATION - Regulatory information is missing for the property or its bookable unit
Type: String
descriptionNot nullable.

Description of the issue.

Type: String