:::note Generated reference Generated from honeyframeapi 0.1.8 — do not edit by hand. :::
honeyframeapi.bundle
Project-bundle handle — versioned snapshots over export/import.
b = project.create_bundle(label="release candidate")
project.list_bundles() # [{version, label, counts, ...}]
b.download("/tmp/proj_v1.hsproj.zip")
b.activate(target_name="Production", target_slug="production")
Create, list, download, push and activate bundle versions of a project, and drive their deployment sign-off. Activation clones the bundle into a NEW target project (the templating path) — connectors are matched against the target org, not bundled. Downloads are written owner-only (0600).
class Bundle
Bundle.download()
download(to) -> str
Download the stored .hsproj.zip to local path to.
Bundle.activate()
activate(*, target_name: str, target_slug: str, target_org_id: Optional[int] = None) -> dict
Clone this bundle version into a new target project. Returns
{target_project_id, counts, connector_mappings, warnings}.
Bundle.push()
push(*, node_id: int, target_name: str, target_slug: str, target_org_id: Optional[int] = None) -> dict
Phase B — push this bundle version to a registered remote install's
/api/projects/import (the test-ECS → prod-ECS promote boundary).
Returns {node_id, remote_project_id, counts, warnings}; a remote
{missing_connectors} raises HTTPError with that detail.
Register the node first with client.register_node(...).
Bundle.deploy()
deploy(*, target_project_id: int) -> dict
Blue-green deploy / rollback: replace an EXISTING project's contents
with this bundle version. The target keeps its slug + name; the prior
contents are soft-archived (recoverable). Use this to update an
already-deployed project (e.g. push master v2 onto a regional project)
or to roll a project back to a prior version. Returns
{deployed_project_id, archived_project_id, slug, counts, warnings}.
Note: the project's id changes (blue-green); its slug does not.
Bundle.governance_status()
governance_status() -> dict
Deployment gate for this bundle version — {status, blocking, detail}: whether sign-off or checks block a deploy right now.
Bundle.request_signoff()
request_signoff(*, note: str = '', feedback_givers: Optional[list] = None, approver_user_id: Optional[int] = None) -> dict
Start a sign-off. → waiting_for_feedback when feedback_givers
(user ids) are named, else straight to waiting_for_approval.
approver_user_id names the single Final-Approval slot (None = any
org.admin). Re-startable from any state (e.g. after a rejection). Needs
org admin.
Bundle.submit_feedback()
submit_feedback(*, verdict: str = 'comment', note: str = '') -> dict
A feedback-giver's non-gating input (Govern's Feedback slot).
verdict ∈ approve | reject | comment. Recorded in the audit trail;
does NOT change the sign-off status.
Bundle.submit_for_approval()
submit_for_approval(*, note: str = '') -> dict
Advance a feedback cycle to final approval
(waiting_for_feedback → waiting_for_approval). Needs org admin.
Bundle.approve()
approve(*, note: str = '') -> dict
Final approval — the gate. org.admin or the named approver only.
Bundle.reject()
reject(*, note: str = '') -> dict
Final rejection. org.admin or the named approver only. The version can be re-requested afterward.
Bundle.abandon()
abandon(*, note: str = '') -> dict
Abandon an in-flight sign-off (Govern's ABANDONED). org.admin only.
Verified against honeyframeapi 0.1.8.