GitHub · Arazzo Workflow

GitHub Publish a Release and Upload an Asset

Version 1.0.0

Create a tagged release, then upload a binary asset to it.

1 workflow 1 source API 1 provider
View Spec View on GitHub CodePipelinesPlatformSoftware DevelopmentSource ControlT1ArazzoWorkflows

Provider

github

Workflows

publish-release-with-asset
Create a release then upload a binary asset to it.
Creates a release for the supplied tag and chains the returned release id into a call that uploads a binary asset.
2 steps inputs: assetContent, assetName, githubToken, owner, releaseBody, releaseName, repo, tagName outputs: assetId, downloadUrl, releaseId, releaseUrl
1
createRelease
Create the release for the supplied tag.
2
uploadAsset
Upload the binary asset to the newly created release using the release id returned by the create step.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: GitHub Publish a Release and Upload an Asset
  summary: Create a tagged release, then upload a binary asset to it.
  description: >-
    The release distribution pattern. The workflow creates a release for a given
    tag and then uploads a binary asset to that release using the upload URL and
    release identifier returned by the create step. The asset payload is sent as
    an octet stream, matching the GitHub upload endpoint. Every step spells out
    its request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-4200.40
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-4200.40
      capability_name: Software Construction Management
      spec: github-repos-api-openapi.yml
      confidence: 0.75
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: reposApi
  url: ../openapi/github-repos-api-openapi.yml
  type: openapi
workflows:
- workflowId: publish-release-with-asset
  summary: Create a release then upload a binary asset to it.
  description: >-
    Creates a release for the supplied tag and chains the returned release id
    into a call that uploads a binary asset.
  inputs:
    type: object
    required:
    - githubToken
    - owner
    - repo
    - tagName
    - assetName
    - assetContent
    properties:
      githubToken:
        type: string
        description: A GitHub token with repo scope, passed as a Bearer credential.
      owner:
        type: string
        description: The account owner of the repository.
      repo:
        type: string
        description: The name of the repository.
      tagName:
        type: string
        description: The name of the tag for the release.
      releaseName:
        type: string
        description: The display name of the release.
      releaseBody:
        type: string
        description: The description text of the release.
      assetName:
        type: string
        description: The file name of the asset to upload.
      assetContent:
        type: string
        description: The raw binary content of the asset to upload.
  steps:
  - stepId: createRelease
    description: Create the release for the supplied tag.
    operationId: repos/create-release
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.githubToken
    - name: owner
      in: path
      value: $inputs.owner
    - name: repo
      in: path
      value: $inputs.repo
    requestBody:
      contentType: application/json
      payload:
        tag_name: $inputs.tagName
        name: $inputs.releaseName
        body: $inputs.releaseBody
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      releaseId: $response.body#/id
      releaseUrl: $response.body#/html_url
  - stepId: uploadAsset
    description: >-
      Upload the binary asset to the newly created release using the release id
      returned by the create step.
    operationId: repos/upload-release-asset
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.githubToken
    - name: owner
      in: path
      value: $inputs.owner
    - name: repo
      in: path
      value: $inputs.repo
    - name: release_id
      in: path
      value: $steps.createRelease.outputs.releaseId
    - name: name
      in: query
      value: $inputs.assetName
    requestBody:
      contentType: application/octet-stream
      payload: $inputs.assetContent
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      assetId: $response.body#/id
      downloadUrl: $response.body#/browser_download_url
  outputs:
    releaseId: $steps.createRelease.outputs.releaseId
    releaseUrl: $steps.createRelease.outputs.releaseUrl
    assetId: $steps.uploadAsset.outputs.assetId
    downloadUrl: $steps.uploadAsset.outputs.downloadUrl

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/github-publish-release-with-asset-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.