com.publicdomainrelay.temp.tangled.spindle.trigger

johnandersen777.bsky.social

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Manually trigger a pipeline run on a Tangled spindle. Intended to be called via PDS service proxying (the 'atproto-proxy' header, pointed at the spindle's did:web service entry), so the user's PDS mints and signs the inter-service auth token; the spindle verifies the token's issuer against their DID document and requires it to match the trigger's 'actor'. Mirrors the sh.tangled.pipeline fields a knot dispatches on a push/PR event.",
      "errors": [
        {
          "description": "Malformed body or missing required fields.",
          "name": "InvalidRequest"
        },
        {
          "description": "Missing or invalid inter-service auth token.",
          "name": "Unauthorized"
        },
        {
          "description": "Token issuer does not match actor, or repo is not authorized for this spindle.",
          "name": "Forbidden"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "actor": {
              "description": "DID of the actor the run is attributed to. Must equal the issuer of the service-auth token.",
              "format": "did",
              "type": "string"
            },
            "inputs": {
              "description": "Optional workflow_dispatch-style inputs, as a map of string keys to string values.",
              "type": "unknown"
            },
            "knot": {
              "description": "Knot hostname that hosts the repo, e.g. knot1.tangled.sh.",
              "type": "string"
            },
            "pipelineRkey": {
              "description": "Record key identifying this pipeline run; only needs to be unique per run.",
              "type": "string"
            },
            "ref": {
              "description": "Commit SHA to run at. The spindle fetches .github/workflows/*.yml at this exact commit, so it must be a real commit, not a branch name.",
              "type": "string"
            },
            "repoDid": {
              "description": "DID of the repo (the owner DID used for sh.tangled.repo.blob lookups).",
              "format": "did",
              "type": "string"
            },
            "repoName": {
              "description": "Human-readable repo name, e.g. myrepo.",
              "type": "string"
            }
          },
          "required": [
            "knot",
            "pipelineRkey",
            "actor",
            "repoDid",
            "repoName",
            "ref"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "knot": {
              "type": "string"
            },
            "pipelineRkey": {
              "type": "string"
            },
            "ref": {
              "type": "string"
            },
            "submitted": {
              "description": "True once the trigger was accepted and workflow submission started.",
              "type": "boolean"
            },
            "workflows": {
              "description": "The workflow stems that were submitted, with their log/status stream URLs.",
              "items": {
                "properties": {
                  "logsUrl": {
                    "format": "uri",
                    "type": "string"
                  },
                  "statusUrl": {
                    "format": "uri",
                    "type": "string"
                  },
                  "workflow": {
                    "type": "string"
                  }
                },
                "required": [
                  "workflow"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "submitted",
            "knot",
            "pipelineRkey",
            "ref",
            "workflows"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "com.publicdomainrelay.temp.tangled.spindle.trigger",
  "lexicon": 1
}

Validate Record

Validate a record against com.publicdomainrelay.temp.tangled.spindle.trigger

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:5svqtrhheairglgiiyvutzik
CID
bafyreifwztarqgxfj3dysbnisx6l4f73nhuixyk7qn5fnie27hao4pecey
Indexed At
2026-06-08 04:09 UTC
AT-URI
at://did:plc:5svqtrhheairglgiiyvutzik/com.atproto.lexicon.schema/com.publicdomainrelay.temp.tangled.spindle.trigger

Version History (2 versions)

Lexicon Garden

@