AWS solutions documentation change
Summary
Formatting changes including markdown link syntax adjustments, punctuation corrections, JSON formatting fixes, and documentation style updates. Includes minor clarifications about PII handling in guest profiles.
Security assessment
Changes are primarily stylistic (link formatting, punctuation, JSON syntax). The PII handling note about potential data deletion is a data integrity consideration but doesn't address a specific vulnerability or security control. No evidence of security vulnerability fixes or new security features added.
Diff
diff --git a/solutions/latest/unified-profiles-for-travelers-and-guests-on-aws/sending-data-to-the-real-time-stream.md b/solutions/latest/unified-profiles-for-travelers-and-guests-on-aws/sending-data-to-the-real-time-stream.md index 6af37a3b0..f57e8b579 100644 --- a/solutions/latest/unified-profiles-for-travelers-and-guests-on-aws/sending-data-to-the-real-time-stream.md +++ b/solutions/latest/unified-profiles-for-travelers-and-guests-on-aws/sending-data-to-the-real-time-stream.md @@ -17 +17 @@ The _required_ property is added by default by our schema generator but none of -A representation of an airline booking as generated by PSS providers like Amadeus, Altea, or Sabre Sonic. The object contains a list of segments representing flight legs. Each of these segments will be ingested as a flat record. The schema for can be found in [`air_booking.schema.json`](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/air/air_booking.schema.json). +A representation of an airline booking as generated by PSS providers like Amadeus, Altea, or Sabre Sonic. The object contains a list of segments representing flight legs. Each of these segments will be ingested as a flat record. The schema for can be found in [air_booking.schema.json](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/air/air_booking.schema.json). @@ -21 +21 @@ A representation of an airline booking as generated by PSS providers like Amadeu -A representation of the passenger profile containing the passenger PIIs and loyalty information. The traveler object has an ID field that we use to create the traveler ID. If you have any ID from the source system that could help identify the guest, provide it in the ID field as it will make the ID resolution much more efficient. The schema for passenger profiles can be found in [`pax_profile.schema.json`](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/air/pax_profile.schema.json). +A representation of the passenger profile containing the passenger PIIs and loyalty information. The traveler object has an ID field that we use to create the traveler ID. If you have any ID from the source system that could help identify the guest, provide it in the ID field as it will make the ID resolution much more efficient. The schema for passenger profiles can be found in [pax_profile.schema.json](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/air/pax_profile.schema.json). @@ -25 +25 @@ A representation of the passenger profile containing the passenger PIIs and loya -A representation of a hotel guest booking record as generated by mainstream central reservation systems like Amadeus or Sabre. Each hotel booking object must have at least one segment. The hotel booking object is split into product/guest records where each record must have a unique ID. The ID is built form the combination of the hotel code, the booking confirmation number (ID) ,the segment ID, the segment start date, and the product ID. These parameters must be carefully chosen from the source system in order to ensure data accuracy. The schema for hotel bookings can be found in [`hotel_booking.schema.json`](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/lodging/hotel_booking.schema.json). +A representation of a hotel guest booking record as generated by mainstream central reservation systems like Amadeus or Sabre. Each hotel booking object must have at least one segment. The hotel booking object is split into product/guest records where each record must have a unique ID. The ID is built form the combination of the hotel code, the booking confirmation number (ID), the segment ID, the segment start date, and the product ID. These parameters must be carefully chosen from the source system in order to ensure data accuracy. The schema for hotel bookings can be found in [hotel_booking.schema.json](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/lodging/hotel_booking.schema.json). @@ -29 +29 @@ A representation of a hotel guest booking record as generated by mainstream cent -A representation of the guest profile containing the guest PIIs and loyalty information (profile and associated transactions). The guest object has an ID field that we use to create the traveler ID. If you have any ID from the source system that could help identify the guest, provide it in the ID field as it will make the ID resolution much more efficient. The schema for hotel guests can found in [`guest_profile.schema.json`](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/lodging/guest_profile.schema.json). +A representation of the guest profile containing the guest PIIs and loyalty information (profile and associated transactions). The guest object has an ID field that we use to create the traveler ID. If you have any ID from the source system that could help identify the guest, provide it in the ID field as it will make the ID resolution much more efficient. The schema for hotel guests can found in [guest_profile.schema.json](https://solutions-reference.s3.amazonaws.com/unified-profiles-for-travelers-and-guests-on-aws/latest/json_schemas/lodging/guest_profile.schema.json). @@ -37 +37 @@ The solution uses the following constraints: - * Each item under the revenue field must have a unique "`type`" field. + * Each item under the revenue field must have a unique "type" field. @@ -43 +43 @@ The solution uses the following constraints: - * If the GuestId provided matches an existing guest and PII (names, email, Phones…) aren't provided with the object, the PII will be deleted from the profile. For this reason, we recommend using a unique guest ID and auto merging rules to aggregate `hotel-stay` objects. + * If the GuestId provided matches an existing guest and PII (names, email, Phones…) aren’t provided with the object, the PII will be deleted from the profile. For this reason, we recommend using a unique guest ID and auto merging rules to aggregate `hotel-stay` objects. @@ -88 +88 @@ A representation of events coming from web and mobile channels. The table has th -**Event names** | **Event descriptions** +Event names | Event descriptions @@ -94 +94 @@ A representation of events coming from web and mobile channels. The table has th -`search_experience ` | The traveler searches for a travel experience (could be a cruise, a tour, an adventure vacation…). This search is not specific to a destination. +`search_experience` | The traveler searches for a travel experience (could be a cruise, a tour, an adventure vacation…). This search is not specific to a destination. @@ -97 +97 @@ A representation of events coming from web and mobile channels. The table has th -`select_origin` | The traveler selects an origin for the trip (departure airport, car rental pick-up location…). +`select_origin` | The traveler selects an origin for the trip (departure airport, car rental pick-up location…). @@ -100 +100 @@ A representation of events coming from web and mobile channels. The table has th -`select_end_date` | The traveler selects an end date for the trip (return date for a flight, a car rental, checkout date for a hotel…). +`select_end_date` | The traveler selects an end date for the trip (return date for a flight, a car rental, checkout date for a hotel…). @@ -164,10 +164,10 @@ A representation of events coming from web and mobile channels. The table has th -`customer_birthdate` | Contains the customer's date of birth. "1981-03-03T00:00:00" -`customer_country` | Contains the customer's country. "MX" -`customer_email ` | Contains the customer's email address. "[email protected]" -`customer_first_name ` | Contains the customer's first name. "John" -`customer_gender ` | Contains the customer's gender. "Male" -`customer_id ` | Contains the customer's ID. 123 -`customer_last_name ` | Contains the customer's last name. "Doe" -`customer_nationality ` | Contains the customer's nationality. "MX" -`customer_phone ` | Contains the customer's phone number. "527523695215" -`customer_type ` | Contains the customer's type. "Anonymous" +`customer_birthdate` | Contains the customer’s date of birth. "1981-03-03T00:00:00" +`customer_country` | Contains the customer’s country. "MX" +`customer_email` | Contains the customer’s email address. "[[email protected]](mailto:[email protected])" +`customer_first_name` | Contains the customer’s first name. "John" +`customer_gender` | Contains the customer’s gender. "Male" +`customer_id` | Contains the customer’s ID. 123 +`customer_last_name` | Contains the customer’s last name. "Doe" +`customer_nationality` | Contains the customer’s nationality. "MX" +`customer_phone` | Contains the customer’s phone number. "527523695215" +`customer_type` | Contains the customer’s type. "Anonymous" @@ -240,7 +240,7 @@ Example wrapper message: (For readability, the business object data is omitted.) - "objectType": "air_booking", - "modelVersion": "1.0", - "data”: {…}, - "domain": "my_domain_name", - "mode": "", - "timestamp": "2022-08-22T09:08:00.123456", - "uid": "d2bd8928-23da-4240-bfbc-ee03e863cf51" + "objectType": "air_booking", + "modelVersion": "1.0", + "data": {…}, + "domain": "my_domain_name", + "mode": "", + "timestamp": "2022-08-22T09:08:00.123456", + "uid": "d2bd8928-23da-4240-bfbc-ee03e863cf51" @@ -274 +274 @@ Object name | Fields -`customer_service_interaction ` | `model_version, ` `object_type, ` ` last_updated, ` ` traveller_id, ` `accp_object_id, ` `channel, ` ` loyalty_id, ` `first_name, ` ` last_name, ` `email, ` `phone_number, ` `interaction_type, ` `start_time, ` `end_time, ` `duration, ` `status, ` `language_code, ` ` language_name, ` `conversation, ` +`customer_service_interaction` | `model_version` `object_type,` `last_updated,` `traveller_id,` `accp_object_id,` `channel,` `loyalty_id,` `first_name,` `last_name,` `email,` `phone_number,` `interaction_type,` `start_time,` `end_time,` `duration,` `status,` `language_code,` `language_name,` `conversation,` @@ -276,2 +276,2 @@ Object name | Fields -`guest_profile ` | ` accp_object_id, ` `nationality_code, ` `first_name, ` `email_type, ` `last_updated_by, ` `address_billing_line3, ` `address_line4, ` `address_billing_postal_code, ` `traveller_id, ` `last_updated, ` `address_mailing_country, ` `company, ` `address_mailing_line3, ` `address_business_country, ` `address_line1, ` ` address_business_postal_code, ` ` address_mailing_postal_code, ` `address_mailing_state_province, ` `created_on, ` `address_state_province, ` `address_business_line3, ` `address_billing_state_province, ` `created_by, ` `address_line3, ` ` job_title, ` `honorific, ` `address_billing_line2, ` `address_postal_code, ` `phone_mobile, ` `address_business_state_province, ` `address_mailing_line2, ` `phone_home, ` `phone_business, ` `address_mailing_city, ` `email_business, ` `language_name, ` `address_city, ` `address_billing_line1, ` `address_billing_line4, ` ` middle_name, ` `gender,` `address_business_line2, ` `address_mailing_line1, ` `pronoun, ` `address_mailing_line4, ` ` address_line2, ` ` last_name, ` ` language_code, ` ` email, ` `object_type, ` ` model_version, ` `nationality_name, ` ` address_billing_city, ` `address_type, ` `address_billing_country, ` `address_business_line1, ` `phone_type, ` ` address_business_line4, ` `date_of_birth, ` `address_country, ` `phone, ` `address_business_city, ` -` hotel_booking ` | `accp_object_id, ` `first_name, ` `nationality_code, ` ` totalAfterTax, ` ` email_type, ` ` address_line4, ` `last_updated_by, ` `address_billing_line3, ` ` n_nights,` `product_id, ` `address_billing_postal_code, ` `traveller_id, ` ` last_updated, ` `address_mailing_country, ` ` n_guests, ` ` status, ` ` company, ` `address_mailing_line3, ` `address_line1, ` ` address_business_country, ` `address_business_postal_code, ` ` address_mailing_postal_code, ` `address_mailing_state_province, ` ` address_state_province, ` `address_business_line3, ` ` cc_name, ` `address_billing_state_province, ` `room_type_description, ` `address_line3, ` `job_title, ` `honorific, ` `address_billing_line2, ` `address_postal_code, ` ` room_type_name, ` ` cc_exp, ` ` phone_mobile, ` ` booking_id, ` `address_business_state_province, ` `payment_type, ` ` totalBeforeTax, ` `attribute_names, ` `address_mailing_line2, ` `phone_business, ` `phone_home, ` `cc_token, ` ` address_mailing_city, ` `email_business, ` `language_name, ` ` address_city, ` `address_billing_line1, ` `attribute_codes, ` `address_billing_line4, ` `middle_name, ` `gender, ` `attribute_descriptions, ` ` room_type_code, ` `address_business_line2, ` `pronoun, ` `address_mailing_line1, ` `check_in_date, ` `address_mailing_line4, ` `address_line2, ` ` gds_id, ` ` last_name, ` ` email, ` `cc_cvv, ` ` language_code, ` `object_type, ` ` hotel_code, ` ` model_version,` ` address_billing_city, ` ` nationality_name, ` `crs_id, ` `address_type, ` ` address_billing_country,` ` pms_id, ` `address_business_line1, ` ` address_business_line4,` `date_of_birth, ` `address_country, ` `phone, ` `address_business_city, ` `cc_type, ` ` phone_type, ` ` creation_channel_id, ` `last_update_channel_id, ` ` last_booking_id, ` +`guest_profile` | `accp_object_id,` `nationality_code,` `first_name,` `email_type,` `last_updated_by,` `address_billing_line3,` `address_line4,` `address_billing_postal_code,` `traveller_id,` `last_updated,` `address_mailing_country,` `company,` `address_mailing_line3,` `address_business_country,` `address_line1,` `address_business_postal_code,` `address_mailing_postal_code,` `address_mailing_state_province,` `created_on,` `address_state_province,` `address_business_line3,` `address_billing_state_province,` `created_by,` `address_line3,` `job_title,` `honorific,` `address_billing_line2,` `address_postal_code ` `phone_mobile,` `address_business_state_province,` `address_mailing_line2,` `phone_home,` `phone_business,` `address_mailing_city,` `email_business,` `language_name,` `address_city,` `address_billing_line1,` `address_billing_line4,` `middle_name,` `gender,` `address_business_line2,` `address_mailing_line1,` `pronoun,` `address_mailing_line4,` `address_line2,` `last_name,` `language_code,` `email,` `object_type,` `model_version,` `nationality_name,` `address_billing_city,` `address_type,` `address_billing_country,` `address_business_line1,` `phone_type,` `address_business_line4,` `date_of_birth,` `address_country,` `phone,` `address_business_city,` +`hotel_booking` | `accp_object_id,` `first_name,` `nationality_code,` `totalAfterTax,` `email_type,` `address_line4,` `last_updated_by,` `address_billing_line3,` `n_nights,` `product_id,` `address_billing_postal_code,` `traveller_id,` `last_updated,` `address_mailing_country,` `n_guests,` `status,` `company,` `address_mailing_line3,` `address_line1,` `address_business_country,` `address_business_postal_code,` `address_mailing_postal_code,` `address_mailing_state_province,` `address_state_province,` `address_business_line3,` `cc_name,` `address_billing_state_province,` `room_type_description,` `address_line3,` `job_title,` `honorific,` `address_billing_line2,` `address_postal_code ` `room_type_name,` `cc_exp,` phone_mobile,` `booking_id,` `address_business_state_province,` `payment_type,` `totalBeforeTax,` `attribute_names,` `address_mailing_line2,` `phone_business,` `phone_home,` `cc_token,` `address_mailing_city,` `email_business,` `language_name,` `address_city,` `address_billing_line1,` `attribute_codes,` `address_billing_line4,` `middle_name,` `gender,` `attribute_descriptions,` `room_type_code,` `address_business_line2,` `pronoun,` `address_mailing_line1,` `check_in_date,` `address_mailing_line4,` `address_line2,` `gds_id,` `last_name,` `email,` `cc_cvv ` `language_code,` `object_type,` `hotel_code,` `model_version,` `address_billing_city,` `nationality_name,` `crs_id,` `address_type,` `address_billing_country,` `pms_id,` `address_business_line1,` `address_business_line4,` `date_of_birth,` `address_country,` `phone,` `address_business_city,` `cc_type,` `phone_type,` `creation_channel_id,` `last_update_channel_id,` `last_booking_id,` @@ -293 +293,3 @@ To send the data to the solution, use the solution’s Kinesis data stream provi - +**CloudFormation stack outputs showing Kinesis stream name and other AWS resource details.** + + @@ -297 +299 @@ To send the data to the solution, use the solution’s Kinesis data stream provi -All objects sent to the solution using real-time Kinesis ingestion are backed up in Amazon S3 under a "`{domain}/`" path. This allows the solution to replay the traffic in case of errors downstream that cause loss of data. +All objects sent to the solution using real-time Kinesis ingestion are backed up in Amazon S3 under a "{domain}/" path. This allows the solution to replay the traffic in case of errors downstream that cause loss of data. @@ -309 +311 @@ Each ACCP object contains an additional field, titled **extended_data**. You can -By default, the Kinesis streams use the on-demand provisioning mode. This means that Kinesis handles the heavy lifting of scaling the shards of each stream according to the incoming data throughput. If you decide to send a significant amount of traffic to Kinesis in parallel, the Kinesis shards will increase but it may take hours to increase to the necessary amount which will slow down the ingestion process. For a fast, large-scale ingestion, we recommend using the solution's CloudFormation parameters to preprovision the Kinesis shards according to the following table: +By default, the Kinesis streams use the on-demand provisioning mode. This means that Kinesis handles the heavy lifting of scaling the shards of each stream according to the incoming data throughput. If you decide to send a significant amount of traffic to Kinesis in parallel, the Kinesis shards will increase but it may take hours to increase to the necessary amount which will slow down the ingestion process. For a fast, large-scale ingestion, we recommend using the solution’s CloudFormation parameters to preprovision the Kinesis shards according to the following table: