Projects
Create, list, inspect, and manage projects with @tektona/sdk.
tek.project manages projects within an organization. Methods return the wire
ProjectResponse (id, name, display_name, description, effective_role,
owner, created_at, updated_at); listForUser returns
AccessibleProjectResponse, which adds the org field. The org comes from the
client default or a per-call org.
List
Scoped to an org, returns one Page:
const page = await tek.project.list({ limit: 50 }); // org from client scope
const other = await tek.project.list({ org: 'other-org' }); // per-call override
for await (const p of tek.project.listAll()) console.log(p.name);List across orgs
listForUser ignores scope and returns every project the caller can access
across all their organizations, one Page at a time; listAllForUser auto-pages:
const page = await tek.project.listForUser({ limit: 50 });
page.items.forEach((p) => console.log(`${p.org}/${p.name}`));
for await (const p of tek.project.listAllForUser()) console.log(`${p.org}/${p.name}`);Get
const project = await tek.project.get('web'); // org from client scope
const scoped = await tek.project.get('web', { org: 'acme' });
console.log(project.display_name, project.created_at);Create
const project = await tek.project.create({
name: 'web', // URL-safe name
display_name: 'Web App',
description: 'frontend', // optional
});Update
update replaces the project's mutable fields (PUT semantics):
await tek.project.update('web', {
display_name: 'Web App v2',
});Delete
await tek.project.delete('web'); // idempotent: a missing project resolves cleanlySandbox settings
A project's sandbox settings — its default egress policy and the effective policy
(the project default resolved against the org). Uses the client's default
org/project (or a per-call { org, project }):
const settings = await tek.project.getSandboxSettings();
// { default_policy, effective_policy }
await tek.project.updateSandboxSettings({ default_policy: 'tektona/open' });