> For the complete documentation index, see [llms.txt](https://docs.blynk.io/en/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.blynk.io/en/blynk.cloud/platform-https-api/custom-data.md).

# Custom Data

Custom data table rows

## Get custom data row by ID

> Retrieve a single custom data table row by its identifier, within the\
> authenticated organization.\
> \
> Organization-scoped tokens have full access. For user-scoped tokens the row\
> is returned only if the user's role has view access to the table and the row.<br>

```json
{"openapi":"3.0.3","info":{"title":"Blynk Platform API","version":"1.0.0"},"tags":[{"name":"Custom Data","description":"Custom data table rows"}],"servers":[{"url":"https://{server_address}","description":"Blynk Server","variables":{"server_address":{"default":"blynk.cloud","description":"Your Blynk server domain"}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth2 Bearer token obtained from authentication endpoint"}},"schemas":{"CustomDataRow":{"type":"object","description":"A single row of a custom data table.","properties":{"id":{"type":"integer","format":"int32","description":"Unique identifier of the row within its table."},"orgId":{"type":"integer","format":"int32","description":"Identifier of the organization the row belongs to."},"values":{"type":"array","description":"Column values of the row, one entry per table column, in the same order\nas the columns are defined in the table.\n","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}},"canEdit":{"type":"boolean","description":"Whether the authenticated user is allowed to edit this row."},"canDelete":{"type":"boolean","description":"Whether the authenticated user is allowed to delete this row."},"modifiedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) of the last row modification."}},"required":["id","orgId","values","canEdit","canDelete","modifiedAt"]},"CustomDataColumnValue":{"type":"object","description":"A single column value of a custom data table row. The concrete schema\ndepends on the `type` discriminator property, which reflects the type of\nthe column the value belongs to. Every value also carries the `columnName`\nit corresponds to.\n","discriminator":{"propertyName":"type","mapping":{"double":"#/components/schemas/DoubleCustomDataColumnValue","integer":"#/components/schemas/IntegerCustomDataColumnValue","list":"#/components/schemas/ListCustomDataColumnValue","null":"#/components/schemas/NullCustomDataColumnValue","text":"#/components/schemas/TextCustomDataColumnValue","device_reference":"#/components/schemas/DeviceReferenceCustomDataColumnValue","enum":"#/components/schemas/EnumCustomDataColumnValue","formula":"#/components/schemas/FormulaCustomDataColumnValue","created_at":"#/components/schemas/CreatedAtCustomDataColumnValue","modified_at":"#/components/schemas/ModifiedAtCustomDataColumnValue","created_by":"#/components/schemas/CreatedByCustomDataColumnValue","reference":"#/components/schemas/ReferenceCustomDataColumnValue","date":"#/components/schemas/DateCustomDataColumnValue","no_access":"#/components/schemas/NoAccessCustomDataColumnValue","aggregation":"#/components/schemas/AggregationCustomDataColumnValue","row_organization":"#/components/schemas/RowOrganizationCustomDataColumnValue","device_data_snapshot_reference":"#/components/schemas/DeviceDataSnapshotReferenceCustomDataColumnValue","boolean":"#/components/schemas/BooleanCustomDataColumnValue","date_time":"#/components/schemas/DateTimeCustomDataColumnValue"}},"oneOf":[{"$ref":"#/components/schemas/DoubleCustomDataColumnValue"},{"$ref":"#/components/schemas/IntegerCustomDataColumnValue"},{"$ref":"#/components/schemas/ListCustomDataColumnValue"},{"$ref":"#/components/schemas/NullCustomDataColumnValue"},{"$ref":"#/components/schemas/TextCustomDataColumnValue"},{"$ref":"#/components/schemas/DeviceReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/EnumCustomDataColumnValue"},{"$ref":"#/components/schemas/FormulaCustomDataColumnValue"},{"$ref":"#/components/schemas/CreatedAtCustomDataColumnValue"},{"$ref":"#/components/schemas/ModifiedAtCustomDataColumnValue"},{"$ref":"#/components/schemas/CreatedByCustomDataColumnValue"},{"$ref":"#/components/schemas/ReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/DateCustomDataColumnValue"},{"$ref":"#/components/schemas/NoAccessCustomDataColumnValue"},{"$ref":"#/components/schemas/AggregationCustomDataColumnValue"},{"$ref":"#/components/schemas/RowOrganizationCustomDataColumnValue"},{"$ref":"#/components/schemas/DeviceDataSnapshotReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/BooleanCustomDataColumnValue"},{"$ref":"#/components/schemas/DateTimeCustomDataColumnValue"}]},"DoubleCustomDataColumnValue":{"type":"object","description":"Value of a decimal (double) column.","properties":{"type":{"type":"string","enum":["double"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The decimal value."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"DecimalsFormat":{"type":"string","description":"Decimal format used for displaying a numeric value in the dashboard and reports.\n","enum":["NO_FRACTION","FRACTION_1","FRACTION_2","FRACTION_3","FRACTION_4","FRACTION_5","FILL_1","FILL_2","FILL_3","FILL_4","FILL_5"]},"MeasurementUnits":{"type":"string","description":"DataStream units","enum":["None","KilometerPerHour","MillimeterPerHour","InchesPerHour","CubicMetresPerHour","MilePerHour","MilePerHour2","GramPerSquareMeter","MilliLitterPerSquareMeter","LitterPerSquareMeter","PoundPerSquareInch","PoundPerSquareInch2","PoundPerCubicYard","OuncePerCubicYard","PoundPerCubicFoot","VolumeFlow","CubicCentimetersPerMinute","SignalStrength","DegreeDays","Millimeter","Centimeter","Meter","Kilometer","KiloBytes","MegaBytes","GigaBytes","Feet","SquareFeet","Inch","Foot","Yard","Mile","Milligram","Gram","Kilogram","Ton","Liter","Milliliter","Ounce","Pint","Gallon","Pound","Stone","Quarter","Hundredweight","Celsius","Fahrenheit","Kelvin","Percentage","Degrees","RPM","Step","Year","Month","Week","Day","Hour","Minute","Second","Volt","Ampere","MilliAmpere","MicroAmpere","Ohm","Hertz","Watts","Farad","Siemen","Henry","MicrogramPerCubicMeter","PartsPerMillion","PartsPerBillion","KiloWatts","HectoPascal","Pascal","Lux","Pressure","PressureInBars","AirQualityIndex","KiloWattHour","MilliSecond","MilliSec","MeterPerSecond","MilliGramPerCubicMeter","KiloPascal","CubicMeter","CubicYard","CubicFeetPerMinute","SquareMeter","LitersPerSecond","WattHour","MilliWatt","pH","AmpereHour","MilliAmpereHour"]},"IntegerCustomDataColumnValue":{"type":"object","description":"Value of an integer column.","properties":{"type":{"type":"string","enum":["integer"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int32","description":"The integer value."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"ListCustomDataColumnValue":{"type":"object","description":"Value of a list column, holding an ordered collection of nested column values.","properties":{"type":{"type":"string","enum":["list"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"array","description":"The list items, each being a nested column value.","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}}},"required":["type","columnName","value"]},"NullCustomDataColumnValue":{"type":"object","description":"Represents an empty (unset) column value.","properties":{"type":{"type":"string","enum":["null"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."}},"required":["type","columnName"]},"TextCustomDataColumnValue":{"type":"object","description":"Value of a text column.","properties":{"type":{"type":"string","enum":["text"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"string","nullable":true,"description":"The text value. May be `null` when the cell is empty."}},"required":["type","columnName"]},"DeviceReferenceCustomDataColumnValue":{"type":"object","description":"Value of a column that references a device.","properties":{"type":{"type":"string","enum":["device_reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"deviceId":{"type":"integer","format":"int32","description":"Identifier of the referenced device. May be `null` when no device is referenced."},"deviceOrgId":{"type":"integer","format":"int32","nullable":true,"description":"Identifier of the organization the referenced device belongs to."},"deviceName":{"type":"string","nullable":true,"description":"Name of the referenced device."}},"required":["type","columnName","deviceId"]},"EnumCustomDataColumnValue":{"type":"object","description":"Value of an enum column.","properties":{"type":{"type":"string","enum":["enum"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int32","description":"The numeric enum value, mapped to a display name in the column configuration."},"valueDisplayName":{"type":"string","nullable":true,"description":"Human-readable display name mapped to the numeric value."}},"required":["type","columnName","value"]},"FormulaCustomDataColumnValue":{"type":"object","description":"Computed value of a formula column.","properties":{"type":{"type":"string","enum":["formula"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The computed decimal value of the formula."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"CreatedAtCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores when the row was created.","properties":{"type":{"type":"string","enum":["created_at"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the row was created."}},"required":["type","columnName","value"]},"ModifiedAtCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores when the row was last modified.","properties":{"type":{"type":"string","enum":["modified_at"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the row was last modified."}},"required":["type","columnName","value"]},"CreatedByCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores the user who created the row.","properties":{"type":{"type":"string","enum":["created_by"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"userId":{"type":"integer","format":"int64","description":"Identifier of the user who created the row."},"userName":{"type":"string","nullable":true,"description":"Name of the user who created the row."},"userEmail":{"type":"string","nullable":true,"description":"Email of the user who created the row."}},"required":["type","columnName","userId"]},"ReferenceCustomDataColumnValue":{"type":"object","description":"Value of a reference column that points to a row in another custom data table.","properties":{"type":{"type":"string","enum":["reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"rowId":{"type":"integer","format":"int32","description":"Identifier of the referenced row. May be `null` when no row is referenced."},"row":{"allOf":[{"$ref":"#/components/schemas/CustomDataRow"}],"nullable":true,"description":"The referenced row, resolved when references are computed."},"tableName":{"type":"string","nullable":true,"description":"Name of the table the referenced row belongs to."},"displayColumn":{"type":"string","nullable":true,"description":"Name of the column used to display the referenced row."}},"required":["type","columnName","rowId","tableName"]},"DateCustomDataColumnValue":{"type":"object","description":"Value of a date column, represented as separate day, month and year fields.","properties":{"type":{"type":"string","enum":["date"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"day":{"type":"integer","format":"int32","description":"Day of month (1-31)."},"month":{"type":"integer","format":"int32","description":"Month of year (1-12)."},"year":{"type":"integer","format":"int32","description":"Four-digit year."}},"required":["type","columnName","day","month","year"]},"NoAccessCustomDataColumnValue":{"type":"object","description":"Placeholder returned instead of the actual value when the authenticated\nuser does not have access to the underlying data of the column.\n","properties":{"type":{"type":"string","enum":["no_access"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."}},"required":["type","columnName"]},"AggregationCustomDataColumnValue":{"type":"object","description":"Computed value of an aggregation column (e.g. sum, average over referenced rows).","properties":{"type":{"type":"string","enum":["aggregation"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The computed aggregated decimal value."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"RowOrganizationCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores the organization a row belongs to.","properties":{"type":{"type":"string","enum":["row_organization"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"orgId":{"type":"integer","format":"int32","description":"Identifier of the organization the row belongs to."},"orgName":{"type":"string","nullable":true,"description":"Name of the organization the row belongs to."}},"required":["type","columnName","orgId"]},"DeviceDataSnapshotReferenceCustomDataColumnValue":{"type":"object","description":"Value of a column that references a device data snapshot.","properties":{"type":{"type":"string","enum":["device_data_snapshot_reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"snapshotId":{"type":"integer","format":"int32","description":"Identifier of the referenced snapshot."},"startedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the snapshot started."},"finishedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the snapshot finished."},"deviceId":{"type":"integer","format":"int32","description":"Identifier of the device the snapshot belongs to."},"deviceName":{"type":"string","nullable":true,"description":"Name of the device the snapshot belongs to."}},"required":["type","columnName","snapshotId","startedAt","finishedAt","deviceId"]},"BooleanCustomDataColumnValue":{"type":"object","description":"Value of a boolean column.","properties":{"type":{"type":"string","enum":["boolean"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"boolean","description":"The boolean value."}},"required":["type","columnName","value"]},"DateTimeCustomDataColumnValue":{"type":"object","description":"Value of a date-time column.","properties":{"type":{"type":"string","enum":["date_time"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds)."}},"required":["type","columnName","value"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error message"}},"required":["message"]}},"required":["error"]}}},"paths":{"/api/v1/organization/custom-data/row":{"get":{"tags":["Custom Data"],"summary":"Get custom data row by ID","description":"Retrieve a single custom data table row by its identifier, within the\nauthenticated organization.\n\nOrganization-scoped tokens have full access. For user-scoped tokens the row\nis returned only if the user's role has view access to the table and the row.\n","operationId":"getCustomDataRow","parameters":[{"name":"tableName","in":"query","required":true,"schema":{"type":"string"},"description":"Name of the custom data table the row belongs to."},{"name":"id","in":"query","required":true,"schema":{"type":"integer","format":"int32"},"description":"Identifier of the row within the table."}],"responses":{"200":{"description":"The custom data table row.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDataRow"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden. The authenticated user has no access to the table or the row.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Table or row not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Delete custom data row by ID

> Delete a single custom data table row by its identifier, within the\
> authenticated organization.\
> \
> Organization-scoped tokens have full access. For user-scoped tokens the row\
> is deleted only if the user's role has delete access to the table and edit\
> access to the row.<br>

```json
{"openapi":"3.0.3","info":{"title":"Blynk Platform API","version":"1.0.0"},"tags":[{"name":"Custom Data","description":"Custom data table rows"}],"servers":[{"url":"https://{server_address}","description":"Blynk Server","variables":{"server_address":{"default":"blynk.cloud","description":"Your Blynk server domain"}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth2 Bearer token obtained from authentication endpoint"}},"schemas":{"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error message"}},"required":["message"]}},"required":["error"]}}},"paths":{"/api/v1/organization/custom-data/row":{"delete":{"tags":["Custom Data"],"summary":"Delete custom data row by ID","description":"Delete a single custom data table row by its identifier, within the\nauthenticated organization.\n\nOrganization-scoped tokens have full access. For user-scoped tokens the row\nis deleted only if the user's role has delete access to the table and edit\naccess to the row.\n","operationId":"deleteCustomDataRow","parameters":[{"name":"tableName","in":"query","required":true,"schema":{"type":"string"},"description":"Name of the custom data table the row belongs to."},{"name":"id","in":"query","required":true,"schema":{"type":"integer","format":"int32"},"description":"Identifier of the row within the table."}],"responses":{"204":{"description":"The row was deleted."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden. The authenticated user has no access to the table or the row.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Table or row not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get custom data table rows

> Retrieve a page of custom data table rows within the authenticated\
> organization, with optional sorting, filtering and display-column search.\
> \
> Organization-scoped tokens have full access. For user-scoped tokens rows\
> are returned only if the user's role has view access to the table, and the\
> result is limited to the rows the user is allowed to see.<br>

```json
{"openapi":"3.0.3","info":{"title":"Blynk Platform API","version":"1.0.0"},"tags":[{"name":"Custom Data","description":"Custom data table rows"}],"servers":[{"url":"https://{server_address}","description":"Blynk Server","variables":{"server_address":{"default":"blynk.cloud","description":"Your Blynk server domain"}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth2 Bearer token obtained from authentication endpoint"}},"schemas":{"CustomDataRowFilter":{"type":"object","nullable":true,"description":"A filter applied to the table rows. The concrete schema depends on the\n`type` discriminator property.\n","discriminator":{"propertyName":"type","mapping":{"and":"#/components/schemas/AndCustomDataRowFilter","or":"#/components/schemas/OrCustomDataRowFilter","column_equal":"#/components/schemas/ColumnEqualCustomDataRowFilter","list_contains":"#/components/schemas/ListContainValueCustomDataRowFilter"}},"oneOf":[{"$ref":"#/components/schemas/AndCustomDataRowFilter"},{"$ref":"#/components/schemas/OrCustomDataRowFilter"},{"$ref":"#/components/schemas/ColumnEqualCustomDataRowFilter"},{"$ref":"#/components/schemas/ListContainValueCustomDataRowFilter"}]},"AndCustomDataRowFilter":{"type":"object","description":"Matches rows that satisfy all of the nested filters.","properties":{"type":{"type":"string","enum":["and"]},"filters":{"type":"array","maxItems":10,"description":"Nested filters that must all match.","items":{"$ref":"#/components/schemas/CustomDataRowFilter"}}},"required":["type","filters"]},"OrCustomDataRowFilter":{"type":"object","description":"Matches rows that satisfy at least one of the nested filters.","properties":{"type":{"type":"string","enum":["or"]},"filters":{"type":"array","maxItems":10,"description":"Nested filters, at least one of which must match.","items":{"$ref":"#/components/schemas/CustomDataRowFilter"}}},"required":["type","filters"]},"ColumnEqualCustomDataRowFilter":{"type":"object","description":"Matches rows where the given column equals the provided value. A `null`\ncolumn value matches rows where the column is empty.\n","properties":{"type":{"type":"string","enum":["column_equal"]},"value":{"$ref":"#/components/schemas/CustomDataColumnValue"}},"required":["type","value"]},"CustomDataColumnValue":{"type":"object","description":"A single column value of a custom data table row. The concrete schema\ndepends on the `type` discriminator property, which reflects the type of\nthe column the value belongs to. Every value also carries the `columnName`\nit corresponds to.\n","discriminator":{"propertyName":"type","mapping":{"double":"#/components/schemas/DoubleCustomDataColumnValue","integer":"#/components/schemas/IntegerCustomDataColumnValue","list":"#/components/schemas/ListCustomDataColumnValue","null":"#/components/schemas/NullCustomDataColumnValue","text":"#/components/schemas/TextCustomDataColumnValue","device_reference":"#/components/schemas/DeviceReferenceCustomDataColumnValue","enum":"#/components/schemas/EnumCustomDataColumnValue","formula":"#/components/schemas/FormulaCustomDataColumnValue","created_at":"#/components/schemas/CreatedAtCustomDataColumnValue","modified_at":"#/components/schemas/ModifiedAtCustomDataColumnValue","created_by":"#/components/schemas/CreatedByCustomDataColumnValue","reference":"#/components/schemas/ReferenceCustomDataColumnValue","date":"#/components/schemas/DateCustomDataColumnValue","no_access":"#/components/schemas/NoAccessCustomDataColumnValue","aggregation":"#/components/schemas/AggregationCustomDataColumnValue","row_organization":"#/components/schemas/RowOrganizationCustomDataColumnValue","device_data_snapshot_reference":"#/components/schemas/DeviceDataSnapshotReferenceCustomDataColumnValue","boolean":"#/components/schemas/BooleanCustomDataColumnValue","date_time":"#/components/schemas/DateTimeCustomDataColumnValue"}},"oneOf":[{"$ref":"#/components/schemas/DoubleCustomDataColumnValue"},{"$ref":"#/components/schemas/IntegerCustomDataColumnValue"},{"$ref":"#/components/schemas/ListCustomDataColumnValue"},{"$ref":"#/components/schemas/NullCustomDataColumnValue"},{"$ref":"#/components/schemas/TextCustomDataColumnValue"},{"$ref":"#/components/schemas/DeviceReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/EnumCustomDataColumnValue"},{"$ref":"#/components/schemas/FormulaCustomDataColumnValue"},{"$ref":"#/components/schemas/CreatedAtCustomDataColumnValue"},{"$ref":"#/components/schemas/ModifiedAtCustomDataColumnValue"},{"$ref":"#/components/schemas/CreatedByCustomDataColumnValue"},{"$ref":"#/components/schemas/ReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/DateCustomDataColumnValue"},{"$ref":"#/components/schemas/NoAccessCustomDataColumnValue"},{"$ref":"#/components/schemas/AggregationCustomDataColumnValue"},{"$ref":"#/components/schemas/RowOrganizationCustomDataColumnValue"},{"$ref":"#/components/schemas/DeviceDataSnapshotReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/BooleanCustomDataColumnValue"},{"$ref":"#/components/schemas/DateTimeCustomDataColumnValue"}]},"DoubleCustomDataColumnValue":{"type":"object","description":"Value of a decimal (double) column.","properties":{"type":{"type":"string","enum":["double"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The decimal value."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"DecimalsFormat":{"type":"string","description":"Decimal format used for displaying a numeric value in the dashboard and reports.\n","enum":["NO_FRACTION","FRACTION_1","FRACTION_2","FRACTION_3","FRACTION_4","FRACTION_5","FILL_1","FILL_2","FILL_3","FILL_4","FILL_5"]},"MeasurementUnits":{"type":"string","description":"DataStream units","enum":["None","KilometerPerHour","MillimeterPerHour","InchesPerHour","CubicMetresPerHour","MilePerHour","MilePerHour2","GramPerSquareMeter","MilliLitterPerSquareMeter","LitterPerSquareMeter","PoundPerSquareInch","PoundPerSquareInch2","PoundPerCubicYard","OuncePerCubicYard","PoundPerCubicFoot","VolumeFlow","CubicCentimetersPerMinute","SignalStrength","DegreeDays","Millimeter","Centimeter","Meter","Kilometer","KiloBytes","MegaBytes","GigaBytes","Feet","SquareFeet","Inch","Foot","Yard","Mile","Milligram","Gram","Kilogram","Ton","Liter","Milliliter","Ounce","Pint","Gallon","Pound","Stone","Quarter","Hundredweight","Celsius","Fahrenheit","Kelvin","Percentage","Degrees","RPM","Step","Year","Month","Week","Day","Hour","Minute","Second","Volt","Ampere","MilliAmpere","MicroAmpere","Ohm","Hertz","Watts","Farad","Siemen","Henry","MicrogramPerCubicMeter","PartsPerMillion","PartsPerBillion","KiloWatts","HectoPascal","Pascal","Lux","Pressure","PressureInBars","AirQualityIndex","KiloWattHour","MilliSecond","MilliSec","MeterPerSecond","MilliGramPerCubicMeter","KiloPascal","CubicMeter","CubicYard","CubicFeetPerMinute","SquareMeter","LitersPerSecond","WattHour","MilliWatt","pH","AmpereHour","MilliAmpereHour"]},"IntegerCustomDataColumnValue":{"type":"object","description":"Value of an integer column.","properties":{"type":{"type":"string","enum":["integer"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int32","description":"The integer value."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"ListCustomDataColumnValue":{"type":"object","description":"Value of a list column, holding an ordered collection of nested column values.","properties":{"type":{"type":"string","enum":["list"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"array","description":"The list items, each being a nested column value.","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}}},"required":["type","columnName","value"]},"NullCustomDataColumnValue":{"type":"object","description":"Represents an empty (unset) column value.","properties":{"type":{"type":"string","enum":["null"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."}},"required":["type","columnName"]},"TextCustomDataColumnValue":{"type":"object","description":"Value of a text column.","properties":{"type":{"type":"string","enum":["text"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"string","nullable":true,"description":"The text value. May be `null` when the cell is empty."}},"required":["type","columnName"]},"DeviceReferenceCustomDataColumnValue":{"type":"object","description":"Value of a column that references a device.","properties":{"type":{"type":"string","enum":["device_reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"deviceId":{"type":"integer","format":"int32","description":"Identifier of the referenced device. May be `null` when no device is referenced."},"deviceOrgId":{"type":"integer","format":"int32","nullable":true,"description":"Identifier of the organization the referenced device belongs to."},"deviceName":{"type":"string","nullable":true,"description":"Name of the referenced device."}},"required":["type","columnName","deviceId"]},"EnumCustomDataColumnValue":{"type":"object","description":"Value of an enum column.","properties":{"type":{"type":"string","enum":["enum"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int32","description":"The numeric enum value, mapped to a display name in the column configuration."},"valueDisplayName":{"type":"string","nullable":true,"description":"Human-readable display name mapped to the numeric value."}},"required":["type","columnName","value"]},"FormulaCustomDataColumnValue":{"type":"object","description":"Computed value of a formula column.","properties":{"type":{"type":"string","enum":["formula"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The computed decimal value of the formula."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"CreatedAtCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores when the row was created.","properties":{"type":{"type":"string","enum":["created_at"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the row was created."}},"required":["type","columnName","value"]},"ModifiedAtCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores when the row was last modified.","properties":{"type":{"type":"string","enum":["modified_at"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the row was last modified."}},"required":["type","columnName","value"]},"CreatedByCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores the user who created the row.","properties":{"type":{"type":"string","enum":["created_by"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"userId":{"type":"integer","format":"int64","description":"Identifier of the user who created the row."},"userName":{"type":"string","nullable":true,"description":"Name of the user who created the row."},"userEmail":{"type":"string","nullable":true,"description":"Email of the user who created the row."}},"required":["type","columnName","userId"]},"ReferenceCustomDataColumnValue":{"type":"object","description":"Value of a reference column that points to a row in another custom data table.","properties":{"type":{"type":"string","enum":["reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"rowId":{"type":"integer","format":"int32","description":"Identifier of the referenced row. May be `null` when no row is referenced."},"row":{"allOf":[{"$ref":"#/components/schemas/CustomDataRow"}],"nullable":true,"description":"The referenced row, resolved when references are computed."},"tableName":{"type":"string","nullable":true,"description":"Name of the table the referenced row belongs to."},"displayColumn":{"type":"string","nullable":true,"description":"Name of the column used to display the referenced row."}},"required":["type","columnName","rowId","tableName"]},"CustomDataRow":{"type":"object","description":"A single row of a custom data table.","properties":{"id":{"type":"integer","format":"int32","description":"Unique identifier of the row within its table."},"orgId":{"type":"integer","format":"int32","description":"Identifier of the organization the row belongs to."},"values":{"type":"array","description":"Column values of the row, one entry per table column, in the same order\nas the columns are defined in the table.\n","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}},"canEdit":{"type":"boolean","description":"Whether the authenticated user is allowed to edit this row."},"canDelete":{"type":"boolean","description":"Whether the authenticated user is allowed to delete this row."},"modifiedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) of the last row modification."}},"required":["id","orgId","values","canEdit","canDelete","modifiedAt"]},"DateCustomDataColumnValue":{"type":"object","description":"Value of a date column, represented as separate day, month and year fields.","properties":{"type":{"type":"string","enum":["date"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"day":{"type":"integer","format":"int32","description":"Day of month (1-31)."},"month":{"type":"integer","format":"int32","description":"Month of year (1-12)."},"year":{"type":"integer","format":"int32","description":"Four-digit year."}},"required":["type","columnName","day","month","year"]},"NoAccessCustomDataColumnValue":{"type":"object","description":"Placeholder returned instead of the actual value when the authenticated\nuser does not have access to the underlying data of the column.\n","properties":{"type":{"type":"string","enum":["no_access"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."}},"required":["type","columnName"]},"AggregationCustomDataColumnValue":{"type":"object","description":"Computed value of an aggregation column (e.g. sum, average over referenced rows).","properties":{"type":{"type":"string","enum":["aggregation"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The computed aggregated decimal value."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"RowOrganizationCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores the organization a row belongs to.","properties":{"type":{"type":"string","enum":["row_organization"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"orgId":{"type":"integer","format":"int32","description":"Identifier of the organization the row belongs to."},"orgName":{"type":"string","nullable":true,"description":"Name of the organization the row belongs to."}},"required":["type","columnName","orgId"]},"DeviceDataSnapshotReferenceCustomDataColumnValue":{"type":"object","description":"Value of a column that references a device data snapshot.","properties":{"type":{"type":"string","enum":["device_data_snapshot_reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"snapshotId":{"type":"integer","format":"int32","description":"Identifier of the referenced snapshot."},"startedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the snapshot started."},"finishedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the snapshot finished."},"deviceId":{"type":"integer","format":"int32","description":"Identifier of the device the snapshot belongs to."},"deviceName":{"type":"string","nullable":true,"description":"Name of the device the snapshot belongs to."}},"required":["type","columnName","snapshotId","startedAt","finishedAt","deviceId"]},"BooleanCustomDataColumnValue":{"type":"object","description":"Value of a boolean column.","properties":{"type":{"type":"string","enum":["boolean"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"boolean","description":"The boolean value."}},"required":["type","columnName","value"]},"DateTimeCustomDataColumnValue":{"type":"object","description":"Value of a date-time column.","properties":{"type":{"type":"string","enum":["date_time"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds)."}},"required":["type","columnName","value"]},"ListContainValueCustomDataRowFilter":{"type":"object","description":"Matches rows where the given list column contains the provided value.\n","properties":{"type":{"type":"string","enum":["list_contains"]},"listColumnName":{"type":"string","description":"Name of the list column to inspect."},"value":{"$ref":"#/components/schemas/CustomDataColumnValue"}},"required":["type","value"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error message"}},"required":["message"]}},"required":["error"]}}},"paths":{"/api/v1/organization/custom-data/rows":{"post":{"tags":["Custom Data"],"summary":"Get custom data table rows","description":"Retrieve a page of custom data table rows within the authenticated\norganization, with optional sorting, filtering and display-column search.\n\nOrganization-scoped tokens have full access. For user-scoped tokens rows\nare returned only if the user's role has view access to the table, and the\nresult is limited to the rows the user is allowed to see.\n","operationId":"getCustomDataRows","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request payload for retrieving a page of custom data table rows.","properties":{"tableName":{"type":"string","description":"Name of the custom data table to read rows from."},"page":{"type":"integer","format":"int32","minimum":0,"description":"Zero-based index of the page to return."},"size":{"type":"integer","format":"int32","minimum":0,"maximum":100,"description":"Maximum number of rows to return per page."},"sorting":{"type":"string","description":"Sorting mode applied to the returned rows.","enum":["ASCENDING","DESCENDING","FIRST_ADDED","LAST_ADDED","CUSTOM_ASCENDING","CUSTOM_DESCENDING"]},"sortColumn":{"type":"string","nullable":true,"description":"Name of the column to sort by. Only used together with the\n`CUSTOM_ASCENDING` / `CUSTOM_DESCENDING` sorting modes.\n"},"filter":{"$ref":"#/components/schemas/CustomDataRowFilter"},"searchQuery":{"type":"string","nullable":true,"description":"Optional case-insensitive query matched against the value of the\ntable's display column.\n"},"includeSubOrgs":{"type":"boolean","description":"Whether to include rows owned by sub-organizations. Only effective\nfor tables that share rows with sub-organizations and when reading\nfrom the root organization.\n"}},"required":["tableName","sorting"]}}}},"responses":{"200":{"description":"A page of custom data table rows.","content":{"application/json":{"schema":{"type":"object","description":"A page of custom data table rows together with the total row count.","properties":{"rows":{"type":"array","description":"Rows contained in the requested page.","items":{"$ref":"#/components/schemas/CustomDataRow"}},"totalRows":{"type":"integer","format":"int32","description":"Total number of rows matching the request (before pagination is applied).\n"}},"required":["rows","totalRows"]}}}},"400":{"description":"Bad request. The request body is missing, malformed or fails validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden. The authenticated user has no access to the table.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Table not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create a custom data table row

> Create a new row in a custom data table within the authenticated\
> organization.\
> \
> The \`values\` array contains the column values to set for the new row.\
> Columns that are not provided fall back to their default value (or stay\
> empty when they have none); required columns without a value cause the\
> request to be rejected. Read-only columns such as \`created\_at\`,\
> \`modified\_at\` and \`created\_by\` are populated automatically.\
> \
> Organization-scoped tokens have full access. For user-scoped tokens the\
> row is created only if the user's role has create access to the table,\
> and the \`created\_by\` column, when present, is attributed to the\
> authenticated user.\
> \
> Organization-scoped tokens have no associated user, so the \`created\_by\`\
> column is not populated automatically for them. If the table has a\
> required \`created\_by\` column, an organization-scoped token must supply a\
> value for it in the \`values\` array, otherwise the request is rejected.<br>

```json
{"openapi":"3.0.3","info":{"title":"Blynk Platform API","version":"1.0.0"},"tags":[{"name":"Custom Data","description":"Custom data table rows"}],"servers":[{"url":"https://{server_address}","description":"Blynk Server","variables":{"server_address":{"default":"blynk.cloud","description":"Your Blynk server domain"}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth2 Bearer token obtained from authentication endpoint"}},"schemas":{"CustomDataColumnValue":{"type":"object","description":"A single column value of a custom data table row. The concrete schema\ndepends on the `type` discriminator property, which reflects the type of\nthe column the value belongs to. Every value also carries the `columnName`\nit corresponds to.\n","discriminator":{"propertyName":"type","mapping":{"double":"#/components/schemas/DoubleCustomDataColumnValue","integer":"#/components/schemas/IntegerCustomDataColumnValue","list":"#/components/schemas/ListCustomDataColumnValue","null":"#/components/schemas/NullCustomDataColumnValue","text":"#/components/schemas/TextCustomDataColumnValue","device_reference":"#/components/schemas/DeviceReferenceCustomDataColumnValue","enum":"#/components/schemas/EnumCustomDataColumnValue","formula":"#/components/schemas/FormulaCustomDataColumnValue","created_at":"#/components/schemas/CreatedAtCustomDataColumnValue","modified_at":"#/components/schemas/ModifiedAtCustomDataColumnValue","created_by":"#/components/schemas/CreatedByCustomDataColumnValue","reference":"#/components/schemas/ReferenceCustomDataColumnValue","date":"#/components/schemas/DateCustomDataColumnValue","no_access":"#/components/schemas/NoAccessCustomDataColumnValue","aggregation":"#/components/schemas/AggregationCustomDataColumnValue","row_organization":"#/components/schemas/RowOrganizationCustomDataColumnValue","device_data_snapshot_reference":"#/components/schemas/DeviceDataSnapshotReferenceCustomDataColumnValue","boolean":"#/components/schemas/BooleanCustomDataColumnValue","date_time":"#/components/schemas/DateTimeCustomDataColumnValue"}},"oneOf":[{"$ref":"#/components/schemas/DoubleCustomDataColumnValue"},{"$ref":"#/components/schemas/IntegerCustomDataColumnValue"},{"$ref":"#/components/schemas/ListCustomDataColumnValue"},{"$ref":"#/components/schemas/NullCustomDataColumnValue"},{"$ref":"#/components/schemas/TextCustomDataColumnValue"},{"$ref":"#/components/schemas/DeviceReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/EnumCustomDataColumnValue"},{"$ref":"#/components/schemas/FormulaCustomDataColumnValue"},{"$ref":"#/components/schemas/CreatedAtCustomDataColumnValue"},{"$ref":"#/components/schemas/ModifiedAtCustomDataColumnValue"},{"$ref":"#/components/schemas/CreatedByCustomDataColumnValue"},{"$ref":"#/components/schemas/ReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/DateCustomDataColumnValue"},{"$ref":"#/components/schemas/NoAccessCustomDataColumnValue"},{"$ref":"#/components/schemas/AggregationCustomDataColumnValue"},{"$ref":"#/components/schemas/RowOrganizationCustomDataColumnValue"},{"$ref":"#/components/schemas/DeviceDataSnapshotReferenceCustomDataColumnValue"},{"$ref":"#/components/schemas/BooleanCustomDataColumnValue"},{"$ref":"#/components/schemas/DateTimeCustomDataColumnValue"}]},"DoubleCustomDataColumnValue":{"type":"object","description":"Value of a decimal (double) column.","properties":{"type":{"type":"string","enum":["double"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The decimal value."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"DecimalsFormat":{"type":"string","description":"Decimal format used for displaying a numeric value in the dashboard and reports.\n","enum":["NO_FRACTION","FRACTION_1","FRACTION_2","FRACTION_3","FRACTION_4","FRACTION_5","FILL_1","FILL_2","FILL_3","FILL_4","FILL_5"]},"MeasurementUnits":{"type":"string","description":"DataStream units","enum":["None","KilometerPerHour","MillimeterPerHour","InchesPerHour","CubicMetresPerHour","MilePerHour","MilePerHour2","GramPerSquareMeter","MilliLitterPerSquareMeter","LitterPerSquareMeter","PoundPerSquareInch","PoundPerSquareInch2","PoundPerCubicYard","OuncePerCubicYard","PoundPerCubicFoot","VolumeFlow","CubicCentimetersPerMinute","SignalStrength","DegreeDays","Millimeter","Centimeter","Meter","Kilometer","KiloBytes","MegaBytes","GigaBytes","Feet","SquareFeet","Inch","Foot","Yard","Mile","Milligram","Gram","Kilogram","Ton","Liter","Milliliter","Ounce","Pint","Gallon","Pound","Stone","Quarter","Hundredweight","Celsius","Fahrenheit","Kelvin","Percentage","Degrees","RPM","Step","Year","Month","Week","Day","Hour","Minute","Second","Volt","Ampere","MilliAmpere","MicroAmpere","Ohm","Hertz","Watts","Farad","Siemen","Henry","MicrogramPerCubicMeter","PartsPerMillion","PartsPerBillion","KiloWatts","HectoPascal","Pascal","Lux","Pressure","PressureInBars","AirQualityIndex","KiloWattHour","MilliSecond","MilliSec","MeterPerSecond","MilliGramPerCubicMeter","KiloPascal","CubicMeter","CubicYard","CubicFeetPerMinute","SquareMeter","LitersPerSecond","WattHour","MilliWatt","pH","AmpereHour","MilliAmpereHour"]},"IntegerCustomDataColumnValue":{"type":"object","description":"Value of an integer column.","properties":{"type":{"type":"string","enum":["integer"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int32","description":"The integer value."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"ListCustomDataColumnValue":{"type":"object","description":"Value of a list column, holding an ordered collection of nested column values.","properties":{"type":{"type":"string","enum":["list"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"array","description":"The list items, each being a nested column value.","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}}},"required":["type","columnName","value"]},"NullCustomDataColumnValue":{"type":"object","description":"Represents an empty (unset) column value.","properties":{"type":{"type":"string","enum":["null"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."}},"required":["type","columnName"]},"TextCustomDataColumnValue":{"type":"object","description":"Value of a text column.","properties":{"type":{"type":"string","enum":["text"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"string","nullable":true,"description":"The text value. May be `null` when the cell is empty."}},"required":["type","columnName"]},"DeviceReferenceCustomDataColumnValue":{"type":"object","description":"Value of a column that references a device.","properties":{"type":{"type":"string","enum":["device_reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"deviceId":{"type":"integer","format":"int32","description":"Identifier of the referenced device. May be `null` when no device is referenced."},"deviceOrgId":{"type":"integer","format":"int32","nullable":true,"description":"Identifier of the organization the referenced device belongs to."},"deviceName":{"type":"string","nullable":true,"description":"Name of the referenced device."}},"required":["type","columnName","deviceId"]},"EnumCustomDataColumnValue":{"type":"object","description":"Value of an enum column.","properties":{"type":{"type":"string","enum":["enum"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int32","description":"The numeric enum value, mapped to a display name in the column configuration."},"valueDisplayName":{"type":"string","nullable":true,"description":"Human-readable display name mapped to the numeric value."}},"required":["type","columnName","value"]},"FormulaCustomDataColumnValue":{"type":"object","description":"Computed value of a formula column.","properties":{"type":{"type":"string","enum":["formula"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The computed decimal value of the formula."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"CreatedAtCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores when the row was created.","properties":{"type":{"type":"string","enum":["created_at"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the row was created."}},"required":["type","columnName","value"]},"ModifiedAtCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores when the row was last modified.","properties":{"type":{"type":"string","enum":["modified_at"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the row was last modified."}},"required":["type","columnName","value"]},"CreatedByCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores the user who created the row.","properties":{"type":{"type":"string","enum":["created_by"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"userId":{"type":"integer","format":"int64","description":"Identifier of the user who created the row."},"userName":{"type":"string","nullable":true,"description":"Name of the user who created the row."},"userEmail":{"type":"string","nullable":true,"description":"Email of the user who created the row."}},"required":["type","columnName","userId"]},"ReferenceCustomDataColumnValue":{"type":"object","description":"Value of a reference column that points to a row in another custom data table.","properties":{"type":{"type":"string","enum":["reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"rowId":{"type":"integer","format":"int32","description":"Identifier of the referenced row. May be `null` when no row is referenced."},"row":{"allOf":[{"$ref":"#/components/schemas/CustomDataRow"}],"nullable":true,"description":"The referenced row, resolved when references are computed."},"tableName":{"type":"string","nullable":true,"description":"Name of the table the referenced row belongs to."},"displayColumn":{"type":"string","nullable":true,"description":"Name of the column used to display the referenced row."}},"required":["type","columnName","rowId","tableName"]},"CustomDataRow":{"type":"object","description":"A single row of a custom data table.","properties":{"id":{"type":"integer","format":"int32","description":"Unique identifier of the row within its table."},"orgId":{"type":"integer","format":"int32","description":"Identifier of the organization the row belongs to."},"values":{"type":"array","description":"Column values of the row, one entry per table column, in the same order\nas the columns are defined in the table.\n","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}},"canEdit":{"type":"boolean","description":"Whether the authenticated user is allowed to edit this row."},"canDelete":{"type":"boolean","description":"Whether the authenticated user is allowed to delete this row."},"modifiedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) of the last row modification."}},"required":["id","orgId","values","canEdit","canDelete","modifiedAt"]},"DateCustomDataColumnValue":{"type":"object","description":"Value of a date column, represented as separate day, month and year fields.","properties":{"type":{"type":"string","enum":["date"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"day":{"type":"integer","format":"int32","description":"Day of month (1-31)."},"month":{"type":"integer","format":"int32","description":"Month of year (1-12)."},"year":{"type":"integer","format":"int32","description":"Four-digit year."}},"required":["type","columnName","day","month","year"]},"NoAccessCustomDataColumnValue":{"type":"object","description":"Placeholder returned instead of the actual value when the authenticated\nuser does not have access to the underlying data of the column.\n","properties":{"type":{"type":"string","enum":["no_access"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."}},"required":["type","columnName"]},"AggregationCustomDataColumnValue":{"type":"object","description":"Computed value of an aggregation column (e.g. sum, average over referenced rows).","properties":{"type":{"type":"string","enum":["aggregation"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"number","format":"double","description":"The computed aggregated decimal value."},"decimalsFormat":{"allOf":[{"$ref":"#/components/schemas/DecimalsFormat"}],"nullable":true,"description":"Decimal format configured for the column, when present."},"unit":{"allOf":[{"$ref":"#/components/schemas/MeasurementUnits"}],"nullable":true,"description":"Measurement unit of the value, when configured for the column."}},"required":["type","columnName","value"]},"RowOrganizationCustomDataColumnValue":{"type":"object","description":"Value of a system column that stores the organization a row belongs to.","properties":{"type":{"type":"string","enum":["row_organization"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"orgId":{"type":"integer","format":"int32","description":"Identifier of the organization the row belongs to."},"orgName":{"type":"string","nullable":true,"description":"Name of the organization the row belongs to."}},"required":["type","columnName","orgId"]},"DeviceDataSnapshotReferenceCustomDataColumnValue":{"type":"object","description":"Value of a column that references a device data snapshot.","properties":{"type":{"type":"string","enum":["device_data_snapshot_reference"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"snapshotId":{"type":"integer","format":"int32","description":"Identifier of the referenced snapshot."},"startedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the snapshot started."},"finishedAt":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds) when the snapshot finished."},"deviceId":{"type":"integer","format":"int32","description":"Identifier of the device the snapshot belongs to."},"deviceName":{"type":"string","nullable":true,"description":"Name of the device the snapshot belongs to."}},"required":["type","columnName","snapshotId","startedAt","finishedAt","deviceId"]},"BooleanCustomDataColumnValue":{"type":"object","description":"Value of a boolean column.","properties":{"type":{"type":"string","enum":["boolean"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"boolean","description":"The boolean value."}},"required":["type","columnName","value"]},"DateTimeCustomDataColumnValue":{"type":"object","description":"Value of a date-time column.","properties":{"type":{"type":"string","enum":["date_time"],"description":"Value type discriminator."},"columnName":{"type":"string","description":"Name of the column this value belongs to."},"value":{"type":"integer","format":"int64","description":"Timestamp (Unix epoch milliseconds)."}},"required":["type","columnName","value"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error message"}},"required":["message"]}},"required":["error"]}}},"paths":{"/api/v1/organization/custom-data/row/create":{"post":{"tags":["Custom Data"],"summary":"Create a custom data table row","description":"Create a new row in a custom data table within the authenticated\norganization.\n\nThe `values` array contains the column values to set for the new row.\nColumns that are not provided fall back to their default value (or stay\nempty when they have none); required columns without a value cause the\nrequest to be rejected. Read-only columns such as `created_at`,\n`modified_at` and `created_by` are populated automatically.\n\nOrganization-scoped tokens have full access. For user-scoped tokens the\nrow is created only if the user's role has create access to the table,\nand the `created_by` column, when present, is attributed to the\nauthenticated user.\n\nOrganization-scoped tokens have no associated user, so the `created_by`\ncolumn is not populated automatically for them. If the table has a\nrequired `created_by` column, an organization-scoped token must supply a\nvalue for it in the `values` array, otherwise the request is rejected.\n","operationId":"createCustomDataRow","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request payload for creating a custom data table row.","properties":{"tableName":{"type":"string","description":"Name of the custom data table to create the row in."},"values":{"type":"array","description":"Column values to set for the new row. Each entry targets a\ncolumn by its `columnName`. Order is not significant.\n","items":{"$ref":"#/components/schemas/CustomDataColumnValue"}}},"required":["tableName"]}}}},"responses":{"201":{"description":"The created custom data table row.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomDataRow"}}}},"400":{"description":"Bad request. The request body is missing, malformed or fails validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden. The authenticated user has no access to create rows in the table.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Table not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.blynk.io/en/blynk.cloud/platform-https-api/custom-data.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
