# Sources

**Sources decide which places can submit requests to a project.** Use the source identifiers below when integrating through the API. Requests go through triage; a request from a branch carries work that already exists as commits.

Linear and GitHub issues can be switched off. The sources inside hlix remain available, subject to the caller’s project permissions.

## Prerequisites

- A project in your Workspace.
- `manage` access on the project to change its source settings; `owner` or `admin` for the Workspace defaults.

<span id="the-five-sources" />

## Supported sources

| API value | Request source |
| --- | --- |
| `chat` | A request in the project’s conversation |
| `client_portal` | A request from an authorized client portal user |
| `kanban` | Someone moved a card on the project's board |
| `api` | A direct API call with a Workspace credential |
| `branch` | Existing commits pushed to a project repository branch |
| `canvas` | Project context marked on the Canvas |
| `linear` | A delegation from a Linear issue |
| `github` | A GitHub issue |

Use `kanban` as the API identifier for the project board.

Sources are enabled by default. New requests go through [triage](/concepts/triage/). A request from a branch is different: it brings existing commits into the delivery flow rather than asking for new work.

<span id="why-three-sources-have-no-switch" />

<span id="why-native-sources-have-no-switch" />

Configure `linear` and `github` to control requests from external issue trackers. Chat, the board, API, client portal, branches and Canvas follow their existing project and repository permissions.

<span id="close-a-source-for-one-project" />

## Disable an external source for one project

```bash
curl -sS -X PATCH "$HLIX_BASE_URL/v1/api/projects/$PROJECT_ID" \
  -H "x-api-key: $HLIX_API_KEY" \
  -H "X-Organization-Id: $HLIX_WORKSPACE_ID" \
  -H 'content-type: application/json' \
  -d '{"intake":{"linear":false}}'
```

Expected result: `200` and the updated project, with `intake.linear` now `false`.

The `intake` object is **merged** onto what is already stored, so sending one key leaves the other unchanged. Omitting `intake` leaves the settings as they are.

The dashboard shows the same switches in the project's settings window under **Environment → Connections**, one for each external source.

## Project and Workspace settings

For each external source, hlix uses the first configured value in this order:

1. **The project's own setting** — what you set above.
2. **The Workspace default** — an admin's default for every project.
3. **The default** — enabled.

A project setting overrides the Workspace default.

## What a refusal looks like

A blocked request does not become a cycle. The refusal names the setting that blocked it:

```text
Linear intake is turned off for this project
Linear intake is turned off for this workspace
```

Check the setting named in the message. A Workspace default can block a source even when no project override is set.

## If work is not arriving, or is arriving when it should not

- **A Linear issue was assigned and nothing happened.** Check both settings: the project's `intake.linear` and the Workspace default. The refusal reason in the project's activity names which one.
- **A GitHub issue did not become a cycle.** Same check on `intake.github`. Also confirm the repository is attached to this project — an issue only reaches a project through a repository it owns.
- **A `400` on the `PATCH`.** Use `linear` or `github` as the setting key, with a boolean value.
- **Disabling one external source also appeared to disable another.** `intake` merges, so check that you did not send both keys.
- **Work is arriving from a source you never enabled.** Sources are enabled by default; switch off external issue sources you do not want.
- **A `403` on the `PATCH`.** Changing a source needs `manage` access on the project.
- **The source is enabled and a request still did not become work.** Check project access, integration status and the triage outcome. See [Triage](/concepts/triage/) for how admitted requests are assessed.

<span id="where-to-go-next" />

## Next steps

[Triage](/concepts/triage/)
  [Delivery policy](/configure/delivery-policy/)
  [Linear](/integrations/linear/)
  [GitHub](/integrations/github/)