none
Submission REST API *almost* working but I can't seem to download the Signed Files RRS feed

  • Question

  • Ok, after much back and forth and experimentation I've been able to automate the creation of a submission, uploading the hlkx and monitoring its status until complete.

    Where I am stuck is on downloading the Signed Files asset. Following the documentation I can get the assetID and assetName without any problems, but the call to get the SAS URL just gives me a 404. The call I am making is just a GET on "<sysdevendpoint>/<requestID>/assets/<assetID>".

    If I change the assetID to the ID for the "InitialUpload" asset, it gives me the SAS URL and I can download that file no problem. I've tried varying the arguments but no luck. I know I can just hit "https://sysdev.microsoft.com/member/submission/<submissionid>.zip" to download the file, but that link needs diferent credentials that I don't want to code into my utility and the zip file doesn't include the DUA hlkx package and I kinda need that. Anyone have any ideas or is the service just broken?

    For posterity, I'll add a couple of notes for the other hurdles I've come across.

    Example steps I've been using: https://msdn.microsoft.com/en-us/library/windows/hardware/dn800660(v=vs.85).aspx

    1. Don't bother putting the OSSelections field in your JSON when creating the submission, the server craps out when you actually specify the ProductType or QualificationLevel and it doesn't seem to accept "Windows 8 x64", etc. If you leave it out, the submission defaults to "Windows 8" but the actual values are pulled from the HLKX later, so it's all good.
    2. As long as the HLKX file is under 64MB (mine are always around 50MB) you don't have to chunk the file upload, just upload the file in one BlockBlob PUT and that works fine.
    3. When creating the upload request, the docs specify a header value "x-ms-version", but don't specify which version to use. I actually parse it out of the SAS url that is given, so it should always be the right version.
    4. When updating the Submission in step 5, the docs say "UpdateComplete" but the field is actually "UploadComplete", which is actually correct in the documentation for updating a submission (here)
    5. Also part of the Update Submission step, the documentation says to use the URI "<sysdevendpoint>/<requestID>", which works but the JSON that you submit is supposed to contain ""RequestID" : "<requestID>"", which doesn't work. After some experimentation, it turns out the server will only accept ""RequestID": "<SubmissionID>" which you will have to extract from the submission status after you create it.
    Friday, January 29, 2016 7:12 PM

All replies

  • Hi Mike,

    I asked here and was told this typically occurs because then realm (or scope) url needs a trailing slash at the end.

    I hope that helps,

    Justin [MSFT]

    Monday, February 1, 2016 9:28 PM
  • Thanks for the reply but unfortunately that is not the issue. This is the Realm/Scope URL I'm using to get the Auth token:

    "https://devicesigningservice.cloudapp.net/"

    and I get a valid auth_token back that lets me create a submission and update it, I can download the .HLKX asset but the SignedFile .cab file is a 404 and there are no other assets other than those two.

    Mike


    Monday, February 1, 2016 9:45 PM
  • So, given that I've gotten no other responses and, as usual the sysdev support email is a black hole where support requests go to die, I'll just assume that the API is broken and change my application to pop up the SysDev page to manually download the files.

    Has anyone actually gotten the API to work fully?

    Wednesday, February 3, 2016 4:35 PM
  • Hi ,

    I'm trying to get the file upload when I commit I get an HTTP 201 status, I follow that with the UpdateSubmission which return 404 "NOT FOUND". I read the comment about the request ID and the submission Id, I can not find a submission Id from my submission request. do you know how to get that from the submission request. also when I tried to send the  update without the token I get not authorized error so i have to submit the token for the update.

    thanks!

    Wednesday, February 24, 2016 7:46 PM
  • Okay, so I get the SubmissionID from the submission metadata and used that in  my JSON object to update the submission as the RequestID and I still has the same result.
    Thursday, February 25, 2016 2:46 PM
  • The JSON that I send when the file has completed uploaded is like this:

    {
        "UploadComplete":  "true",
        "RequestID":  <SubmissionID>
    }

    and it is sent as a PATCH request to "https://devicesigningservice.cloudapp.net/api/signing/devices/<RequestID>" and you always have to use the token when talking to the sysdevURI.

    Make sure you use the RequestID for the URI, but the submissionID for the body of the JSON, though the key should still say "RequestID"

    Tuesday, March 1, 2016 6:20 PM
  • Thanks Mike, I have updated my JSON as such and my submission update succeeded. the status of my submission changed to pending and stuck on step 1/11 transferring CAB file. not sure what I'm doing wrong here. is it not finding the uploaded file or what?

    Thanks!

    Tuesday, March 1, 2016 6:48 PM
  • and by the way I tried to send other information in the JSON object like the product name and that worked fine, the only time I will have an issue with it if I include the marketing name.
    Tuesday, March 1, 2016 6:51 PM
  • Thanks Mike, I have updated my JSON as such and my submission update succeeded. the status of my submission changed to pending and stuck on step 1/11 transferring CAB file. not sure what I'm doing wrong here. is it not finding the uploaded file or what?

    Thanks!

    in my experience the certification process on their side can take anywhere from 1 hour to 2 weeks, depending on if something goes wrong and someone notices and re-starts the submission so it could just be stuck until someone on their side bangs on the side of the server they are using.

    To verify there is nothing wrong with your hlkx, try using the API to get the assets for the submission, then downloading the HLKX asset and see if it is still viable.

    Tuesday, March 1, 2016 8:41 PM
  • I have tried that and I was able to download my CAB file back to my desired location and it has the same size as my original file. but my status stayed on pending for a whole day now and the Progress shows Step 2/11 which is Transferring CAB File.
    Wednesday, March 2, 2016 4:12 PM
  • you uploaded a .cab file? Then I don't know, I only upload the raw .hlkx, which seems to work.
    Wednesday, March 2, 2016 4:14 PM
  • Thanks.

    one last thing do when I look at their website it shows the category for my submission as "device", not sure how can I update that to something like "systems"? also not sure what are the other category options are

    Wednesday, March 2, 2016 5:13 PM
  • also if you do this manually through sysdev.microsoft.com they are identifying the file to be uploaded as a CAB file?
    Wednesday, March 2, 2016 5:28 PM
  • I am using the same Realm/Scope but when I send this to server and expect response I get 500 error any clue what might be the problem?
    Wednesday, July 6, 2016 2:09 PM
  • basically it seems the service is broken and no one is working on fixing it. Requests for info have gone unanswered and it hasn't changed in 6 months so I wouldn't bother trying to use this service.

    M

    Thursday, July 7, 2016 1:22 PM