UiPath · Arazzo Workflow

UiPath Upsert a Data Service Entity Record

Version 1.0.0

Query an entity by a key field and update the match or create a new record.

1 workflow 1 source API 1 provider
View Spec View on GitHub AutomationRobotic Process AutomationRPAArtificial IntelligenceDocument ProcessingEnterprise AutomationOrchestrationTestingArazzoWorkflows

Provider

uipath

Workflows

upsert-entity-record
Upsert a Data Service entity record by a unique key field.
Queries the entity for a record matching the key field/value, then either updates the matched record or creates a new one.
3 steps inputs: entityName, fields, keyField, keyValue outputs: createdRecordId, updatedRecordId
1
findRecord
Run a structured query against the entity for a record where the key field equals the supplied value, returning at most one match.
2
updateExisting
Update the matched record by its ID with the supplied field values.
3
createNew
Create a new entity record with the supplied field values when no existing record matched the key value.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: UiPath Upsert a Data Service Entity Record
  summary: Query an entity by a key field and update the match or create a new record.
  description: >-
    A common Data Service integration pattern. The workflow runs a structured
    query against a custom entity to find a record whose key field equals a
    supplied value, then branches: when a match is found it updates the existing
    record by ID, and when no match is found it creates a new record. Every step
    spells out its request inline so the flow can be read and executed without
    opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: entitiesApi
  url: ../openapi/uipath-entities-api-openapi.yml
  type: openapi
workflows:
- workflowId: upsert-entity-record
  summary: Upsert a Data Service entity record by a unique key field.
  description: >-
    Queries the entity for a record matching the key field/value, then either
    updates the matched record or creates a new one.
  inputs:
    type: object
    required:
    - entityName
    - keyField
    - keyValue
    - fields
    properties:
      entityName:
        type: string
        description: Name of the custom entity type as defined in the tenant schema.
      keyField:
        type: string
        description: Field name used to detect an existing record (e.g. Email).
      keyValue:
        type: string
        description: Value of the key field to match on.
      fields:
        type: object
        description: Map of field name/value pairs to write to the record.
  steps:
  - stepId: findRecord
    description: >-
      Run a structured query against the entity for a record where the key field
      equals the supplied value, returning at most one match.
    operationId: queryEntityRecords
    parameters:
    - name: entityName
      in: path
      value: $inputs.entityName
    requestBody:
      contentType: application/json
      payload:
        filterGroup:
          logicalOperator: AND
          queryFilters:
          - fieldName: $inputs.keyField
            operator: equals
            value: $inputs.keyValue
        start: 0
        limit: 1
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      matchedRecordId: $response.body#/value/0/Id
      totalCount: $response.body#/totalCount
    onSuccess:
    - name: recordExists
      type: goto
      stepId: updateExisting
      criteria:
      - context: $response.body
        condition: $.totalCount > 0
        type: jsonpath
    - name: recordMissing
      type: goto
      stepId: createNew
      criteria:
      - context: $response.body
        condition: $.totalCount == 0
        type: jsonpath
  - stepId: updateExisting
    description: >-
      Update the matched record by its ID with the supplied field values.
    operationId: updateEntityRecord
    parameters:
    - name: entityName
      in: path
      value: $inputs.entityName
    - name: recordId
      in: path
      value: $steps.findRecord.outputs.matchedRecordId
    requestBody:
      contentType: application/json
      payload: $inputs.fields
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      recordId: $response.body#/Id
      modifiedOn: $response.body#/ModifiedOn
    onSuccess:
    - name: done
      type: end
  - stepId: createNew
    description: >-
      Create a new entity record with the supplied field values when no existing
      record matched the key value.
    operationId: createEntityRecord
    parameters:
    - name: entityName
      in: path
      value: $inputs.entityName
    requestBody:
      contentType: application/json
      payload: $inputs.fields
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      recordId: $response.body#/Id
      createdOn: $response.body#/CreatedOn
  outputs:
    updatedRecordId: $steps.updateExisting.outputs.recordId
    createdRecordId: $steps.createNew.outputs.recordId

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/uipath-upsert-entity-record-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.