Format de manifeste

Un manifeste est un objet structuré contenant des listes et des dictionnaires clé-valeur, encodé au format JSON. Toutes les chaînes sont encodées en UTF8.

Types spécifiques

Objet internationalisé

Un objet internationalisé est un objet dont les clés sont les code langue au format ISO 639-1 et les valeurs localisées (traduites) de l’objet. Tout objet internationalisé doit comporter une localisation dans chacune des langues supportées par l’instance (voir les champs à suivre).

Exemple d’une chaîne internationalisée :

{
    "en": "hello, world!"
    "fr": "bonjour le monde !"
}

Exemple d’une liste de chaînes internationalisée :

{
    "en": ["good", "bad"],
    "fr": ["bon", "mauvais"]
}

Références

Les références sont :

  • soit des URL entièrement qualifiées précisant le schéma ;
  • soit des adresses locales à la fédération de l’instance décrite.

Pour indiquer une adresse d’une autre fédération, il est impératif de préciser une URL complète.

Catégories de contenu

Les catégories de contenu font référence à une liste de types de contenu et leurs définitions.

TODO : une première version de cette liste est à proposer.

Structure du manifeste

Le manifeste est un objet JSON, dont les clés et valeurs attendues sont détaillées ci-dessous.

Chaque clé présentée est optionnelle mais les clés principales suivantes doivent être renseignées :

  • federation ;
  • service ;
  • instance ;
  • name ;
  • display ;
  • languages ;
  • updated.

federation

Fédération à laquelle l’instance est rattachée, sous forme d’une chaîne.

Valeurs acceptées :

  • matrix, désignant la fédération Matrix ;
  • activitypub, désignant le Fédivers ActivityPub ;
  • xmpp, désignant la fédération Jabber / XMPP ;
  • smtp, désignant la fédération e-mail / SMTP ;
  • diaspora, désignant la fédération Diaspora.

service

Type de service offert par l’instance au sein de la fédération.

Valeurs acceptées pour une fédération matrix :

  • chat, désignant une instance de messagerie ;
  • services, désignant une instance de publication de services ou de bridges.

Valeurs acceptées pour une fédération activitypub :

  • microblog, désignant une instance de micro-blogging (type Mastodon, Pleroma) ;
  • video, désignant une instance de publication de vidéos (type PeerTube) ;
  • audio, désignant une instance de publication d’audio (type Funkwhale) ;
  • blog, désignant une instance de publication d’articles (type Plume ou WriteFreely) ;
  • picture, désignant une instance de publication d’images (type Pixelfed) ;
  • links, désignant une instance de partage de liens (type Lemmy ou Prismo).

Valeurs acceptées pour une fédération xmpp :

  • chat, désignant une instance de messagerie.

Valeurs acceptées pour une fédération smtp :

  • email, désignant un serveur e-mail standard ;
  • lists, désignant un serveur de listes de diffusion.

Valeurs acceptées pour une fédération dispora :

  • microblg désignant une instance Diaspora standard.

instance

Nom technique de l’instance, tel qu’il est employé pour la découverte de l’instance au sein de la fédération.

Ce nom doit impérativement être cohérent avec l’adresse de publication du manifeste, sans quoi le manifeste doit être ignoré.

name

Nom affiché de l’instance ou de la plateforme à laquelle l’instance est rattachée.

display

Niveau de diffusion des informations du manifeste.

Valeurs acceptées :

  • public, indiquant que le contenu du manifeste peut être republié sans limitation ;
  • unlisted, indiquant que le contenu du manifeste peut être republié mais pas affiché ou promu dans une liste publique d’instances (il peut être recherché précisément toutefois) ;
  • private, indiquant que le contenu du manifeste ne doit pas être rediffusé, bien que ses informations puissent être agrégées dans des statistiques globales.

languages

Liste des langues pour lesquelles l’instance assure une communication et un soutien utilisateur.

Les langues sont codées au format ISO 639-1.

Exemple pour une instance supportant le français et l’anglais :

["fr", "en"]

