# Go live anyway with a held change

- **OpenAPI Version:** `3.2.0`
- **API Version:** `3.1.0`
- **Contact:** Syndai <https://syndai.ai>

## Contents

**Operations**

- [POST /api/v1/external/coding/runs/{coding\_run\_id}/land/merge-anyway](#scalar-operation-post-apiv1externalcodingrunscoding-run-idlandmerge-anyway)

**Schemas**

- [ExternalLandMergeAnywayRequest](#scalar-schema-externallandmergeanywayrequest)
- [ExternalLandStepResponse](#scalar-schema-externallandstepresponse)
- [ExternalCodingLandRead](#scalar-schema-externalcodinglandread)
- [ExternalLandSecurityRead](#scalar-schema-externallandsecurityread)
- [ExternalLandAccessRead](#scalar-schema-externallandaccessread)
- [ExternalLandIntendedAccess](#scalar-schema-externallandintendedaccess)
- [ExternalLandSecurityFixed](#scalar-schema-externallandsecurityfixed)
- [ExternalLandSecurityHeld](#scalar-schema-externallandsecurityheld)
- [ProblemDetail](#scalar-schema-problemdetail)
- [ExternalErrorCode](#scalar-schema-externalerrorcode)

<a id="scalar-context-global-servers"></a>

## Servers

- **URL:** `https://api.syndai.ai`

<a id="scalar-context-global-authentication"></a>

## Authentication

- **CustomerApiKey**: HTTP bearer (`API Key`)

  Customer API key sent as a bearer token

## Tags

### Landing

Getting a finished run's change onto your default branch and live: retry or close a held landing, go live anyway past the checks that held it (a person's decision), read the diff a held landing would ship, or revert a landed change. These act on your real repository.

## Operations

<a id="scalar-operation-post-apiv1externalcodingrunscoding-run-idlandmerge-anyway"></a>

### Go live anyway with a held change

- **Method:** `POST`
- **Path:** `/api/v1/external/coding/runs/{coding_run_id}/land/merge-anyway`
- **Operation ID:** `mergeRunLandAnyway`
- **Tags:** Landing

Records a person's consent to land a change that was held before landing, past the checks that held it; the landing is still verified live afterwards. Send the `head_sha` you reviewed: 409 if the change moved since, or if it is not held for a reason you can override. This is a human decision: an API key gets 403 `HUMAN_APPROVAL_REQUIRED` with a `review_url`, and a signed-in person must be a workspace owner or admin.

**Servers:** [Inherited servers](#scalar-context-global-servers)

**Authentication:** [Global authentication](#scalar-context-global-authentication)

#### Path parameters

- **`coding_run_id` (required)**: `string`, format: `uuid`

#### Query parameters

- **`customer_id`**: `string | null`, format: `uuid`

#### Request body

**Required:** `true`

**Content type:** `application/json`

[ExternalLandMergeAnywayRequest](#scalar-schema-externallandmergeanywayrequest)

<a id="scalar-example-1"></a>

**Generated example:**

```json
{
  "head_sha": ""
}
```

#### Responses

##### 200 Request fulfilled, document follows

**Content type:** `application/json`

[ExternalLandStepResponse](#scalar-schema-externallandstepresponse)

**Example:**

```json
{
  "land": {
    "can_merge_anyway": false,
    "head_sha": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
    "state": "landing",
    "strategy": "merge"
  }
}
```

##### 400, 401, 403, 404, 409

- `400` Bad request syntax or unsupported method
- `401` Invalid or missing customer API key
- `403` Insufficient scope or forbidden customer access; or HUMAN\_APPROVAL\_REQUIRED: an API key; the owner approves at review\_url
- `404` Resource not found
- `409` not\_held or head\_moved

**Content type:** `application/problem+json`

[ProblemDetail](#scalar-schema-problemdetail)

RFC 7807 problem detail returned for public CaaS errors.

<a id="scalar-example-2"></a>

**Generated example:**

```json
{
  "code": "BUDGET_EXHAUSTED",
  "detail": null,
  "existing_run_id": null,
  "instance": null,
  "status": 1,
  "title": "",
  "type": "about:blank",
  "additionalProperty": "anything"
}
```

##### 429 Rate limit exceeded

**Headers:**

- **`Retry-After`**

  Seconds to wait before retrying the request

  `integer`

**Content type:** `application/problem+json`

[ProblemDetail](#scalar-schema-problemdetail)

RFC 7807 problem detail returned for public CaaS errors.

[Generated example](#scalar-example-2)

##### default Unexpected error

**Content type:** `application/problem+json`

[ProblemDetail](#scalar-schema-problemdetail)

<a id="scalar-example-3"></a>

**Generated example:**

```json
null
```

## Schemas

<a id="scalar-schema-externallandmergeanywayrequest"></a>

### ExternalLandMergeAnywayRequest

**Type:** `object`

- **`head_sha` (required)**: `string`, pattern: `^[0-9a-f]{40}$|^[0-9a-f]{64}$`

<a id="scalar-example-4"></a>

**Generated example:**

```json
{
  "head_sha": ""
}
```

<a id="scalar-schema-externallandstepresponse"></a>

### ExternalLandStepResponse

**Type:** `object`

- **`land` (required)**: [ExternalCodingLandRead](#scalar-schema-externalcodinglandread)

**Example:**

```json
{
  "land": {
    "can_merge_anyway": false,
    "head_sha": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
    "state": "landing",
    "strategy": "merge"
  }
}
```

<a id="scalar-schema-externalcodinglandread"></a>

### ExternalCodingLandRead

**Type:** `object`

- **`state` (required)**: `string`
- **`strategy` (required)**: `string`
- **`can_merge_anyway`**: `boolean`, default: `false`
- **`commit_url`**: `string | null`
- **`deploy_status`**: `string | null`
- **`head_sha`**: `string | null`
- **`landed_sha`**: `string | null`
- **`live_url`**: `string | null`
- **`owner_step`**: `string | null`
- **`reason`**: `string | null`
- **`revert_of_run_id`**: `string | null`, format: `uuid`
- **`reverted_by_run_id`**: `string | null`, format: `uuid`
- **`security`**: [ExternalLandSecurityRead](#scalar-schema-externallandsecurityread) | `null`
- **`verified`**: `boolean | null`

<a id="scalar-example-5"></a>

**Generated example:**

```json
{
  "can_merge_anyway": false,
  "commit_url": "",
  "deploy_status": "",
  "head_sha": "",
  "landed_sha": "",
  "live_url": "",
  "owner_step": "",
  "reason": "",
  "revert_of_run_id": "",
  "reverted_by_run_id": "",
  "security": {
    "access": {
      "intended": [
        {
          "quote": "",
          "sentence": ""
        }
      ],
      "members_see": [
        ""
      ],
      "unchecked": [
        ""
      ],
      "visitors_add": [
        ""
      ],
      "visitors_see": [
        ""
      ]
    },
    "fixed": [
      {
        "proved": true,
        "sentence": ""
      }
    ],
    "held": [
      {
        "file": "",
        "proved": true,
        "sentence": "",
        "severity": ""
      }
    ],
    "state": ""
  },
  "state": "",
  "strategy": "",
  "verified": true
}
```

<a id="scalar-schema-externallandsecurityread"></a>

### ExternalLandSecurityRead

**Type:** `object`

- **`state` (required)**: `string`
- **`access`**: [ExternalLandAccessRead](#scalar-schema-externallandaccessread) | `null`
- **`fixed`**: array of [ExternalLandSecurityFixed](#scalar-schema-externallandsecurityfixed)
- **`held`**: array of [ExternalLandSecurityHeld](#scalar-schema-externallandsecurityheld)

<a id="scalar-example-6"></a>

**Generated example:**

```json
{
  "access": {
    "intended": [
      {
        "quote": "",
        "sentence": ""
      }
    ],
    "members_see": [
      ""
    ],
    "unchecked": [
      ""
    ],
    "visitors_add": [
      ""
    ],
    "visitors_see": [
      ""
    ]
  },
  "fixed": [
    {
      "proved": true,
      "sentence": ""
    }
  ],
  "held": [
    {
      "file": "",
      "proved": true,
      "sentence": "",
      "severity": ""
    }
  ],
  "state": ""
}
```

<a id="scalar-schema-externallandaccessread"></a>

### ExternalLandAccessRead

**Type:** `object`

- **`intended`**: array of [ExternalLandIntendedAccess](#scalar-schema-externallandintendedaccess)
- **`members_see`**: `array of string`
- **`unchecked`**: `array of string`
- **`visitors_add`**: `array of string`
- **`visitors_see`**: `array of string`

<a id="scalar-example-7"></a>

**Generated example:**

```json
{
  "intended": [
    {
      "quote": "",
      "sentence": ""
    }
  ],
  "members_see": [
    ""
  ],
  "unchecked": [
    ""
  ],
  "visitors_add": [
    ""
  ],
  "visitors_see": [
    ""
  ]
}
```

<a id="scalar-schema-externallandintendedaccess"></a>

### ExternalLandIntendedAccess

**Type:** `object`

- **`quote` (required)**: `string`
- **`sentence` (required)**: `string`

<a id="scalar-example-8"></a>

**Generated example:**

```json
{
  "quote": "",
  "sentence": ""
}
```

<a id="scalar-schema-externallandsecurityfixed"></a>

### ExternalLandSecurityFixed

**Type:** `object`

- **`proved` (required)**: `boolean`
- **`sentence` (required)**: `string`

<a id="scalar-example-9"></a>

**Generated example:**

```json
{
  "proved": true,
  "sentence": ""
}
```

<a id="scalar-schema-externallandsecurityheld"></a>

### ExternalLandSecurityHeld

**Type:** `object`

- **`proved` (required)**: `boolean`
- **`sentence` (required)**: `string`
- **`severity` (required)**: `string`
- **`file`**: `string | null`

<a id="scalar-example-10"></a>

**Generated example:**

```json
{
  "file": "",
  "proved": true,
  "sentence": "",
  "severity": ""
}
```

<a id="scalar-schema-problemdetail"></a>

### ProblemDetail

**Type:** `object`

RFC 7807 problem detail returned for public CaaS errors.

- **`code` (required)**: `string`, possible values: `"BUDGET_EXHAUSTED", "QUOTA_EXCEEDED", "RUN_CONCURRENCY_LIMIT", "CUSTOMER_DISABLED", "REPO_NOT_BOUND", "IDEMPOTENCY_REPLAY", "CONFLICT", "MISSION_BUSY_RETRY", "HITL_REQUEST_CONFLICT", "HITL_REQUEST_SETTLED", "RUN_TERMINATED_BEFORE_RESPONSE", "INVALID_POLICY", "INVALID_SCOPE", "RATE_LIMITED", "INSTALLATION_INCOMPLETE", "SUBSCRIPTION_USAGE_UNAVAILABLE", "INVALID_TOKEN", "ROLE_REQUIRED", "PLAN_UPGRADE_REQUIRED", "EMAIL_MISMATCH", "EXPIRED_TOKEN", "NOT_FOUND", "OVERSCOPE_ACK_REQUIRED", "VERIFY_FAILED", "PUBLISH_IN_FLIGHT", "PUBLISH_UNSUPPORTED_REPO", "PUBLICATION_NOT_LIVE", "NO_APP_DATA", "FEATURE_REQUESTS_NEEDS_MEMBERS", "EMPTY_UPDATE", "BAD_CURSOR", "HUMAN_APPROVAL_REQUIRED", "PROTECTED_PATHS_MANAGED_ONLY", "RUN_IN_FLIGHT", "TEXT_EDIT_REFUSED", "CLI_UPGRADE_REQUIRED", "PRODUCTION_STEP_UP_REQUIRED", "PRICES_UPDATING", "GITHUB_UNAVAILABLE", "PUBLISH_NOT_SET_UP", "VERSION_NOT_DEPLOYED", "INTERNAL_ERROR"`

  Stable error codes surfaced to public CaaS clients.
- **`status` (required)**: `integer`
- **`title` (required)**: `string`
- **`detail`**: `string | null`, default: `null`
- **`existing_run_id`**: `string | null`, default: `null`
- **`instance`**: `string | null`, default: `null`
- **`type`**: `string`, default: `"about:blank"`

<a id="scalar-example-11"></a>

**Generated example:**

```json
{
  "code": "BUDGET_EXHAUSTED",
  "detail": null,
  "existing_run_id": null,
  "instance": null,
  "status": 1,
  "title": "",
  "type": "about:blank",
  "additionalProperty": "anything"
}
```

<a id="scalar-schema-externalerrorcode"></a>

### ExternalErrorCode

**Type:** `string`, possible values: `"BUDGET_EXHAUSTED", "QUOTA_EXCEEDED", "RUN_CONCURRENCY_LIMIT", "CUSTOMER_DISABLED", "REPO_NOT_BOUND", "IDEMPOTENCY_REPLAY", "CONFLICT", "MISSION_BUSY_RETRY", "HITL_REQUEST_CONFLICT", "HITL_REQUEST_SETTLED", "RUN_TERMINATED_BEFORE_RESPONSE", "INVALID_POLICY", "INVALID_SCOPE", "RATE_LIMITED", "INSTALLATION_INCOMPLETE", "SUBSCRIPTION_USAGE_UNAVAILABLE", "INVALID_TOKEN", "ROLE_REQUIRED", "PLAN_UPGRADE_REQUIRED", "EMAIL_MISMATCH", "EXPIRED_TOKEN", "NOT_FOUND", "OVERSCOPE_ACK_REQUIRED", "VERIFY_FAILED", "PUBLISH_IN_FLIGHT", "PUBLISH_UNSUPPORTED_REPO", "PUBLICATION_NOT_LIVE", "NO_APP_DATA", "FEATURE_REQUESTS_NEEDS_MEMBERS", "EMPTY_UPDATE", "BAD_CURSOR", "HUMAN_APPROVAL_REQUIRED", "PROTECTED_PATHS_MANAGED_ONLY", "RUN_IN_FLIGHT", "TEXT_EDIT_REFUSED", "CLI_UPGRADE_REQUIRED", "PRODUCTION_STEP_UP_REQUIRED", "PRICES_UPDATING", "GITHUB_UNAVAILABLE", "PUBLISH_NOT_SET_UP", "VERSION_NOT_DEPLOYED", "INTERNAL_ERROR"`

Stable error codes surfaced to public CaaS clients.
