UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

uip df records

Syntax and options for `uip df records`, which manages rows in a Data Fabric entity, including single-record and batch operations.

uip df records manages the rows held by a Data Fabric entity. Verbs cover read (list, get, query), write (insert, update, import, delete), and bulk import from CSV. Single-record verbs return the affected record; batch verbs return success/failure counts and exit non-zero on partial failure. list and query support cursor-based pagination.

Synopsis

uip df records list <id> [-l <n>] [-o <n> | --cursor <cursor>] [--folder-key <key>]
uip df records get <id> <key> [--folder-key <key>]
uip df records insert <id> (-f <path> | --body <json>) [--folder-key <key>]
uip df records update <id> (-f <path> | --body <json>) [--folder-key <key>]
uip df records query <id> (-f <path> | --body <json>) [-l <n>] [-o <n> | --cursor <cursor>] [--folder-key <key>]
uip df records import <id> -f <csv-path> [--folder-key <key>]
uip df records delete <id> <key...> -y --reason <text> [--folder-key <key>]
uip df records list <id> [-l <n>] [-o <n> | --cursor <cursor>] [--folder-key <key>]
uip df records get <id> <key> [--folder-key <key>]
uip df records insert <id> (-f <path> | --body <json>) [--folder-key <key>]
uip df records update <id> (-f <path> | --body <json>) [--folder-key <key>]
uip df records query <id> (-f <path> | --body <json>) [-l <n>] [-o <n> | --cursor <cursor>] [--folder-key <key>]
uip df records import <id> -f <csv-path> [--folder-key <key>]
uip df records delete <id> <key...> -y --reason <text> [--folder-key <key>]

Every verb also accepts --folder-key <key> (a folder GUID, for records that belong to a folder-scoped entity).

Verbs

VerbPurpose
listList records in an entity, with cursor-based pagination.
getGet a single record by ID.
insertInsert one record (object) or many (array).
updateUpdate one record (object) or many (array); each must include Id.
queryFilter, sort, aggregate, and project records using a JSON query body.
importBulk-import records from a CSV file.
deleteDelete one or more records by ID (destructive, requires -y/--reason).

uip df records list

List records in an entity. Supports cursor-based pagination.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID). Find it with entities list.

Options

ShortLongValueDefaultDescription
-l--limitnumber50Number of records to return per page.
-o--offsetnumberStart from the page containing this record index (rounded down to a page boundary). Mutually exclusive with --cursor.
--cursorcursorPagination cursor value from a previous response's nextCursor.value. Mutually exclusive with --offset.
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Examples

uip df records list a1b2c3d4-0000-0000-0000-000000000001 --limit 2
uip df records list a1b2c3d4-0000-0000-0000-000000000001 --limit 2
# Continue paging — pass the string from the previous response's Data.nextCursor.value
uip df records list a1b2c3d4-0000-0000-0000-000000000001 \
    --cursor "eyJwYWdlIjoyfQ=="
# Continue paging — pass the string from the previous response's Data.nextCursor.value
uip df records list a1b2c3d4-0000-0000-0000-000000000001 \
    --cursor "eyJwYWdlIjoyfQ=="
# Just the IDs
uip df records list a1b2c3d4-0000-0000-0000-000000000001 \
    --output-filter 'Data.items[].Id'
# Just the IDs
uip df records list a1b2c3d4-0000-0000-0000-000000000001 \
    --output-filter 'Data.items[].Id'

Data shape (--output json)

{
  "Code": "RecordList",
  "Data": {
    "items": [
      {
        "Id": "b2c3d4e5-0000-0000-0000-000000000001",
        "amount": 1500,
        "notes": "HasValue=true Length=20000"
      },
      { "Id": "b2c3d4e5-0000-0000-0000-000000000002", "amount": 2750, "notes": null }
    ],
    "totalCount": 2,
    "hasNextPage": false
  }
}
{
  "Code": "RecordList",
  "Data": {
    "items": [
      {
        "Id": "b2c3d4e5-0000-0000-0000-000000000001",
        "amount": 1500,
        "notes": "HasValue=true Length=20000"
      },
      { "Id": "b2c3d4e5-0000-0000-0000-000000000002", "amount": 2750, "notes": null }
    ],
    "totalCount": 2,
    "hasNextPage": false
  }
}
Important:

