Skip to content

OrganizationsApi

Access through client.Organizations.

Read organization

Task<Organization> GetAsync(
    string organizationId,
    OkatanaRequestOptions? options = null,
    CancellationToken cancellationToken = default)

Route: GET /organizations/{organization}. Scope: organization:read.

List projects

Task<IReadOnlyList<Project>> ListProjectsAsync(string organizationId, ...)

Route: GET /organizations/{organization}/projects. Scope: projects:read. This collection is not paginated by the current contract.

Create project

Task<Project> CreateProjectAsync(
    string organizationId,
    CreateProjectRequest request, ...)

Route: POST /organizations/{organization}/projects. Scope: projects:write.

var project = await client.Organizations.CreateProjectAsync(orgId,
    new CreateProjectRequest
    {
        Name = "Platform",
        Key = "PLAT",
        Description = "Platform engineering"
    });

Name is limited to 180 characters; Key to 12; Description to 5000 when supplied.

List documents

Task<OkatanaPage<Document>> ListDocumentsAsync(
    string organizationId,
    ListDocumentsOptions? filters = null, ...)

Route: GET /organizations/{organization}/documents. Scope: documents:read. Filters include project, status, search query, match-all tag names, and page size 1–200.

EnumerateDocumentsAsync(...) follows all pages as IAsyncEnumerable<Document>.

Create document

Task<Document> CreateDocumentAsync(string organizationId, CreateDocumentRequest request, ...)

Route: POST /organizations/{organization}/documents. Scope: documents:write. The request supports project scope, title, caption, HTML content, draft/published status, editor IDs, and tag names.

Send notifications

Task<NotificationBatchResult> SendNotificationsAsync(
    string organizationId,
    SendNotificationRequest request, ...)

Route: POST /organizations/{organization}/notifications. Scope: notifications:write.

The request requires 1–100 organization user IDs, a title up to 180 characters, and body up to 2000 characters. Optional URLs must be internal /app paths or null.