KosmoKrator

productivity

GoTo Webinar Lua API for KosmoKrator Agents

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

Lua Namespace

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

Call Lua from the Headless CLI

Use kosmo integrations:lua when a shell script, CI job, cron job, or another coding CLI should run a deterministic GoTo Webinar workflow without starting an interactive agent session.

Inline Lua call
kosmo integrations:lua --eval 'dump(app.integrations.goto_webinar.list({page = 1, size = 1, status = "example_status"}))' --json
Read Lua docs headlessly
kosmo integrations:lua --eval 'print(docs.read("goto-webinar"))' --json
kosmo integrations:lua --eval 'print(docs.read("goto-webinar.list"))' --json

Workflow file

Put repeatable logic in a Lua file, then execute it with JSON output for the calling process.

workflow.lua
local goto_webinar = app.integrations.goto_webinar
local result = goto_webinar.list({page = 1, size = 1, status = "example_status"})

dump(result)
Run the workflow
kosmo integrations:lua workflow.lua --json
kosmo integrations:lua workflow.lua --force --json
Namespace note. integrations:lua exposes app.integrations.goto_webinar, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.goto_webinar.default.* or app.integrations.goto_webinar.work.* when you configured named credential accounts.

MCP-only Lua

If the script only needs configured MCP servers and does not need GoTo Webinar, use the narrower mcp:lua command.

MCP Lua command
# Use mcp:lua for MCP-only scripts; use integrations:lua for this integration namespace.
kosmo mcp:lua --eval 'dump(mcp.servers())' --json

Agent-Facing Lua Docs

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

GoTo Webinar — Lua API Reference

list_webinars

List webinars from GoTo Webinar.

Parameters

NameTypeRequiredDescription
pageintegernoPage number (0-based, default: 0)
sizeintegernoPage size (default: 20, max: 200)
statusstringnoFilter: "ACTIVE", "IN_SESSION", "ENDED", "CANCELED"

Examples

-- List all upcoming webinars
local result = app.integrations["goto-webinar"].list_webinars({
  status = "ACTIVE"
})

for _, webinar in ipairs(result._embedded.webinars or {}) do
  print(webinar.subject .. " (" .. webinar.webinarKey .. ")")
end

-- Paginate through past webinars
local result = app.integrations["goto-webinar"].list_webinars({
  status = "ENDED",
  page = 0,
  size = 50
})

get_webinar

Get details of a specific webinar.

Parameters

NameTypeRequiredDescription
idstringyesThe webinar key

Example

local result = app.integrations["goto-webinar"].get_webinar({
  id = "1234567890"
})
print(result.subject)
print(result.description)

create_webinar

Schedule a new webinar.

Parameters

NameTypeRequiredDescription
subjectstringyesWebinar title
timesarrayyesTime slots with startTime and endTime (ISO 8601)
descriptionstringnoWebinar description

Time Slot Format

Each time slot must include:

{
  "startTime": "2026-04-10T15:00:00Z",
  "endTime": "2026-04-10T16:00:00Z"
}

For recurring webinars, pass multiple time slots.

Example

local result = app.integrations["goto-webinar"].create_webinar({
  subject = "Q2 Product Demo",
  times = {
    {
      startTime = "2026-04-15T14:00:00Z",
      endTime = "2026-04-15T15:00:00Z"
    }
  },
  description = "Join us for a live demo of our latest features."
})
print("Created webinar: " .. result.webinarKey)

list_sessions

List sessions for a specific webinar.

Parameters

NameTypeRequiredDescription
webinar_idstringyesThe webinar key
pageintegernoPage number (0-based, default: 0)
sizeintegernoPage size (default: 20)

Example

local result = app.integrations["goto-webinar"].list_sessions({
  webinar_id = "1234567890"
})
for _, session in ipairs(result._embedded.sessions or {}) do
  print(session.sessionKey .. ": " .. session.startTime)
end

get_session

Get details of a specific session.

Parameters

NameTypeRequiredDescription
webinar_idstringyesThe webinar key
idstringyesThe session key

Example

