Aller au contenu
L’UGP v1.0 est une ébauche soumise aux commentaires du public. Commentaires jusqu’au 23 novembre 2026. Les seuils A–D sont provisoires.Ébauche publique · jusqu’au 23 novembre 2026Commenter l’ébaucheCommenter →
UGPUniversal Grading Protocol
Développer

Schéma JSON

Traduction en révision — la version anglaise fait foi jusqu’à la révision. Lire en anglais →

Le schéma de dossier UGP v1.0, JSON Schema 2020-12, à /schema/v1.0/record.json : identité, les huit axes, le résultat dérivé et les champs d’audit.

Schéma : /schema/v1.0/record.json, JSON Schema 2020-12.

La forme d’un dossier

text
ugp_version, profile, profile_status, record_scope
identity    { make, model, …, blacklist { status, basis, source, checked_at } }
axes
  cosmetic   { value, basis, zones { AA, A, B, C, … } [defects], mapped_from? { scale, value, crosswalk } }
  functional { status, faults[] }
  battery    { health_pct, basis, cells[], replaced }
  locks      { value, types[] }
  operator   { value, carrier }
  data       { value, method, technique, tool, certificate_id, standard_rev }
  parts      { value, manifest[] }
  kit        { value, components[] }
result      { status, reasons[], grade, premium, core_code, ctia_derived? }
audit       { grader_id, graded_at, method, verification_tier, conformance, tolerance_table }

Annexe B · §4.1

Trois règles qui comptent dans le code

  1. result est dérivé. Le grade, le statut et le code de base dans result concordent avec la dérivation des §11 et §12; ne les acceptez jamais d’une saisie de l’utilisateur. Recalculez-les à partir de axes et comparez. §4.4
  2. Conservez les observations brutes. Gardez les listes de défauts par zone, les codes de défaillance, les relevés de batterie et l’état des pièces, et pas seulement les valeurs agrégées, afin qu’un dossier puisse être réévalué lorsqu’une tolérance change. §4.3
  3. Chaque valeur a une base. Mesurée, étayée, déclarée ou inconnue. Une batterie déclarée et une batterie mesurée ne donnent pas la même dérivation (seule une valeur mesurée de 90 % ou plus peut être Premium). §4.2

Versions et profils

  • ugp_version fixe la version selon laquelle le dossier a été évalué; les différends sont tranchés en fonction de celle-ci. §14.6
  • profile_status vaut provisional pour les catégories d’appareils dont le module de profil n’est pas encore publié. §1.2
  • audit.tolerance_table vaut phone-1.0-provisional tant que les nombres A–D sont provisoires. §5.5
  • record_scope vaut unit ou lot. §14.5
  • identity.blacklist.status vaut clear, reported ou unchecked; basis indique comment clear a été établi : measured ou evidenced (une vérification) ou declared. unchecked donne le statut non évalué (NOT GRADED) avec le motif lost_stolen_unchecked; un clear déclaré ajoute l’indication lost_stolen_declared. §9.3
  • axes.cosmetic.mapped_from (scale, value, crosswalk) n’est renseigné que pour un grade transposé du fournisseur, avec la base esthétique declared. Il ajoute l’indication supplier_mapped et l’extension de code de base ~src:supplier. §13.6

Tester votre implémentation

Validez chaque dossier par rapport au schéma, puis vérifiez que votre dérivation reproduit chacun des exemples de référence. Les exemples sont publiés à côté du schéma, à /schema/v1.0/golden/. Annexe E