Skip to content

trimble-connect covers 25 of 188 Trimble Connect Core API operations — 163 remain (views, releases, shares, tags, groups, file check-in/out, permissions, comments, clash sets, …) plus BCF viewpoint detail #691

Open

Description

@pawellisowski

Summary

The trimble-connect agent (manifest 0.5.0 on main at 65ffbb1de, CLI 0.158.0) now has 46 commands. It covers what floless.app#2184 needed, and the main day-to-day surface:

  • folders and files: create, find, list, list by path, rename or move, copy, delete, versions, upload, download;
  • projects (read), the signed-in user and project members;
  • BCF 2.1 topics, comments, viewpoints and snapshots, document references, related topics, BCF documents and extensions;
  • ToDos and ToDo types;
  • region-aware routing.

Trimble's published Core API 2.0 definition has 188 operations. The agent covers 25 of them, so 163 remain. This issue tracks them, grouped by area, so they can be picked up later. Each item can be ticked off as it lands.

Observed (verified)

  1. Source of truth: Trimble Connect Core API 2.0, https://api.swaggerhub.com/apis/Trimble-Connect/tcps/2.0 (OpenAPI 3.0, downloaded 2026-10-11).
  2. Coverage is computed, not estimated:
    • Every METHOD path in the "REST translation" blocks of 20-agents/aeco/construction/trimble-connect/commands/*.md on main (46 docs) was matched against the definition's paths.
    • Path parameters are normalised to {} and query strings dropped.
    • Anything unmatched is listed below.
  3. BCF is outside that count. The BCF 2.1 endpoints (/bcf/2.1/...) are a separate API, served from the region-aware BCF base (feat(trimble-connect): BCF 2.1 topics, comments, viewpoints, document references + ToDos (floless.app#2184) #686, feat(trimble-connect): region-aware Core routing (floless.app#2184) #690). See "BCF gaps" below.

Remaining Core API 2.0 operations (163)

Rough priority for AECO workflows, highest first:

  1. File lifecycle: files check-in/check-out, permissions, processing status, formats, export.
  2. Collaboration: comments (file and folder comments, not BCF) with attachments and reactions; todos attachments; shares; releases.
  3. Organisation: tags, groups, project users (invite, role, remove), project create/update/settings.
  4. Viewer and model: views, views2d, viewgroups, clashsets, objectlink, file alignment.
  5. Admin and long tail: companies, activities, search, users/* preferences, the /2.1/... project-scoped list variants (these duplicate covered folder and file listings), folders permissions, versions and async force-delete with job status.
views (24)
  • GET /views — List all Views in a project
  • POST /views — Create View
  • POST /views/multiparts — Create View with image
  • PATCH /views/multiparts/{viewId} — Update View with image
  • GET /views/{viewId} — Get View Details
  • PATCH /views/{viewId} — Update a View
  • DELETE /views/{viewId} — Delete a View
  • GET /views/{viewId}/camera — Get Camera Details
  • PATCH /views/{viewId}/camera — Update Camera
  • GET /views/{viewId}/image — Get snapshot image for a View
  • POST /views/{viewId}/image — Upload a Thumbnail Image for a View
  • GET /views/{viewId}/markups — List Markups
  • POST /views/{viewId}/markups — Create Markups
  • PATCH /views/{viewId}/markups — Update a Markup
  • DELETE /views/{viewId}/markups/{markupId} — Delete a Markup
  • GET /views/{viewId}/presentation — Get Presentation
  • PATCH /views/{viewId}/presentation — Update a Presentation
  • GET /views/{viewId}/sectionbox — Get Section Box
  • PUT /views/{viewId}/sectionbox — Create or Update Section Box
  • DELETE /views/{viewId}/sectionbox — Delete Section Box
  • GET /views/{viewId}/sectionplanes — List Section Planes
  • POST /views/{viewId}/sectionplanes — Create Section Plane
  • PATCH /views/{viewId}/sectionplanes — Update Section Plane
  • DELETE /views/{viewId}/sectionplanes/{sectionplaneId} — Delete a Section Plane
projects (20)
  • POST /projects — Create a New Project
  • POST /projects/accessRequests — Request access to projects the user is not part of.
  • POST /projects/clones — Clone project from existing project
  • GET /projects/clones/{cloneId} — Get the details of project clone
  • GET /projects/me — List all projects with minimal information
  • PATCH /projects/{projectId} — Update Project
  • DELETE /projects/{projectId} — Delete Project
  • POST /projects/{projectId}/image — Upload Project Image
  • GET /projects/{projectId}/license — Get Project license details
  • PATCH /projects/{projectId}/license — Update Project license
  • GET /projects/{projectId}/metrics — Get Project Metrics
  • GET /projects/{projectId}/objects — Get project content changes since last time
  • GET /projects/{projectId}/roles — List roles available in project
  • GET /projects/{projectId}/settings — Get Project settings
  • PATCH /projects/{projectId}/settings — Update Project Settings
  • GET /projects/{projectId}/status — Get project content sync cursor.
  • POST /projects/{projectId}/users — Add/Invite Users to project
  • GET /projects/{projectId}/users/{userId} — Get User Details
  • PATCH /projects/{projectId}/users/{userId} — Update User role
  • DELETE /projects/{projectId}/users/{userId} — Remove user
files (17)
  • POST /files/export — Create a new export Request
  • GET /files/export/{exportId} — Get export details
  • GET /files/formats — List Supported 2D, 3D & Spatial file formats
  • POST /files/fs/commit — Commit File Upload
  • POST /files/fs/initiate — Initiate File upload
  • GET /files/fs/snapshot — Get the latest files and folders structure
  • POST /files/fs/upload/{uploadId}/complete — Complete a multipart file upload
  • GET /files/fs/uploadstatus — Representation File upload status
  • GET /files/{fileId}/alignment — Get alignment
  • PUT /files/{fileId}/alignment — Create Alignment
  • DELETE /files/{fileId}/alignment — Delete alignment
  • POST /files/{fileId}/alignment/matrix — Create alignment with matrix
  • POST /files/{fileId}/checkin — Checkin File
  • POST /files/{fileId}/checkout — Checkout File
  • GET /files/{fileId}/permissions — Get File Permissions
  • PATCH /files/{fileId}/permissions — Update File Permissions
  • GET /files/{fileId}/status — Get processing status of a File
comments (11)
  • GET /comments — List all Comments
  • POST /comments — Create a New Comment
  • GET /comments/{commentId} — Get Comment Details
  • PATCH /comments/{commentId} — Update Comment
  • DELETE /comments/{commentId} — Delete a Comment
  • GET /comments/{commentId}/attachments — List all attachments
  • POST /comments/{commentId}/attachments — Add attachments
  • DELETE /comments/{commentId}/attachments — Remove attachments
  • POST /comments/{commentId}/reactions — Adds user's reaction to a comment
  • GET /comments/{commentId}/reactions — List reactions to a comment
  • DELETE /comments/{commentId}/reactions/{reactionId} — Delete users reaction to a comment
companies (11)
  • GET /companies — List Companies
  • GET /companies/{companyId} — Get Company Details
  • PATCH /companies/{companyId} — Update Company
  • PATCH /companies/{companyId}/domains — Add Company Email Domains
  • DELETE /companies/{companyId}/domains — Remove Company Email Domains
  • POST /companies/{companyId}/image — Upload Company Image
  • GET /companies/{companyId}/users — List Users in a Company
  • POST /companies/{companyId}/users — Add Users to Company
  • DELETE /companies/{companyId}/users — Remove Users from Company
  • PATCH /companies/{companyId}/users/{userId} — Update User in the Company
  • DELETE /companies/{companyId}/users/{userId} — Remove User from the Company
releases (9)
  • GET /releases — List all Releases
  • POST /releases — Create a New Release
  • POST /releases/downloadFiles — Download files in release
  • GET /releases/{releaseId} — Get Release Details
  • PATCH /releases/{releaseId} — Edit Release
  • DELETE /releases/{releaseId} — Delete Release
  • GET /releases/{releaseId}/files — List all files
  • POST /releases/{releaseId}/files — Add files
  • DELETE /releases/{releaseId}/files — Remove files
groups (8)
  • GET /groups — List Groups in a project
  • POST /groups — Create a New Group
  • GET /groups/{groupId} — Get Group Details
  • PATCH /groups/{groupId} — Rename Group
  • DELETE /groups/{groupId} — Delete Group
  • GET /groups/{groupId}/users — List Users in a Group
  • POST /groups/{groupId}/users — Add users to group
  • DELETE /groups/{groupId}/users — Delete users from group
tags (8)
  • GET /tags — List Tags in a project
  • POST /tags — Create Tag
  • GET /tags/{tagId} — Get Tag Details
  • DELETE /tags/{tagId} — Delete Tag
  • PATCH /tags/{tagId} — Edit Tag
  • GET /tags/{tagId}/objects — List objects in a Tag
  • POST /tags/{tagId}/objects — Add objects to Tag
  • DELETE /tags/{tagId}/objects — Remove objects from Tag
views2d (7)
  • GET /views2d — List all 2D Views
  • POST /views2d — Create a New 2D View
  • POST /views2d/multiparts — Create a new 2D View with image
  • PATCH /views2d/multiparts/{viewId} — Update a 2D View with image
  • GET /views2d/{viewId} — Get 2D View details
  • PATCH /views2d/{viewId} — Update 2D View
  • DELETE /views2d/{viewId} — Delete 2D View
activities (6)
  • GET /activities — List Activities of a Project / Object
  • POST /activities/exports — Create a new export Request
  • GET /activities/exports/{exportId} — Get export details
  • POST /activities/list — List activities with filters
  • GET /activities/{activityId} — Activity Details by activityId
  • GET /activities/{activityId}/logs — Activity logs by activityId
clashsets (6)
  • GET /clashsets — List all Clashes in a project
  • POST /clashsets — Create a New Clash
  • GET /clashsets/{clashId} — Get Clash Details
  • PATCH /clashsets/{clashId} — Update Clash
  • DELETE /clashsets/{clashId} — Delete a Clash
  • GET /clashsets/{clashId}/items — List All Clash Items
objectlink (6)
  • GET /objectlink — List linked entities for objects
  • POST /objectlink — Create object link
  • POST /objectlink/objectlinks — Bulk create object links
  • GET /objectlink/target — List links for the given target entity
  • PATCH /objectlink/{linkId} — Update object links
  • DELETE /objectlink/{linkId} — Delete an object link
shares (6)
  • GET /shares — List all Shares
  • POST /shares — Create a New Share
  • GET /shares/token/{stoken} — Get Share Details along with public accesstoken.
  • GET /shares/{shareId} — Get Share Details
  • PATCH /shares/{shareId} — Edit Share
  • DELETE /shares/{shareId} — Delete Share
2.1 (5)
  • GET /2.1/folders/by_path — List Items in a Folder by Path
  • GET /2.1/folders/{folderId}/items — List Items in a Folder
  • GET /2.1/projects — List all Projects (v2.1)
  • GET /2.1/projects/{projectId}/files/{fileId}/versions — Get versions of a File
  • GET /2.1/projects/{projectId}/folders/{folderId}/versions — Get versions of a Folder
folders (5)
  • GET /folders/fs/{folderId}/permissions — Get Folder Permissions
  • PATCH /folders/fs/{folderId}/permissions — Update Folder Permissions
  • GET /folders/jobs/{jobId} — Get Folder Deletion Job Status
  • DELETE /folders/{folderId}/delete — Delete Folder
  • GET /folders/{folderId}/versions — Get versions of a Folder
users (5)
  • GET /users/languages — List All Supported Languages
  • GET /users/licenses — List User Licenses
  • GET /users/timezones — List All Available Timezones
  • GET /users/{userId} — Get User Details
  • PATCH /users/{userId} — Update User Details
viewgroups (5)
  • GET /viewgroups — List all View Groups
  • POST /viewgroups — Create a View Group
  • GET /viewgroups/{viewGroupId} — Get View Group Details
  • PATCH /viewgroups/{viewGroupId} — Update View Group Details
  • DELETE /viewgroups/{viewGroupId} — Delete a View Group
todos (3)
  • GET /todos/{todoId}/attachments — List all attachments
  • POST /todos/{todoId}/attachments — Add attachments
  • DELETE /todos/{todoId}/attachments — Remove attachments
search (1)
  • GET /search — List All Search Results

BCF gaps (outside the Core count)

These come from the agent's own skills/topics.md and skills/viewpoints.md. Verify them against Trimble's BCF API definition before building, because those skills were ported, not generated:

  • PUT /bcf/2.1/projects/{projectId}/topics/{topicId}/document_references/{referenceId}: update a document reference
  • GET …/viewpoints/{viewpointId}/bitmap
  • GET …/viewpoints/{viewpointId}/selection: selected components
  • GET …/viewpoints/{viewpointId}/coloring: colored components
  • GET …/viewpoints/{viewpointId}/visibility
  • GET / PUT …/topics/{topicId}/bim_snippet
  • GET /bcf/2.1/projects/{projectId}/topics_events and …/comments_events: change tracking

Proposal / conventions to keep

New commands should follow what #685 to #690 established:

  • Kind of command:
    • Declarative REST for plain reads: the {status, headers, body} envelope, plus a range header input on lists.
    • The runtime handlers (cli/src/runtime/trimble_ops.rs, trimble_bcf.rs, trimble_files.rs) for anything needing camelCase bodies, If-Match, multi-step flows or binary data.
  • Inputs and outputs: kebab-case inputs, and every emitted key declared in the manifest schema. The guard tests in trimble_ops.rs enforce both and must be extended.
  • Writes: mode: write on every write, so --dry-run stubs it.
  • Verification: the source of truth is the API definition, not the ported skills. Run unit tests against a wire mock, a real-CLI E2E, and a live pass on the maintainer's test project ("Take 5"), cleaning up whatever it creates.
  • Runtime gate: the release that ships new handler commands must raise minimum-cli-version and mark them status: requires-runtime, as in the google-workspace 2.2.0 precedent.

Split the work by area: one PR per group, or two or three related groups. Don't build all of it in one change.

Why it matters

FloLess and any other app on AWARE can automate Trimble Connect only as far as the agent exposes it. The current set handles moving files and tracking issues. The gaps above are the next workflows people reach for: check-out and check-in before an edit, releases and transmittals, sharing, tagging, file comments, 3D views and clash sets.

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions