Skip to content

Link a GitHub repository

View .md
POST

Bind a repository to this function so every push to branch deploys it. A function holds at most one link; linking again returns 400.

The server decides how the link authenticates. If the project has the Zavu GitHub App installed, the link uses that installation: private repositories work and there is nothing to configure in the repository. Otherwise it falls back to a manual link and the response carries a webhookSecret you add to the repository yourself. connection says which one you got.

The repository is not checked against GitHub here, because it cannot be: an owner/repo that does not exist, or that the installation cannot see, is accepted and fails on the first deploy with a fetch error.

Authorization

  • Authorizationheaderrequired

    Bearer YOUR_API_KEY. Create a key in the dashboard.

Path parameters

  • functionIdstringrequired

    Zavu Function ID.

Body

application/json

  • ownerstringrequired
  • repostringrequired
  • branchstring
    Defaultmain
  • rootDirstring

    Subdirectory holding the project, for monorepos.

  • autoDeployboolean
    Defaulttrue

Responses

201Link created. The only response that ever carries `webhookSecret`.
  • linkobjectrequired

    A GitHub repository bound to a function. A push to branch deploys the function. A function holds at most one link.

    16 properties
    • idstringrequired
    • functionIdstringrequired
    • providerstringrequired
      One ofgithub
    • ownerstringrequired
    • repostringrequired
    • branchstringrequired

      Only pushes to this branch deploy.

    • rootDirstringnullable

      Subdirectory holding the project, for monorepos. Null when the project is at the repository root.

    • autoDeploybooleanrequired

      When false the link is kept and pushes are ignored.

    • connectionstringrequired

      How this link authenticates, decided by the server rather than by the caller. - app: the Zavu GitHub App is installed on the account. Pushes arrive on the app's webhook and private repositories work. Nothing to configure in the repository. - manual: no installation. The link carries its own secret and you add the webhook to the repository yourself.

      One ofappmanual
    • lastStatusstringnullable
      One ofdeployingdeployedfailednull
    • lastCommitShastringnullable
    • lastCommitMessagestringnullable
    • lastErrorstringnullable

      Why the last deploy failed. Null otherwise.

    • lastDeployAtstring<date-time>nullable
    • createdAtstring<date-time>required
    • updatedAtstring<date-time>required
  • webhookUrlstring<uri>required

    Endpoint that receives GitHub's push deliveries. Only needed on a manual link, where you add it to the repository yourself.

  • webhookSecretstring

    Shared secret for the repository's webhook. Returned only when creating a manual link, and only there — every later read strips it, and re-linking mints a new one. Absent entirely on an app link, which needs no secret of its own.

400Invalid owner, repo or branch, or the function is already linked.
  • codestringrequired
  • messagestringrequired
  • detailsobject
401Unauthorized.
  • codestringrequired
  • messagestringrequired
  • detailsobject
404Function not found.
  • codestringrequired
  • messagestringrequired
  • detailsobject