KosmoKrator

product-management

Productboard Lua API for KosmoKrator Agents

Agent-facing Lua documentation and function reference for the Productboard KosmoKrator integration.

8 functions 6 read 2 write Bearer token auth

Lua Namespace

Agents call this integration through app.integrations.productboard.*. Use lua_read_doc("integrations.productboard") inside KosmoKrator to discover the same reference at runtime.

Agent-Facing Lua Docs

This is the rendered version of the full Lua documentation exposed to agents when they inspect the integration namespace.

Productboard — Lua API Reference

list_features

List features from Productboard with cursor-based pagination.

Parameters

NameTypeRequiredDescription
pageSizeintegernoNumber of features per page (max 100, default 100)
cursorstringnoPagination cursor from a previous response

Examples

-- List all features
local result = app.integrations.productboard.list_features({})

for _, feature in ipairs(result.data or {}) do
  print(feature.name .. " — " .. (feature.status or "no status"))
end

-- Paginate through results
local cursor = nil
repeat
  local result = app.integrations.productboard.list_features({
    pageSize = 50,
    cursor = cursor,
  })

  for _, feature in ipairs(result.data or {}) do
    print(feature.id .. ": " .. feature.name)
  end

  cursor = result.meta and result.meta.next_cursor or nil
until not cursor

get_feature

Get detailed information about a specific feature.

Parameters

NameTypeRequiredDescription
idstringyesThe feature ID

Examples

local result = app.integrations.productboard.get_feature({ id = "feature_abc123" })
local feature = result.data

print("Name: " .. feature.name)
print("Status: " .. (feature.status or "none"))
print("Description: " .. (feature.description or "no description"))

create_feature

Create a new feature in Productboard.

Parameters

NameTypeRequiredDescription
namestringyesThe feature name
descriptionstringnoDetailed description of the feature
product_idstringnoID of the product to assign this feature to
statusstringnoFeature status (e.g., “in_discovery”, “in_design”, “in_development”, “shipped”)
owner_idsarraynoArray of user IDs to assign as feature owners

Examples

-- Create a simple feature
local result = app.integrations.productboard.create_feature({
  name = "Dark Mode Support",
  description = "Add a dark mode theme option for the application",
})

print("Created feature: " .. result.data.id)

-- Create a feature with product and status
local result = app.integrations.productboard.create_feature({
  name = "API Rate Limiting",
  description = "Implement rate limiting on public API endpoints",
  product_id = "product_xyz789",
  status = "in_discovery",
})

list_notes

List notes (customer feedback) from Productboard.

Parameters

NameTypeRequiredDescription
pageSizeintegernoNumber of notes per page (max 100, default 100)
cursorstringnoPagination cursor from a previous response

Examples

-- List recent notes
local result = app.integrations.productboard.list_notes({
  pageSize = 20,
})

for _, note in ipairs(result.data or {}) do
  print(note.title .. " by " .. (note.owner and note.owner.name or "unknown"))
end

create_note

Create a new note (customer feedback) in Productboard.

Parameters

NameTypeRequiredDescription
titlestringyesThe note title
contentstringnoThe note content (plain text or HTML)
owner_idstringnoUser ID of the note owner
feature_idsarraynoArray of feature IDs to link this note to
company_idsarraynoArray of company IDs associated with this note

Examples

-- Create a feedback note
local result = app.integrations.productboard.create_note({
  title = "Customer Request: Bulk Export",
  content = "Enterprise customer needs bulk export functionality for monthly reporting",
  feature_ids = { "feature_abc123" },
  company_ids = { "company_def456" },
})

print("Created note: " .. result.data.id)

list_products

List products from Productboard.

Parameters

NameTypeRequiredDescription
pageSizeintegernoNumber of products per page (max 100, default 100)
cursorstringnoPagination cursor from a previous response

Examples

local result = app.integrations.productboard.list_products({})

for _, product in ipairs(result.data or {}) do
  print(product.id .. ": " .. product.name)
end

list_companies

List companies from Productboard.

Parameters

NameTypeRequiredDescription
pageSizeintegernoNumber of companies per page (max 100, default 100)
cursorstringnoPagination cursor from a previous response

Examples

local result = app.integrations.productboard.list_companies({})

