/api/sd/quality
GETDisponible

Matrice de qualité des données (vue collecteur)

Couche de données interne : matrice de qualité des données (plateforme × famille de données)

GET/api/sd/quality

Requête

Cet endpoint n'accepte aucun paramètre.

Exemple de requête

curl -s "https://www.coinboss.com/api/sd/quality"

Champs de la réponse

Le tableau des champs est généré à partir de réponses réelles : il liste donc exactement ce que renvoie l'endpoint. Les chemins utilisent a[] pour les éléments d'un tableau et {*} pour les objets indexés par un nom dynamique, comme une crypto ou une plateforme.

ChampTypeUnitéDescription
successboolean—true lorsque la requête a abouti. En cas d'échec, le corps est `{ success: false, code, error, request_id }`.
nownumbermsHeure du serveur au moment où la réponse a été construite.
familiesarray—Familles de données contrôlées pour chaque plateforme, dans l'ordre d'affichage.
families[]string—Identifiant de la famille : `ticker`, `oi`, `funding`, `funding_settle`, `liquidation`, `ls`, `spot` ou `sd_contracts`.
exchangesarray—Plateformes.
exchanges[]string—Plateformes.
matrixobject—Matrice indexée par ligne et par colonne. clés dynamiques: aster,backpack,binance,bingx,bitfinex,bitget
matrix.{*}object—Matrice indexée par ligne et par colonne. clés dynamiques: ticker,oi,funding,funding_settle,liquidation,ls
matrix.{*}.tickerobject—Fraîcheur des tickers futures de la plateforme : `status`, nombres de lignes, `age_s` et les fenêtres de fraîcheur / exploitable. Les clés du dictionnaire sont les identifiants de plateforme. peut être absent
matrix.{*}.ticker.statusstring—Statut. peut être absent
matrix.{*}.ticker.rowsnumber—Lignes du résultat. peut être absent
matrix.{*}.ticker.rows_freshnumber—Lignes mises à jour dans la fenêtre de fraîcheur. peut être absent
matrix.{*}.ticker.rows_usablenumber—Lignes situées dans la fenêtre exploitable. peut être absent
matrix.{*}.ticker.rows_orphannumber—Lignes dont le contrat n'est plus coté. peut être absent
matrix.{*}.ticker.rows_invalidnumber—Lignes rejetées par la validation. peut être absent
matrix.{*}.ticker.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.ticker.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.ticker.usable_within_snumbersLes données plus anciennes que ce seuil ne sont pas du tout utilisées. peut être absent
matrix.{*}.oiobject—Positions ouvertes. peut être absent
matrix.{*}.oi.statusstring—Statut. peut être absent
matrix.{*}.oi.rowsnumber—Lignes du résultat. peut être absent
matrix.{*}.oi.rows_freshnumber—Lignes mises à jour dans la fenêtre de fraîcheur. peut être absent
matrix.{*}.oi.rows_usablenumber—Lignes situées dans la fenêtre exploitable. peut être absent
matrix.{*}.oi.rows_orphannumber—Lignes dont le contrat n'est plus coté. peut être absent
matrix.{*}.oi.rows_invalidnumber—Lignes rejetées par la validation. peut être absent
matrix.{*}.oi.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.oi.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.oi.usable_within_snumbersLes données plus anciennes que ce seuil ne sont pas du tout utilisées. peut être absent
matrix.{*}.fundingobject—Bloc ou valeur du taux de financement. peut être absent
matrix.{*}.funding.statusstring—Statut. peut être absent
matrix.{*}.funding.rowsnumber—Lignes du résultat. peut être absent
matrix.{*}.funding.rows_freshnumber—Lignes mises à jour dans la fenêtre de fraîcheur. peut être absent
matrix.{*}.funding.rows_usablenumber—Lignes situées dans la fenêtre exploitable. peut être absent
matrix.{*}.funding.rows_orphannumber—Lignes dont le contrat n'est plus coté. peut être absent
matrix.{*}.funding.rows_invalidnumber—Lignes rejetées par la validation. peut être absent
matrix.{*}.funding.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.funding.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.funding.usable_within_snumbersLes données plus anciennes que ce seuil ne sont pas du tout utilisées. peut être absent
matrix.{*}.funding.rows_unknown_intervalnumbercountLignes de financement mises à jour dans les 4 dernières heures dont l'intervalle de règlement est inconnu et qui ne peuvent donc pas être normalisées sur 8 heures ; une seule de ces lignes suffit à rendre la cellule `partial`. peut être absent
matrix.{*}.funding.rows_no_next_timenumbermsHorodatage. peut être absent
matrix.{*}.funding.rows_no_livenessnumbercountLignes de financement récemment mises à jour sur des contrats sans signe de trading actif (délistés ou sans volume) ; exclues du décompte de fraîcheur. peut être absent
matrix.{*}.funding_settleobject—Fraîcheur de l'historique des règlements de financement de la plateforme : `status`, `age_s` du règlement le plus récent, `symbols` et `history_from`. peut être absent
matrix.{*}.funding_settle.statusstring—Statut. peut être absent
matrix.{*}.funding_settle.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.funding_settle.symbolsnumber—Symboles. peut être absent
matrix.{*}.funding_settle.history_fromnumbermsEnregistrement le plus ancien conservé. peut être absent
matrix.{*}.funding_settle.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.liquidationobject—Bloc liquidations. peut être absent
matrix.{*}.liquidation.statusstring—Statut. peut être absent
matrix.{*}.liquidation.viastring—Chemin de collecte. peut être absent
matrix.{*}.liquidation.last_event_age_snumber|nullsSecondes écoulées depuis l'événement. peut être absent
matrix.{*}.liquidation.events_1hnumbercountOrdres de liquidation stockés en provenance de cette plateforme au cours de la dernière heure ; les tailles d'ordre minimales diffèrent selon les plateformes, les décomptes ne sont donc pas comparables. peut être absent
matrix.{*}.liquidation.events_24hnumbercountOrdres de liquidation stockés en provenance de cette plateforme au cours des dernières 24 heures ; les tailles d'ordre minimales diffèrent selon les plateformes, les décomptes ne sont donc pas comparables. peut être absent
matrix.{*}.liquidation.ws_heartbeat_age_snumber|nullsSecondes écoulées depuis l'événement. peut être absent
matrix.{*}.liquidation.judged_bystring—Horodatage à partir duquel le statut a été évalué. peut être absent
matrix.{*}.liquidation.idle_ok_snumbersPlus long intervalle sans liquidation encore considéré comme normal pour cette plateforme ; un intervalle plus long fait passer le flux à `stale`. peut être absent
matrix.{*}.lsobject—Fraîcheur des lignes de ratio long/short de la plateforme : `status`, nombres de lignes, `age_s` et les fenêtres de fraîcheur / exploitable. peut être absent
matrix.{*}.ls.statusstring—Statut. peut être absent
matrix.{*}.ls.reasonstring—Code de raison. peut être absent
matrix.{*}.spotobject—Bloc ou valeur du marché spot. peut être absent
matrix.{*}.spot.statusstring—Statut. peut être absent
matrix.{*}.spot.reasonstring—Code de raison. peut être absent
matrix.{*}.sd_contractsobject—Fraîcheur des lignes de contrats à marge crypto, à marge USDC et à échéance de la plateforme : `status`, nombres de lignes et `age_s`. peut être absent
matrix.{*}.sd_contracts.statusstring—Statut. peut être absent
matrix.{*}.sd_contracts.reasonstring—Code de raison. peut être absent
matrix.{*}.funding_settle.reasonstring—Code de raison. peut être absent
matrix.{*}.liquidation.reasonstring—Code de raison. peut être absent
matrix.{*}.liquidation.notestring—Remarque. peut être absent
matrix.{*}.ls.rowsnumber—Lignes du résultat. peut être absent
matrix.{*}.ls.rows_freshnumber—Lignes mises à jour dans la fenêtre de fraîcheur. peut être absent
matrix.{*}.ls.rows_usablenumber—Lignes situées dans la fenêtre exploitable. peut être absent
matrix.{*}.ls.rows_orphannumber—Lignes dont le contrat n'est plus coté. peut être absent
matrix.{*}.ls.rows_invalidnumber—Lignes rejetées par la validation. peut être absent
matrix.{*}.ls.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.ls.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.ls.usable_within_snumbersLes données plus anciennes que ce seuil ne sont pas du tout utilisées. peut être absent
matrix.{*}.spot.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.spot.coinsnumber—Cryptos. peut être absent
matrix.{*}.spot.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.spot.notestring—Remarque. peut être absent
matrix.{*}.sd_contracts.rowsnumber—Lignes du résultat. peut être absent
matrix.{*}.sd_contracts.rows_freshnumber—Lignes mises à jour dans la fenêtre de fraîcheur. peut être absent
matrix.{*}.sd_contracts.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.sd_contracts.rows_without_oinumbercountLignes de contrats ne portant aucune valeur de positions ouvertes en USD. peut être absent
matrix.{*}.sd_contracts.rows_oi_promotednumbercountLignes de contrats dont les positions ouvertes sont également comptées dans les totaux de positions ouvertes à l'échelle du site. peut être absent
matrix.{*}.sd_contracts.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.{*}object—Matrice indexée par ligne et par colonne.
matrix.{*}.{*}.statusstring—Statut.
matrix.{*}.{*}.reasonstring—Code de raison. peut être absent
matrix.{*}.{*}.age_snumbersSecondes écoulées depuis la dernière mise à jour de cette ligne. peut être absent
matrix.{*}.{*}.coinsnumber—Cryptos. peut être absent
matrix.{*}.{*}.fresh_within_snumbersFenêtre de fraîcheur : les données plus récentes que ce seuil sont considérées comme à jour. peut être absent
matrix.{*}.{*}.notestring—Remarque. peut être absent
matrix.{*}.oi.reasonstring—Code de raison. peut être absent
matrix.{*}.{*}.rowsnumber—Lignes du résultat. peut être absent
matrix.{*}.{*}.rows_freshnumber—Lignes mises à jour dans la fenêtre de fraîcheur. peut être absent
matrix.{*}.{*}.rows_usablenumber—Lignes situées dans la fenêtre exploitable. peut être absent
matrix.{*}.{*}.rows_orphannumber—Lignes dont le contrat n'est plus coté. peut être absent
matrix.{*}.{*}.rows_invalidnumber—Lignes rejetées par la validation. peut être absent
matrix.{*}.{*}.usable_within_snumbersLes données plus anciennes que ce seuil ne sont pas du tout utilisées. peut être absent
matrix.{*}.ticker.deadboolean—Présent uniquement lorsque `status` vaut `stale` : true lorsqu'aucune ligne ne se trouve non plus dans la fenêtre exploitable, la plateforme étant alors exclue des agrégats. peut être absent
matrix.{*}.funding.reasonstring—Code de raison. peut être absent
matrix.{*}.liquidation.pipeline_last_event_age_snumbersSecondes écoulées depuis l'événement. peut être absent
matrix.{*}.liquidation.node_heartbeat_age_snumbersSecondes écoulées depuis l'événement. peut être absent
summaryobject—Bloc de synthèse.
summary.freshnumbercountNombre de cellules plateforme × famille dont le statut est `fresh`.
summary.partialnumber—true lorsque seule une partie des données attendues est présente.
summary.stalenumber—Lignes ou indicateur signalant des données plus anciennes que la fenêtre de fraîcheur.
summary.invalidnumbercountNombre de cellules plateforme × famille dont le statut est `invalid`.
summary.unavailablenumber—Éléments pour lesquels aucune donnée n'est disponible, avec les raisons. Jamais déclarés comme 0.
sourcesarray—Sources de données.
sources[]object—Sources de données.
sources[].exchangestring—Identifiant de la plateforme, en minuscules (par exemple `binance`).
sources[].familystring—Famille de données de la tâche de collecte à laquelle se rapporte l'enregistrement de santé, par exemple `oi`, `funding`, `ticker`.
sources[].endpointstring—Libellé de l'appel amont suivi : hôte et chemin de l'API publique interrogée, ou nom d'un contrôle interne.
sources[].okboolean—false lorsque la tentative la plus récente a échoué, c'est-à-dire que la dernière erreur est plus récente que le dernier succès.
sources[].last_ok_age_snumber|nullsSecondes écoulées depuis l'événement.
sources[].last_err_age_snumber|nullsSecondes écoulées depuis l'événement.
sources[].last_statusnumber—Statut HTTP de l'appel le plus récent.
sources[].last_errorstring|null—Texte d'erreur du dernier échec, tronqué à 160 caractères ; null lorsqu'aucun n'est enregistré.
sources[].last_msnumbermsDurée de l'appel le plus récent ; null lorsqu'elle n'a pas été mesurée.
sources[].fail_streaknumbercountNombre d'appels en échec consécutifs à ce stade ; 0 après un succès.
sources[].ok_countnumbercountAppels réussis enregistrés dans le journal de santé.
sources[].err_countnumbercountAppels en échec enregistrés dans le journal de santé.
sources[].http_429numbercountAppels en échec ayant reçu une réponse HTTP 429 (limite de requêtes atteinte).
sources[].http_403numbercountAppels en échec ayant reçu une réponse HTTP 403 (accès interdit).
sources[].http_5xxnumbercountAppels en échec ayant reçu un statut HTTP 5xx.
sources[].timeoutsnumbercountAppels en échec pour dépassement du délai d'attente.
errorsobject—Dictionnaire associant l'identifiant de famille au message d'erreur, pour les familles dont le contrôle lui-même a échoué ; vide lorsque tous les contrôles ont été exécutés.
alertsarray—Alertes de la patrouille qualité qui sont ouvertes ou ont été résolues au cours des dernières 24 heures, les alertes ouvertes en premier (200 au plus).
alerts[]object—Une alerte : `level`, `exchange`, `family`, `code`, `detail`, heures d'ouverture / de dernière observation / de résolution, `hits` et `open`.
alerts[].levelstring—Niveau.
alerts[].exchangestring—Identifiant de la plateforme, en minuscules (par exemple `binance`).
alerts[].familystring—Famille de données concernée par l'alerte.
alerts[].codestring—Code.
alerts[].detailstring—Détail.
alerts[].opened_atnumbermsHorodatage.
alerts[].last_seen_atnumbermsHorodatage.
alerts[].resolved_atnumber|nullmsHorodatage.
alerts[].hitsnumbercountNombre de passages de la patrouille (un toutes les 5 minutes) ayant observé la condition depuis l'ouverture de l'alerte.
alerts[].openboolean—Prix d'ouverture de la période.
monitorobject—Santé de la supervision elle-même : âge du dernier passage de la patrouille, âge du heartbeat des collecteurs et `patrol_ok`.
monitor.alert_job_age_snumbersSecondes écoulées depuis l'événement.
monitor.collector_heartbeat_age_snumbersSecondes écoulées depuis l'événement.
monitor.patrol_okboolean—true lorsque la patrouille est passée au cours des 15 dernières minutes ; lorsqu'il vaut false, la liste `alerts` peut ne pas être à jour.
legendobject—Définition en texte brut de chaque statut de cellule.
legend.freshstring—Définition du statut `fresh`.
legend.partialstring—true lorsque seule une partie des données attendues est présente.
legend.stalestring—Lignes ou indicateur signalant des données plus anciennes que la fenêtre de fraîcheur.
legend.invalidstring—Définition du statut `invalid`.
legend.unavailablestring—Éléments pour lesquels aucune donnée n'est disponible, avec les raisons. Jamais déclarés comme 0.