updated

Instant de la dernière mise à jour du manifeste, en secondes depuis l’heure UNIX.

Cet instant peut être employé pour ignorer des manifestes qui ne sont pas suffisamment tenus à jour.

cache

Durée pendant laquelle ce manifeste ne doit pas être récupéré une nouvelle fois par un robot, en secondes.

grace

Durée pendant laquelle un robot ayant déjà récupéré ce manifeste ignore des erreurs de récupération.

Cette durée peut être employée pour ne pas supprimer d’une liste les manifestes indisponibles temporairement ou ne respectant pas le format. Une durée plus longue permet une plus grande tolérance aux évolutions du format mais impose un délai plus long d’oubli en cas de disparition de l’instance.

description

Description textuelle de l’instance sous forme de chaîne internationalisée.

Les retours charriot ne sont pas nécessairement conservés. Le formattage n’est pas supporté.

URL d’un logo pour l’instance.

L’URL doit être une adresse HTTPS publique vers une image au format image/png, image/jpg, image/gif ou image/svg.

tags

Etiquettes libres applicables à l’instance, sous forme de liste internationalisée de chaînes. Les listes ne sont pas nécessairement de même longueur.

Exemple :

{
    "en": ["freedom", "privacy"],
    "fr": ["liberté", "vie privée", "fraternité"]
}

rules

Règles applicables à l’instance.

Champ composé au format objet, dont les champs sont tous optionnels :

  • laws, indiquant les codes ISO 3166 Alpha 2 des pays dont les lois sont applicables à l’instance ;
  • tagged, indiquant les catégories de contenu devant être marquées explicitement sur l’instance ;
  • forbidden, indiquant les catégories de contenu interdites sur l’instance (outre les lois applicables si mentionnées) ;
  • other, chaîne internationalisée indiquant d’éventuelles autres règles.

Exemple :

{
    "laws": ["fr"],
    "tagged": ["nudity", "violence"],
    "forbidden": ["disrespect", "spam"],
    "other": {
        "en": "Please keep calm.",
        "fr": "Merci de garder votre calme."
    }
}

technical

Informations techniques sur la gestion de l’instance.

Champ composé au format objet, dont les champs sont tous optionnels :

  • technologies, indiquant les technologies employées par l’instance sous forme de liste de chaînes libres ;
  • software, indiquant le logiciel spécifique de l’instance sous forme de chaîne libre ;
  • version, indiquant la version du logiciel de l’instance sous forme de chaîne libre ;
  • tls, indiquant si l’instance support TLS sous forme de booléen ;
  • fde, indiquant si les données au repos de l’instance sont chiffrées (full disk encryption) sous forme de booléen ;
  • foss, indiquant si l’instance est gérée exclusivement à partir de logiciels libres sous forme de booléen ;
  • lifetime, indiquant l’instant jusqu’auquel l’instance est assurée de fonctionner, en nombre de secondes depuis epoch UNIX ;
  • updates, indiquant le délai moyen d’application des mises à jour sur l’instance, en secondes ;
  • rpo, indiquant le délai moyen entre deux sauvegardes ou la durée moyenne de perte de données en cas de panne, en secondes ;
  • rto indiquant le délai moyen de rétablissement de service en cas de panne, en secondes ;
  • sla, indiquant l’indisponibilité totale moyenne mensuelle du service, en secondes.

Les durées indiquées sont exprimées sous forme d’entiers en secondes mais peuvent être interprétées avec une précision inférieure lors de l’affichage, par exemple les délais de mise à jour peuvent être affichés en jours tandis que les délais de rétablissement de service en minutes.

accounts

Information sur la gestion des comptes par l’instance.

Champ composé au format objet, dont les champs sont tous optionnels :

  • registration précisant le mode d’enregistrement ;
  • conditions listant les conditions applicables à l’enregistrement, une liste vide indiquant une inscription sans condition ;
  • deletion précisant les possibilités de suppression de compte ;
  • migration précisant les possibilités de migration de l’instance.

