Expand my Community achievements bar.

Upload file Adobe Analytics Classification Error

Avatar

Level 2

https://developer.adobe.com/analytics-apis/docs/2.0/guides/endpoints/classifications/import-file/#po...

I'm working through this API request

POST https://analytics.adobe.io.api/{GLOBAL_COMPANY_ID}/classifications/job/import/uploadFile/{API_JOB_ID}
Error:

{
    "errorCode": "500",
    "errorDescription": "Cannot invoke \"javax.servlet.http.Part.getInputStream()\" because \"filePart\" is null",
    "errorId": "PDtw6wJJicN9BeSDmUgZpWUAPgmcCyrd"
}
 
I'm trying to Test in Postman but eventually want this to work in a HTTP request in Workfront Fusion. I'm struggling how to pass a file through or even a JSON body that it mentioned. Could someone please provide a step-by-step example they have done before?
Topics

Topics help categorize Community content and increase your ability to discover relevant content.

9 Replies

Avatar

Community Advisor and Adobe Champion

If you are using Postman, are you trying to upload a file that is local to your computer? Or have you upload a file to an accessible location on the web and referenced the full URL to its location?

 

My suspicion is that you are doing the first... but files located on your hard drive would be inaccessible from the server that is taking the files and processing them... I believe this might be your issue... that the file is "null" because it cannot find the file at all.

Avatar

Level 2

Ahh that would make sense! Can you tell me where I would need to store these files?

Or better yet is there another request I could use where I could just pass JSON through to update the data in the Classification Set?

Avatar

Community Advisor and Adobe Champion

I would guess that it would have to be a location that could be accessed via the web...

 

Now, I assume that since the example is using a relative path, that IF this was being run from a webserver, and the file was hosted on the same server this would work.... or you would need to provide the entire https://.... url to where the file is located (and in the case of running the API locally, I would think you would have to have such a location)

 

I don't know if the file has to be fully accessible (i.e. not password protected) since I don't see any samples of providing a file authentication to access it... 

 

This isn't a function I have used... 

 

 

Do you need to use the API?

 

I know there is an FTP Import built into the AA interface:

Jennifer_Dungan_0-1731692139310.png

 

 

But technically speaking, the files uploaded via FTP would likely just be pointing to that FTP location.

 

 

I would imagine if you are trying to use the classification importer, that you have a significant number of rows to classify...  So I can't imagine a direct update the rules would be a good method in this case (if I could even find such a thing).

 

If your list isn't significantly large, have you considered just managing it as a rule inside the AA interface?

Avatar

Level 2

We currently manually upload the classification set data weekly that we export from Workfront and then modify for Adobe Analytics.

 

FTP is kinda frowned upon since its not too secure to pass data through.

 

I'm trying to look for a possible API that would update the data
https://developer.adobe.com/analytics-apis/docs/2.0/guides/endpoints/classifications/#put-classifica...
maybe some API here would work. Just having a hard time finding something and even the documentation isn't correct and some errors in the URL it provides

Avatar

Community Advisor and Adobe Champion

To be fair, I am not sure the API will be all that much more secure than FTP (since from what I understand, the file needs to be publicly available?)... but I suppose you can reandomize the file names making it harder for people to find, and delete the files when done. So I guess it's still better when you consider that... 

 

I assume the final server where the script will be run in production could be used to also host the files.... do you have a publicly accessible QA or Dev or Staging environment to test with? Maybe you can use it to host the file, and continue to run your script locally in Postman while you are testing....

 

You might be able to use a temp Google Drive location to test a "web hosted" file... just to see if you can get this working.

Avatar

Level 2

Sounds good I will give that a try, thanks!

 

Are you aware of any other API requests to just submit a json body instead of a file?

Avatar

Community Advisor and Adobe Champion

Possibly POST import JSON classification?

https://developer.adobe.com/analytics-apis/docs/2.0/guides/endpoints/classifications/#post-import-j...

 

This looks like you can import individual Classification Sets?

Avatar

Level 3

My understanding is the FTP servers Adobe is providing support SFTP as well, providing at least the basics of encrypted communication, this could help if it is the only thing keeping you from using the FTP imports.


I'm also currently building a setup with Postman (which will remain in Postman) to use the "upload file" method for reasons (a person maintains the file and instead of uploading, would just activate a flow in Postman when data needs to be updated), I'll let you know if there is any success in that.

Avatar

Level 3

I have tested different scenarios for the POST upload method by using Postman, curl in Windows Powershell, curl in Unix server. I've placed the file locally on the Windows machine I'm using, remote Unix server and open location available through HTTPS without authentication.

 

The issue is that these instructions indicate a file name and a path to the file, but the path in examples is a local path and in no valid way of using curl am I able to actually send the file so that the receiving end processes it. I have no idea what the key value is that expects the data, perhaps its better to shift towards JSON as well