Class: CyberSourceMergedSpec::BillTo66
- Inherits:
-
BaseModel
- Object
- CoreLibrary::BaseModel
- BaseModel
- CyberSourceMergedSpec::BillTo66
- Defined in:
- lib/cyber_source_merged_spec/models/bill_to66.rb
Overview
BillTo66 Model.
Instance Attribute Summary collapse
-
#address1 ⇒ String
Payment card billing street address as it appears on the credit card issuer’s records.
-
#address2 ⇒ String
Used for additional address information.
-
#administrative_area ⇒ String
State or province of the billing address.
-
#country ⇒ String
Payment card billing country.
-
#email ⇒ String
Customer's email address, including the full domain name.
-
#email_domain ⇒ String
Email domain of the customer.
-
#first_name ⇒ String
Customer’s first name.
-
#last_name ⇒ String
Customer’s last name.
-
#locality ⇒ String
Payment card billing city.
-
#phone_number ⇒ String
Customer’s phone number.
-
#postal_code ⇒ String
Postal code for the billing address.
Class Method Summary collapse
- .from_element(root) ⇒ Object
-
.from_hash(hash) ⇒ Object
Creates an instance of the object from a hash.
-
.names ⇒ Object
A mapping from model property names to API property names.
-
.nullables ⇒ Object
An array for nullable fields.
-
.optionals ⇒ Object
An array for optional fields.
Instance Method Summary collapse
-
#initialize(address1: SKIP, address2: SKIP, administrative_area: SKIP, country: SKIP, locality: SKIP, postal_code: SKIP, first_name: SKIP, last_name: SKIP, phone_number: SKIP, email: SKIP, email_domain: SKIP, additional_properties: nil) ⇒ BillTo66
constructor
A new instance of BillTo66.
-
#inspect ⇒ Object
Provides a debugging-friendly string with detailed object information.
-
#to_s ⇒ Object
Provides a human-readable string representation of the object.
- #to_xml_element(doc, root_name) ⇒ Object
Methods inherited from BaseModel
#check_for_conflict, #process_additional_properties, #process_array, #process_basic_value, #process_hash, #to_hash, #to_json
Constructor Details
#initialize(address1: SKIP, address2: SKIP, administrative_area: SKIP, country: SKIP, locality: SKIP, postal_code: SKIP, first_name: SKIP, last_name: SKIP, phone_number: SKIP, email: SKIP, email_domain: SKIP, additional_properties: nil) ⇒ BillTo66
Returns a new instance of BillTo66.
454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 454 def initialize(address1: SKIP, address2: SKIP, administrative_area: SKIP, country: SKIP, locality: SKIP, postal_code: SKIP, first_name: SKIP, last_name: SKIP, phone_number: SKIP, email: SKIP, email_domain: SKIP, additional_properties: nil) # Add additional model properties to the instance additional_properties = {} if additional_properties.nil? @address1 = address1 unless address1 == SKIP @address2 = address2 unless address2 == SKIP @administrative_area = administrative_area unless administrative_area == SKIP @country = country unless country == SKIP @locality = locality unless locality == SKIP @postal_code = postal_code unless postal_code == SKIP @first_name = first_name unless first_name == SKIP @last_name = last_name unless last_name == SKIP @phone_number = phone_number unless phone_number == SKIP @email = email unless email == SKIP @email_domain = email_domain unless email_domain == SKIP @additional_properties = additional_properties end |
Instance Attribute Details
#address1 ⇒ String
Payment card billing street address as it appears on the credit card issuer’s records.
SEPA
Required for Create Mandate and Import Mandate
Atos
This field must not contain colons (:).
CyberSource through VisaNet
Important When you populate orderInformation.billTo.address1 and orderInformation.billTo.address2, CyberSource through VisaNet concatenates the two values. If the concatenated value exceeds 40 characters, CyberSource through VisaNet truncates the value at 40 characters before sending it to Visa and the issuing bank. Truncating this value affects AVS results and therefore might also affect risk decisions and chargebacks. Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks.
FDMS Nashville
When the street name is numeric, it must be sent in numeric format. For example, if the address is One First Street, it must be sent as 1 1st Street. Required if keyed; not used if swiped. String (20)
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
All other processors:
Optional. String (60)
For Payouts
This field may be sent only for FDC Compass. Important It is your responsibility to determine whether a field is required for the transaction you are requesting.
53 54 55 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 53 def address1 @address1 end |
#address2 ⇒ String
Used for additional address information. For example: Attention: Accounts Payable Optional field. For Payouts: This field may be sent only for FDC Compass.
Atos
This field must not contain colons (:).
CyberSource through VisaNet
Important When you populate orderInformation.billTo.address1 and
orderInformation.billTo.address2,
CyberSource through VisaNet concatenates the two values. If the
concatenated value exceeds 40 characters,
CyberSource through VisaNet truncates the value at 40 characters before
sending it to Visa and the issuing bank.
Truncating this value affects AVS results and therefore might also affect
risk decisions and chargebacks.
Credit card networks cannot process transactions that contain non-ASCII
characters. CyberSource through VisaNet
accepts and stores non-ASCII characters correctly and displays them
correctly in reports. However, the limitations
of the credit card networks prevent CyberSource through VisaNet from
transmitting non-ASCII characters to the
credit card networks. Therefore, CyberSource through VisaNet replaces
non-ASCII characters with meaningless
ASCII characters for transmission to the credit card networks.
Chase Paymentech Solutions, FDC Compass, and TSYS Acquiring Solutions
This value is used for AVS.
FDMS Nashville
orderInformation.billTo.address1 and orderInformation.billTo.address2
together cannot exceed 20 characters.
String (20)
All Other Processors
String (60)
88 89 90 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 88 def address2 @address2 end |
#administrative_area ⇒ String
State or province of the billing address. Use the [State, Province, and Territory Codes for the United States and Canada](https://developer.cybersource.com/library/documentation/sbc/quickr ef/states_and_provinces.pdf). For Payouts: This field may be sent only for FDC Compass.
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks. Important It is your responsibility to determine whether a field is required for the transaction you are requesting.
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
OmniPay Direct
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
Worldpay VAP
Optional field.
All other processors
Not used.
123 124 125 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 123 def administrative_area @administrative_area end |
#country ⇒ String
Payment card billing country. Use the two-character [ISO Standard Country Codes](http://apps.cybersource.com/library/documentation/sbc/quickref/coun tries_alpha_list.pdf).
SEPA/BACS
Required for Create Mandate and Import Mandate
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks. Important It is your responsibility to determine whether a field is required for the transaction you are requesting.
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
OmniPay Direct
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
Worldpay VAP
Optional field.
All other processors
Not used.
158 159 160 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 158 def country @country end |
#email ⇒ String
Customer's email address, including the full domain name.
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks. Important It is your responsibility to determine whether a field is required for the transaction you are requesting.
Invoicing
Email address for the customer for sending the invoice. If the invoice is in SENT status and email is updated, the old email customer payment link won't work and you must resend the invoice with the new payment link.
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
OmniPay Direct
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
Worldpay VAP
Optional field.
All other processors
Not used.
406 407 408 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 406 def email @email end |
#email_domain ⇒ String
Email domain of the customer. The domain of the email address comprises all characters that follow the @ symbol, such as mail.example.com. For the Risk Update service, if the email address and the domain are sent in the request, the domain supersedes the email address.
413 414 415 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 413 def email_domain @email_domain end |
#first_name ⇒ String
Customer’s first name. This name must be the same as the name on the card. Important It is your responsibility to determine whether a field is required for the transaction you are requesting.
SEPA
Required for Create Mandate and Import Mandate
BACS
Required for Import Mandate
CyberSource Latin American Processing
Important For an authorization request, CyberSource Latin American
Processing concatenates orderInformation.billTo.firstName and
orderInformation.billTo.lastName. If the concatenated value exceeds 30
characters, CyberSource Latin American Processing declines the
authorization request.
Note CyberSource Latin American Processing is the name of a specific
processing connection that CyberSource supports. In the CyberSource API
documentation, CyberSource Latin American Processing does not refer to the
general topic of processing in Latin America. The information in this
field description is for the specific processing connection called
CyberSource Latin American Processing. It is not for any other Latin
American processors that CyberSource supports.
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks.
For Payouts:
This field may be sent only for FDC Compass.
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
OmniPay Direct
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
Worldpay VAP
Optional field.
All other processors
Not used.
290 291 292 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 290 def first_name @first_name end |
#last_name ⇒ String
Customer’s last name. This name must be the same as the name on the card. Important It is your responsibility to determine whether a field is required for the transaction you are requesting.
SEPA
Required for Create Mandate and Import Mandate
BACS
Required for Import Mandate
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
CyberSource Latin American Processing
Important For an authorization request, CyberSource Latin American
Processing concatenates orderInformation.billTo.firstName and
orderInformation.billTo.lastName. If the concatenated value exceeds 30
characters, CyberSource Latin American Processing declines the
authorization request.
Note CyberSource Latin American Processing is the name of a specific
processing connection that CyberSource supports. In the CyberSource API
documentation, CyberSource Latin American Processing does not refer to the
general topic of processing in Latin America. The information in this
field description is for the specific processing connection called
CyberSource Latin American Processing. It is not for any other Latin
American processors that CyberSource supports.
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks.
For Payouts:
This field may be sent only for FDC Compass.
OmniPay Direct
Optional field.
RBS WorldPay Atlanta
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
Worldpay VAP
Optional field.
All other processors
Not used.
341 342 343 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 341 def last_name @last_name end |
#locality ⇒ String
Payment card billing city.
SEPA
Required for Create Mandate and Import Mandate
Atos
This field must not contain colons (:).
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks.
For Payouts:
This field may be sent only for FDC Compass.
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
OmniPay Direct
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
Worldpay VAP
Optional field.
All other processors
Not used.
192 193 194 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 192 def locality @locality end |
#phone_number ⇒ String
Customer’s phone number. It is recommended that you include the country code when the order is from outside the U.S.
Chase Paymentech Solutions
Optional field.
Credit Mutuel-CIC
Optional field.
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks.
For Payouts:
This field may be sent only for FDC Compass.
OmniPay Direct
Optional field.
SIX
Optional field.
TSYS Acquiring Solutions
Optional field.
Worldpay VAP
Optional field.
All other processors
Not used.
372 373 374 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 372 def phone_number @phone_number end |
#postal_code ⇒ String
Postal code for the billing address. The postal code must consist of 5 to
9 digits.
When the billing country is the U.S., the 9-digit postal code must follow
this format:
[5 digits][dash][4 digits]
Example 12345-6789
When the billing country is Canada, the 6-digit postal code must follow
this format:
[alpha][numeric][alpha][space][numeric][alpha][numeric]
Example A1B 2C3
Important It is your responsibility to determine whether a field is
required for the transaction you are requesting.
SEPA
Required for Create Mandate and Import Mandate
For Payouts:
This field may be sent only for FDC Compass.
American Express Direct
Before sending the postal code to the processor, CyberSource removes all nonalphanumeric characters and, if the remaining value is longer than nine characters, truncates the value starting from the right side.
Atos
This field must not contain colons (:).
CyberSource through VisaNet
Credit card networks cannot process transactions that contain non-ASCII characters. CyberSource through VisaNet accepts and stores non-ASCII characters correctly and displays them correctly in reports. However, the limitations of the credit card networks prevent CyberSource through VisaNet from transmitting non-ASCII characters to the credit card networks. Therefore, CyberSource through VisaNet replaces non-ASCII characters with meaningless ASCII characters for transmission to the credit card networks.
FDMS Nashville
Required if pointOfSaleInformation.entryMode=keyed and the address is in
the U.S. or Canada.
Optional if pointOfSaleInformation.entryMode=keyed and the address is
not in the U.S. or Canada.
Not used if swiped.
RBS WorldPay Atlanta:
For best card-present keyed rates, send the postal code if
pointOfSaleInformation.entryMode=keyed.
TSYS Acquiring Solutions
Required when processingInformation.billPaymentOptions.billPayment=true
and pointOfSaleInformation.entryMode=keyed.
All other processors:
Optional field.
241 242 243 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 241 def postal_code @postal_code end |
Class Method Details
.from_element(root) ⇒ Object
515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 515 def self.from_element(root) address1 = XmlUtilities.from_element(root, 'address1', String) address2 = XmlUtilities.from_element(root, 'address2', String) administrative_area = XmlUtilities.from_element(root, 'administrativeArea', String) country = XmlUtilities.from_element(root, 'country', String) locality = XmlUtilities.from_element(root, 'locality', String) postal_code = XmlUtilities.from_element(root, 'postalCode', String) first_name = XmlUtilities.from_element(root, 'firstName', String) last_name = XmlUtilities.from_element(root, 'lastName', String) phone_number = XmlUtilities.from_element(root, 'phoneNumber', String) email = XmlUtilities.from_element(root, 'email', String) email_domain = XmlUtilities.from_element(root, 'emailDomain', String) new(address1: address1, address2: address2, administrative_area: administrative_area, country: country, locality: locality, postal_code: postal_code, first_name: first_name, last_name: last_name, phone_number: phone_number, email: email, email_domain: email_domain, additional_properties: additional_properties) end |
.from_hash(hash) ⇒ Object
Creates an instance of the object from a hash.
476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 476 def self.from_hash(hash) return nil unless hash # Extract variables from the hash. address1 = hash.key?('address1') ? hash['address1'] : SKIP address2 = hash.key?('address2') ? hash['address2'] : SKIP administrative_area = hash.key?('administrativeArea') ? hash['administrativeArea'] : SKIP country = hash.key?('country') ? hash['country'] : SKIP locality = hash.key?('locality') ? hash['locality'] : SKIP postal_code = hash.key?('postalCode') ? hash['postalCode'] : SKIP first_name = hash.key?('firstName') ? hash['firstName'] : SKIP last_name = hash.key?('lastName') ? hash['lastName'] : SKIP phone_number = hash.key?('phoneNumber') ? hash['phoneNumber'] : SKIP email = hash.key?('email') ? hash['email'] : SKIP email_domain = hash.key?('emailDomain') ? hash['emailDomain'] : SKIP # Create a new hash for additional properties, removing known properties. new_hash = hash.reject { |k, _| names.value?(k) } additional_properties = APIHelper.get_additional_properties( new_hash, proc { |value| value } ) # Create object from extracted values. BillTo66.new(address1: address1, address2: address2, administrative_area: administrative_area, country: country, locality: locality, postal_code: postal_code, first_name: first_name, last_name: last_name, phone_number: phone_number, email: email, email_domain: email_domain, additional_properties: additional_properties) end |
.names ⇒ Object
A mapping from model property names to API property names.
416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 416 def self.names @_hash = {} if @_hash.nil? @_hash['address1'] = 'address1' @_hash['address2'] = 'address2' @_hash['administrative_area'] = 'administrativeArea' @_hash['country'] = 'country' @_hash['locality'] = 'locality' @_hash['postal_code'] = 'postalCode' @_hash['first_name'] = 'firstName' @_hash['last_name'] = 'lastName' @_hash['phone_number'] = 'phoneNumber' @_hash['email'] = 'email' @_hash['email_domain'] = 'emailDomain' @_hash end |
.nullables ⇒ Object
An array for nullable fields
450 451 452 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 450 def self.nullables [] end |
.optionals ⇒ Object
An array for optional fields
433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 433 def self.optionals %w[ address1 address2 administrative_area country locality postal_code first_name last_name phone_number email email_domain ] end |
Instance Method Details
#inspect ⇒ Object
Provides a debugging-friendly string with detailed object information.
576 577 578 579 580 581 582 583 584 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 576 def inspect class_name = self.class.name.split('::').last "<#{class_name} address1: #{@address1.inspect}, address2: #{@address2.inspect},"\ " administrative_area: #{@administrative_area.inspect}, country: #{@country.inspect},"\ " locality: #{@locality.inspect}, postal_code: #{@postal_code.inspect}, first_name:"\ " #{@first_name.inspect}, last_name: #{@last_name.inspect}, phone_number:"\ " #{@phone_number.inspect}, email: #{@email.inspect}, email_domain:"\ " #{@email_domain.inspect}, additional_properties: #{@additional_properties}>" end |
#to_s ⇒ Object
Provides a human-readable string representation of the object.
566 567 568 569 570 571 572 573 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 566 def to_s class_name = self.class.name.split('::').last "<#{class_name} address1: #{@address1}, address2: #{@address2}, administrative_area:"\ " #{@administrative_area}, country: #{@country}, locality: #{@locality}, postal_code:"\ " #{@postal_code}, first_name: #{@first_name}, last_name: #{@last_name}, phone_number:"\ " #{@phone_number}, email: #{@email}, email_domain: #{@email_domain}, additional_properties:"\ " #{@additional_properties}>" end |
#to_xml_element(doc, root_name) ⇒ Object
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 |
# File 'lib/cyber_source_merged_spec/models/bill_to66.rb', line 544 def to_xml_element(doc, root_name) root = doc.create_element(root_name) XmlUtilities.add_as_subelement(doc, root, 'address1', address1) XmlUtilities.add_as_subelement(doc, root, 'address2', address2) XmlUtilities.add_as_subelement(doc, root, 'administrativeArea', administrative_area) XmlUtilities.add_as_subelement(doc, root, 'country', country) XmlUtilities.add_as_subelement(doc, root, 'locality', locality) XmlUtilities.add_as_subelement(doc, root, 'postalCode', postal_code) XmlUtilities.add_as_subelement(doc, root, 'firstName', first_name) XmlUtilities.add_as_subelement(doc, root, 'lastName', last_name) XmlUtilities.add_as_subelement(doc, root, 'phoneNumber', phone_number) XmlUtilities.add_as_subelement(doc, root, 'email', email) XmlUtilities.add_as_subelement(doc, root, 'emailDomain', email_domain) XmlUtilities.add_as_subelement(doc, root, 'additional_properties', additional_properties) root end |