Militant API vikio

Listo de Finpunktoj

Helpaj paghoj, ekzemploj kaj teknikaj detaloj en pli klara aranĝo.

Kompleta dokumentaro de ĉiuj finpunktoj de la Militant API. Vi povas ankaŭ vidi la dinamikan JSON-liston de finpunktoj ĉe /api/v1/index.php.

Alirniveloj & Roloj

La API distingas inter malsamaj roloj, precipe por moderigo kaj rektaj elsendoj:

Vidu la kompletan Tradukan gvidilon

Rapidec-limigo

Ĉiuj petoj estas limigitaj laŭ finpunkto:

| Endpoint | Limo | |----------|------| | Auth | 50 req/h | | Posts | 100 req/h | | Comments | 150 req/h | | Comment Reactions | 200 req/h | | Messages | 200 req/h | | Likes/Reactions | 200 req/h | | Group Reactions | 200 req/h | | Upload | 50 req/h | | Export | 5 req/h | | Aliaj | 100 req/h |

Vidu README API

Aŭdaj/Vidaj alvokoj (nur Flutter)

Atentu: Ekskluzive por la Flutter-poŝtelefona aplikaĵo - Bezonas la kaplinion X-Flutter-App: militant-flutter-v1

| Endpoint | Metodo | Priskribo | |----------|--------|-----------| | /api/v1/calls.php?action=initiate_talk | POST | Inviti grupon al Nextcloud Talk-salono | | /api/v1/calls.php?action=initiate | POST | Komenci 1-al-1 aŭ grupan alvokon | | /api/v1/calls.php?action=answer | POST | Respondi al alvoko | | /api/v1/calls.php?action=join | POST | Aliĝi al grupa alvoko | | /api/v1/calls.php?action=peer_offer | POST | Sendi WebRTC-oferton (grupo) | | /api/v1/calls.php?action=peer_answer | POST | Sendi WebRTC-respondon (grupo) | | /api/v1/calls.php?action=ice_candidate | POST | Interŝanĝi ICE-kandidatojn | | /api/v1/calls.php?action=ice_restart | POST | Restartigi ICE-on (reta ŝanĝo) | | /api/v1/calls.php?action=reject | POST | Malakcepti alvokon | | /api/v1/calls.php?action=leave | POST | Forlasi grupan alvokon sen fini ĝin | | /api/v1/calls.php?action=end | POST | Fini alvokon | | /api/v1/calls.php?action=poll | GET | Demandpeti ĝisdatigojn | | /api/v1/calls.php?action=history | GET | Historio de alvokoj |

Ekzemploj

Komenci privatan alvokon:

POST /api/v1/calls.php?action=initiate
Headers:
  Authorization: Bearer {token}
  X-Flutter-App: militant-flutter-v1
Body:
{
  "recipient_id": 123,
  "call_type": "audio",
  "offer": "v=0\r\no=- 123456..."
}

Komenci grupan alvokon:

POST /api/v1/calls.php?action=initiate
Headers:
  Authorization: Bearer {token}
  X-Flutter-App: militant-flutter-v1
Body:
{
  "group_id": 456,
  "call_type": "video",
  "offer": "v=0\r\no=- 123456..."
}

Fediverso (ActivityPub)

MILITANT subtenas la protokolon ActivityPub — la malferma normo por maldistribuitaj sociaj retoj (Mastodon, Pleroma, Misskey, PeerTube…).

WebFinger-malkovro

MILITANT-uzantojn oni povas trovi de iu ajn Fediversa instanco per ilia adreso:

@username@via-domajno.com

Ĉi tio uzas la WebFinger-protokolon disponeblan je:

GET /.well-known/webfinger?resource=acct:username@via-domajno.com

ActivityPub-aktora profilo

Ĉiu uzanto havas JSON-LD Person-profilon alireblaj per:

GET /fediverse/actor.php?username={username}
Accept: application/activity+json

Respondo inkluzivas: identecon, biografion, avataraon, standardon, enpoŝtejon, elligejon, RSA-publikan ŝlosilon.

Abonanoj (Followers)

GET /fediverse/followers.php?username={username}          → Ĉefa kolekto (tuto)
GET /fediverse/followers.php?username={username}&page=1   → Paĝo 1 de abonanoj

---

API Fediverso (poŝtelefona aplikaĵo)

