Ascendance sur N générations
const url = 'https://api-equides.org/v1/equides/Z4ogLhlkS2CeUdq0bZ0YFw/pedigree?generations=5';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api-equides.org/v1/equides/Z4ogLhlkS2CeUdq0bZ0YFw/pedigree";
let querystring = [ ("generations", "5"), ];
let client = reqwest::Client::new(); let response = client.get(url) .query(&querystring) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request GET \ --url 'https://api-equides.org/v1/equides/Z4ogLhlkS2CeUdq0bZ0YFw/pedigree?generations=5'En REST naïf, remonter un pedigree coûterait une requête par ancêtre — 31 allers-retours sur cinq générations. La filiation étant résolue en indices de ligne à l’ingestion, cet endpoint répond en une seule requête cacheable, au coût borné.
Un parent référencé mais absent du jeu interrompt la branche : l’écart entre noeuds et noeuds_theoriques mesure ces lacunes.
Parameters
Section intitulée « Parameters »Path Parameters
Section intitulée « Path Parameters »Example
Z4ogLhlkS2CeUdq0bZ0YFwQuery Parameters
Section intitulée « Query Parameters »Profondeur, 4 par défaut, 8 au maximum ; au-delà, un 400. Un arbre double de taille à chaque rang : 8 générations représentent déjà jusqu’à 1 023 ancêtres.
Example
5Responses
Section intitulée « Responses »Arbre d’ascendance. noeuds compte les ancêtres réellement connus, noeuds_theoriques ceux qu’un pedigree complet compterait.
object
Nœud d’un arbre d’ascendance ; pere et mere sont des Noeud.
object
0 pour le sujet, 1 pour ses parents, etc.
Profondeur demandée.
Ancêtres réellement connus, sujet compris.
Ce qu’un pedigree complet compterait à cette profondeur. L’écart avec noeuds mesure les lacunes de l’ascendance.
Examplegenerated
{ "arbre": { "annee_naissance": 1, "generation": 1, "id": "example", "mere": {}, "nom": "example", "pere": {}, "race": "example", "sexe": "example" }, "generations": 1, "noeuds": 1, "noeuds_theoriques": 1}Contenu inchangé depuis l’ETag fourni en If-None-Match. Aucun corps, et rien n’est recalculé côté service.
Profondeur hors bornes.
Corps d’erreur conforme à la RFC 9457 (« Problem Details for HTTP APIs »), servi en application/problem+json. Les champs parametre et indice sont des extensions, que la RFC autorise.
object
Explication propre à cette occurrence.
Extension : piste de correction — valeurs admises, référentiel à consulter, ou paramètre le plus proche en cas de faute de frappe.
Extension : paramètre fautif, quand l’erreur en désigne un.
Résumé lisible, stable pour un type donné.
URI du type de problème, relative — le client la résout contre l’URI de la requête. Elle pointe vers la section correspondante de la documentation.
Example
{ "detail": "paramètre inconnu `rase`", "documentation": "https://docs.api-equides.org", "indice": "vouliez-vous dire `race` ?", "parametre": "rase", "status": 400, "title": "Paramètre invalide", "type": "/#erreur-parametre-invalide"}Identifiant inconnu.
Corps d’erreur conforme à la RFC 9457 (« Problem Details for HTTP APIs »), servi en application/problem+json. Les champs parametre et indice sont des extensions, que la RFC autorise.
object
Explication propre à cette occurrence.
Extension : piste de correction — valeurs admises, référentiel à consulter, ou paramètre le plus proche en cas de faute de frappe.
Extension : paramètre fautif, quand l’erreur en désigne un.
Résumé lisible, stable pour un type donné.
URI du type de problème, relative — le client la résout contre l’URI de la requête. Elle pointe vers la section correspondante de la documentation.
Example
{ "detail": "paramètre inconnu `rase`", "documentation": "https://docs.api-equides.org", "indice": "vouliez-vous dire `race` ?", "parametre": "rase", "status": 400, "title": "Paramètre invalide", "type": "/#erreur-parametre-invalide"}Quota de débit dépassé pour l’adresse appelante. Retry-After indique le délai.
Corps d’erreur conforme à la RFC 9457 (« Problem Details for HTTP APIs »), servi en application/problem+json. Les champs parametre et indice sont des extensions, que la RFC autorise.
object
Explication propre à cette occurrence.
Extension : piste de correction — valeurs admises, référentiel à consulter, ou paramètre le plus proche en cas de faute de frappe.
Extension : paramètre fautif, quand l’erreur en désigne un.
Résumé lisible, stable pour un type donné.
URI du type de problème, relative — le client la résout contre l’URI de la requête. Elle pointe vers la section correspondante de la documentation.
Example
{ "detail": "paramètre inconnu `rase`", "documentation": "https://docs.api-equides.org", "indice": "vouliez-vous dire `race` ?", "parametre": "rase", "status": 400, "title": "Paramètre invalide", "type": "/#erreur-parametre-invalide"}Capacité de traitement simultané atteinte, délai maximal dépassé, ou données non chargées. Retry-After indique le délai.
Corps d’erreur conforme à la RFC 9457 (« Problem Details for HTTP APIs »), servi en application/problem+json. Les champs parametre et indice sont des extensions, que la RFC autorise.
object
Explication propre à cette occurrence.
Extension : piste de correction — valeurs admises, référentiel à consulter, ou paramètre le plus proche en cas de faute de frappe.
Extension : paramètre fautif, quand l’erreur en désigne un.
Résumé lisible, stable pour un type donné.
URI du type de problème, relative — le client la résout contre l’URI de la requête. Elle pointe vers la section correspondante de la documentation.
Example
{ "detail": "paramètre inconnu `rase`", "documentation": "https://docs.api-equides.org", "indice": "vouliez-vous dire `race` ?", "parametre": "rase", "status": 400, "title": "Paramètre invalide", "type": "/#erreur-parametre-invalide"}