- Primeros pasos
- Para administradores
- Proyectos de flujo de trabajo de RPA
- Crear un flujo de trabajo RPA a partir de una idea
- Creación de un proyecto
- Cómo iniciar un flujo de trabajo de RPA
- Gestionar archivos y carpetas de proyecto
- Conectar flujos de trabajo de RPA a tus cuentas
- Configurar actividades
- Gestionar las actividades de un proyecto
- Transferir valores entre actividades
- Iterar a través de los elementos
- Gestionar los datos en un proyecto
- Configurar un proyecto para usar tus datos
- Usar recursos de archivos y carpetas
- Configuración local para proyectos de flujo de trabajo y aplicación RPA
- Proyectos de aplicación
- Aplicaciones en Studio Web
- Diseñar proyectos de aplicación
- Depuración de proyectos de aplicación
- Publicar, implementar y actualizar proyectos de aplicaciones
- Importar y exportar proyectos de aplicación
- Trabajar con entidades en un proyecto de aplicación
- Crear aplicaciones accesibles
- Añadir descriptores accesibles
- La etiqueta Accesible
- Uso del control Pestaña para la accesibilidad
- Diseñar listas y encabezados accesibles
- Diseño de aplicaciones receptivas
- Relación de contraste de color
- Estilos preestablecidos y asignaciones a nivel de aria para el control Encabezado
- Limitaciones conocidas
- Initializing a coded app project
- Working in your IDE
- Bindings and runtime resources
- Publishing and deploying coded app projects
- Visión general de los controles
- Botón
- Casilla de verificación
- HTML personalizado
- Selector de fechas
- Lista desplegable
- Cargador de archivos
- Cargador de archivos múltiples
- Lista desplegable de selección múltiple
- Botón de radio
- Editor de texto enriquecido
- Control deslizante
- Interruptor
- Área de texto
- Cuadro de texto
- Cuadro de texto (correo electrónico)
- Cuadro de texto (Número)
- Controles de iconos
- Establecer un contexto externo utilizando parámetros de consulta
- Establecer un contexto externo utilizando eventos externos
- Utilizar matrices para rellenar controles desplegables, desplegables de selección múltiple y botones de opción
- Utilizar controles tabulares con entidades de Data Service en proyectos de aplicación
- Insertar agentes conversacionales
- Actividades de la aplicación
- Procesos de agente
- Caso de Maestro
- Flujo de Maestro
- Agents
- Soluciones
- Flujos de trabajo de API
- Pruebas
Bindings in coded apps, covering how UiPath resources are declared in bindings_v2.json and registered by Studio Web on push.
A coded app is rarely self-contained — it typically calls out to Orchestrator resources such as assets, storage buckets, queues, connections, or other automation projects. Studio Web uses a bindings_v2.json file, shipped with your app's source, to declare, resolve, and override those references at deploy time.
What bindings are
A binding is a logical reference from your coded app to a UiPath resource. It has two parts:
- A declaration inside
bindings_v2.json, at the root of what you push. Each entry names a resource, its type, and a default value. - A concrete resolution to an Orchestrator entity — folder, asset, bucket, queue, connection, or process — decided at deploy time by the solution's environment configuration.
Because the declarations in bindings_v2.json are stable, the same coded app can be deployed to development, staging, and production without code changes.
Declaring bindings in bindings_v2.json
A bindings_v2.json file at the root of what you push declares the bindings. It follows a versioned schema with a top-level resources array; each entry describes one binding.
Ejemplo:
{
"version": "2.0",
"resources": [
{
"activityDisplayName": "Get Asset",
"activityId": "GetRobotAsset_1",
"resource": "asset",
"key": "Asset",
"id": "assetAssetAssetFalse",
"value": {
"name": {
"defaultValue": "Asset",
"isExpression": false
}
},
"metadata": {
"BindingsVersion": "2.2"
}
},
{
"activityDisplayName": "Invoke Process",
"activityId": "InvokeProcess_1",
"resource": "process",
"key": "Arghya-Queue-Query",
"id": "processArghya-Queue-QueryArghya-Queue-QueryFalse",
"value": {
"name": {
"defaultValue": "Arghya-Queue-Query",
"isExpression": false,
"displayName": "Process name"
}
},
"metadata": {
"BindingsVersion": "2.2"
}
},
{
"activityDisplayName": "Add Queue Item",
"activityId": "AddQueueItem_1",
"resource": "queue",
"key": "Arghya_query_queue",
"id": "queueArghya_query_queueArghya_query_queueFalse",
"value": {
"name": {
"defaultValue": "Arghya_query_queue",
"isExpression": false
}
},
"metadata": {
"BindingsVersion": "2.2"
}
}
]
}
{
"version": "2.0",
"resources": [
{
"activityDisplayName": "Get Asset",
"activityId": "GetRobotAsset_1",
"resource": "asset",
"key": "Asset",
"id": "assetAssetAssetFalse",
"value": {
"name": {
"defaultValue": "Asset",
"isExpression": false
}
},
"metadata": {
"BindingsVersion": "2.2"
}
},
{
"activityDisplayName": "Invoke Process",
"activityId": "InvokeProcess_1",
"resource": "process",
"key": "Arghya-Queue-Query",
"id": "processArghya-Queue-QueryArghya-Queue-QueryFalse",
"value": {
"name": {
"defaultValue": "Arghya-Queue-Query",
"isExpression": false,
"displayName": "Process name"
}
},
"metadata": {
"BindingsVersion": "2.2"
}
},
{
"activityDisplayName": "Add Queue Item",
"activityId": "AddQueueItem_1",
"resource": "queue",
"key": "Arghya_query_queue",
"id": "queueArghya_query_queueArghya_query_queueFalse",
"value": {
"name": {
"defaultValue": "Arghya_query_queue",
"isExpression": false
}
},
"metadata": {
"BindingsVersion": "2.2"
}
}
]
}
Fields per resource
| Campo | Propósito |
|---|---|
activityDisplayName | Human-readable label shown in Studio Web's Resources panel. |
activityId | Stable identifier the SDK uses to look up the binding at runtime. |
resource | Resource type: asset, bucket, queue, connection, process, and so on. |
key | The resource's key or logical name inside the app. |
id | A composed identifier used by Studio Web to persist and diff bindings across pushes. |
value.name.defaultValue | The default Orchestrator entity name to resolve to before environment overrides are applied. |
value.name.isExpression | true if defaultValue is an expression to be evaluated, false for a literal. |
metadata.BindingsVersion | Per-resource schema version. |
Registering bindings on push
Every uip codedapp push re-reads bindings_v2.json. Studio Web loads the file from the pushed content and registers each entry from the resources array under the project's Resources panel. Existing bindings whose id is unchanged retain their environment mappings; new entries appear unmapped until you map them.
If bindings_v2.json is absent from what you push, the project has no bindings and the Resources panel is empty.
Once the push completes, the project view in Studio Web confirms the sync and lists each registered resource type:
Mapping bindings to Orchestrator resources
For each registered binding, you (or the solution's environment configuration) select a matching Orchestrator resource — for example, mapping a Get Asset binding to a specific credential asset in a chosen folder.
The mapping is stored as part of the solution's environment configuration, not inside the pushed source. This is how a single coded app package is safely promoted across development, staging, and production — each environment provides its own resolutions.
For managing environments, see About solutions.
Mejores prácticas
- An
activityDisplayNameshould be intent-revealing (Get Payment API Key, notGet Asset) — it appears in the Resources panel and in every environment mapping. - An
activityIdshould stay stable across pushes. Studio Web relies on it (combined withid) to diff and retain environment mappings between pushes. - A minimal
bindings_v2.jsonis easier to maintain: every entry becomes a resolution requirement in every environment the app is deployed to. bindings_v2.jsonis source code and should live in Git alongside the rest of the app.