| Endpunkto | Metodo | Priskribo | |-----------|--------|-----------| | /api/v1/fediverse.php?action=profile | GET | Propra Fediversa profilo | | /api/v1/fediverse.php?action=profile&user_id={id} | GET | Fediversa profilo de alia uzanto | | /api/v1/fediverse.php?action=followers | GET | Propraj Fediversaj abonanoj (paĝiĝintaj) | | /api/v1/fediverse.php?action=followers&user_id={id} | GET | Fediversaj abonanoj de alia uzanto | | /api/v1/fediverse.php?action=following | GET | Listo de sekvataj foraj Fediversaj kontoj (paĝiĝinta) | | /api/v1/fediverse.php?action=following&user_id={id} | GET | Fora sekvatlisto de alia uzanto | | /api/v1/fediverse.php?action=feed | GET | Fluo de afiŝoj el foraj sekvataj kontoj | | /api/v1/fediverse.php?action=feed&refresh=1 | GET | Refreŝigas la forajn outbox-ojn antaŭ ol redoni la fluon | | /api/v1/fediverse.php?action=search_remote&q={handle} | GET | Solvas aŭ serĉas foran Fediversan konton | | /api/v1/fediverse.php?action=remote_profile&q={handle_aŭ_actor_url} | GET | Solvas unuopan foran profilon kun lastatempaj afiŝoj | | /api/v1/fediverse.php?action=follow_remote | POST | Sekvi foran Fediversan konton | | /api/v1/fediverse.php?action=unfollow_remote | DELETE | Ĉesi sekvi foran Fediversan konton |

#### Respondo action=profile

{
  "user_id": 42,
  "username": "anar",
  "actor_id": "https://domajno.com/users/anar",
  "fediverse_handle": "@anar@domajno.com",
  "fediverse_active": true,
  "followers_count": 17,
  "following_count": 9,
  "is_remote": false,
  "account_type": "local"
}

#### Respondo action=feed

{
  "posts": [
    {
      "id": 12,
      "remote_post_id": "https://mastodon.social/@alex/1143596789",
      "original_url": "https://mastodon.social/@alex/1143596789",
      "actor_url": "https://mastodon.social/users/alex",
      "username": "alex",
      "display_name": "Alex",
      "domain": "mastodon.social",
      "handle": "@alex@mastodon.social",
      "avatar": "https://mastodon.social/system/accounts/avatars/...",
      "content": "

Saluton Fediverso

", "media_url": null, "media_type": null, "published_at": "2026-04-19 10:10:00", "created_at": "2026-04-19 10:12:00", "profile_url": "https://mastodon.social/@alex", "is_remote": true, "account_type": "remote" } ], "meta": { "current_page": 1, "per_page": 20, "total": 1, "total_pages": 1 }, "synced_posts": 3 }

#### Respondo action=remote_profile

{
  "actor_url": "https://mastodon.social/users/alex",
  "username": "alex",
  "display_name": "Alex",
  "domain": "mastodon.social",
  "handle": "@alex@mastodon.social",
  "avatar": "https://mastodon.social/system/accounts/avatars/...",
  "summary": "Sindikat-organizanto kaj programisto",
  "profile_url": "https://mastodon.social/@alex",
  "is_following": true,
  "is_remote": true,
  "account_type": "remote",
  "recent_posts": [
    {
      "remote_post_id": "https://mastodon.social/@alex/1143596789",
      "content": "

Saluton Fediverso

", "published_at": "2026-04-19 10:10:00" } ] }

Por POST /api/v1/fediverse.php?action=follow_remote kaj DELETE /api/v1/fediverse.php?action=unfollow_remote, la JSON-korpo povas enhavi unu el ĉi tiuj kampoj:

{
  "handle": "@alex@mastodon.social"
}

aŭ:

{
  "actor_url": "https://mastodon.social/users/alex"
}

> Noto: GET /api/v1/users.php ankaŭ redonas fediverse_actor_id, fediverse_followers_count, fediverse_following_count, fediverse_handle, is_remote, kaj account_type.

Teknika stato

| Funkcieco | Stato | |---|---| | WebFinger-malkovro | ✅ Efektivigita | | Aktora JSON-LD-profilo | ✅ Efektivigita | | Aŭtomate generitaj RSA-ŝlosiloj | ✅ Efektivigita | | Publikaj afiŝoj (Outbox) | ✅ Efektivigita | | Enpoŝtejo (ricevado de agadoj) | ✅ Efektivigita | | Elsendaj HTTP-subskriboj | ✅ Efektivigita | | Enskribkontrolado | ✅ Efektivigita | | Subskribita Accept(Follow) | ✅ Efektivigita | | Foraj abonanoj en datumbazo | ✅ Efektivigita | | Fora sekvatlisto en datumbazo | ✅ Efektivigita | | Solvado de foraj profiloj | ✅ Efektivigita | | Fora sekvo / malsekvo per API | ✅ Efektivigita | | Sinkronigo kaj konservado de fora fluo | ✅ Efektivigita |