Memstara, malcentrigita kaj libera programinterfaco (REST, WebRTC, ActivityPub). Konstruita por kolektiva emancipiĝo kaj komunaj ciferecaj rimedoj sen monopolo.
Militant API V2 estas moderna, alt-efikeca, malcentrigita kaj memadministrata servilo verkita en Go 1.26 kun subteno de MariaDB 10.11+ LTS. Ĝi provizas plenan kongruecon kun la ekzistanta ekosistemo (retumilo, poŝtelefona aplikaĵo Militant Flutter kaj fediverseaj serviloj).
Duobla aliro : modernaj JSON-itineroj /v2/... kaj plena kongruo kun historiaj poŝtelefonaj skriptoj /v1/*.php.
Salono-generado de ĵetonoj por voĉaj kaj videaj diskutoj, kune kun Coturn STUN/TURN relajo por fajroŝirmiloj.
ActivityPub integriĝo, sekvado de foraj profiloj en Mastodon/Lemmy kaj sinkronigo de liberecaj komunumoj.
Ĉiuj protektitaj itineroj postulas alir-ĵetonon senditan en la HTTP-kaplinio Authorization :
Authorization: Bearer <64-signa-sekura-ĵetono>
Por poŝtelefonaj elŝutoj (ekz. medi-dosieroj aŭ eksportoj), la ĵetono ankaŭ estas akceptata kiel URL-parametro : ?token=<ĵetono>.
Ĉiu API-respondo estas strukturita en antaŭvidebla JSON-envelopo :
// Sukcesa respondo (HTTP 200 / 201)
{
"success": true,
"data": { ... },
"message": "Operacio sukcese plenumita"
}
// Erara respondo (HTTP 400 / 401 / 403 / 404 / 500)
{
"success": false,
"error": "Klare priskribita erar-mesaĝo"
}
La listoj (afiŝoj, komentoj, sciigoj, membroj) subtenas la normajn parametrojn page (komencante je 1) kaj per_page (limo inter 1 kaj 50, defaŭlte 20) :
GET /v2/posts?page=1&per_page=20&feed=global
// La respondo aperos ĉi tie
Uzu cURL por testi rekte vian lokan aŭ foran instancon :
curl -s https://api.militant.revlibertaire.com/v2 | jq .
Ĉiu peto protektita postulas la kaplinion Authorization kun portanta ĵetono :
curl -H "Authorization: Bearer <VIA_JETONO>" https://api.militant.revlibertaire.com/v2/posts
Pura modulo sen ekstera dependeco, plene tipita per dataclasses kaj kongrua kun Python 3.10+.
from militant import MilitantClient
client = MilitantClient(base_url="https://api.militant.revlibertaire.com")
client.authenticate("uzantnomo", "pasvorto")
posts = client.get_posts(feed="global")
print(posts)
Moderna ESM-kliento uzanta la norman fetch API de retumiloj kaj Node.js/Bun.
import { MilitantClient } from '@militant/sdk';
const client = new MilitantClient({ baseUrl: 'https://api.militant.revlibertaire.com' });
await client.login('uzantnomo', 'pasvorto');
const posts = await client.getPosts({ feed: 'global' });
console.log(posts);
Oficiala Go-kliento, nula ekstera dependeco (pura net/http), forta tipado kaj subteno de context.Context.
client := militant.NewClient("https://api.militant.revlibertaire.com")
token, err := client.Login(ctx, "uzantnomo", "pasvorto", "")
posts, err := client.ListPosts(ctx, "global", 1, 10)
Oficiala Rust-kliento uzanta ureq kaj serde. Sekura memoro, nula nesekura kodo kaj sinkrona facileco.
let mut client = MilitantClient::new("https://api.militant.revlibertaire.com");
let auth = client.login("uzantnomo", "pasvorto", None)?;
let posts = client.list_posts("global", 1, 10)?;