Généré à partir de 1 réponses réelles (2026-11-11 23:01 UTC).

Exemple de réponse

/api/sd/quality · Réponse réelle (capture : 2026-11-13 03:59:27 UTC). Les tableaux et dictionnaires longs sont abrégés pour l'affichage : alerts comptait 3 éléments; matrix comptait 29 éléments; sources comptait 262 éléments; exchanges comptait 29 éléments.

  • {
    • "success": true,
    • "now": 1794542357043,
    • "families": [
      • "ticker",
      • "oi",
      • "funding",
      • "funding_settle",
      • "liquidation",
      • "ls",
      • "spot",
      • "sd_contracts"
      ],
    • "exchanges": [
      • "aster",
      • "backpack",
      • "binance",
      • "bingx",
      • "bitfinex",
      • "bitget",
      • "bitstamp",
      • "bitunix"
      ],
    • "matrix": {
      • "aster": { … 8 },
      • "backpack": { … 8 }
      },
    • "summary": {
      • "fresh": 123,
      • "partial": 7,
      • "stale": 1,
      • "invalid": 0,
      • "unavailable": 101
      },
    • "sources": [
      • { … 16 },
      • { … 16 }
      ],
    • "errors": {},
    • "alerts": [
      • { … 10 },
      • { … 10 }
      ],
    • "monitor": {
      • "alert_job_age_s": 20,
      • "collector_heartbeat_age_s": 17,
      • "patrol_ok": true
      },
    • "legend": {
      • "fresh": "data timestamps within the fresh window",
      • "partial": "some rows outside the fresh window or missing a required field",
      • "stale": "no row within the fresh window (dead=true: also outside the usable window, excluded from aggregates)",
      • "invalid": "more than half of usable rows fail sanity checks",
      • "unavailable": "no public source or not collected; shown as —, never 0"
      }
    }

