Méthode GET/certificate/{identifier}/download

Télécharger le certificat d'authenticité d'un article au format PDF, aux couleurs de votre marque. Point d'entrée public, sans clef d'API.

Sur cette page

Vous récupérez un fichier PDF prêt à imprimer ou à joindre à un message : le certificat d'authenticité d'un article, aux couleurs de votre marque, en français ou en anglais.

L'adresse complète est https://api.sealtrust.io/v1/certificate/{identifier}/download. La même route existe sans le préfixe /v1, et c'est la forme /v1 qui est recommandée pour une nouvelle intégration.

En cas de succès, la réponse est le document lui-même, de type application/pdf, servi en pièce jointe. Écrivez le corps de la réponse dans un fichier. Ne tentez pas de le lire comme du texte.

Le serveur fabrique le document à chaque appel et ne le stocke nulle part. Deux appels successifs peuvent donc donner deux fichiers différents si l'état du certificat a changé entre-temps.

#Autorisation

Aucune, point d'entrée public. Il n'attend ni clef d'API, ni cookie de session, ni en-tête Authorization. Un appel serveur à serveur est accepté.

#Plafond d'appels

60 appels par fenêtre de 60 secondes, comptés par adresse IP appelante. Toutes les adresses qui commencent par /certificate partagent ce compteur, et la forme /v1/certificate/{identifier}/download compte dans le même compteur que la forme sans préfixe.

En temps normal, chaque réponse porte les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset, ce dernier donnant l'heure de remise à zéro en secondes depuis le 1er janvier 1970. Traitez ces trois en-têtes comme facultatifs : lisez-les quand ils sont là, ne faites pas dépendre votre intégration de leur présence. Un dépassement renvoie 429 avec en plus Retry-After, en secondes.

Ce point d'entrée ne consomme aucun quota de votre offre.

#Paramètres de chemin et de requête

NomTypeObligatoireDescription
identifierstringouiCe qui désigne l'article ou le certificat. Quatre formes sont acceptées, voir le détail ci-dessous. Le serveur retire les espaces de bord.
langstringnonLangue du document : fr ou en. Valeur par défaut en.

#Les quatre formes de l'identifiant

Le serveur essaie d'abord le numéro de certificat. S'il n'aboutit pas, il regarde la forme de la valeur : 0x suivi de 64 caractères hexadécimaux est traité comme une empreinte d'article, toute autre valeur comme un identifiant de jeton. Une empreinte n'est donc jamais essayée comme identifiant de jeton, et l'inverse non plus. En dernier recours, le serveur essaie le numéro de série imprimé.

FormeExempleDétail
Numéro de certificatST-CERT-000000000000Comparaison exacte, la casse compte. C'est le numéro que votre console affiche sur le certificat et que renvoie GET /certificate/{identifier}.
Empreinte de l'article0x00000000000000000000000000000000000000000000000000000000000000000x suivi de 64 caractères hexadécimaux. La casse n'a pas d'importance.
Identifiant du jeton11111111111111111111111111111111111111111111111111111111111111111111111111111Le nombre porté par le jeton sur la chaîne, en base 10, tel quel. Ce nombre fait 77 à 78 chiffres. Lisez-le comme du texte, jamais comme un entier de votre langage.
Numéro de série imprimé00000000ABCDLes 12 caractères imprimés sur l'étiquette de l'article. La casse n'a pas d'importance, et le serveur ramène à leur forme canonique les caractères que l'on confond à la lecture : I et L valent 1, O vaut 0. Vous pouvez donc recopier un numéro à la main sans vous soucier de ces trois lettres.

Les trois dernières formes désignent un article. Le serveur cherche alors le certificat de cet article : le certificat en cours de validité s'il en existe un, sinon le plus récent quel que soit son état.

Quand il résout ces trois formes, le serveur écarte les articles détruits et les articles retirés du catalogue, et répond 404. Le numéro de certificat ne passe pas par l'article : il trouve la ligne du certificat directement, et le document se télécharge même quand l'article a été détruit ou retiré du catalogue.

#La langue du document

fr et en sont les deux valeurs prévues, en minuscules. Une valeur qui ne commence ni par fr ni par en produit un document en anglais.

#Corps de la requête

Aucun. C'est une requête GET, tout passe par l'adresse.

#Requête d'exemple

curl -sS -D - \
  -o certificat.pdf \
  "https://api.sealtrust.io/v1/certificate/ST-CERT-000000000000/download?lang=fr"

#Réponse d'exemple

Code HTTP 200OK

Code HTTP 200. Le corps est le fichier PDF.

HTTP
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="certificate-ST-CERT-000000000000.pdf"
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1755000060

Le nom de fichier proposé est toujours certificate- suivi du numéro de certificat, puis .pdf. Ce numéro peut différer de l'identifiant que vous avez envoyé : si vous avez interrogé l'article par son numéro de série, le nom de fichier porte le numéro du certificat trouvé.

#Ce que contient le document

Une page A4. Voici ce que le serveur y dessine, du haut vers le bas, puis le cadre qui entoure toute la page.

ÉlémentDétail
Bandeau de titre« Certificat d'authenticité » ou « Certificate of Authenticity », suivi de « Émis par » et du nom de votre marque. Le bandeau est peint dans votre couleur secondaire.
LogoLe logo de votre marque. Le serveur va le chercher seulement si son adresse est en https, si elle répond 200 en moins de 4 secondes avec un type image/..., et sans redirection. Une adresse en http, une redirection, un délai plus long ou une adresse qui pointe vers un réseau privé laissent le document sans logo, le reste est inchangé. Le logo récupéré est aussi posé au centre du QR code.
Pastille d'étatACTIF, RÉVOQUÉ ou EXPIRÉ, en haut à droite. Le serveur recalcule l'état au moment du rendu : un certificat enregistré actif dont la date d'expiration est passée s'imprime EXPIRÉ.
DétailsProduit, numéro de certificat, date d'émission, puis la marque émettrice et la date d'expiration quand elles sont renseignées, puis au plus quatre des champs libres attachés au certificat. Le libellé imprimé d'un champ libre est le nom du champ avec les tirets bas remplacés par des espaces et chaque mot en capitale initiale : numero_lot devient Numero Lot. La valeur est imprimée telle quelle, convertie en texte.
Preuve blockchainLe nom du réseau, toujours présent, Base en production. Puis l'adresse du contrat sous forme abrégée et l'identifiant du jeton, chacun seulement quand l'article en porte un.
QR code de vérificationRenvoie vers la page publique du certificat sur le site SealTrust. L'adresse est aussi écrite en toutes lettres sous l'encadré.
Sceau filigraneDeux cercles, une coche et les mots AUTHENTIQUE et VÉRIFIÉ BLOCKCHAIN, dessinés en transparence dans votre couleur principale, au milieu du bas de page. Le serveur le dessine toujours.
Pied de page« Propulsé par SealTrust, authenticité vérifiée par blockchain » ou « Powered by SealTrust, Blockchain-verified authenticity ». Si votre offre comprend la marque blanche, cette mention n'est pas imprimée et la ligne reste vide. Le serveur dessine toujours le bandeau coloré qui porte ce texte.
CadreUn liseré arrondi dans votre couleur principale, sur tout le pourtour de la page. Le serveur le dessine toujours.

Le serveur coupe une valeur trop longue pour sa ligne et la termine par un caractère de suite. C'est le cas de l'identifiant du jeton, qui fait 77 à 78 chiffres. Ne recopiez pas une valeur longue depuis le document, lisez-la sur l'API.

Le document reprend la couleur principale et la couleur secondaire de votre marque. Si votre marque n'a renseigné aucune couleur, le document utilise #6386F1 en principale et #0f172a en secondaire.

Le logo et les deux couleurs sont les trois réglages qui changent l'allure du document, et vous les posez vous-même dans l'administration, onglet Paramètres, puis Marque. Ils s'appliquent au certificat dès le téléchargement suivant. Toutes les offres payantes ouvrent cet écran. L'essai gratuit le garde fermé.

#Erreurs

Les erreurs, elles, sont bien du JSON. Un document commence par %PDF. Un corps qui commence par { signale un refus. Contrôlez le code HTTP avant d'écrire le fichier.

CodeConditionQue faire
404Aucun certificat ne porte ce numéro, et aucun article au catalogue ne correspond à cet identifiant. Message Product not found. Un article détruit, remplacé par une nouvelle frappe ou retiré du catalogue répond la même chose.Vérifiez la valeur envoyée dans l'adresse. Si l'article a été détruit ou retiré du catalogue, ce code est définitif pour cet identifiant. Le numéro de certificat, lui, continue de fonctionner.
404L'article existe, aucun certificat ne lui a jamais été émis. Message No certificate found.Émettez un certificat pour cet article depuis votre console, puis rappelez.
429Plus de 60 appels en 60 secondes depuis la même adresse IP, toutes adresses /certificate confondues. Message Rate limit exceeded: 60 requests per 60s.Attendez le nombre de secondes indiqué par Retry-After. Répartissez vos appels au lieu de les envoyer en rafale.
500Erreur inattendue du serveur. Corps figé {"detail": "Internal Server Error"}.Réessayez. Quand l'en-tête X-Request-Id est présent, il identifie l'appel : transmettez-le-nous si l'erreur se répète.

Ce point d'entrée n'a pas d'autre code de refus. Le paramètre lang n'est jamais rejeté, et l'identifiant est accepté quelle que soit sa forme, quitte à ne rien trouver.

#Voir aussi

Votre réponse ouvre un courriel pré-rempli dans votre messagerie, à destination de contact@sealtrust.io. Vous le relisez avant de l'envoyer.

Proposer une correctionSignaler un problème