Create a new file with the supplied data
POST /storage/volumes/{volume.uuid}/files/{path}
Introduced In: 9.8
Creates a new file with the supplied data, creates a new directory or creates a new symlink.
Parameters
Name | Type | In | Required | Description |
---|---|---|---|---|
volume.uuid |
string |
path |
True |
Volume UUID |
path |
string |
path |
True |
Relative path of a new file, directory or symlink. The path field requires using "%2E" to represent "." and "%2F" to represent "/" for the path provided. |
byte_offset |
integer |
query |
False |
How many bytes into the file to begin writing. Use -1 to append (default). |
overwrite |
boolean |
query |
False |
If false, and the file exists, the write will fail. Default is false. |
stream_name |
string |
query |
False |
Name of stream associated with the file to write data to. |
data |
string |
formData |
False |
Data to write to the file. |
Request Body
Name | Type | Description | ||
---|---|---|---|---|
_links |
||||
accessed_time |
string |
Last access time of the file in date-time format. |
||
analytics |
Additional file system analytics information summarizing all descendents of a directory. This property is only populated if file system analytics is enabled on the containing volume. In the context of the |
|||
bytes_used |
integer |
The actual number of bytes used on disk by this file. If byte_offset and length parameters are specified, this will return the bytes used by the file within the given range. |
||
changed_time |
string |
Last time data or attributes changed on the file in date-time format. |
||
creation_time |
string |
Creation time of the file in date-time format. |
||
fill_enabled |
boolean |
Returns "true" if the space reservation is enabled. The field overwrite_enabled must also be set to the same value as this field. |
||
group_id |
integer |
The integer ID of the group of the file owner. |
||
hard_links_count |
integer |
The number of hard links to the file. |
||
inode_generation |
integer |
Inode generation number. |
||
inode_number |
integer |
The file inode number. |
||
is_empty |
boolean |
Specifies whether or not a directory is empty. A directory is considered empty if it only contains entries for "." and "..". This element is present if the file is a directory. In some special error cases, such as when the volume goes offline or when the directory is moved while retrieving this info, this field might not get set. |
||
is_junction |
boolean |
Returns "true" if the directory is a junction. |
||
is_snapshot |
boolean |
Returns "true" if the directory is a Snapshot copy. |
||
is_vm_aligned |
boolean |
Returns true if the file is vm-aligned. A vm-aligned file is a file that is initially padded with zero-filled data so that its actual data starts at an offset other than zero. The amount by which the start offset is adjusted depends on the vm-align setting of the hosting volume. |
||
modified_time |
string |
Last data modification time of the file in date-time format. |
||
name |
string |
Name of the file. |
||
overwrite_enabled |
boolean |
Returns "true" if the space reservation for overwrites is enabled. The field fill_enabled must also be set to the same value as this field. |
||
owner_id |
integer |
The integer ID of the file owner. |
||
path |
string |
Path of the file. |
||
qos_policy |
The QoS policy for the file. Both traditional and adaptive QoS policies are supported. If both
Note that a QoS policy can be set on a file, or a file's volume, but not on both. |
|||
size |
integer |
The size of the file, in bytes. |
||
target |
string |
The relative or absolute path contained in a symlink, in the form |
||
type |
string |
Type of the file. |
||
unique_bytes |
integer |
Number of bytes uniquely held by this file. If byte_offset and length parameters are specified, this will return bytes uniquely held by the file within the given range. |
||
unix_permissions |
integer |
UNIX permissions to be viewed as an octal number. It consists of 4 digits derived by adding up bits 4 (read), 2 (write), and 1 (execute). The first digit selects the set user ID(4), set group ID (2), and sticky (1) attributes. The second digit selects permissions for the owner of the file; the third selects permissions for other users in the same group; the fourth selects permissions for other users not in the group. |
||
volume |
Example request
{
"_links": {
"metadata": {
"href": "/api/resourcelink"
},
"self": {
"href": "/api/resourcelink"
}
},
"accessed_time": "2019-06-12T11:00:16-04:00",
"analytics": {
"by_accessed_time": {
"bytes_used": {
"labels": [
"2019-07",
"2019-06",
"2019-05",
"2019",
"2018",
"--2017",
"unknown"
],
"newest_label": "2019-07",
"oldest_label": "2019-07",
"percentages": [
"0.1",
"11.24",
"0.18",
"15.75",
"0.75",
"83.5",
"0"
],
"values": [
"15925248",
"1735569408",
"27672576",
"2430595072",
"116105216",
"12889948160",
"0"
]
}
},
"by_modified_time": {
"bytes_used": {
"labels": [
"2019-07",
"2019-06",
"2019-05",
"2019",
"2018",
"--2017",
"unknown"
],
"newest_label": "2019-07",
"oldest_label": "2019-07",
"percentages": [
"0.1",
"11.24",
"0.18",
"15.75",
"0.75",
"83.5",
"0"
],
"values": [
"15925248",
"1735569408",
"27672576",
"2430595072",
"116105216",
"12889948160",
"0"
]
}
},
"bytes_used": "15436648448",
"file_count": "21134",
"subdir_count": "35"
},
"bytes_used": "4096",
"changed_time": "2019-06-12T11:00:16-04:00",
"creation_time": "2019-06-12T11:00:16-04:00",
"group_id": "30",
"hard_links_count": "1",
"inode_generation": "214753547",
"inode_number": "1695",
"is_empty": "",
"is_junction": "",
"is_snapshot": "",
"is_vm_aligned": "",
"modified_time": "2019-06-12T11:00:16-04:00",
"name": "test_file",
"owner_id": "54738",
"path": "d1/d2/d3",
"qos_policy": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"name": "qos1",
"uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
},
"size": "200",
"target": "some_directory/some_other_directory/some_file",
"type": "file",
"unique_bytes": "4096",
"unix_permissions": "0755",
"volume": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"name": "volume1",
"uuid": "028baa66-41bd-11e9-81d5-00a0986138f7"
}
}
Response
Status: 201, Created
Error
Status: Default
ONTAP Error Response Codes
Error Code | Description |
---|---|
917505 |
The SVM does not exist. |
917525 |
The volume in the symlink path does not exist in the SVM. |
917698 |
The volume in the symlink path is not mounted in the namespace. |
6488064 |
This command is not supported. |
6488065 |
The volume in the symlink path is invalid. |
6488066 |
Mounting the unjunctioned volume in the symlink path failed. |
6488069 |
Internal file error. |
6488084 |
Failed to create {path} because the "unix_permissions" field was not specified. |
6488085 |
Failed to create {path} because the "type" field was not specified. |
8257536 |
This operation is not supported for the system volume specified in the symlink path. |
8257541 |
Failed to compute the SVM identification from this content. |
8257542 |
This operation is not supported for the administrative SVM. |
9437549 |
This operation is not allowed on SVMs with Infinite Volume. |
13172837 |
This operation is not permitted because the SVM is locked for a migrate operation. |
Name | Type | Description |
---|---|---|
error |
Example error
{
"error": {
"arguments": [
{
"code": "string",
"message": "string"
}
],
"code": "4",
"message": "entry doesn't exist",
"target": "uuid"
}
}
Definitions
See Definitions
href
Name | Type | Description |
---|---|---|
href |
string |
_links
Name | Type | Description |
---|---|---|
metadata |
||
self |
bytes_used
Number of bytes used on-disk, broken down by date of last access.
Name | Type | Description |
---|---|---|
labels |
array[string] |
Labels for this histogram |
newest_label |
string |
Each label indicates the period of time the corresponding data is associated with. A label can take one of the following forms:<ul> a partial date in an extended ISO8601 representation an interval between partial dates in an extended ISO8601 representation, where "--" is used to separate the beginning and end of the interval the string literal "unknown" </ul>For partial dates and partial date intervals where components of a date are unspecified, the label allows for any valid normalized values the unspecified components might take. For example, the label "2017" allows for any time within the year 2017. Essentially, this is the fully specified interval 2017-01-01T00:00:00—2017-12-31T23:59:59. Similarly, the interval "2018-05—2018-07" allows for any time within the months of May, June, and July in 2018, corresponding to the fully specified interval 2018-05-01T00:00:00—2018-07-31T23:59:59. The following extensions to ISO8601 are used:<ul> Quarters may be specified. The form yyyy-Qq is used to represent the qth quarter of the year yyyy. Q1 consists of the months January, February, and March; Q2 consists of April, May, and June; Q3 consists of July, August, and September; Q4 consists of October, November, and December. For example, the label "2019-Q2" represents the second quarter of the year 2019, which corresponds to the interval 2019-04-01T00:00:00—2019-06-30T23:59:59. Either the beginning or end of an interval may be omitted. When the beginning is omitted, the interval includes points in time arbitrarily far in the past. When the end is omitted, the interval includes points in time through the end of the current week. </ul>The "unknown" label tracks data that could not be associated with any other time period. This usually occurs when the data was at some point associated with a time in the future. |
oldest_label |
string |
Each label indicates the period of time the corresponding data is associated with. A label can take one of the following forms:<ul> a partial date in an extended ISO8601 representation an interval between partial dates in an extended ISO8601 representation, where "--" is used to separate the beginning and end of the interval the string literal "unknown" </ul>For partial dates and partial date intervals where components of a date are unspecified, the label allows for any valid normalized values the unspecified components might take. For example, the label "2017" allows for any time within the year 2017. Essentially, this is the fully specified interval 2017-01-01T00:00:00—2017-12-31T23:59:59. Similarly, the interval "2018-05—2018-07" allows for any time within the months of May, June, and July in 2018, corresponding to the fully specified interval 2018-05-01T00:00:00—2018-07-31T23:59:59. The following extensions to ISO8601 are used:<ul> Quarters may be specified. The form yyyy-Qq is used to represent the qth quarter of the year yyyy. Q1 consists of the months January, February, and March; Q2 consists of April, May, and June; Q3 consists of July, August, and September; Q4 consists of October, November, and December. For example, the label "2019-Q2" represents the second quarter of the year 2019, which corresponds to the interval 2019-04-01T00:00:00—2019-06-30T23:59:59. Either the beginning or end of an interval may be omitted. When the beginning is omitted, the interval includes points in time arbitrarily far in the past. When the end is omitted, the interval includes points in time through the end of the current week. </ul>The "unknown" label tracks data that could not be associated with any other time period. This usually occurs when the data was at some point associated with a time in the future. |
percentages |
array[number] |
Percentages for this histogram |
values |
array[integer] |
Values for this histogram |
by_accessed_time
File system analytics information, broken down by date of last access.
Name | Type | Description |
---|---|---|
bytes_used |
Number of bytes used on-disk, broken down by date of last access. |
bytes_used
Number of bytes used on-disk, broken down by date of last modification.
Name | Type | Description |
---|---|---|
labels |
array[string] |
Labels for this histogram |
newest_label |
string |
Each label indicates the period of time the corresponding data is associated with. A label can take one of the following forms:<ul> a partial date in an extended ISO8601 representation an interval between partial dates in an extended ISO8601 representation, where "--" is used to separate the beginning and end of the interval the string literal "unknown" </ul>For partial dates and partial date intervals where components of a date are unspecified, the label allows for any valid normalized values the unspecified components might take. For example, the label "2017" allows for any time within the year 2017. Essentially, this is the fully specified interval 2017-01-01T00:00:00—2017-12-31T23:59:59. Similarly, the interval "2018-05—2018-07" allows for any time within the months of May, June, and July in 2018, corresponding to the fully specified interval 2018-05-01T00:00:00—2018-07-31T23:59:59. The following extensions to ISO8601 are used:<ul> Quarters may be specified. The form yyyy-Qq is used to represent the qth quarter of the year yyyy. Q1 consists of the months January, February, and March; Q2 consists of April, May, and June; Q3 consists of July, August, and September; Q4 consists of October, November, and December. For example, the label "2019-Q2" represents the second quarter of the year 2019, which corresponds to the interval 2019-04-01T00:00:00—2019-06-30T23:59:59. Either the beginning or end of an interval may be omitted. When the beginning is omitted, the interval includes points in time arbitrarily far in the past. When the end is omitted, the interval includes points in time through the end of the current week. </ul>The "unknown" label tracks data that could not be associated with any other time period. This usually occurs when the data was at some point associated with a time in the future. |
oldest_label |
string |
Each label indicates the period of time the corresponding data is associated with. A label can take one of the following forms:<ul> a partial date in an extended ISO8601 representation an interval between partial dates in an extended ISO8601 representation, where "--" is used to separate the beginning and end of the interval the string literal "unknown" </ul>For partial dates and partial date intervals where components of a date are unspecified, the label allows for any valid normalized values the unspecified components might take. For example, the label "2017" allows for any time within the year 2017. Essentially, this is the fully specified interval 2017-01-01T00:00:00—2017-12-31T23:59:59. Similarly, the interval "2018-05—2018-07" allows for any time within the months of May, June, and July in 2018, corresponding to the fully specified interval 2018-05-01T00:00:00—2018-07-31T23:59:59. The following extensions to ISO8601 are used:<ul> Quarters may be specified. The form yyyy-Qq is used to represent the qth quarter of the year yyyy. Q1 consists of the months January, February, and March; Q2 consists of April, May, and June; Q3 consists of July, August, and September; Q4 consists of October, November, and December. For example, the label "2019-Q2" represents the second quarter of the year 2019, which corresponds to the interval 2019-04-01T00:00:00—2019-06-30T23:59:59. Either the beginning or end of an interval may be omitted. When the beginning is omitted, the interval includes points in time arbitrarily far in the past. When the end is omitted, the interval includes points in time through the end of the current week. </ul>The "unknown" label tracks data that could not be associated with any other time period. This usually occurs when the data was at some point associated with a time in the future. |
percentages |
array[number] |
Percentages for this histogram |
values |
array[integer] |
Values for this histogram |
by_modified_time
File system analytics information, broken down by date of last modification.
Name | Type | Description |
---|---|---|
bytes_used |
Number of bytes used on-disk, broken down by date of last modification. |
analytics
Additional file system analytics information summarizing all descendents of a directory.
This property is only populated if file system analytics is enabled on the containing volume.
In the context of the records
property of a link:file-info-response(#model-file-info-response),analyticsobjectswillonlyincludepropertiesthatmayvarybetweenelementswithinthecollection.forexample,theanalyticsobjectswillnotcontainhistogramlabels,sincethesamehistogramlabelsareusedforallelementswithinthecollection.theinvariantinformationisinsteadavailableviatheanalyticspropertyofthefile-info-response(#model-file-info-response).thisavoidsanexcessiveamountofduplicatedinformationwhenaget-storage-volumes-files-.htmlfile_info_response, analytics objects will only include properties that may vary between elements within the collection. For example, the analytics objects will not contain histogram labels, since the same histogram labels are used for all elements within the collection. The invariant information is instead available via the analytics property of the file_info_response. This avoids an excessive amount of duplicated information when a [GET /storage/volumes/{volume.uuid}/files/{path}] call returns a large collection.
Name | Type | Description |
---|---|---|
by_accessed_time |
File system analytics information, broken down by date of last access. |
|
by_modified_time |
File system analytics information, broken down by date of last modification. |
|
bytes_used |
integer |
Number of bytes used on-disk |
file_count |
integer |
Number of descendants |
subdir_count |
integer |
Number of sub directories |
_links
Name | Type | Description |
---|---|---|
self |
qos_policy
The QoS policy for the file. Both traditional and adaptive QoS policies are supported. If both qos_policy.uuid
and qos_policy.name
properties are specified in the same request, they must refer to the same QoS policy. To remove the file from a QoS policy, set the property qos_policy.name
in a PATCH request to an empty string "" or "none".
Files which are in use as a LUN cannot be assigned to a QoS policy, instead use PATCH on /storage/luns to assign a QoS policy for such files. |
Note that a QoS policy can be set on a file, or a file's volume, but not on both.
Name | Type | Description |
---|---|---|
_links |
||
name |
string |
The name of the QoS policy. To remove the file from a QoS policy, set this property to an empty string "" or set it to "none" in a PATCH request. |
uuid |
string |
The unique identifier of the QoS policy. Valid in PATCH. |
volume
Name | Type | Description |
---|---|---|
_links |
||
name |
string |
The name of the volume. |
uuid |
string |
Unique identifier for the volume. This corresponds to the instance-uuid that is exposed in the CLI and ONTAPI. It does not change due to a volume move.
|
file_info
Information about a single file.
Name | Type | Description | ||
---|---|---|---|---|
_links |
||||
accessed_time |
string |
Last access time of the file in date-time format. |
||
analytics |
Additional file system analytics information summarizing all descendents of a directory. This property is only populated if file system analytics is enabled on the containing volume. In the context of the |
|||
bytes_used |
integer |
The actual number of bytes used on disk by this file. If byte_offset and length parameters are specified, this will return the bytes used by the file within the given range. |
||
changed_time |
string |
Last time data or attributes changed on the file in date-time format. |
||
creation_time |
string |
Creation time of the file in date-time format. |
||
fill_enabled |
boolean |
Returns "true" if the space reservation is enabled. The field overwrite_enabled must also be set to the same value as this field. |
||
group_id |
integer |
The integer ID of the group of the file owner. |
||
hard_links_count |
integer |
The number of hard links to the file. |
||
inode_generation |
integer |
Inode generation number. |
||
inode_number |
integer |
The file inode number. |
||
is_empty |
boolean |
Specifies whether or not a directory is empty. A directory is considered empty if it only contains entries for "." and "..". This element is present if the file is a directory. In some special error cases, such as when the volume goes offline or when the directory is moved while retrieving this info, this field might not get set. |
||
is_junction |
boolean |
Returns "true" if the directory is a junction. |
||
is_snapshot |
boolean |
Returns "true" if the directory is a Snapshot copy. |
||
is_vm_aligned |
boolean |
Returns true if the file is vm-aligned. A vm-aligned file is a file that is initially padded with zero-filled data so that its actual data starts at an offset other than zero. The amount by which the start offset is adjusted depends on the vm-align setting of the hosting volume. |
||
modified_time |
string |
Last data modification time of the file in date-time format. |
||
name |
string |
Name of the file. |
||
overwrite_enabled |
boolean |
Returns "true" if the space reservation for overwrites is enabled. The field fill_enabled must also be set to the same value as this field. |
||
owner_id |
integer |
The integer ID of the file owner. |
||
path |
string |
Path of the file. |
||
qos_policy |
The QoS policy for the file. Both traditional and adaptive QoS policies are supported. If both
Note that a QoS policy can be set on a file, or a file's volume, but not on both. |
|||
size |
integer |
The size of the file, in bytes. |
||
target |
string |
The relative or absolute path contained in a symlink, in the form |
||
type |
string |
Type of the file. |
||
unique_bytes |
integer |
Number of bytes uniquely held by this file. If byte_offset and length parameters are specified, this will return bytes uniquely held by the file within the given range. |
||
unix_permissions |
integer |
UNIX permissions to be viewed as an octal number. It consists of 4 digits derived by adding up bits 4 (read), 2 (write), and 1 (execute). The first digit selects the set user ID(4), set group ID (2), and sticky (1) attributes. The second digit selects permissions for the owner of the file; the third selects permissions for other users in the same group; the fourth selects permissions for other users not in the group. |
||
volume |
error_arguments
Name | Type | Description |
---|---|---|
code |
string |
Argument code |
message |
string |
Message argument |
error
Name | Type | Description |
---|---|---|
arguments |
array[error_arguments] |
Message arguments |
code |
string |
Error code |
message |
string |
Error message |
target |
string |
The target parameter that caused the error. |