AtlatestRepositorysigil-discourse
sigil-discourse / treeREADME.md
1
# sigil-discourse3
A [Sigil](https://codeberg.org/sigil/sigil) library for the Discourse forum REST API.5
## Modules7
| Module | Description |8
|--------|-------------|9
| `(discourse client)` | Shared auth headers, URL construction, HTTP helpers |10
| `(discourse topics)` | List, get, create, update, close/open/pin, delete topics |11
| `(discourse posts)` | Get, create, update, delete posts |12
| `(discourse messages)` | Send, list private messages |13
| `(discourse search)` | Full-text search |14
| `(discourse categories)` | List, get, create, update categories |15
| `(discourse users)` | List, get, create, suspend/unsuspend, activate/deactivate users |16
| `(discourse groups)` | List, get, create, delete groups and manage members |17
| `(discourse admin)` | Site settings and invites |19
## Usage21
Add `sigil-discourse` as a dependency in your `package.sgl`:23
```scheme24
(from-git url: "codeberg:sigil/sigil-discourse" package: "sigil-discourse")25
```27
Then import the modules you need:29
```scheme30
(import (discourse topics)31
(discourse users))33
(define base-url "https://forum.example.com")34
(define api-key (getenv "DISCOURSE_API_KEY"))35
(define username (getenv "DISCOURSE_USERNAME"))37
;; List latest topics38
(discourse-list-latest-topics base-url api-key username)40
;; Create a new topic41
(discourse-create-topic base-url api-key username42
"Hello World" "This is the body" 5)44
;; Get a user45
(discourse-get-user base-url api-key username "david")46
```48
## Authentication50
Discourse uses `Api-Key` and `Api-Username` headers. Every library function51
takes `(base-url api-key username ...)` as its first three parameters.53
## Building55
```bash56
sigil deps install57
sigil build58
sigil test59
```61
## License63
BSD-3-Clause