The pagination envelope keys (items, totalCount, hasNextPage, and — when another page exists — nextCursor, previousCursor, currentPage, totalPages) are camelCase, unlike the record rows' own Id field. When hasNextPage is true, pass Data.nextCursor.value (a string) back as --cursor — not the whole nextCursor object.

A MULTILINE_MAX field on list returns only a size marker ("HasValue=true Length=20000" or null if empty), not the full text — read the full value with get below.

uip df records get

Get a single record by ID.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID).
<key>yesRecord ID (UUID).

Options

ShortLongValueDefaultDescription
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Example

uip df records get a1b2c3d4-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000001
uip df records get a1b2c3d4-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000001

Data shape (--output json)

{
  "Code": "RecordDetails",
  "Data": {
    "Id": "b2c3d4e5-0000-0000-0000-000000000001",
    "amount": 1500,
    "status": "Paid"
  }
}
{
  "Code": "RecordDetails",
  "Data": {
    "Id": "b2c3d4e5-0000-0000-0000-000000000001",
    "amount": 1500,
    "status": "Paid"
  }
}

Unlike list, a MULTILINE_MAX field here returns its complete value, not a size marker.

uip df records insert

Insert one or more records. The input can be a single JSON object or an array of objects.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID).

Options

ShortLongValueDefaultDescription
-f--filepathPath to JSON file with record data (object or array of objects).
--bodyJSONInline JSON record data (use - to read from stdin).
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Field values for special types:

  • CHOICE_SET_SINGLE — the choice value's numberId (an integer, not the name string) — look it up with df choice-sets list-values <id>.
  • CHOICE_SET_MULTIPLE — an array of numberId integers.
  • RELATIONSHIP — always the target record's Id (a UUID), regardless of which referenceFieldId the schema uses for the join — referenceFieldId only configures the join, it isn't the stored value.
  • FILE — cannot be set through insert/update; the field is auto-detected from the entity's schema and rejected if present in the payload. Populate it afterward with uip df files upload.

Examples

# Single record
uip df records insert a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"amount":1500,"status":"New"}'
# Single record
uip df records insert a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"amount":1500,"status":"New"}'
# Choice-set and relationship fields
uip df records insert a1b2c3d4-0000-0000-0000-000000000004 \
    --body '{"category":0,"tags":[1,3],"submitter":"e1f2a3b4-0000-0000-0000-000000000001","amount":250}'
# Choice-set and relationship fields
uip df records insert a1b2c3d4-0000-0000-0000-000000000004 \
    --body '{"category":0,"tags":[1,3],"submitter":"e1f2a3b4-0000-0000-0000-000000000001","amount":250}'
# Batch from file
uip df records insert a1b2c3d4-0000-0000-0000-000000000001 \
    --file ./invoices.json
# Batch from file
uip df records insert a1b2c3d4-0000-0000-0000-000000000001 \
    --file ./invoices.json

Data shape (--output json)

Single-record insertion returns Code: "RecordInserted" with the created record. Batch insertion returns Code: "RecordsBatchInserted":

{
  "Code": "RecordsBatchInserted",
  "Data": {
    "SuccessCount": 1,
    "FailureCount": 0,
    "SuccessRecords": [ { "Id": "b2c3d4e5-0000-0000-0000-000000000010" } ],
    "FailureRecords": []
  }
}
{
  "Code": "RecordsBatchInserted",
  "Data": {
    "SuccessCount": 1,
    "FailureCount": 0,
    "SuccessRecords": [ { "Id": "b2c3d4e5-0000-0000-0000-000000000010" } ],
    "FailureRecords": []
  }
}

