# Delete an ephemeral repository branch

Delete a short-lived repository branch after a preview or experiment.

## Endpoint

`DELETE /v1/spaces/{spaceId}/source/ephemeral-branch`

## Authorization

### Authorization Bearer Token
`Authorization: Bearer <token>` with an API key (`sfa_` prefix), an OAuth access token, a session token, or a Space machine credential (`sfm_` prefix).

### Authorization OAuth2 Access Token
OAuth 2.0 with Spacefast scopes. People use the authorization code flow; machines use client credentials.

**Scopes:** `spaces:write`

## Path Parameters

- `spaceId` **string** required

## Query Parameters

- `connectionType` **string** required  
  default: "connected"  
  Allowed: `connected`, `hosted`

## Request Body

**Content-Type**: application/json

- `branch` **string** required  
  Name for the short-lived branch.
- `ttlSeconds` **integer**  
  How long the signed access lasts, in seconds. At most 86400.
- `readOnlyRefs` **string[]**  
  Refs the access may read but never write. At most 25.

## Responses

### 200 Response for Status 200

- `$schema` **string** <uri>
- `data` **object** required
  - `repositoryConnection` **object** required
    - `id` **string** required  
      Source connection ID (`rpc_` prefix).
    - `spaceId` **string** required  
      Space this connection feeds.
    - `provider` **string** required  
      Git host the repository lives on.  
      Allowed: `github`, `gitlab`, `bitbucket`, `generic`
    - `connectionType` **string** required  
      `connected` for a repository linked from a Git host, `hosted` for the mirror Spacefast hosts and the caller pushes to.
      Allowed: `connected`, `hosted`
    - `repositoryId` **string | any** required  
      Identifier of the mirror that content reads and builds run against. Null when no mirror is bound yet.
    - `installationId` **string | any** required  
      GitHub App installation the connection reads through. Null for a hosted mirror.
    - `cloneUrlConfigured` **boolean** required  
      Whether a clone URL is stored. The URL itself is not returned.
    - `upstreamUrlConfigured` **boolean** required  
      Whether an upstream URL to pull from is stored. The URL itself is not returned.
    - `repositoryName` **string** required  
      Repository name without its owner.
    - `repositoryFullName` **string** required  
      Repository name as `owner/name`.
    - `defaultBranch` **string** required  
      Branch the Git host treats as the repository default.
    - `productionBranch` **string** required  
      Branch whose pushes produce production builds, and the ref content reads fall back to when none is given.
    - `credentialConfigured` **boolean** required  
      Whether a Git credential is stored. The credential itself is never returned.
    - `autoDeployProduction` **boolean** required  
      Whether a push to the production branch queues a build.
    - `autoDeployPreviews` **boolean** required  
      Whether a push to any other branch or a pull request queues a preview build.
    - `buildSettings` **object** required
      - `rootDirectory` **string | any** required  
        Directory the build runs in, relative to the source root. Null builds at the root.
      - `installDirectory` **string | any** required  
        Directory dependencies install into, relative to the source root. Null installs in the build directory.
      - `installCommand` **string | any** required  
        Command that installs dependencies. Null lets the build runner pick one.
      - `buildCommand` **string | any** required  
        Command that produces the output. Null lets the build runner pick one.
      - `outputDirectory` **string | any** required  
        Directory the built output is collected from, relative to the build directory. Null lets the build runner detect it.
      - `ignoredBuildCommand` **string | any** required  
        Command run before the build to decide whether the build is needed. Exiting 0 ends the build as `skipped`; any other exit code continues. Null always builds.
      - `frameworkPreset` **string | any** required
      - `platformPreset` **string | any** required
      - `allowUnsupportedPlatformFeatures` **boolean** required  
        Runs the build even when the source declares platform features Spacefast does not support. Defaults to `false`, which refuses those sources.
      - `timeoutSeconds` **integer** required  
        Wall-clock budget for the run, in seconds. Between 60 and 7200; defaults to 900.
    - `syncStatus` **string** required  
      `idle` before the first sync, `syncing` while one runs, `ready` once content reads work, `failed` when the last one did not finish.
      Allowed: `idle`, `syncing`, `ready`, `failed`
    - `providerAccessStatus` **string** required  
      Whether the Git host still grants access. Anything other than `active` blocks builds until the caller reinstalls or reauthorizes.
      default: "active"
    - `providerAccessError` **string | any** required  
      What the Git host reported when access stopped working. Null while access holds.
    - `lastSyncedAt` **string<date-time> | any** required  
      ISO 8601 timestamp of the last sync that finished. Null before the first one.
    - `lastSyncError` **string | any** required  
      Why the last sync failed. Null after a sync that succeeded.
    - `syncRunId` **string | any** required  
      Identifier of the sync in flight. Null when no sync is running.
    - `connectedUserId` **string | any** required  
      User who last authorized or changed the connection. Null when no user did.
    - `createdAt` **string<date-time> required**  
      ISO 8601 timestamp when the connection was created.
    - `updatedAt` **string<date-time> required**  
      ISO 8601 timestamp of the last change.
  - `branch` **object** required  
     - `repositoryId` **string** required  
     - `branch` **string** required  
     - `baseRef` **string | any** required  
     - `baseBranch` **string | any** required  
     - `ephemeral` **boolean** required

### Example Request

```bash
curl -X DELETE "https://api.spacefast.com/v1/spaces/string/source/ephemeral-branch?connectionType=connected" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"branch": "string", "ttlSeconds": 86400, "readOnlyRefs": ["string"]}'
```

### Example Response

```json
{
  "$schema": "http://example.com",
  "data": {
    "repositoryConnection": {
      "id": "string",
      "spaceId": "string",
      "provider": "github",
      "connectionType": "connected",
      "repositoryId": "string",
      "installationId": null,
      "cloneUrlConfigured": false,
      "upstreamUrlConfigured": false,
      "repositoryName": "string",
      "repositoryFullName": "string",
      "defaultBranch": "string",
      "productionBranch": "string",
      "credentialConfigured": true,
      "autoDeployProduction": true,
      "autoDeployPreviews": true,
      "buildSettings": {
        "rootDirectory": null,
        "installDirectory": null,
        "installCommand": null,
        "buildCommand": null,
        "outputDirectory": null,
        "ignoredBuildCommand": null,
        "frameworkPreset": null,
        "platformPreset": null,
        "allowUnsupportedPlatformFeatures": false,
        "timeoutSeconds": 900
      },
      "syncStatus": "idle",
      "providerAccessStatus": "active",
      "providerAccessError": null,
      "lastSyncedAt": "2019-08-24T14:15:22Z",
      "lastSyncError": "string",
      "syncRunId": "string",
      "connectedUserId": "string",
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    },
    "branch": {
      "repositoryId": "string",
      "branch": "string",
      "baseRef": "string",
      "baseBranch": "string",
      "ephemeral": true
    }
  }
}
```
