Skip to main content

Write to an existing file with the supplied data

Contributors

PATCH /storage/volumes/{volume.uuid}/files/{path}

Introduced In: 9.8

Writes to an existing file with the supplied data or modifies the size, name, space reservation information, QoS policy, or hole range information of a file. Query-based PATCH operations are not supported.

Parameters

Name Type In Required Description

volume.uuid

string

path

True

Volume UUID

path

string

path

True

Relative path of a file in the volume. 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).

stream_name

string

query

False

Name of stream associated with the file to write data to.

return_records

boolean

query

False

The default is false. If set to true, the records are returned.

  • Default value:

Request Body

Name Type Description

_links

_links

accessed_time

string

Last access time of the file in date-time format.

analytics

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.

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.

constituent

constituent

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.

holes

array[file_hole]

List of hole ranges in 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

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".

Note 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.

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

volume

Example request
{
  "_links": {
    "metadata": {
      "href": "/api/resourcelink"
    },
    "self": {
      "href": "/api/resourcelink"
    }
  },
  "accessed_time": "2019-06-12 11:00:16 -0400",
  "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-12 11:00:16 -0400",
  "constituent": {
    "name": "fg__0001",
    "uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
  },
  "creation_time": "2019-06-12 11:00:16 -0400",
  "group_id": 30,
  "hard_links_count": 1,
  "holes": [
    {
    }
  ],
  "inode_generation": 214753547,
  "inode_number": 1695,
  "is_empty": "",
  "is_junction": "",
  "is_snapshot": "",
  "is_vm_aligned": "",
  "modified_time": "2019-06-12 11:00:16 -0400",
  "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": 493,
  "volume": {
    "_links": {
      "self": {
        "href": "/api/resourcelink"
      }
    },
    "name": "volume1",
    "uuid": "028baa66-41bd-11e9-81d5-00a0986138f7"
  }
}

Response

Status: 200, Ok

Error

Status: Default

ONTAP Error Response Codes

Error Code Description

918235

A volume with UUID {volume.uuid} was not found.

6488081

The {field} field is not supported for PATCH operations.

6488082

Failed to rename {path}.

6488083

Failed to rename {path} to {path} because a directory named {path} already exists.

6488111

The fields 'fill_enabled' and 'overwrite_enabled' are not supported in the directory modify operation.

6488117

Permission denied.

6488119

Operation not supported.

Also see the table of common errors in the Response body overview section of this documentation.

Name Type Description

error

returned_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

Name Type Description

metadata

href

self

href

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

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

bytes_used