If any record fails in a batch, the command exits non-zero while still emitting the full result.

uip df records update

Update one or more records. Each record must include an Id (or id) field.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID).

Options

ShortLongValueDefaultDescription
-f--filepathPath to JSON file with record data (must include Id field).
--bodyJSONInline JSON record data (must include Id field; use - to read from stdin).
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Example

uip df records update a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"Id":"b2c3d4e5-0000-0000-0000-000000000001","status":"Paid"}'
uip df records update a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"Id":"b2c3d4e5-0000-0000-0000-000000000001","status":"Paid"}'

Data shape (--output json)

Single updates emit Code: "RecordUpdated"; batch updates emit Code: "RecordsBatchUpdated" with the same shape as RecordsBatchInserted. Missing Id fields fail with Failure before any write.

uip df records query

Query records with filtering, sorting, aggregation, and field-selection. Supports cursor-based pagination. The body is a JSON object with optional keys filterGroup, sortOptions, selectedFields, aggregates, and groupBy.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID).

Options

ShortLongValueDefaultDescription
-f--filepathPath to JSON file with query options.
--bodyJSONInline JSON query options (use - to read from stdin).
-l--limitnumber50Page size.
-o--offsetnumberStart from the page containing this record index. Mutually exclusive with --cursor.
--cursorcursorPagination cursor value from a previous response's nextCursor.value.
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Query body keys

  • filterGroup{ "logicalOperator": "AND" | "OR" | 0 | 1, "queryFilters": [...], "filterGroups": [...] }. logicalOperator accepts the string form (case-insensitive) or the integer form (0 = AND, 1 = OR); filterGroups nests groups of the same shape for compound conditions.

  • queryFilters entries are { "fieldName": "<field>", "operator": "<op>", "value": ... } (or "valueList": [...] for in/not in). fieldName must start with a letter and contain only letters, digits, underscores, and dots.

    Important:

    Supported operators are exactly: =, !=, >, <, >=, <=, contains, not contains, startswith, endswith, in, not in. There is no eq, ==, Equals, like, BETWEEN, or regex operator — the server rejects anything outside this set. Compose a BETWEEN as >= + <= in the same queryFilters group.

  • sortOptions — array of { "fieldName": "<field>", "isDescending": true | false }.

  • selectedFields — array of field names to project.

  • aggregates — array of up to 5 { "function": "COUNT" | "SUM" | "AVG" | "MIN" | "MAX", "field": "<field>", "alias": "<name>" } objects. alias is optional and, when given, must start with a letter (letters, digits, underscores only, ≤128 chars).

  • groupBy — array of up to 5 field names to group aggregates by.

Examples

# Filter by status
uip df records query a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"filterGroup":{"logicalOperator":0,"queryFilters":[{"fieldName":"status","operator":"=","value":"Paid"}]}}'
# Filter by status
uip df records query a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"filterGroup":{"logicalOperator":0,"queryFilters":[{"fieldName":"status","operator":"=","value":"Paid"}]}}'
# Sort newest first, project two fields
uip df records query a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"sortOptions":[{"fieldName":"createdAt","isDescending":true}],"selectedFields":["Id","amount"]}'
# Sort newest first, project two fields
uip df records query a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"sortOptions":[{"fieldName":"createdAt","isDescending":true}],"selectedFields":["Id","amount"]}'
# Aggregate — COUNT grouped by a field
uip df records query a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"aggregates":[{"function":"COUNT","field":"Id","alias":"total"}],"groupBy":["status"]}'
# Aggregate — COUNT grouped by a field
uip df records query a1b2c3d4-0000-0000-0000-000000000001 \
    --body '{"aggregates":[{"function":"COUNT","field":"Id","alias":"total"}],"groupBy":["status"]}'

