Aller au contenu principal

Instance et serveur

Cette page couvre les APIs pour récupérer les métadonnées du serveur, les emojis personnalisés, les annonces, l'état de santé, les préférences utilisateur, le répertoire de profils, les intégrations oEmbed et les marqueurs de fil.

Informations sur l'instance

Instance courante (v2)

final instance = await client.instance.fetch();
print(instance.title);
print(instance.description);
print(instance.version);

Retourne un MastodonInstance avec les métadonnées v2 complètes incluant les langues configurées, les règles et les informations de contact.

Domaines pairs

final peers = await client.instance.fetchPeers();
// List<String> of known federated domains

Activité hebdomadaire

final activity = await client.instance.fetchActivity();
for (final week in activity) {
print('Statuses: ${week.statuses}');
}

Retourne jusqu'à 12 semaines d'objets MastodonWeeklyActivity.

Règles de l'instance

final rules = await client.instance.fetchRules();
for (final rule in rules) {
print(rule.text);
}

Domaines bloqués

final blocked = await client.instance.fetchDomainBlocks();

Retourne la liste des domaines bloqués par l'instance. Il s'agit d'une liste au niveau du serveur, pas de la liste par utilisateur ; voir la page Modération pour les blocages de domaines par utilisateur.

Description étendue

final description = await client.instance.fetchExtendedDescription();
print(description.content);

Politique de confidentialité et conditions d'utilisation

final policy = await client.instance.fetchPrivacyPolicy();
final tos = await client.instance.fetchTermsOfService();

// Fetch a specific historical version of the ToS by date
final old = await client.instance.fetchTermsOfServiceByDate('2024-01-01');

Langues de traduction

final languages = await client.instance.fetchTranslationLanguages();
// Map<String, List<String>> — source lang → supported target langs
languages.forEach((source, targets) {
print('$source$targets');
});

Ancienne v1 (dépréciée)

// ignore: deprecated_member_use
final instanceV1 = await client.instance.fetchV1();

fetchV1() est dépréciée depuis Mastodon 4.0.0. Préférez fetch() sauf si vous devez prendre en charge des serveurs plus anciens.


Emojis personnalisés

final emojis = await client.customEmojis.fetch();
for (final emoji in emojis) {
print(':${emoji.shortcode}: → ${emoji.url}');
}

Aucune authentification n'est requise. Retourne une List<MastodonCustomEmoji> de tous les emojis personnalisés disponibles sur le serveur.


Annonces

Lister les annonces

final announcements = await client.announcements.fetch();
for (final a in announcements) {
print(a.text);
}

Rejeter une annonce

await client.announcements.dismiss('announcement-id');

Marque l'annonce comme lue pour l'utilisateur authentifié.

Réactions

// Add a reaction (Unicode emoji or custom shortcode)
await client.announcements.addReaction('announcement-id', '👍');
await client.announcements.addReaction('announcement-id', 'blobcat');

// Remove a reaction
await client.announcements.removeReaction('announcement-id', '👍');

Vérification d'état

final healthy = await client.health.check();
// Returns true if the web process, database, and cache are all healthy.
// Throws MastodonException if any component is unhealthy.

Aucune authentification n'est requise. Utile pour la surveillance et les sondes de disponibilité.


Préférences utilisateur

final prefs = await client.preferences.fetch();
print(prefs.postingDefaultVisibility);
print(prefs.postingDefaultLanguage);
print(prefs.expandSpoilers);

Retourne les MastodonPreferences de l'utilisateur authentifié. Pour mettre à jour les préférences, utilisez client.accounts.updateCredentials().


Répertoire de profils

// Most recently active accounts (global)
final active = await client.directory.fetch(
order: 'active',
limit: 40,
);

// Newest local accounts only
final newLocal = await client.directory.fetch(
order: 'new',
local: true,
);

Paramètres :

ParamètreDéfautMaxDescription
limit4080Nombre de résultats
offsetSauter ce nombre de résultats
orderactive ou new
localtrue pour les comptes locaux uniquement

Aucune authentification n'est requise.


oEmbed

final embed = await client.oembed.fetch(
'https://mastodon.social/@user/12345',
maxwidth: 500,
);
print(embed.html);

Retourne un MastodonOEmbed avec le HTML intégrable pour une URL de statut. Aucune authentification n'est requise.


Marqueurs de fil

Les marqueurs vous permettent de persister la position de lecture d'un utilisateur dans le fil personnel et le fil des notifications entre les sessions et les appareils.

Récupérer les marqueurs

final markers = await client.markers.fetch(['home', 'notifications']);
final home = markers['home'];
print(home?.lastReadId);

Passez une liste contenant 'home', 'notifications', ou les deux. Retourne une map vide si aucun n'est spécifié.

Sauvegarder les marqueurs

final updated = await client.markers.save(
homeLastReadId: '109876543210',
notificationsLastReadId: '987654321',
);

Au moins l'un de homeLastReadId ou notificationsLastReadId doit être fourni. Si le serveur répond avec 409 Conflict (conflit d'écriture depuis un autre appareil), relancez la requête.

// Retry on conflict example
Map<String, MastodonMarker> result;
while (true) {
try {
result = await client.markers.save(homeLastReadId: lastId);
break;
} on MastodonConflictException {
// Small delay before retry
await Future.delayed(const Duration(milliseconds: 500));
}
}