for _, company in ipairs(result.data or {}) do
  print(company.id .. ": " .. company.name .. " (" .. (company.domain or "no domain") .. ")")
end

get_current_user

Get the currently authenticated Productboard user profile.

Parameters

None.

Examples

local result = app.integrations.productboard.get_current_user({})

print("Authenticated as: " .. result.data.firstName .. " " .. result.data.lastName)
print("Email: " .. result.data.email)

Multi-Account Usage

If you have multiple Productboard workspaces configured, use account-specific namespaces:

-- Default account (always works)
app.integrations.productboard.list_features({})

-- Explicit default (portable across setups)
app.integrations.productboard.default.list_features({})

-- Named accounts
app.integrations.productboard.workspace_a.list_features({})
app.integrations.productboard.workspace_b.list_features({})

All functions are identical across accounts — only the credentials differ.

Raw agent markdown
# Productboard — Lua API Reference

## list_features

List features from Productboard with cursor-based pagination.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Number of features per page (max 100, default 100) |
| `cursor` | string | no | Pagination cursor from a previous response |

### Examples

```lua
-- List all features
local result = app.integrations.productboard.list_features({})

for _, feature in ipairs(result.data or {}) do
  print(feature.name .. " — " .. (feature.status or "no status"))
end

-- Paginate through results
local cursor = nil
repeat
  local result = app.integrations.productboard.list_features({
    pageSize = 50,
    cursor = cursor,
  })

  for _, feature in ipairs(result.data or {}) do
    print(feature.id .. ": " .. feature.name)
  end

  cursor = result.meta and result.meta.next_cursor or nil
until not cursor
```

---

## get_feature

Get detailed information about a specific feature.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | The feature ID |

### Examples

```lua
local result = app.integrations.productboard.get_feature({ id = "feature_abc123" })
local feature = result.data

print("Name: " .. feature.name)
print("Status: " .. (feature.status or "none"))
print("Description: " .. (feature.description or "no description"))
```

---

## create_feature

Create a new feature in Productboard.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | string | yes | The feature name |
| `description` | string | no | Detailed description of the feature |
| `product_id` | string | no | ID of the product to assign this feature to |
| `status` | string | no | Feature status (e.g., "in_discovery", "in_design", "in_development", "shipped") |
| `owner_ids` | array | no | Array of user IDs to assign as feature owners |

### Examples

```lua
-- Create a simple feature
local result = app.integrations.productboard.create_feature({
  name = "Dark Mode Support",
  description = "Add a dark mode theme option for the application",
})

print("Created feature: " .. result.data.id)

-- Create a feature with product and status
local result = app.integrations.productboard.create_feature({
  name = "API Rate Limiting",
  description = "Implement rate limiting on public API endpoints",
  product_id = "product_xyz789",
  status = "in_discovery",
})
```

---

## list_notes

List notes (customer feedback) from Productboard.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Number of notes per page (max 100, default 100) |
| `cursor` | string | no | Pagination cursor from a previous response |

### Examples

```lua
-- List recent notes
local result = app.integrations.productboard.list_notes({
  pageSize = 20,
})

for _, note in ipairs(result.data or {}) do
  print(note.title .. " by " .. (note.owner and note.owner.name or "unknown"))
end
```

---

## create_note

Create a new note (customer feedback) in Productboard.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `title` | string | yes | The note title |
| `content` | string | no | The note content (plain text or HTML) |
| `owner_id` | string | no | User ID of the note owner |
| `feature_ids` | array | no | Array of feature IDs to link this note to |
| `company_ids` | array | no | Array of company IDs associated with this note |

### Examples

```lua
-- Create a feedback note
local result = app.integrations.productboard.create_note({
  title = "Customer Request: Bulk Export",
  content = "Enterprise customer needs bulk export functionality for monthly reporting",
  feature_ids = { "feature_abc123" },
  company_ids = { "company_def456" },
})

print("Created note: " .. result.data.id)
```

---

## list_products

List products from Productboard.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Number of products per page (max 100, default 100) |
| `cursor` | string | no | Pagination cursor from a previous response |

### Examples

```lua
local result = app.integrations.productboard.list_products({})

for _, product in ipairs(result.data or {}) do
  print(product.id .. ": " .. product.name)
end
```