Détails

Authentification
Aucune. Endpoint public.
Limite de requêtes
1200 requêtes par minute et par IP
Cache serveur
20s
Micro-cache en périphérie
10s
Fréquence de mise à jour
matrice calculée à la demande (mémoïsation en processus de 20 s) ; tâche d'alerte toutes les 5 min
Fenêtre
dernier état ; alertes ouvertes ou résolues au cours des dernières 24 h
Sources de données
Matrice de fraîcheur des données (plateforme x famille de données) calculée en interne à partir des horodatages des tables collectées par CoinBoss.
Couverture des plateformes
toutes les plateformes présentes dans au moins une famille collectée ; les sources manquantes sont signalées comme indisponibles, avec un motif
Pagination
alertes limitées à 200
Unités
status per cell: fresh | partial | stale | invalid | unavailable; ages in seconds
Méthode
fresh = >= 90% of live rows inside the family's freshness window (tickers 5 min, OI 15 min / cme 36 h, funding 15 min, long/short 90 min); liquidation feeds judged by WebSocket heartbeat or time since last event; funding settlements fresh within 9 h; spot snapshots within 30 min
Horodatages
Millisecondes depuis l'epoch Unix (UTC), sauf indication contraire dans la description du champ
Format de réponse
json
Stabilité
Stable
Disponible depuis
2026-11-11

