## Cancel a build

`client.Build.Cancel(ctx, buildID) (*AgentexCloudBuild, error)`

**post** `/v5/builds/{build_id}/cancel`

Request cancellation of a build and return 202 Accepted.

Cancellation runs asynchronously: the endpoint verifies the build exists and then hands it off to a
background workflow that marks the build as cancelling, asks the cloud build provider to stop it, and
polls until the build reaches a terminal state before recording the final status. Only builds that are
still queued or running are actually cancelled; if the build has already finished, or cancellation is
already in progress, the request is still accepted but has no effect. The returned record reflects the
build's state at the time of the call, so it will not yet show the pending cancellation. The request
is rejected if no such build exists for the caller's account.

### Parameters

- `buildID string`

### Returns

- `type AgentexCloudBuild struct{…}`

  - `ID string`

    The unique identifier of the entity.

  - `AccountID string`

    The ID of the account that owns the given entity.

  - `AgentName string`

    The name of the agent that this build belongs to

  - `BuildStatus AgentexCloudBuildBuildStatus`

    The current build lifecycle status

    - `const AgentexCloudBuildBuildStatusQueued AgentexCloudBuildBuildStatus = "queued"`

    - `const AgentexCloudBuildBuildStatusRunning AgentexCloudBuildBuildStatus = "running"`

    - `const AgentexCloudBuildBuildStatusSuccess AgentexCloudBuildBuildStatus = "success"`

    - `const AgentexCloudBuildBuildStatusFailed AgentexCloudBuildBuildStatus = "failed"`

    - `const AgentexCloudBuildBuildStatusCancelling AgentexCloudBuildBuildStatus = "cancelling"`

    - `const AgentexCloudBuildBuildStatusCancelled AgentexCloudBuildBuildStatus = "cancelled"`

    - `const AgentexCloudBuildBuildStatusDeleting AgentexCloudBuildBuildStatus = "deleting"`

    - `const AgentexCloudBuildBuildStatusDeleteFailed AgentexCloudBuildBuildStatus = "delete_failed"`

    - `const AgentexCloudBuildBuildStatusTimedOut AgentexCloudBuildBuildStatus = "timed_out"`

    - `const AgentexCloudBuildBuildStatusError AgentexCloudBuildBuildStatus = "error"`

    - `const AgentexCloudBuildBuildStatusUnknown AgentexCloudBuildBuildStatus = "unknown"`

  - `CloudProviderBuildID string`

    The unique identifier of the build from the cloud provider, or an internal UUID when an existing image is copied without a provider build.

  - `CreatedAt Time`

    The date and time when the entity was created in ISO format.

  - `CreatedBy Identity`

    The identity that created the entity.

    - `ID string`

    - `Type IdentityType`

      - `const IdentityTypeUser IdentityType = "user"`

      - `const IdentityTypeServiceAccount IdentityType = "service_account"`

    - `Object IdentityObject`

      - `const IdentityObjectIdentity IdentityObject = "identity"`

  - `ImageName string`

    The name of the container image to build.

  - `ImageTag string`

    The tag for the container image.

  - `SourceCommit string`

    Git commit the build context was at, when a git work tree.

  - `SourceDirty bool`

    Whether the work tree had uncommitted changes at build time (null outside git).

  - `SourceRef string`

    Git branch or tag for source_commit, when resolvable.

  - `SourceRepo string`

    Normalized git remote the build context came from (host/path, no credentials).

  - `SourceSubpath string`

    Build-context path relative to the repo root (which agent, in a monorepo).

  - `WorkingTreeHash string`

    Deterministic SHA-256 content hash of the build inputs (not the tarball).

  - `AgentID string`

    The UUID of the agent that this build belongs to

  - `BuildEndTime Time`

    When the cloud provider finished the build

  - `BuildStartTime Time`

    When the cloud provider started the build

  - `ImageURL string`

    The URL of the container image. This is not guaranteed to be present until the build is complete.

  - `Object AgentexCloudBuildObject`

    - `const AgentexCloudBuildObjectAgentexCloudBuild AgentexCloudBuildObject = "agentex_cloud_build"`

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/scaleapi/sgp-dev-go"
  "github.com/scaleapi/sgp-dev-go/option"
)

func main() {
  client := sgpdev.NewClient(
    option.WithAPIKey("My API Key"),
    option.WithAccountID("My Account ID"),
  )
  agentexCloudBuild, err := client.Build.Cancel(context.TODO(), "build_id")
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", agentexCloudBuild.ID)
}
```

#### Response

```json
{
  "id": "id",
  "account_id": "account_id",
  "agent_name": "agent_name",
  "build_status": "queued",
  "cloud_provider_build_id": "cloud_provider_build_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "image_name": "image_name",
  "image_tag": "image_tag",
  "source_commit": "source_commit",
  "source_dirty": true,
  "source_ref": "source_ref",
  "source_repo": "source_repo",
  "source_subpath": "source_subpath",
  "working_tree_hash": "working_tree_hash",
  "agent_id": "agent_id",
  "build_end_time": "2019-12-27T18:11:19.117Z",
  "build_start_time": "2019-12-27T18:11:19.117Z",
  "image_url": "image_url",
  "object": "agentex_cloud_build"
}
```