---

## list_companies

List companies from Productboard.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageSize` | integer | no | Number of companies per page (max 100, default 100) |
| `cursor` | string | no | Pagination cursor from a previous response |

### Examples

```lua
local result = app.integrations.productboard.list_companies({})

for _, company in ipairs(result.data or {}) do
  print(company.id .. ": " .. company.name .. " (" .. (company.domain or "no domain") .. ")")
end
```

---

## get_current_user

Get the currently authenticated Productboard user profile.

### Parameters

None.

### Examples

```lua
local result = app.integrations.productboard.get_current_user({})

print("Authenticated as: " .. result.data.firstName .. " " .. result.data.lastName)
print("Email: " .. result.data.email)
```

---

## Multi-Account Usage

If you have multiple Productboard workspaces configured, use account-specific namespaces:

```lua
-- Default account (always works)
app.integrations.productboard.list_features({})

-- Explicit default (portable across setups)
app.integrations.productboard.default.list_features({})

-- Named accounts
app.integrations.productboard.workspace_a.list_features({})
app.integrations.productboard.workspace_b.list_features({})
```

All functions are identical across accounts — only the credentials differ.

Metadata-Derived Lua Example

local result = app.integrations.productboard.productboard_list_features({
  pageSize = 1,
  cursor = "example_cursor"
})
print(result)

Functions

productboard_list_features

List features from Productboard. Returns feature names, statuses, descriptions, and product assignments. Supports cursor-based pagination.

Operation
Read read
Full name
productboard.productboard_list_features
ParameterTypeRequiredDescription
pageSize integer no Number of features per page (max 100, default 100).
cursor string no Pagination cursor from a previous response to fetch the next page.

productboard_get_feature

Get detailed information about a specific Productboard feature by its ID.

Operation
Read read
Full name
productboard.productboard_get_feature
ParameterTypeRequiredDescription
id string yes The feature ID.

productboard_create_feature

Create a new feature in Productboard. Requires at minimum a name. Optionally set description, product, status, and owner.

Operation
Write write
Full name
productboard.productboard_create_feature
ParameterTypeRequiredDescription
name string yes The feature name.
description string no Detailed description of the feature.
product_id string no ID of the product to assign this feature to.
status string no Feature status (e.g., "in_discovery", "in_design", "in_development", "shipped"). Must match a status configured in your Productboard workspace.
owner_ids array no Array of user IDs to assign as feature owners.

productboard_list_notes

List notes (customer feedback) from Productboard. Returns note titles, content, authors, and linked features. Supports cursor-based pagination.

Operation
Read read
Full name
productboard.productboard_list_notes
ParameterTypeRequiredDescription
pageSize integer no Number of notes per page (max 100, default 100).
cursor string no Pagination cursor from a previous response to fetch the next page.

productboard_create_note

Create a new note (customer feedback) in Productboard. Requires at minimum a title. Optionally set content, owner, and linked features.

Operation
Write write
Full name
productboard.productboard_create_note
ParameterTypeRequiredDescription
title string yes The note title.
content string no The note content (plain text or HTML).
owner_id string no User ID of the note owner.
feature_ids array no Array of feature IDs to link this note to.
company_ids array no Array of company IDs associated with this note.

productboard_list_products

List products from Productboard. Returns product names, descriptions, and IDs. Supports cursor-based pagination.

Operation
Read read
Full name
productboard.productboard_list_products
ParameterTypeRequiredDescription
pageSize integer no Number of products per page (max 100, default 100).
cursor string no Pagination cursor from a previous response to fetch the next page.

productboard_list_companies

List companies from Productboard. Returns company names, domains, and IDs. Supports cursor-based pagination.

Operation
Read read
Full name
productboard.productboard_list_companies
ParameterTypeRequiredDescription
pageSize integer no Number of companies per page (max 100, default 100).
cursor string no Pagination cursor from a previous response to fetch the next page.

productboard_get_current_user

Get the currently authenticated Productboard user profile. Returns name, email, and role. Useful for verifying API connectivity.

Operation
Read read
Full name
productboard.productboard_get_current_user
ParameterTypeRequiredDescription
No parameters.