Skip to content

Quickstart

import { OkatanaClient } from '@newfoundcodes/okatana';

const okatana = new OkatanaClient({
  baseUrl: process.env.OKATANA_URL!,
  apiKey: process.env.OKATANA_API_KEY!,
});

const organizationId = process.env.OKATANA_ORGANIZATION_ID!;

const organization = await okatana.organizations.get(organizationId);
console.log(organization.id, organization.name);

const project = await okatana.organizations.createProject(organizationId, {
  name: 'Platform',
  key: 'PLAT',
  description: 'Platform engineering work',
});

const ticket = await okatana.projects.createTicket(project.id, {
  boardSlug: 'open',
  title: 'Design deployment runbook',
  descriptionHtml: '<p>Write and review the first version.</p>',
  priority: 'high',
});

await okatana.tickets.createComment(ticket.id, {
  bodyHtml: '<p>Initial task created by automation.</p>',
});

The public SDK uses camelCase. The transport sends Okatana's wire names such as board_slug, description_html, and body_html.