Skip to content

OpenAPI contract reference

Title: Okatana External API
Version: 1.0.0
Server path: /api/v1

This page is generated from the exact OpenAPI YAML bundled in resources/openapi.yaml. When the YAML does not define a response schema, this page does not invent one.

GET /organizations/{organization}

Summary: Read organization
Scope: organization:read

Requires organization:read.

Parameters

Name In Required Type Constraints / description
organization path true string

Responses

Status Description Formal JSON schema
200 Organization
401 Invalid credential #/components/schemas/Error
403 Wrong organization or scope

GET /organizations/{organization}/projects

Summary: List projects
Scope: projects:read

Requires projects:read.

Parameters

Name In Required Type Constraints / description
organization path true string

Responses

Status Description Formal JSON schema
200 Project list

POST /organizations/{organization}/projects

Summary: Create project
Scope: projects:write

Requires projects:write.

Parameters

Name In Required Type Constraints / description
organization path true string

JSON request body

Request body required: true.

Field Required Type Constraints
name yes string maxLength=180
key yes string maxLength=12
description no string | null maxLength=5000

Responses

Status Description Formal JSON schema
201 Project created
422 Validation failure

GET /projects/{project}

Summary: Read project
Scope: projects:read

Requires projects:read.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
200 Project inline schema

PATCH /projects/{project}

Summary: Update project
Scope: projects:write

Requires projects:write.

Parameters

Name In Required Type Constraints / description
project path true string

JSON request body

Request body required: true.

Field Required Type Constraints
name no string maxLength=180
description no string | null maxLength=5000
archived no boolean

Responses

Status Description Formal JSON schema
200 Updated project
422 Validation failure

DELETE /projects/{project}

Summary: Soft-delete project
Scope: projects:write

Requires projects:write.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
204 Deleted

GET /projects/{project}/members

Summary: List project members
Scope: projects:read

Requires projects:read. Includes explicit project members and organization owners/admins.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
200 Member list

GET /projects/{project}/labels

Summary: List project labels
Scope: projects:read

Requires projects:read.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
200 Label list

GET /projects/{project}/boards

Summary: List project boards
Scope: boards:read

Requires boards:read.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
200 Board list

POST /projects/{project}/boards

Summary: Create project board
Scope: boards:write

Requires boards:write.

Parameters

Name In Required Type Constraints / description
project path true string

JSON request body

Request body required: true.

Field Required Type Constraints
name yes string maxLength=120
color no string | null maxLength=32
wip_limit no integer | null minimum=1
is_done no boolean

Responses

Status Description Formal JSON schema
201 Board created
422 Validation failure

PUT /projects/{project}/boards/reorder

Summary: Reorder project boards
Scope: boards:write

Requires boards:write.

Parameters

Name In Required Type Constraints / description
project path true string

JSON request body

Request body required: true.

Field Required Type Constraints
board_ids yes array<string>

Responses

Status Description Formal JSON schema
200 Reordered board list
422 Invalid board list

PATCH /boards/{board}

Summary: Update board
Scope: boards:write

Requires boards:write.

Parameters

Name In Required Type Constraints / description
board path true string

JSON request body

Request body required: true.

Field Required Type Constraints
name no string maxLength=120
color no string | null maxLength=32
wip_limit no integer | null minimum=1
is_done no boolean
is_hidden no boolean

Responses

Status Description Formal JSON schema
200 Updated board

DELETE /boards/{board}

Summary: Soft-delete board
Scope: boards:write

Requires boards:write. If tickets exist, move_to_board_id is required.

Parameters

Name In Required Type Constraints / description
board path true string

JSON request body

Request body required: false.

Field Required Type Constraints
move_to_board_id no string

Responses

Status Description Formal JSON schema
204 Deleted
422 Invalid target or WIP limit exceeded

GET /projects/{project}/tickets

Summary: List project tickets
Scope: tickets:read

Requires tickets:read.

Parameters

Name In Required Type Constraints / description
project path true string
board_id query false string
q query false string
per_page query false integer minimum=1; maximum=200; default=50

Responses

Status Description Formal JSON schema
200 Paginated ticket list

POST /projects/{project}/tickets

Summary: Create ticket
Scope: tickets:write

Requires tickets:write. Choose board_id or board_slug. The API credential is recorded as the ticket creator and its name will appear in the UI instead of the user who provisioned it.

Parameters

Name In Required Type Constraints / description
project path true string

JSON request body

Request body required: true.

Field Required Type Constraints
board_id no string
board_slug no string
title yes string maxLength=500
description_html no string | null maxLength=200000
priority no string enum=lowest, low, normal, high, highest, critical
due_at no string | null format=date-time
assignee_ids no array<string>
label_ids no array<string>

Responses

Status Description Formal JSON schema
201 Ticket created
422 Validation, relation, or WIP-limit failure

PUT /projects/{project}/tickets/reorder

Summary: Reorder tickets inside a board
Scope: tickets:write

Requires tickets:write.

Parameters

Name In Required Type Constraints / description
project path true string

JSON request body

Request body required: true.

Field Required Type Constraints
board_id yes string
ticket_ids yes array<string>

Responses

Status Description Formal JSON schema
204 Reordered
422 Invalid ticket list

GET /projects/{project}/analytics

