Skip to content

Go SDK Quick Start

Get started building Kiket extensions with Go.

Installation

go get github.com/kiket-dev/kiket/sdk/go

Basic Setup

Create a new Go module and import the SDK:

package main

import (
    "context"
    "log"
    "net/http"

    "github.com/kiket-dev/kiket/sdk/go/kiket"
)

func main() {
    // Create SDK instance
    sdk, err := kiket.New(kiket.Config{
        WebhookSecret:   "your-webhook-secret",
        ExtensionAPIKey: "your-api-key",
        ExtensionID:     "com.example.my-extension",
    })
    if err != nil {
        log.Fatal(err)
    }
    defer sdk.Close()

    // Register a handler
    sdk.On("issue.created", handleIssueCreated)

    // Start server
    log.Println("Starting server on :8080")
    http.Handle("/webhook", sdk)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

func handleIssueCreated(ctx context.Context, payload kiket.WebhookPayload, hctx *kiket.HandlerContext) (interface{}, error) {
    issue := payload["issue"].(map[string]interface{})
    log.Printf("New issue: %s", issue["title"])
    return map[string]string{"status": "ok"}, nil
}

Using a Manifest File

Create extension.yaml to configure your extension:

id: com.example.my-extension
version: 1.0.0
delivery_secret: your-webhook-secret

settings:
  - key: api_token
    secret: true
  - key: default_priority
    default: medium

Then simplify your code:

sdk, err := kiket.New(kiket.Config{
    ExtensionAPIKey: "your-api-key",
    AutoEnvSecrets:  true,  // Load KIKET_SECRET_* env vars
})

Environment Variables

Set these environment variables for configuration:

export KIKET_SECRET_API_TOKEN="your-api-token"

Add a Setup Wizard (Optional)

Guide users through configuration with a setup wizard in your manifest:

.kiket/extension.yaml
model_version: "1.0"
extension:
  id: com.example.my-extension
  name: My Extension
  version: 1.0.0
  delivery: http
  callback:
    url: ${EXTENSION_BASE_URL}
    secret: env.KIKET_WEBHOOK_SECRET

  configuration:
    API_TOKEN:
      type: string
      secret: true
      required: true
      label: API Token
    default_priority:
      type: select
      options: [low, medium, high]
      default: medium
      label: Default Priority

  setup:
    - secrets:
        id: credentials
        title: Enter Credentials
        collect:
          - API_TOKEN
    - configure:
        id: settings
        title: Configure Defaults
        collect:
          - default_priority

See the Setup Wizard Guide for all step types.

Next Steps