Loading...
Loading...
UiPath Integration Service connector authoring (REST+JSON) on disk via `uip is connectors builder`. Triggers on `element.json`, `element-metadata.json`, `standard-resources/*.json`, a `periodic-uipath-*`/`periodic-design-*` connector repo, or any request to build/edit an IS connector: init the connector shell, configure auth (19 types via `auth set`, incl. jwtOauth claims, FPS, none), add activities with fields/params/methods/hooks, wire polling/webhook triggers, add auth-system resources, inspect, validate, and surgically read/write files via state. Import + publish live on the parent `uip is connectors` (need `uip login`). NOT for operating a published connector — connections, ping, run an activity→uipath-platform; NOT for `.flow` connector nodes→uipath-maestro-flow.
npx skill4agent add uipath/skills uipath-connector-builderuip is connectors builderimportpublishuip is connectorsperiodic-*periodic-uipath-{vendor}-{product}periodic-design-{org}-{slug}initdesign-{org}-{slug}--name--organizationapp/element/element.jsonstandard-resources/*.jsonhooks/element.jsonbuilder inspectinspectactivity liststate querybuilder validatevalidateauth setauthentication.typetypeOauthauthenticationTypes--scope--scope-options--required-scopes--preselected-scopesinit --auth oauth2|customApiKeyauth setstate patchactivity createelement.json--skip-srauth system createGETBYIDPATCHPUTDELETE/{primaryKey}GETBYIDPATCHPUTDELETEGETGETBYIDstate patchstate querystate patchelement-metadata.json/contacts%2Fcontactsstate patch.uip-connector.jsoninit--connector-dir <PATH>import--connector-dirapp/element/element.jsondownloadinitinit/tmp--connector-dir{Result, Code, Data}--output jsonimportdownloadpublishinituip logindesign-{org}-{slug}init--organization--organization <slug>auth setencrypt: truePASSWORDTEXTFIELDTEXTAREArequire('axios')done()activity createactivity create--fields-file <json>activity createactivity field createvalidateinit --base-url 'https://{instance}.../api'auth set --token-url 'https://{instance}.../token' --authorization-url 'https://{instance}.../authorize'{instance}base.urloauth.token.urloauth.authorization.urlstate patchtype:COMBOoptionsvaluepostRequestdone({configuration})onProvisionconfigScreenType:"pre""pre-optional"hintTextvalidate--token-url--authorization-url<ORG>https://api.example.com# 0. Log in FIRST. The key `design-{org}-{slug}` takes its org from your logged-in
# session, so `init` (create) ERRORS if you're not logged in. Let it derive the
# org — do NOT guess --organization (a wrong org bakes into the key and only
# surfaces, mismatched, at import). --organization <slug> is for offline/CI only.
uip login status # check Data.Status == "Logged in" — NOT the envelope
# Result/exit, which is "Success" even when the session
# is dead (refresh-failed / expired). (`init` create
# itself re-checks the live login status and blocks.)
# 1. Scaffold the shell. --name is required when creating; key + folder are derived
# (the org comes from your login — see step 0).
uip is connectors builder init --name 'Acme Widgets' \
--description 'Acme Widgets connector' --categories 'CRM,Sales and marketing' \
--base-url https://api.acme.com --auth oauth2 \
--authorization-url https://acme.com/oauth/authorize \
--token-url https://acme.com/oauth/token --scope 'read write'
# --categories must be approved DISPLAY-NAME values (e.g. 'CRM', 'Sales and marketing',
# 'Collaboration', 'Productivity', 'E-commerce') — NOT lowercase slugs like `crm,sales`.
# Validated at init AND `validate`: wrong case is canonicalized, an unknown value fails fast
# and the error lists the approved enum. init seeds element-metadata.json:latestVersion = "1.0.0".
# 2. Add an activity (writes element.json entries + standard-resources/accounts.json).
uip is connectors builder activity create --name accounts --vendor-path /v1/accounts \
--methods GET,GETBYID,POST,PATCH,DELETE --primary-key id --has-ceql
# 3. Author the field schema — REQUIRED, not optional (Rule 11). `activity create`
# does NOT infer fields; without this the activity ships as a raw JSON body and
# `validate` warns. Pass `--fields-file <json>` on `activity create` for the whole
# schema at once, or add fields one at a time with `field create`
# (visibility flags apply to every --method listed; re-runs merge):
uip is connectors builder activity field create --resource accounts --name email \
--type string --method GET --method POST --response
# 4. Validate — must be 0 errors AND no unresolved warnings (fieldless activity,
# broken SR link) before import.
uip is connectors builder validate
# 5. Import (create-or-update on the tenant) then publish.
uip login
uip is connectors import
uip is connectors publish --wait # blocks until SUCCESS; live in Studio Web then
# (fire-and-forget without --wait: allow ~5-10 min)--version1.0.0element-metadata.json:latestVersion--version 1.0.1uip is connectors builder inspect --output json # map what exists first
# research the vendor API, then:
uip is connectors builder activity create --name contacts --vendor-path /v1/contacts \
--methods GET,GETBYID,POST --primary-key id --fields-file ./contacts-fields.json
uip is connectors builder activity field create --resource contacts --name status \
--type string --method GET --response --searchable
uip is connectors builder activity hook create --resource-name contacts --method GET \
--hook-type postRequest --custom-code-file ./contacts-postRequest.js # optional response shaping (you write the JS)
uip is connectors builder validatetrigger createtrigger createuip is connectors builder activity list --output json # confirm the activity exists
uip is connectors builder trigger create --resource-name accounts --event-kind polling \
--updated-date-field LastModifiedDate --id-field Id # seeds the event config + hasEvents flag
uip is connectors builder validate--updated-date-field--event-kind--event-kind polling|webhook|allpollingwebhookallactivity create--no-curatemethod curate--no-curateuip is connectors builder activity method curate --resource cases --method GET \
--display-name 'Get Support Request'
uip is connectors builder activity field create --resource cases --name subject --type string \
--method GET --response --response-curated --design-position primary
uip is connectors builder validateuip is connectors builder inspect --output json
# state patch REPLACES the node — query the WHOLE entry, change ONLY the field at fault, patch it ALL back:
uip is connectors builder state query element.json/configuration/oauth.token.url --output json
uip is connectors builder state patch element.json/configuration/oauth.token.url \
--value '<full entry from the query above, with defaultValue corrected>'
uip is connectors builder validatepostRequestonProvisiondone({configuration})state patchuip is connectors # tenant/catalog + design-connector lifecycle (needs `uip login`)
list | get <key> | swagger <key> | export <key> | audit-logs | event-operations
download <key> | import | publish | publish-status <id> | probe
builder # author a connector ON DISK
init # create-or-EDIT the connector shell in ONE verb
# (folds the old scaffold / metadata / global / base+pagination preset)
preset apply --kind base|pagination
header delete <vendorName>
auth set | get | system (create|list)
activity create | list | get | delete
field (create|list|get|delete)
method (get|set|curate)
param (create|list|get|delete)
hook (create|list|get|delete)
trigger create # --event-kind polling|webhook|all (folds the event preset + polling)
inspect # read-only whole-connector rollup
validate # full check set; exits non-zero on failure
state query <pointer> | patch <pointer>publishPublishId--wait--timeout-secondspublish-status <id>IN_PROGRESS | SUCCESS | FAILUREreferences/uip is connectors builder <noun> <verb> --help| Task → read this | Reference |
|---|---|
| What a connector is, file layout, the CRUD/curated/HTTP activity model | references/overview.md |
| element.json internals: top-level fields, resources[], parameters[], value interpolation, hook order | references/element-json.md |
| Standard-resource files: linking, metadata.method, curated, fields (visibility/design/searchable) | references/standard-resources.md |
| configuration[] entries: widget types, screen types, per-auth key sets, pagination + event keys | references/configuration.md |
| Authentication setup: all 19 auth types (incl. JWT Bearer claims, FPS, none) and the OAuth/JWT scope surface | references/auth.md |
| Auth-system resources: auth-validation, onProvision/onDelete, OAuth token overrides | references/system-resources.md |
| When to write a hook vs use a built-in (decision table + good/avoidable patterns), execution order, context vars, done(), naming | references/hooks.md |
| Polling and webhook triggers: config keys, event.poller.configuration schema | references/events.md |
| Debugging auth / activity / hook / trigger / pagination issues (workflow + checklists) | references/debugging.md |
builder inspectstate patchauth setstate patchactivity create--overwrite-fieldsGETBYID/{primaryKey}latestVersion--version--categoriesvalidatedone()connector scaffold/inspect/validateinitinspectvalidateglobalmetadataconfigresource*event polling addauth scoperemote*describereferenceactivity createfield create--fields-filevalidate