## `GET /sop/`

**List all processes** — Returns every published process definition in the workspace. Use this for discovery — agents call this endpoint to learn what processes are available before starting an instance.

> **Auth:** Requires `X-SOP-Token` header. See [Authentication](/api-docs/guides/authentication.md).

### Response

`200 application/json` — Returns an array of process definition objects.

```json
[
  {
    "name":        "customer-onboarding",
    "version":     "1.0",
    "description": "Onboard a new business customer",
    "owner":       "banking-team"
  }
]
```

### Errors

| Status | Code | Meaning |
|--------|------|---------|
| 401 | `unauthorized` | Token missing or revoked. |

### Code examples

#### curl

```bash
curl https://api.opensop.dev/sop/ \
  -H "X-SOP-Token: $OPENSOP_TOKEN"
```

#### Node

```js
const res = await fetch("https://api.opensop.dev/sop/", {
  headers: { "X-SOP-Token": process.env.OPENSOP_TOKEN }
});
const processes = await res.json();
```

#### Python

```python
import requests

resp = requests.get(
  "https://api.opensop.dev/sop/",
  headers={"X-SOP-Token": os.environ["OPENSOP_TOKEN"]}
)
print(resp.json())
```

#### Ruby

```ruby
require "net/http"

uri = URI("https://api.opensop.dev/sop/")
req = Net::HTTP::Get.new(uri)
req["X-SOP-Token"] = ENV["OPENSOP_TOKEN"]
puts Net::HTTP.start(uri.host, use_ssl: true) { |h| h.request(req).body }
```