Data shape (--output json)

{
  "Code": "RecordQuery",
  "Data": {
    "items": [ { "Id": "b2c3d4e5-0000-0000-0000-000000000001", "status": "Paid" } ],
    "totalCount": 1,
    "hasNextPage": false
  }
}
{
  "Code": "RecordQuery",
  "Data": {
    "items": [ { "Id": "b2c3d4e5-0000-0000-0000-000000000001", "status": "Paid" } ],
    "totalCount": 1,
    "hasNextPage": false
  }
}

An aggregate query's rows carry the groupBy field values plus each aggregate's alias instead of full record fields:

{
  "Code": "RecordQuery",
  "Data": {
    "items": [
      { "status": "Paid", "total": 12 },
      { "status": "Pending", "total": 3 }
    ]
  }
}
{
  "Code": "RecordQuery",
  "Data": {
    "items": [
      { "status": "Paid", "total": 12 },
      { "status": "Pending", "total": 3 }
    ]
  }
}

uip df records import

Bulk-import records from a CSV file.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID).

Options

ShortLongValueDefaultDescription
-f--filepathrequiredPath to the CSV file to import.
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Example

uip df records import a1b2c3d4-0000-0000-0000-000000000001 \
    --file ./invoices.csv
uip df records import a1b2c3d4-0000-0000-0000-000000000001 \
    --file ./invoices.csv

Data shape (--output json)

{
  "Code": "RecordsImported",
  "Data": {
    "InsertedRecords": 42,
    "TotalRecords": 42
  }
}
{
  "Code": "RecordsImported",
  "Data": {
    "InsertedRecords": 42,
    "TotalRecords": 42
  }
}

If the server records row-level errors, the response also includes ErrorFileLink pointing at a downloadable error report.

uip df records delete

Delete one or more records by ID. This is irreversible.

Arguments

NameRequiredPurpose
<id>yesEntity ID (UUID).
<key...>yesOne or more record IDs to delete.

Options

ShortLongValueDefaultDescription
-y--yesflagRequired. Acknowledges this is an irreversible operation.
--reasontextRequired. Reason for the deletion — echoed back in the response so the caller can log it.
--folder-keykeyFolder key (GUID) of the folder containing the entity, for folder-scoped entities.

Examples

uip df records delete a1b2c3d4-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000001 \
    --yes --reason "test cleanup"
uip df records delete a1b2c3d4-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000001 \
    --yes --reason "test cleanup"
# Bulk delete
uip df records delete a1b2c3d4-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000002 \
    b2c3d4e5-0000-0000-0000-000000000003 \
    --yes --reason "test cleanup"
# Bulk delete
uip df records delete a1b2c3d4-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000001 \
    b2c3d4e5-0000-0000-0000-000000000002 \
    b2c3d4e5-0000-0000-0000-000000000003 \
    --yes --reason "test cleanup"

Data shape (--output json)

{
  "Code": "RecordsDeleted",
  "Data": {
    "SuccessCount": 1,
    "FailureCount": 0,
    "SuccessRecords": [ { "Id": "b2c3d4e5-0000-0000-0000-000000000001" } ],
    "FailureRecords": [],
    "Reason": "test cleanup"
  }
}
{
  "Code": "RecordsDeleted",
  "Data": {
    "SuccessCount": 1,
    "FailureCount": 0,
    "SuccessRecords": [ { "Id": "b2c3d4e5-0000-0000-0000-000000000001" } ],
    "FailureRecords": [],
    "Reason": "test cleanup"
  }
}

A partial failure still emits the full response but sets exit code 1.

  • uip df entities — discover the entity ID first; inspect schema before authoring queries.
  • uip df files — manage file attachments on the records here.
  • uip df choice-sets — look up numberId values for CHOICE_SET_SINGLE/CHOICE_SET_MULTIPLE fields.

See also

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated