EvoHub Docs Sign in

On-Call API › Integrations

Set or generate a signing secret

Use with AI
View as MarkdownThis page as plain text, for pasting into an AI tool Open in ClaudeAsk Claude questions about this page Open in ChatGPTAsk ChatGPT questions about this page
Connect to Cursor / VS Code / ClaudeSearch and read these docs from your AI tool (MCP server)

MCP server URL

https://docs-dev.evohub.io/mcp

Claude Code

claude mcp add --transport http evohub-docs-docs https://docs-dev.evohub.io/mcp

Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector, and paste the URL above.

Claude Desktop — claude_desktop_config.json

{
  "mcpServers": {
    "evohub-docs-docs": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://docs-dev.evohub.io/mcp"
      ]
    }
  }
}

Cursor — ~/.cursor/mcp.json

{
  "mcpServers": {
    "evohub-docs-docs": {
      "url": "https://docs-dev.evohub.io/mcp"
    }
  }
}

VS Code — .vscode/mcp.json

{
  "servers": {
    "evohub-docs-docs": {
      "type": "http",
      "url": "https://docs-dev.evohub.io/mcp"
    }
  }
}
PUT/api/v1/integrations/{id}/signing-secret

For github, gitlab, jenkins and sonarqube integrations: the secret the tool signs its deliveries with, so EvoHub can reject anything not signed with it.

Send {"secret": "…"} to store a secret already set in the tool (16–256 printable characters without spaces, at least 8 of them different). Send an empty body or an empty secret to have one generated: it is returned once, in signing_secret, with Cache-Control: no-store, and never again. Either way the previous secret stops working at once. A secret you sent is not echoed.

Permission (API-key scope): oncall:integration:write.

Authorization

Any one of:

Parameters

Path parameters

  • id string required
    The integration's id.
    Example: int_6e5d4c3b-2a19-4f8e-b7d6-c5b4a3928170

Request body

Content type: application/json

Type: object

  • secret string
    The secret to store; empty or omitted to generate one.

Responses

200

The secret is set.

Content type: application/json

Type: object

  • data SigningSecretResult required
    Show SigningSecretResult properties
    • signing_secret_configured boolean
    • generated boolean
    • signing_secret string
      Only when generated, and only in this response.
  • success boolean required
    Value: true

400

The body is not JSON (INVALID_BODY); the integration's type has no signing secret (VALIDATION_FAILED, field type); or the secret is not acceptable (VALIDATION_FAILED, field secret).

Content type: application/json

Type: ValidationError

  • error object required
    • code string required
      Value: VALIDATION_FAILED
    • message string required
    • details array of object required
      • field string
      • message string

401

No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

403

The key lacks the scope this endpoint needs (FORBIDDEN).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

404

No such integration in your organization or your teams (INTEGRATION_NOT_FOUND).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

409

Signing secrets are not available on this server (SIGNING_SECRET_UNAVAILABLE).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

429

Too many requests (RATE_LIMITED). Wait Retry-After seconds.

Headers

  • Retry-After integer
    Seconds to wait.

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

500

Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

Example request

curl -X PUT 'https://evohub.io/api/v1/integrations/int_6e5d4c3b-2a19-4f8e-b7d6-c5b4a3928170/signing-secret' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <TOKEN>' \
  -d '{}'

Last updated