Create new file in the folder.
As shown in the request section below, you must provide a request body.
The displayName
MUST be provided in the request body, and the folderId
MUST be provided in the parameters.
Parameters
folderId
– Id of the folder in which you want to create the file. File will be created in the folder with provided folderId.
Notes
File creation is a three step process. This request will create file's meta data. Next two requests need to be executed by using links from the response.
-
uploadUrl is required for file upload. Upload can be done by sending http PUT request and specifying
x-ms-blob-type
header toBlockBlob
. You can use Postman, Azcopy or any libraries with support Azure blob upload to upload the file to provided uploadUrl. -
completeUrl is used to confirm file upload and it is final request for file creation.
Maximum file size to upload with single request is 256 MiB. If bigger file needs to be uploaded there are ways to use Azure libraries to upload file via given Azure SAS url or by uploading file with multiple requests.
For large size file upload you can upload the file in chunks using FileStream depending on the tech-stack you are using.
Authentication
Requires Authorization
header with valid Bearer token for scope itwin-platform
.
For more documentation on authorization and how to get access token visit OAUTH2 Authorization page.
Authorization
User must be an Organization Administrator for the Organization that owns a given Project or have storage_write
permission assigned at the Project level.
An Organization Administrator must have at least one of the following roles assigned in User Management: Account Administrator, Co-Administrator, or CONNECT Services Administrator. For more information about User Management please visit our Bentley Communities Licensing, Cloud, and Web Services wiki page.
Errors
This request can return InvalidCreateFileRequest error with 422 status code. This could happen because of these reasons:
- File name contains invalid characters.
- File name's length is larger than 255 characters.
- File could be harmful. For example, executable files are not accepted.
Request parameters
Id of the folder in which you want to create the file. File will be created in the folder with provided folderId.
Request headers
OAuth access token with itwin-platform
scope
Setting to application/vnd.bentley.itwin-platform.v1+json
is recommended.
Request body
file (create)
Display name of the file.
Description of the file.
Example
{ "displayName": "test.txt", "description": "test file" }
Response 202 Accepted
Accepted
{ "_links": { "completeUrl": { "href": "https://api.bentley.com/storage/files/TYJsPN0xtkWId0yUrXkS5pN5AQzuullIkxz5aDnDJSI/complete" }, "uploadUrl": { "href": "https://projectshareprodeussa01.blob.core.windows.net/azuresqldbecpluginstorage/ProjectShare/File/b6145b7f-fee9-4a13-b1e4-5d061970373e?sv=2017-04-17&sr=b&sig=4NfdEriAONQhbHGkrTAL4bNMzjW8Qm5l%2FoEPiSQl%2BPo%3D&se=2020-10-19T15:12:51Z&sp=rw&rscd=attachment%3B%20filename%3D%22test.txt%22&userid=b905387c-a685-4d27-aab7-468c9ff0c9a6" } } }
Response 401 Unauthorized
This response indicates that request lacks valid authentication credentials. Access token might not been provided, issued by the wrong issuer, does not have required scopes or request headers were malformed.
{ "error": { "code": "HeaderNotFound", "message": "Header Authorization was not found in the request. Access denied." } }
Response 404 Not Found
Parent folder cannot be found.
{ "error": { "code": "FolderNotFound", "message": "Requested folder is not available." } }
Response 422 Unprocessable Entity
Invalid request to create a file. Make sure that a valid file ID and file details were passed in.
{ "error": { "code": "InvalidStorageRequest", "message": "The request to create file was invalid. Please see the API Reference for possible reasons." } }
Response 429 Too many requests
This response indicates that the client sent more requests than allowed by this API for the current tier of the client.
{ "error": { "code": "RateLimitExceeded", "message": "The client sent more requests than allowed by this API for the current tier of the client." } }
Response headers
Number of seconds to wait until client is allowed to make more requests.
link
Hyperlink container.
Hyperlink to the specific entity.
{ "description": "Hyperlink container.", "type": "object", "properties": { "href": { "description": "Hyperlink to the specific entity.", "type": "string" } }, "additionalProperties": false }
file (create)
Model for file creation.
Display name of the file.
Description of the file.
{ "description": "Model for file creation.", "title": "file (create)", "type": "object", "properties": { "displayName": { "description": "Display name of the file.", "type": "string" }, "description": { "description": "Description of the file.", "type": "string" } }, "required": [ "displayName" ], "additionalProperties": false }
file-upload
Model for file upload.
{ "description": "Model for file upload.", "title": "file-upload", "type": "object", "properties": { "_links": { "description": "Hyperlinks for further file upload and confirmation.", "$ref": "#/components/schemas/links-upload" } }, "additionalProperties": false }
links (upload)
Hyperlinks for further file upload and confirmation.
{ "description": "Hyperlinks for further file upload and confirmation.", "title": "links (upload)", "type": "object", "properties": { "uploadUrl": { "description": "URL for uploading file content.", "$ref": "#/components/schemas/link" }, "completeUrl": { "description": "URL for completing file creation.", "$ref": "#/components/schemas/link" } }, "additionalProperties": false }
Error
Contains error information.
One of a server-defined set of error codes.
A human-readable representation of the error.
The target of the error.
{ "type": "object", "description": "Contains error information.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "message": { "type": "string", "description": "A human-readable representation of the error." }, "target": { "type": "string", "description": "The target of the error.", "nullable": true } }, "required": [ "code", "message" ], "additionalProperties": true }
Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Error Response", "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "properties": { "error": { "description": "Error information.", "$ref": "#/components/schemas/Error" } }, "required": [ "error" ], "additionalProperties": false }
Was this page helpful?