Allan
Allan

Reputation: 71

Error when createUploadSession on OneDrive graph api for the special AppFolder

I am attempting to create an upload session in the special app folder for my OneDrive app using the Graph API. My app have the following permissions:

Files.ReadWrite 
Files.ReadWrite.AppFolder 
offline_access 

The request looks like this

https://graph.microsoft.com/v1.0/users/xxxxxx96-2e02-4300-8ab0-a05d73xxxxxx/drive/special/approot:/documentname.docx:/createUploadSession

gives the following error:

{
  "error": {
    "code": "itemNotFound",
    "message": "The resource could not be found.",
    "innerError": {
      "request-id": "7447aa01-6685-4af0-998a-64abc9b14825",
      "date": "2017-04-06T10:07:46"
    }
  }
}

I can create an upload session on the normal root folder without any errors:

graph.microsoft.com/v1.0/users/xxxxxx96-2e02-4300-8ab0-a05d73xxxxxx/drive/root:/documentname.docx:/createUploadSession  

result:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
  "expirationDateTime": "2017-04-06T10:32:48.5252565Z",
  "nextExpectedRanges": [
    "0-"
  ],
  "uploadUrl": "......."
}

Upvotes: 7

Views: 2875

Answers (2)

Kevin Lam
Kevin Lam

Reputation: 1

Just wanted to clarify, since people are sometimes referring to this thread still: This syntax actually is supported. Due to the flexibility of OData syntax/support, the docs are not always 100% comprehensive about every request path that works.

I believe the actual issue is that Files.ReadWrite.AppFolder is not supported on ODB/SPO/business accounts yet (as of 2022) - it is only for personal/MSA accounts. However, there is work in progress to bring this support to SPO in the future.

The two scopes that are mentioned above are:

  • Files.ReadWrite - grants access to content on the caller's mysite only
  • Files.ReadWrite.AppFolder - has no effect on SPO/business

Files.ReadWrite.All should work in the short term, until Files.ReadWrite.AppFolder is implemented on SPO/ODB.

Upvotes: 0

Joseph Gutierrez
Joseph Gutierrez

Reputation: 141

The createuploadsession method does not support special/approot. As mentioned in the documentation, these are the only paths to use:
POST /drive/root:/{path_to_item}:/createUploadSession POST /drive/items/{parent_item_id}:/{filename}:/createUploadSession

Upvotes: 3

Related Questions