Plugin API

Windshift exposes host functions that plugins use to interact with the platform. All WASM plugins can use them through the Extism host function interface.

Logging

log

Write a message to the Windshift server log.

Parameters:

  • level - Log level: debug, info, warn, error
  • message - The log message

Example:

log("info", "Processing webhook payload")
log("error", "Failed to parse response")

HTTP

http_fetch

Make an HTTP request to an external service.

Parameters:

  • url - The request URL
  • method - HTTP method (GET, POST, PUT, DELETE, etc.)
  • headers - Request headers (JSON object)
  • body - Request body (string)
  • timeout - Request timeout in seconds

Returns: Response body as a string

Example:

{
  "url": "https://api.example.com/webhook",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer token123"
  },
  "body": "{\"event\": \"task.completed\"}",
  "timeout": 10
}

Email

smtp_send

Send an email through the configured SMTP server.

Parameters:

  • to - Recipient email addresses
  • subject - Email subject
  • body - Email body (HTML or plain text)

The SMTP connection uses the server-level SMTP configuration. Plugins do not provide SMTP credentials.

Key-Value Storage

Each plugin has persistent storage. Its data survives server restarts.

kv_get

Retrieve a value by key.

Parameters:

  • key - The storage key

Returns: The stored value, or empty if not found

kv_set

Store a value.

Parameters:

  • key - The storage key
  • value - The value to store

kv_delete

Remove a stored value.

Parameters:

  • key - The storage key to delete

Work Items

create_comment

Add a comment to a work item.

Parameters:

  • item_id - The work item ID
  • content - Comment text (supports markdown)

SCM (Source Code Management)

scm_create_branch

Create a new branch in a linked repository.

Parameters:

  • repository - Repository identifier
  • branch_name - Name for the new branch
  • base_branch - Base branch to create from

Link a work item to an SCM resource (branch, PR, commit).

Parameters:

  • item_id - The work item ID
  • resource_type - Type of SCM resource (branch, pull_request, commit)
  • resource_url - URL of the SCM resource

CLI

cli_exec

Execute a CLI command on the server.

Parameters:

  • command - The command to execute
  • args - Command arguments (array of strings)

Returns: Command output (stdout)

Note: Plugin timeout limits apply to command execution. The default limit is five seconds.

Function Summary

Function Category Description
log Logging Write to server log
http_fetch HTTP Make HTTP requests
smtp_send Email Send emails via SMTP
kv_get Storage Read from key-value store
kv_set Storage Write to key-value store
kv_delete Storage Delete from key-value store
create_comment Items Add comment to work item
scm_create_branch SCM Create repository branch
scm_create_item_link SCM Link item to SCM resource
cli_exec CLI Execute system command