0

How to lookup vehicle information based on vehicle ID number

The US Dept of Transportation provides examples of how to use their api, with multiple programming languages at:
https://vpic.nhtsa.dot.gov/api/Home/Index/LanguageExamples
https://vpic.nhtsa.dot.gov/api/

How can this information be used to bring vehicle data (ie. year, make, model, body type) into a Ninox database, by entering a vehicle identification number?

11 replies

null
    • Sean
    • 3 yrs ago
    • Reported - view

    Hi Dean,

     

    This is what I use to get a translation from Google...

     

    let googleResponse := http("POST", "https://translation.googleapis.com/language/translate/v2?key=" + googleKey + "&q=" + urlEncode(string) + "&source=de&target=en&format=text");
    if googleResponse.error then
    alert(text(googleResponse.error))
    else
    let objTranslation := googleResponse.result;
    item(objTranslation.data.translations, 0).translatedText
    end

     

    You can do something similar with their examples as a guide. Once you get a valid response, you can use the item() function to get the information you want or make your own parsing routine. I found that if I copy the response and assign it to a variable in a formula field and then save the change the Ninox editor will helpfully format the JSON result with carriage returns and indents that will make understanding the result easier.

     

    For example, when you click on JSON here...

     

    Screen Shot 2020-08-12 at 9.42.01 PM

     

    ...you get this...

     

    Screen Shot 2020-08-12 at 9.43.15 PM

     

    ...if you assign it to a variable in a formula field you get this...

     

    Screen Shot 2020-08-12 at 9.44.35 PM

    • Choices_Software_Dean
    • 3 yrs ago
    • Reported - view

    Sean, thank you for your help. I seem to still be missing a piece of the puzzle. If the result returned is:

    {
      "SearchCriteria": "VIN(s): 5UXWX7C5*BA",
      "Results": [{
         "Year": "2011",
         "Make": "BMW",,
         "Model": "X3"
        }]
    }

    How do I get the Year, Make and Model data into Ninox fields? I have read the Ninox documentation at:

    https://ninox.com/en/manual/api/http-calls

    and reviewed your sample, but have not been able to retrieve the data using the item() function.

    • Choices_Software_Dean
    • 3 yrs ago
    • Reported - view

    I've made progress. The below item() function returns "X3":

    let response := {
      SearchCriteria: "VIN(s): 5UXWX7C5*BA",
      Results: [{
        Year: "2011",
        Make: "BMW",
        Model: "X3"
      }]
    };
    let v := item(response.Results, 0).Model;
    alert(v)

    • Sean
    • 3 yrs ago
    • Reported - view

    Dean, when the result is returned and assigned to a variable, nhtsaResponse for example, you would use item() like this...

     

    YourYearField := item(nhtsaResponse.Results, 0).Year

    • Sean
    • 3 yrs ago
    • Reported - view

    You beat me to it 😎

    • Choices_Software_Dean
    • 3 yrs ago
    • Reported - view

    It is now working. Anyone can try it. It uses one field named 'Veh ID No.' and the below button code. It only requires the first 10 characters of the 17 character vehicle ID number. It can pull in a lot more information, but this is a good proof of concept.

     

    let _url := "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/" + 'Veh ID No.' + "?format=json";
    let _response := http("get", _url);
    let _obj := _response.result;
    let _year := item(_obj.Results, 0).ModelYear;
    let _make := item(_obj.Results, 0).Make;
    let _model := item(_obj.Results, 0).Model;
    let _veh := _year + " " + _make + " " + _model;
    alert(_veh)

    Thank you very much Sean!

    • Choices_Software_Dean
    • 3 yrs ago
    • Reported - view

    How can I loop through and return the name and value of only those items that contain a value?

    • Sean
    • 3 yrs ago
    • Reported - view

    Dean, I would just copy the results to a temporary table and then you can use filters 

    • Choices_Software_Dean
    • 3 yrs ago
    • Reported - view

    Okay. Thank you Sean.

    • ScottCPA
    • Stephen_Scott
    • 3 yrs ago
    • Reported - view

    This was very helpful to me. Once I realized where the ".Results" portion of the item function came from it, it all fell into place.  (For any future developers reading this, ".Results" is part of the JSON object returned. 

    @Sean, I can't seeem to figure out where the record layout screen above came from (the one in color starting with "let result :={"  ). Was that section of code with data somehow generated...showing the element titles along with the parsed JSON data?

    • Sean
    • 3 yrs ago
    • Reported - view

    Stephen, That screenshot is from the Ninox formula/code editor. All I did was take the unformatted JSON result and assigned it to a variable in a Formula field. When you exit the code editor after that and then go back into the editor, the JSON result will be nicely formatted for you.

Content aside

  • 3 yrs agoLast active
  • 11Replies
  • 2094Views