Overview
Use the Registration API to create a new registration record in Aimbase.
Related APIs:
- To filter, sort and retrieve registration records use the Registration Search API.
Registration data is submitted to our API via HTTP POST. The API will accept JSON or XML based on what content type is set in the Content-Type HTTP header. To submit JSON data set the Content-Type header to “application/json”, to submit XML set the Content-Type HTTP header to “application/xml”.
The Registration API requires authentication so the HTTP POST will require a valid Authenticate message header with an API token. See the Aimbase Authentication Web Service Specification for more details on how to retrieve a valid API token.
Authenticate message header example:
Authenticate: Avala-Api {username}:{token}
The process flow of sending registration(s) to the system is as follows:
New registrations should be included in a request sent via an HTTP POST to the end point. The request may contain one or more registrations.
Each registration is validated against the Registration XSD.
A response is generated containing a success or failure for each registration provided in the request.
Any registration successfully passing the first wave of validation checks will be assigned an Id that uniquely identifies the record in the staging process. This Id will be included in the response.
Possible response codes are:
201 (Created). This response indicates that the Registration data was successfully parsed. The body of the response will contain the success or failure status for each registration that was submitted in the request.
400 (Bad Request). Along with the 400 response, the body of the response will contain an error message describing why the request was a bad request. See Appendix D for the structure of an error response.
500 (Internal Server Error). An unknown error occurred during the import.
The HTTP endpoint that will accept the POST data are:
https://{baseaddress}/csi/api/registration?manufacturer={MFGcode}
Note, {baseaddress} and {MFGcode} will be provided by Rollick.
Below is the list of properties that are accepted in the POST body.
Registration Data Schema
Field Name |
Required |
Format |
Description |
IsActive |
|
Max Length: 1 |
Bit value to determine if the registration is active or inactive. A Value of “1” indicates an active registration. A value of “0” indicates an inactive registration. No value provided will default to "1". |
Action |
|
Max Length: 1 |
Pass the following values “A” for adding a record and “O” for updating a record. If blank it will default to adding a record. |
SrvyType |
|
Max Length: 1 |
Survey Type. |
PurchaseDate |
X |
Max Length: 10 YYYY-MM-DD |
Date of purchase |
DeliveryDate |
|
Max Length: 10 YYYY-MM-DD |
Date of delivery |
SerialNumber |
X |
Max Length: 100 |
Also referred to as HIN. This is a unique ID per survey. |
Dealer |
|
Node containing dealer specific information. |
|
Product |
X |
|
Node containing product specific information (name). |
Customer |
|
|
Node containing customer specific information. |
Price |
|
|
Price of the product being registered. |
PriceCurrency |
|
Max Length: 50 |
Country currency for the registration price. |
SalesID |
|
Max Length: 200 |
Sales identification number. |
StockNbr |
|
Max Length: 200 |
Stock Number |
CompanyUid |
|
Max Length: 200 |
Company Uid |
CompanyExternalId |
|
Max Length: 20 |
Company External Id |
ListCodes |
|
Max Length: 128 |
List codes |
IsCommunicationOptIn |
|
Boolean |
Acceptable values are 'true' or 'false' |
CommunicationOptInIpAddress |
|
Max Length: 50 |
The IP Address of the registration when it was submitted. |
CommunicationOptInDate |
|
yyyy-MM-dd |
The date the registration opted in for communications. |
CommunicationOptInSource |
|
Max Length: 50 |
The source of the registration that was opted in for communications. |
RegistrationTypeCode |
|
Max Length: 20 |
Record level registration type designation. |
RegistrationSourceCode |
|
Max Length: 20 |
Record level registration source designation. |
SendSurvey |
|
|
Send survey override. Acceptable values: "true" or "false" |
Customs |
|
|
A list of custom fields and their values. If the field name is defined as a custom field in the application, the value will be set for that field. If the field name is not defined as a custom field in the application, the field name and value will be added to the registration’s generic metadata values. |
Dealer Data Schema
Field Name |
Required |
Format |
Description |
DealerNumber |
X |
Max Length: 20 |
Manufacturer dealer number. Used to identify a dealer in the system. This value must not contain a hyphen. |
DealerLocation |
|
Max Length: 10 |
Manufacturer dealer location. Used to identify a dealer’s sub location in the system. |
DealerType |
X |
Max Length: 20 |
Dealer type |
Name |
X |
Max Length: 80 |
Name of the dealer |
Contact |
|
Max Length: 50 |
Primary dealer contact |
|
Max Length: 1000 |
Email address of dealership. |
|
Address1 |
|
Max Length: 256 |
|
Address2 |
|
Max Length: 256 |
|
City |
|
Max Length: 35 |
|
State |
|
Max Length: 3 |
|
PostalCode |
|
Max Length: 10 |
|
CountryCode |
|
Max Length: 2 |
|
Url |
|
Max Length: 80 |
|
Phone |
|
Max Length: 20 |
|
Fax |
|
Max Length: 20 |
|
TollFree |
|
Max Length: 20 |
|
District |
|
Max Length: 50 |
|
Customs |
|
|
A list of custom fields and their values. If the field name is defined as a custom field in the application, the value will be set for that field. If the field name is not defined as a custom field in the application, the field name and value will be added to the dealer’s generic metadata values. |
Customer Data Schema
Field Name |
Required |
Format |
Description |
CustNumber |
X |
Max Length: 20 |
Unique identifier or value used in the manufacturer system to identify the customer. |
FirstName |
X |
Max Length: 50 |
|
LastName |
X |
Max Length: 50 |
|
Title |
|
Max Length: 50 |
|
Address1 |
X |
Max Length: 256 |
|
Address2 |
|
Max Length: 256 |
|
City |
X |
Max Length: 35 |
|
State |
|
Max Length: 3 |
This field is required if the country is either the United States (US) or Canada (CA). |
PostalCode |
|
Max Length: 10 |
This field is required if the country is either the United States (US) or Canada (CA). |
CompanyYN |
|
Max Length: 1 |
“Y” or “N” value indicating if the customer is a company. Defaults to not a company if no value is given. |
CompanyName |
|
Max Length: 50 |
|
CompanyTitle |
|
Max Length: 50 |
|
County |
|
Max Length: 50 |
|
CountryCode |
X |
Max Length: 2 |
|
HomePhone |
|
Max Length: 20 |
|
MobilePhone |
|
Max Length: 20 |
|
WorkPhone |
|
Max Length: 20 |
|
Fax |
|
Max Length: 20 |
|
|
Max Length: 80 |
|
|
LanguageCode |
X |
Max Length: 2 |
A language code will be flagged as invalid if no survey is set up for the given language code. Acceptable language codes: “DC”, “EN”, “FR”, “GR”, “IT”, “JP”, “PO”, “RK”, “ES”, “SW”. Language codes are ISO 639-1. |
EmailRefused |
|
Max Length: 5 |
Acceptable values are “True” or “False” |
ExternalId |
|
Max Length: 50 |
External ID for the owner |
Product Data Schema
Field Name |
Required |
Format |
Description |
Code |
X |
Max Length: 50 |
|
ModelYear |
|
Max Length: 4 |
|
ModelName |
|
Max Length: 80 |
Human readable product name. If not supplied this field will be populated with the value of the Code field. |
PlantCode |
|
Max Length: 6 |
|
Brand |
X |
Max Length: 50 |
Brand Name. This value needs to match the brand name setup in Aimbase. |
Category |
|
Max Length: 3 |
|
Segment |
|
Max Length: 3 |
|
EngineMake1 |
|
Max Length: 50 |
|
EngineModel1 |
|
Max Length: 50 |
|
EngineSerialNb1 |
|
Max Length: 50 |
|
EngineFuelSystem1 |
|
Max Length: 50 |
|
EngineMake2 |
|
Max Length: 50 |
|
EngineModel2 |
|
Max Length: 50 |
|
EngineSerialNb2 |
|
Max Length: 50 |
|
EngineFuelSystem2 |
|
Max Length: 50 |
|
Customs |
|
|
A list of custom fields and their values. If the field name is defined as a custom field in the application, the value will be set for that field. If the field name is not defined as a custom field in the application, the field name and value will be added to the product’s generic metadata values. |
Custom Data Schema
Field Name |
Required |
Format |
Description |
FieldName |
X |
Max Length: 50 |
The field name of the custom field. |
FieldValue |
X |
Max Length: 2048 |
The field value of the custom field. |
APPENDIX A – Sample POST (XML)
<Registrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Registration> <IsActive>false</IsActive> <SrvyType>A</SrvyType> <PurchaseDate>2014-07-06T17:32:00.0369673-05:00</PurchaseDate> <SerialNumber>1111111</SerialNumber> <Dealer> <DealerLocation>1</DealerLocation> <DealerNumber>12312</DealerNumber> <Name>Test Dealer 1</Name> <Contact>Test Contact 1</Contact> <Email>test@testdealer1.com</Email> <Address1>123 Main Street</Address1> <Address2>A2</Address2> <City>New York</City> <State>NY</State> <PostalCode>11111</PostalCode> <CountryCode>US</CountryCode> <Phone>13146209999</Phone> <Fax>13146209998</Fax> <TollFree>13146209997</TollFree> <District>D1</District> <Customs /> </Dealer> <Product> <Code>TP1</Code> <ModelYear>2014</ModelYear> <ModelName>Test Product 1</ModelName> <PlantCode>PC1</PlantCode> <Brand>Brand1</Brand> <Category>C1</Category> <Segment>S1</Segment> </Product> <Customer> <CustNumber>1231A</CustNumber> <FirstName>John</FirstName> <LastName>Doe</LastName> <Title>Mr.</Title> <Address1>123 Broadway Drive</Address1> <Address2>Apt #2</Address2> <City>Saint Louis</City> <State>NO</State> <PostalCode>63103</PostalCode> <CompanyYN>N</CompanyYN> <CompanyName>England</CompanyName> <CompanyTitle>King</CompanyTitle> <County>Saint Louis City</County> <CountryCode>US</CountryCode> <HomePhone>13146209999</HomePhone> <MobilePhone>13146209998</MobilePhone> <WorkPhone>13146209997</WorkPhone> <Fax>13146209996</Fax> <Email>jdoe@test.com</Email> <LanguageCode>EN</LanguageCode> <EmailRefused>0</EmailRefused> </Customer> <Price>234567</Price> <PriceCurrency>USD</PriceCurrency> <SalesID>1111A</SalesID> <StockNbr>1111A</StockNbr> <RegistrationTypeCode>Registration</RegistrationTypeCode> <RegistrationSourceCode>WebService</RegistrationSourceCode> <IsCommunicationOptIn>true</IsCommunicationOptIn> <CommunicationOptInIpAddress>99.999.99.999</CommunicationOptInIpAddress> <CommunicationOptInDate>2016-09-15T10:49:12.53</CommunicationOptInDate> <CommunicationOptInSource>Source</CommunicationOptInSource> <SendSurvey>true</SendSurvey> <Customs> <Custom> <FieldName>Field1</FieldName> <FieldValue>FieldValue1</FieldValue> </Custom> <Custom> <FieldName>Field2</FieldName> <FieldValue>FieldValue2</FieldValue> </Custom> </Customs> </Registration> </Registrations>
APPENDIX B – Sample POST (JSON)
[{ "IsActive" : false, "SrvyType" : "A", "PurchaseDate" : "2014-07-06T17:34:13.1466117-05:00", "SerialNumber" : "1111111", "Dealer" : { "DealerLocation" : "1", "DealerNumber" : "12312", "Name" : "Test Dealer 1", "Contact" : "Test Contact 1", "Email" : "test@testdealer1.com", "Address1" : "123 Main Street", "Address2" : "A2", "City" : "New York", "State" : "NY", "PostalCode" : "11111", "CountryCode" : "US", "Phone" : "13146209999", "Fax" : "13146209998", "TollFree" : "13146209997", "District" : "D1", "Customs" : [] }, "Product" : { "Code" : "TP1", "ModelYear" : "2014", "ModelName" : "Test Product 1", "PlantCode" : "PC1", "Brand" : "Brand1", "Category" : "C1", "Segment" : "S1", "Customs" : null }, "Customer" : { "CustNumber" : "1231A", "FirstName" : "John", "LastName" : "Doe", "Title" : "Mr.", "Address1" : "123 Broadway Drive", "Address2" : "Apt #2", "City" : "Saint Louis", "State" : "NO", "PostalCode" : "63103", "CompanyYN" : "N", "CompanyName" : "England", "CompanyTitle" : "King", "County" : "Saint Louis City", "CountryCode" : "US", "HomePhone" : "13146209999", "MobilePhone" : "13146209998", "WorkPhone" : "13146209997", "Fax" : "13146209996", "Email" : "jdoe@test.com", "LanguageCode" : "EN", "EmailRefused" : "0" }, "Price" : 234567.0, "PriceCurrency" : "USD", "SalesID" : "1111A", "StockNbr" : "1111A", "RegistrationTypeCode" : "Registration", "RegistrationSourceCode" : "WebService", "Customs" : [{ "FieldName" : "Field1", "FieldValue" : "FieldValue1" }, { "FieldName" : "Field2", "FieldValue" : "FieldValue2" } ] } ]
APPENDIX C – Sample Success Responses (XML/JSON)
<Registrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Registration> <Id>0</Id> <Status>Success</Status> <StatusMessage>Registration successfully received</StatusMessage> <Messages /> <SerialNumber>1111111</SerialNumber> </Registration> </Registrations> { "TopLevelError" : null, "RegistrationResponseRecords" : [{ "SerialNumber" : "1111111", "Id" : "0", "Status" : "Success", "StatusMessage" : "Registration successfully received", "Messages" : [] } ] }
APPENDIX D – Sample Failed Responses (XML/JSON)
The error responses below were generated by submitting a Registration without the required field “LastName”.
<Registrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Registration> <Status>Failure</Status> <StatusMessage>Registration failed validation</StatusMessage> <Messages> <Message> <Field>Customer.LastName</Field> <Message>The LastName field is required.</Message> </Message> </Messages> <SerialNumber>1111111</SerialNumber> </Registration> </Registrations> { "TopLevelError" : null, "RegistrationResponseRecords" : [{ "SerialNumber" : "1111111", "Id" : null, "Status" : "Failure", "StatusMessage" : "Registration failed validation", "Messages" : [{ "Field" : "Customer.LastName", "Message" : "The LastName field is required." } ] } ] }
The error responses below were generated by submitting a Registration that could not be parsed into the correct data schema.
<Registrations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <TopLevelError> <Message>Bad request: There is an error in XML document (1, 130).</Message> </TopLevelError> </Registrations> { "TopLevelError" : { "Message" : "Bad request: Unexpected end when deserializing array. Path '[0]', line 75, position 1." }, "RegistrationResponseRecords" : [] }