# scribase queue

Manages durable message queues inside a Scribase environment. All queue
operations call `POST /v1/organizations/{org}/projects/{project}/environments/{env}/queues/{queue}` — the action verb travels in the request body.

## Usage

```sh
scribase queue <action> <org> <project> <env> <queue> [args]
```

## Actions

### `create`

Creates a new queue.

```sh
scribase queue create acme store production events
```

### `send`

Sends a JSON message to a queue. The message must be valid JSON.

```sh
scribase queue send acme store production events '{"type":"order","id":42}'
```

With a delivery delay (in seconds):

```sh
scribase queue send acme store production events '{"type":"order"}' --delay 30
```

### `read`

Reads one or more messages. Messages become invisible to other readers during the visibility timeout.

```sh
scribase queue read acme store production events
scribase queue read acme store production events --quantity 10 --visibility 60
```

| Flag | Description |
|---|---|
| `--quantity N` | Number of messages to read (default 1) |
| `--visibility N` | Visibility timeout in seconds (default: queue default) |

### `archive`

Archives a message by ID after processing. Archived messages are retained for inspection.

```sh
scribase queue archive acme store production events 12345
```

### `delete`

Permanently deletes a message by ID.

```sh
scribase queue delete acme store production events 12345
```

### `purge`

Deletes all messages in a queue.

```sh
scribase queue purge acme store production events
```

## Notes

- Queue names follow the same identifier rules as environment IDs.
- Message IDs are returned in the `msg_id` field of send and read responses.
- Use `archive` after successful processing to keep a record. Use `delete` to remove without archiving.