Statut en direct

DisponibleVérifié : 2026-11-13 03:59:27 UTCHTTP 2006 msSchéma conformePoint de données le plus récent : il y a 20s

Disponibilité, 30 derniers jours

100 % des 408 contrôles réussis

Dérive de schéma détectée par la dernière sonde
  • Renvoyé mais non documenté: matrix.{*}.{*}.rows_unknown_interval, matrix.{*}.{*}.rows_no_next_time, matrix.{*}.{*}.rows_no_liveness, matrix.{*}.{*}.symbols, matrix.{*}.{*}.history_from, matrix.{*}.{*}.via, matrix.{*}.{*}.last_event_age_s, matrix.{*}.{*}.events_1h, matrix.{*}.{*}.events_24h, matrix.{*}.{*}.ws_heartbeat_age_s, matrix.{*}.{*}.judged_by, matrix.{*}.{*}.idle_ok_s

Erreurs

Les appels en échec ont la même structure sur tous les endpoints. La liste complète figure sur la page des erreurs. Erreurs et limites de requêtes →

CodeHTTPSignificationQue faire
INVALID_PARAM400Un paramètre requis est manquant ou une valeur n'est pas acceptée. `param` indique le nom du paramètre lorsqu'il est connu.Ne réessayez pas à l'identique ; corrigez la requête.
UNAUTHORIZED401L'en-tête `CB-API-KEY` a été envoyé, mais la clé est inconnue ou révoquée. Les données publiques ne nécessitent aucune clé — supprimez l'en-tête ou utilisez une clé valide.Ne réessayez pas à l'identique.
FORBIDDEN403La route ne fait pas partie de l'API publique (interne ou réservée aux comptes).Ne réessayez pas.
NOT_FOUND404Route inconnue, ou la crypto / la plateforme / le fonds demandé n'existe pas.Ne réessayez pas ; vérifiez le chemin et les identifiants dans le catalogue.
RATE_LIMITED429Plus de requêtes que la limite par minute. `Retry-After` indique le nombre de secondes à attendre.Attendez la durée indiquée par `Retry-After`, puis réessayez avec backoff.
INTERNAL500Erreur serveur inattendue. Le message est volontairement générique ; citez `request_id` lorsque vous la signalez.Réessayez une fois après quelques secondes ; si l'erreur persiste, signalez-la avec l'ID de requête.
UPSTREAM_FAILED503La source de données derrière cet endpoint n'a pas répondu à temps. Aucun chiffre périmé ni de substitution n'est renvoyé à sa place.Réessayez avec backoff ; consultez la page de statut.
UNAVAILABLE501 / 503Le jeu de données n'est temporairement pas prêt (préchauffage du cache) ou l'endpoint n'a pas encore de source publique licite.Réessayez plus tard ; le catalogue signale les endpoints indisponibles par conception.
REQUEST_FAILED200Certains endpoints plus anciens répondent HTTP 200 avec `success: false`. Vérifiez toujours `success`, et pas seulement le statut HTTP.Dépend du message ; à traiter comme une requête en échec.

Essayer

GET/api/sd/qualityDisponible
Paramètres

Aucun paramètre.

URL de la requêtehttps://www.coinboss.com/api/sd/quality
Choisissez un endpoint et cliquez sur « Envoyer la requête ». La réponse, les en-têtes et le temps de réponse s'afficheront ici.