Skip to content

feat(platform): IXP designtime projects service [ACTV-89365]#1814

Open
cezara98t wants to merge 2 commits into
feat/ixp-designtime-transportfrom
feat/ixp-designtime-projects
Open

feat(platform): IXP designtime projects service [ACTV-89365]#1814
cezara98t wants to merge 2 commits into
feat/ixp-designtime-transportfrom
feat/ixp-designtime-projects

Conversation

@cezara98t

@cezara98t cezara98t commented Jul 14, 2026

Copy link
Copy Markdown

Context

Part of building the Document Understanding design-time surface in the UiPath Python SDK.
This PR delivers ACTV-89365 — the first design-time resource-service port.

Stacked on #1812 (the base service). Base is feat/ixp-designtime-transport; retarget to main once #1812 merges. Review #1812 first.

It's the first service built on the IxpDesigntimeService base service, and establishes the template the remaining design-time services (fields, data-types, groups, documents, labellings, models) will follow.

What's here

document_projects/ProjectsService(IxpDesigntimeService) — the projects resource over du_/api/designtimeapi:

  • Methods (each with an async twin): list, retrieve, create, update (title), delete. Covers the core verbs of the design-time projects resource; project sub-resources (fields, taxonomy, documents, models) land as sibling services.
  • Retry contract inheritedcreate/update/delete go through the base service's no-retry helpers (no double-create on a transient 5xx); list/retrieve keep the platform retry policy.
  • Native models (Project, ProjectsPage, DeleteProjectResponse) — idiomatic snake_case attributes (project.created_at) aliased to the API's PascalCase wire keys; CreatedAt parsed to datetime; extra="allow" for forward-compat. Required fields track the authoritative design-time contract.
  • FacadeDocumentProjectsService groups resource services under properties named per resource, wired onto the client as sdk.document_projects.projects.*.

Verification

11 pytest-httpx tests pass (url/api-version/paging, PascalCase body ⇄ snake_case model mapping, name percent-encoding, delete envelope, facade caching, async twins); the full new-file set is ruff + mypy clean.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings July 14, 2026 13:29
@github-actions github-actions Bot added test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-integrations labels Jul 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the first IXP design-time “projects” resource service on top of the new IxpDesigntimeService transport, including models, a facade entry point, and pytest-httpx coverage. This establishes the pattern for additional design-time services under uipath.platform.document_projects.

Changes:

  • Introduces ProjectsService (sync + async) implementing list/retrieve/create/update/delete over du_/api/designtimeapi.
  • Adds Pydantic models (Project, ProjectsPage, DeleteProjectResponse) with PascalCase ↔ snake_case mapping.
  • Wires a DocumentProjectsService facade and exposes it on the main UiPath client, plus adds focused contract tests.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/uipath-platform/tests/services/test_document_projects_projects.py Adds pytest-httpx tests for URL building, encoding, paging, model mapping, facade behavior, and async twins.
packages/uipath-platform/src/uipath/platform/document_projects/_projects_service.py New projects resource service with traced sync/async methods and PascalCase request bodies.
packages/uipath-platform/src/uipath/platform/document_projects/_models.py New Pydantic v2 models for project payloads/pages/delete response with aliases and forward-compatible extra="allow".
packages/uipath-platform/src/uipath/platform/document_projects/_document_projects_service.py Adds the DocumentProjectsService facade grouping design-time resource services.
packages/uipath-platform/src/uipath/platform/document_projects/init.py Exports the new facade/service/models from the document_projects package.
packages/uipath-platform/src/uipath/platform/_uipath.py Adds sdk.document_projects entry point on the main client.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +130 to +132
@property
def document_projects(self) -> DocumentProjectsService:
return DocumentProjectsService(self._config, self._execution_context)
Comment on lines +5 to +8
``datetime``), the PascalCase request bodies (``Name`` / ``Title``), project-name
percent-encoding, the paging params, and the facade wiring (``sdk.document_projects
.projects``). The no-retry-on-write contract is inherited from — and tested in —
the transport layer, so it is not re-exercised here.
@cezara98t
cezara98t force-pushed the feat/ixp-designtime-projects branch from 0d647c0 to fd849f5 Compare July 15, 2026 13:10
cezara98t and others added 2 commits July 15, 2026 18:42
First resource-service port on top of the IXP designtime transport
(Step 2 of the IXP -> Coded Agents SDK effort). Establishes the template
the remaining designtime services follow.

- ProjectsService(IxpDesigntimeService): list / retrieve / create /
  update (title) / delete, each with an async twin. Writes go through the
  transport's no-retry helpers; list/retrieve keep the platform retry policy.
- Pydantic models (Project, ProjectsPage, DeleteProjectResponse): idiomatic
  snake_case attributes aliased to the API's PascalCase wire keys, CreatedAt
  parsed to datetime; extra="allow" for forward compatibility.
- DocumentProjectsService facade grouping resource services under properties
  that mirror the CLI command groups (sdk.document_projects.projects.*),
  wired onto the UiPath client as `document_projects`.
- 11 pytest-httpx tests (url/api-version/paging, PascalCase body + snake_case
  model mapping, name percent-encoding, delete envelope, facade caching, async
  twins). ruff + mypy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… CLI

Reword the projects service and facade docstrings to describe the design-time
resources on their own terms (resource-named properties, the design-time
project lifecycle) instead of "the CLI's uip ixp groups". The Python IXP SDK
is independent of the CLI. No behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cezara98t
cezara98t force-pushed the feat/ixp-designtime-projects branch from fd849f5 to 28b0857 Compare July 15, 2026 15:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:uipath-integrations test:uipath-langchain Triggers tests in the uipath-langchain-python repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants