AtlatestRepositorysigil-discourse
1# sigil-discourse
2
3A [Sigil](https://codeberg.org/sigil/sigil) library for the Discourse forum REST API.
4
5## Modules
6
7| 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## Usage
21Add `sigil-discourse` as a dependency in your `package.sgl`:
23```scheme
24(from-git url: "codeberg:sigil/sigil-discourse" package: "sigil-discourse")
25```
27Then import the modules you need:
29```scheme
30(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 topics
38(discourse-list-latest-topics base-url api-key username)
40;; Create a new topic
41(discourse-create-topic base-url api-key username
42 "Hello World" "This is the body" 5)
44;; Get a user
45(discourse-get-user base-url api-key username "david")
46```
48## Authentication
50Discourse uses `Api-Key` and `Api-Username` headers. Every library function
51takes `(base-url api-key username ...)` as its first three parameters.
53## Building
55```bash
56sigil deps install
57sigil build
58sigil test
59```
61## License
63BSD-3-Clause