local result = app.integrations["goto-webinar"].get_session({
  webinar_id = "1234567890",
  id = "9876543210"
})
print("Attendees: " .. result.attendees)
print("Duration (seconds): " .. result.duration)

list_panelists

List panelists for a specific webinar.

Parameters

NameTypeRequiredDescription
webinar_idstringyesThe webinar key
pageintegernoPage number (0-based, default: 0)
sizeintegernoPage size (default: 20)

Example

local result = app.integrations["goto-webinar"].list_panelists({
  webinar_id = "1234567890"
})
for _, panelist in ipairs(result._embedded.panelists or {}) do
  print(panelist.name .. " <" .. panelist.email .. ">")
end

get_current_user

Get the authenticated user’s profile.

Parameters

None.

Example

local result = app.integrations["goto-webinar"].get_current_user({})
print(result.firstName .. " " .. result.lastName)
print("Email: " .. result.email)
print("Account key: " .. result.accountKey)

Multi-Account Usage

If you have multiple GoTo Webinar accounts configured, use account-specific namespaces:

-- Default account (always works)
app.integrations["goto-webinar"].function_name({...})

-- Explicit default (portable across setups)
app.integrations["goto-webinar"].default.function_name({...})

-- Named accounts
app.integrations["goto-webinar"].marketing.function_name({...})
app.integrations["goto-webinar"].sales.function_name({...})

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

Raw agent markdown
# GoTo Webinar — Lua API Reference

## list_webinars

List webinars from GoTo Webinar.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `page` | integer | no | Page number (0-based, default: 0) |
| `size` | integer | no | Page size (default: 20, max: 200) |
| `status` | string | no | Filter: `"ACTIVE"`, `"IN_SESSION"`, `"ENDED"`, `"CANCELED"` |

### Examples

```lua
-- List all upcoming webinars
local result = app.integrations["goto-webinar"].list_webinars({
  status = "ACTIVE"
})

for _, webinar in ipairs(result._embedded.webinars or {}) do
  print(webinar.subject .. " (" .. webinar.webinarKey .. ")")
end

-- Paginate through past webinars
local result = app.integrations["goto-webinar"].list_webinars({
  status = "ENDED",
  page = 0,
  size = 50
})
```

---

## get_webinar

Get details of a specific webinar.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `id` | string | yes | The webinar key |

### Example

```lua
local result = app.integrations["goto-webinar"].get_webinar({
  id = "1234567890"
})
print(result.subject)
print(result.description)
```

---

## create_webinar

Schedule a new webinar.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `subject` | string | yes | Webinar title |
| `times` | array | yes | Time slots with `startTime` and `endTime` (ISO 8601) |
| `description` | string | no | Webinar description |

### Time Slot Format

Each time slot must include:

```json
{
  "startTime": "2026-04-10T15:00:00Z",
  "endTime": "2026-04-10T16:00:00Z"
}
```

For recurring webinars, pass multiple time slots.

### Example

```lua
local result = app.integrations["goto-webinar"].create_webinar({
  subject = "Q2 Product Demo",
  times = {
    {
      startTime = "2026-04-15T14:00:00Z",
      endTime = "2026-04-15T15:00:00Z"
    }
  },
  description = "Join us for a live demo of our latest features."
})
print("Created webinar: " .. result.webinarKey)
```

---

## list_sessions

List sessions for a specific webinar.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `webinar_id` | string | yes | The webinar key |
| `page` | integer | no | Page number (0-based, default: 0) |
| `size` | integer | no | Page size (default: 20) |

### Example

```lua
local result = app.integrations["goto-webinar"].list_sessions({
  webinar_id = "1234567890"
})
for _, session in ipairs(result._embedded.sessions or {}) do
  print(session.sessionKey .. ": " .. session.startTime)
end
```

---

## get_session

Get details of a specific session.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `webinar_id` | string | yes | The webinar key |
| `id` | string | yes | The session key |

### Example

```lua
local result = app.integrations["goto-webinar"].get_session({
  webinar_id = "1234567890",
  id = "9876543210"
})
print("Attendees: " .. result.attendees)
print("Duration (seconds): " .. result.duration)
```

---

## list_panelists

List panelists for a specific webinar.

### Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `webinar_id` | string | yes | The webinar key |
| `page` | integer | no | Page number (0-based, default: 0) |
| `size` | integer | no | Page size (default: 20) |

### Example

```lua
local result = app.integrations["goto-webinar"].list_panelists({
  webinar_id = "1234567890"
})
for _, panelist in ipairs(result._embedded.panelists or {}) do
  print(panelist.name .. " <" .. panelist.email .. ">")
end
```

---

## get_current_user

Get the authenticated user's profile.

### Parameters

None.

### Example

```lua
local result = app.integrations["goto-webinar"].get_current_user({})
print(result.firstName .. " " .. result.lastName)
print("Email: " .. result.email)
print("Account key: " .. result.accountKey)
```

---

## Multi-Account Usage

If you have multiple GoTo Webinar accounts configured, use account-specific namespaces:

```lua
-- Default account (always works)
app.integrations["goto-webinar"].function_name({...})

-- Explicit default (portable across setups)
app.integrations["goto-webinar"].default.function_name({...})

-- Named accounts
app.integrations["goto-webinar"].marketing.function_name({...})
app.integrations["goto-webinar"].sales.function_name({...})
```

All functions are identical across accounts — only the credentials differ.
Metadata-derived Lua example
local result = app.integrations.goto_webinar.list({page = 1, size = 1, status = "example_status"})
print(result)

Functions

list Read

List webinars from GoTo Webinar. Returns upcoming, in-progress, and past webinars. Use the status parameter to filter by webinar state.

Lua path
app.integrations.goto_webinar.list
Full name
goto-webinar.gotowebinar_list_webinars
ParameterTypeRequiredDescription
page integer no Page number for pagination (0-based, default: 0).
size integer no Number of results per page (default: 20, max: 200).
status string no Filter by webinar status: "ACTIVE", "IN_SESSION", "ENDED", "CANCELED". Omit to list all.
get Read

Get detailed information about a specific webinar, including schedule, registration settings, and organizer details.

Lua path
app.integrations.goto_webinar.get
Full name
goto-webinar.gotowebinar_get_webinar
ParameterTypeRequiredDescription
id string yes The webinar key (webinar ID).
create Write

Schedule a new webinar in GoTo Webinar. Provide a subject, one or more time slots (each with startTime and endTime in ISO 8601 format), and an optional description.

Lua path
app.integrations.goto_webinar.create
Full name
goto-webinar.gotowebinar_create_webinar
ParameterTypeRequiredDescription
subject string yes The webinar subject/title.
times array yes Array of time slots. Each slot must have "startTime" and "endTime" in ISO 8601 format (e.g., "2026-04-10T15:00:00Z").
description string no Optional description of the webinar.
list_sessions Read

List all sessions for a specific webinar. Each session represents one occurrence of a webinar (useful for recurring webinars).

Lua path
app.integrations.goto_webinar.list_sessions
Full name
goto-webinar.gotowebinar_list_sessions
ParameterTypeRequiredDescription
webinar_id string yes The webinar key.
page integer no Page number for pagination (0-based, default: 0).
size integer no Number of results per page (default: 20, max: 200).
get_session Read

Get detailed information about a specific webinar session, including attendance, duration, and participant statistics.

Lua path
app.integrations.goto_webinar.get_session
Full name
goto-webinar.gotowebinar_get_session
ParameterTypeRequiredDescription
webinar_id string yes The webinar key.
id string yes The session key (session ID).
list_panelists Read

List all panelists for a specific webinar. Panelists are featured speakers who have enhanced permissions during the webinar.

Lua path
app.integrations.goto_webinar.list_panelists
Full name
goto-webinar.gotowebinar_list_panelists
ParameterTypeRequiredDescription
webinar_id string yes The webinar key.
page integer no Page number for pagination (0-based, default: 0).
size integer no Number of results per page (default: 20, max: 200).
get_current_user Read

Get the profile of the currently authenticated GoTo Webinar user. Useful for verifying credentials and identifying the organizer account.

Lua path
app.integrations.goto_webinar.get_current_user
Full name
goto-webinar.gotowebinar_get_current_user
ParameterTypeRequiredDescription
No parameters.