entityType'ENTITY_TYPE_UNSPECIFIED' | 'ENTITY_TYPE_RUN' | 'ENTITY_TYPE_ANNOTATION' | 'ENTITY_TYPE_ASSET' | 'ENTITY_TYPE_ANNOTATION_LOG' | 'ENTITY_TYPE_TEST_REPORT' | 'ENTITY_TYPE_TEST_STEP' | 'ENTITY_TYPE_CANVAS_VERSION' | 'ENTITY_TYPE_CANVAS_CELL_EXECUTION_ATTACHMENT' | 'ENTITY_TYPE_CANVAS_CELL_EXECUTION_OUTPUT' | 'ENTITY_TYPE_ARTIFACT_VERSION' | 'ENTITY_TYPE_CHAT_CONVERSATION' required
- ENTITY_TYPE_CANVAS_CELL_EXECUTION_ATTACHMENT: UI evidence files attached to a cell execution on a canvas report.
- ENTITY_TYPE_CANVAS_CELL_EXECUTION_OUTPUT: Reserved for a future cell-output upload path (not used by the report
attachment UI).
- ENTITY_TYPE_ARTIFACT_VERSION: Bytes of one artifact version (sift.artifacts.v1.ArtifactService);
entity_id is the artifact_version_id.
- ENTITY_TYPE_CHAT_CONVERSATION: A file the user attached to an agent conversation
(sift_internal.chat.v1.ChatService); entity_id is the conversation_id.
Python code attached to a canvas version so cell code can import it;
entity_id is the canvas_version_id. Separate from
ENTITY_TYPE_CANVAS_VERSION, which holds the canvas's data attachments, so
that listing either one never returns the other.
Python code uploaded for a canvas but not yet attached to any version;
entity_id is the canvas_id. UpdateCanvasDraft turns one of these into an
ENTITY_TYPE_CANVAS_DEPENDENCY row on the version it mints, so an upload on
its own never changes what an existing version runs.