Skip to main content
Version: 2026.09

Connected resources (V3Client)

A connected Resource is a link to data in a third-party app. You connect it by uploading a metadata pointer file with V3Client. The platform stores the pointer; the engineering bytes stay in the third-party app until an agent fetches them for a job.

Use V3Client to connect Resources and manage revisions. Use Client to run jobs — resource ids are shared between both clients. This page follows the same order as the Client version: connect, run jobs, then revise.

For upload vs connect, metadata extensions, credentials, and Windchill pointer details, see Connected resources (Client). An administrator connects each third-party app once before its data can be reached — see App Integrations.

Prerequisites​

Connect a third-party Resource​

  1. Create a JSON metadata pointer file (see Metadata extensions).
  2. Call v3.create_resource(path=..., resource_type="model") (or "artifact" / "file" when the pointer is that type). ResourceTypeDto also includes connected_container and connected_resource for content the platform observes at a connected source.

The path is the same metadata file you would pass to client.add_model(path=...).

Both clients take the same Configuration. Create it once as shown in Setup → Initialize the client, then build both from it — the examples below assume client and v3:

from istari_digital_client import Client, V3Client

client = Client(config) # runs jobs
v3 = V3Client(config) # connects Resources and manages revisions

Example: Teamwork Cloud (Cameo)​

Save a metadata pointer file (for example my_project.istari_teamwork_cloud_metadata_mdzip). Either shape below works:

By project name, branch, and version:

{
"project_name": "Istari_UAVOne(notional)",
"branch_name": "trunk",
"version": "11"
}

By identifier URI:

{
"identifier": "mdel://ANY?projectID=twcloud:/cf16d07a-9a9f-43dd-8ad9-bee73d9e2581/9903a418-e792-4a69-9add-dc01fe2f57de&serverType=esiserver&serverName=10.30.102.103&projectName=Istari_UAVOne(notional)&elementName=ANY_NAME"
}

Connect it:

resource = v3.create_resource(
path="my_project.istari_teamwork_cloud_metadata_mdzip",
resource_type="model",
display_name="TWC — Systems model",
description="Connected Teamwork Cloud project",
)
print(resource.resource_id)

Example: Windchill (via Creo module)​

Save input.istari_windchill_metadata with the oid from the Windchill URL — see Connected resources (Client).

resource = v3.create_resource(
path="input.istari_windchill_metadata",
resource_type="model",
display_name="Windchill CAD",
)

Run jobs on a third-party Resource​

V3Client does not run functions. Pass resource.resource_id as model_id on Client.add_job, and bind a stored credential with auth_bindings when the function declares an authentication input:

from istari_digital_client import NewCredentialBinding

twc_credential = next(
c for c in client.list_credentials() if c.name == "My Teamwork Cloud account"
)

job = client.add_job(
model_id=resource.resource_id,
function="@istari:twc_extract",
tool_name="dassault_cameo",
tool_version="2022x Refresh2",
operating_system="Windows 11",
auth_bindings=[
NewCredentialBinding(
input_name="twc_auth_login",
credential_id=twc_credential.id,
)
],
)

The credential model is the same as on Client — see Run jobs on a third-party Resource. Poll and read outputs with get_job, get_model, and the artifact helpers — see Jobs and Use both clients together.

Revise a third-party Resource​

When the link points somewhere new, upload an updated metadata file. The resource id stays the same:

revision = v3.create_resource_revision(
resource_id=resource.resource_id,
path="my_project_v2.istari_teamwork_cloud_metadata_mdzip",
version_name="link-2026-04",
description="Point at TWC version 12",
)

This matches client.update_model(model_id=..., path=...) on Client.

To inspect what is there now — including the revision the platform imported after a job that wrote back to the third-party app:

page = v3.list_resources(type_name=["model"])
resource = v3.get_resource(resource_id=resource.resource_id)

for rev in v3.list_resource_revisions(resource_id=resource.resource_id).items:
print(rev.file_revision_id, rev.version_name, rev.name, rev.created)