Summary: Read project analytics
Scope: analytics:read

Requires analytics:read.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
200 Project analytics

GET /tickets/{ticket}

Summary: Read ticket
Scope: tickets:read

Requires tickets:read.

Parameters

Name In Required Type Constraints / description
ticket path true string

Responses

Status Description Formal JSON schema
200 Ticket detail

PATCH /tickets/{ticket}

Summary: Update ticket
Scope: tickets:write

Requires tickets:write.

Parameters

Name In Required Type Constraints / description
ticket path true string

JSON request body

Request body required: true.

Field Required Type Constraints
title no string maxLength=500
description_html no string | null maxLength=200000
priority no string enum=lowest, low, normal, high, highest, critical
due_at no string | null format=date-time
assignee_ids no array<string>
label_ids no array<string>
archived no boolean

Responses

Status Description Formal JSON schema
200 Updated ticket

DELETE /tickets/{ticket}

Summary: Soft-delete ticket
Scope: tickets:write

Requires tickets:write.

Parameters

Name In Required Type Constraints / description
ticket path true string

Responses

Status Description Formal JSON schema
204 Deleted

POST /tickets/{ticket}/move

Summary: Move a ticket to another board
Scope: tickets:write

Requires tickets:write.

Parameters

Name In Required Type Constraints / description
ticket path true string

JSON request body

Request body required: true.

Field Required Type Constraints
board_id yes string
position no integer minimum=0

Responses

Status Description Formal JSON schema
200 Moved ticket
422 Invalid board or WIP limit reached

POST /tickets/{ticket}/comments

Summary: Create ticket comment
Scope: comments:write

Requires comments:write.

Parameters

Name In Required Type Constraints / description
ticket path true string

JSON request body

Request body required: true.

Field Required Type Constraints
body_html yes string maxLength=200000

Responses

Status Description Formal JSON schema
201 Comment created

GET /organizations/{organization}/documents

Summary: List organization documents
Scope: documents:read

Requires documents:read. Supports optional project, status, search, tag, and pagination filters.

Parameters

Name In Required Type Constraints / description
organization path true string
project_id query false string
status query false string enum=draft, published
q query false string
tags query false string Comma-separated tag names. Multiple names use match-all filtering.
per_page query false integer minimum=1; maximum=200; default=50

Responses

Status Description Formal JSON schema
200 Paginated document list

POST /organizations/{organization}/documents

Summary: Create document
Scope: documents:write

Requires documents:write. The API credential is recorded as the document author and its name will appear in the UI instead of the user who provisioned it.

Parameters

Name In Required Type Constraints / description
organization path true string

JSON request body

Request body required: true.

Field Required Type Constraints
project_id no string | null
title yes string maxLength=500
caption no string | null maxLength=2000
content_html no string | null maxLength=1000000
status no string default=draft; enum=draft, published
editor_ids no array<string> maxItems=100
tag_names no array<string> maxItems=20; item maxLength=50

Responses

Status Description Formal JSON schema
201 Document created inline schema
422 Validation failure

GET /documents/{document}

Summary: Read document
Scope: documents:read

Requires documents:read.

Parameters

Name In Required Type Constraints / description
document path true string

Responses

Status Description Formal JSON schema
200 Document detail inline schema

PATCH /documents/{document}

Summary: Update document
Scope: documents:write

Requires documents:write. Can update publication state, archive state, project scope, content, and editor membership.

Parameters

Name In Required Type Constraints / description
document path true string

JSON request body

Request body required: true.

Field Required Type Constraints
project_id no string | null
title no string maxLength=500
caption no string | null maxLength=2000
content_html no string | null maxLength=1000000
status no string enum=draft, published
archived no boolean
editor_ids no array<string> maxItems=100
tag_names no array<string> maxItems=20; item maxLength=50

Responses

Status Description Formal JSON schema
200 Document updated
422 Validation failure

DELETE /documents/{document}

Summary: Soft-delete document
Scope: documents:write

Requires documents:write.

Parameters

Name In Required Type Constraints / description
document path true string

Responses

Status Description Formal JSON schema
204 Document soft-deleted

POST /documents/{document}/comments

Summary: Create document comment
Scope: document_comments:write

Requires document_comments:write.

Parameters

Name In Required Type Constraints / description
document path true string

JSON request body

Request body required: true.

Field Required Type Constraints
body_html yes string maxLength=200000

Responses

Status Description Formal JSON schema
201 Comment created
422 Validation failure

POST /organizations/{organization}/notifications

Summary: Send organization notifications
Scope: notifications:write

Requires notifications:write. Recipients must belong to the credential organization.

Parameters

Name In Required Type Constraints / description
organization path true string

JSON request body

Request body required: true.

Field Required Type Constraints
user_ids yes array<string> minItems=1; maxItems=100
title yes string maxLength=180
body yes string maxLength=2000
url no string | null Internal /app path only

Responses

Status Description Formal JSON schema
201 Notifications queued/sent
422 Invalid recipient or URL

GET /projects/{project}/tags

Summary: List used project tags
Scope: projects:read

Requires projects:read. Returns tags currently assigned to at least one ticket.

Parameters

Name In Required Type Constraints / description
project path true string

Responses

Status Description Formal JSON schema
200 Used project tags with ticket counts