Valeurs acceptées pour le champ registration :

  • internal, indiquant un enregistrement dans l’interface de l’instance ;
  • support, indiquant un enregistrement sur demande ;
  • external, indiquant un enregistrement par un système externe (par ex. SSO) ;
  • closed, indiquant qu’il n’y a pas d’enregistrement possible.

Valeurs acceptées pour le champ conditions :

  • major, réservé aux personnes majeures ;
  • opinion, réservé aux personnes partageant les opinions de l’instance ;
  • location, réservé aux personnes résidant dans les lieux précisés ;
  • human, réservé aux humains (pas de robot) ;
  • member, réservé aux membres (d’une association, d’une entreprise, etc.)

Valeurs acceptées pour le champ deletion :

  • none, indiquant l’impossibilité de supprimer son compte ;
  • suspend, indiquant la possibilité de verrouiller son compte ;
  • delete, indiquant la possibilité de supprimer son compte ;
  • purge, indiquant la possibilité de supprimer son compte et les données associées.

Valeurs acceptées pour le champ migration :

  • none, indiquant l’impossibilité de migrer son compte ;
  • export, indiquant la possibilité d’exporter les données de son compte ;
  • migrate, indiquant la possibilité de migrer intégralement son compte.

stats

Statistiques concernant l’instance.

Champ composé au format objet, dont les champs sont tous des entiers, optionnels :

  • rooms, indiquant le nombre de salons de discussion si applicable ;
  • users, indiquant le nombre d’utilisateurs réels ;
  • services, indiquant le nombre d’utilisateurs robots ou bridgés ;
  • messages, indiquant le nombre de messages ;
  • tags, indiquant le nombre de tags si applicable ;
  • groups, indiquant le nombre de groupes d’utilisateurs si applicable ;
  • links, indiquant le nombre de liens vers d’autres instances.

Les valeurs fournies peuvent être approximatives.

actors

Acteurs intervenant sur l’instance.

Champ composé au format objet, dont les clés sont les noms des acteurs et les valeurs des objets comportant les champs obligatoires :

  • type, indiquant le type d’acteur ;
  • ref, fournissant des références sous forme d’une liste ;
  • location, pays où réside l’acteur, au format ISO 639-1.

Valeurs acceptées pour le champ type :

  • person, désignant une personne physique ;
  • nonprofit, désignant une structure non-étatique ne recherchant pas le profit ;
  • company, désignant une entreprise privée ;
  • state, désignant un acteur étatique.

roles

Rôle des acteurs au sein de l’instance.

Champ composé au format objet, dont les valeurs sont des listes d’acteurs désignés par leur nom et les clés sont les rôles, tous optionnels, parmi les suivants :

  • owner, désignant un propriétaire légale de l’instance ;
  • moderator, désignant un modérateur de l’instance ;
  • admin, désignant un administrateur technique de l’instance ;
  • host, désignant un hébergeur de l’instance

relationships

Autres instances avec laquelle cette instance est en relation.

Liste de relations, chacune étant un objet comportant les champs obligatoires :

  • type, indiquant le type de relation ;
  • federation, indiquant la fédération à laquelle l’instance appartient ;
  • instance, indiquant le nom de l’instance dans la fédération ;
  • ref, liste de références concernant l’instance.

Valeurs acceptées pour le champ type :

  • owned : indiquant que les propriétaires de l’instance sont identiques ;
  • friend : indiquant que l’instance est recommandée ;
  • partner : indiquant que l’instance est partenaire.

extra

Fonctionnalités additionnelles de l’instance.

Liste de fonctionnalités, chacune étant un objet comportant les champs obligatoires :

  • type, indiquant le type de fonctionnalité ;
  • name, indiquant le nom de la fonctionnalité sous forme de chaîne ;
  • description, décrivant la fonctionnalité sous forme de chaîne internationnalisée ;
  • ref, liste de références concernant la fonctionnalité.

Valeurs acceptées pour le champ type :

  • bridge, désignant une passerelle avec une autre messagerie.
Dernière modification January 1, 0001