Skip to main content

:::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.