Aller au contenu principal

Référence du SDK

Cette page décrit les paramètres, les captures, les réponses d'envoi et les conditions de réessai. Les signatures propres à votre plateforme se trouvent dans les guides React Native, Capacitor et natif.

Configuration​

ParamètreTypeCapacitorReact NativeDescription
apiKeystringrequisrequisClé API SDK fournie pour votre entreprise.
baseUrlstringrequisoptionnelURL terminée par /certificall/. Par défaut en React Native : production.
appVersionstringrequisoptionnelVersion de votre application. Par défaut en React Native : 1.0.0.

Avec Capacitor, appelez initialize(options). Avec React Native, appelez configure(options). Attendez la résolution de la promesse avant toute capture ou tout envoi. Indiquez explicitement baseUrl pour maîtriser l'environnement utilisé.

takePhoto()​

const photo = await CertificallTrust.takePhoto({
reportToken: 'CHANTIER-2026-001',
metadata: { site: 'Paris', zone: 'A1' },
});

L'objet de paramètres est optionnel. La méthode vérifie l'appareil, ouvre sa caméra et retourne une capture locale CapturedPhoto. Aucun dossier n'est créé avant l'envoi.

ParamètreTypeRequisDescription
reportTokenstringnonVotre référence métier, restituée à l'envoi et dans reportId des webhooks. Limitez-la à 255 caractères.
metadataRecord<string, string>nonPaires clé-valeur attachées au dossier créé à l'envoi.

Pour metadata, utilisez au maximum 20 clés, de 40 caractères au plus, avec des valeurs texte de 500 caractères au plus. Les clés ne peuvent pas contenir [ ou ]. Un nombre ou un booléen doit être converti en texte ("42", "true").

Des métadonnées invalides sont écartées à l'envoi et signalées par METADATA_DROPPED ; elles n'empêchent pas à elles seules la certification. Voir aussi Métadonnées de dossier.

CapturedPhoto​

ChampTypeDescription
captureIdstringUUID de la prise, utilisé pour reconnaître ses réessais.
capturedAtstringDate de la prise, ISO 8601 UTC.
sessionIdstringIdentifiant de session généré par le SDK. Conservez-le sans le reconstruire.
imageCapturedImageImage JPEG en base64, format et dimensions.
exifobject ou nullDonnées EXIF disponibles.
signalsCaptureSignalsDonnées de confiance figées à la prise.
debugBuildbooleanIndique une capture issue d'un build de développement.
reportTokenstring ou nullRéférence métier fournie à la prise.
metadataobject ou nullMétadonnées fournies à la prise.
targetnullChamp réservé ; conservez la valeur retournée par le SDK.
proofnullChamp réservé ; conservez la valeur retournée par le SDK.

Image​

ChampTypeDescription
image.base64stringContenu JPEG en base64, indispensable pour l'envoi.
image.formatstringjpeg.
image.widthnumberLargeur en pixels.
image.heightnumberHauteur en pixels.

Données de confiance​

Le SDK collecte automatiquement ces données à partir de sa configuration, puis les joint à la capture. Vous n'avez pas à les collecter ni à les ajouter vous-même.

ChampContenu
signals.historyPositionsPositions : timestamp, lat, long, accuracy, altitude, speed, heading.
signals.historyMotionsMouvements : timestamp, acceleration (x, y, z) et rotation (alpha, beta, gamma).
signals.devicemanufacturer, model, name, platform, os, osVersion, appVersion, isVirtual, batteryLevel, isCharging.
signals.networkconnectionType, wifiIp, carrierIp. Les adresses peuvent être null.

Les timestamps des historiques sont en millisecondes. Les coordonnées sont en degrés, la précision et l'altitude en mètres, la vitesse en mètres par seconde et le cap en degrés. L'accélération est en m/s², gravité comprise ; la rotation est en degrés par seconde. La batterie est une fraction entre 0 et 1 (0.8 pour 80 %), ou null si elle est inconnue.

Les données restent celles de la prise, même lors d'un envoi différé. Les tableaux peuvent être vides lorsqu'aucun signal n'a pu être collecté ; consultez les avertissements de la réponse d'envoi.

sendPhoto()​

Passez la capture complète retournée par takePhoto(), ou restaurée depuis votre stockage :

// React Native
const sent = await CertificallTrust.sendPhoto(photo);
// Capacitor
const sent = await CertificallTrust.sendPhoto({ photo });

Certificall crée le dossier, y dépose la photo, le clôture et produit le certificat PDF. La réponse SentPhoto est rendue après ce parcours. Les données de confiance manquantes sont indiquées dans warnings.

Appelez sendPhoto() dès la prise, dès que le réseau le permet. Une photo transmise plus de 10 minutes après sa prise porte sur son certificat le bandeau « absence de connexion internet ».

SentPhoto​

ChampTypeDescription
captureIdstringIdentifiant de la capture envoyée.
itemIdstringIdentifiant de la photo Certificall.
caseIdstringIdentifiant du dossier créé.
reportTokenstring (optionnel)Référence métier retournée en écho.
imageUrlstringURL de l'image.
pdfUrlstringURL du certificat PDF.
geoloc{ lat: number, lng: number } (optionnel)Coordonnées retenues pour la photo. En cas de NO_POSITION, ne les utilisez pas comme une localisation réelle.
createdAtstringDate de création côté serveur, ISO 8601.
warnings{ code: string, message: string }[]Données manquantes, écartées ou remplacées ; tableau vide si aucun avertissement.

Les champs supplémentaires renvoyés par Certificall sont transmis par le SDK. Prévoyez de tolérer des champs et des codes d'avertissement supplémentaires.

Certificat et analyse

La réponse ne contient pas de score. Le webhook de dossier transmet le dossier à sa clôture ; le webhook de résultat d'analyse transmet ensuite le résultat de confiance. Vous pouvez les rattacher à votre système avec reportToken, restitué dans reportId.

Conservation et réessais​

Le SDK ne maintient pas de file persistante et ne programme pas de réessais automatiques. Votre application prend en charge le stockage et l'ordonnancement des envois.

  1. Enregistrez l'objet complet retourné par takePhoto(), avec JSON.stringify(photo) pour les bridges JavaScript. Incluez image.base64.
  2. Relisez-le avec JSON.parse(serializedPhoto) lorsque l'envoi devient possible.
  3. Appelez sendPhoto() avec la capture restaurée, sans modifier ses identifiants ni ses signaux.
  4. Retirez la capture de votre file après une réponse réussie, en conservant les identifiants et les liens dont votre application a besoin.

En cas de coupure réseau ou de fermeture de l'application avant réception de la réponse, renvoyez la même capture. Si elle a déjà été certifiée, vous recevez les mêmes identifiants de dossier et de photo, et le même lien de certificat. Une nouvelle prise avec takePhoto() porte un autre captureId et crée un autre dossier.

SituationAction
NETWORK_UNAVAILABLEGardez la capture et réessayez lorsque Certificall est joignable.
SERVER_REJECTED, raison CAPTURE_IN_PROGRESS, HTTP 409La même capture est en cours de certification. Réessayez après quelques minutes.
SERVER_REJECTED, raison CAPTURE_NOT_CERTIFIED, HTTP 503La photo a été reçue mais la certification a échoué. Conservez-la et réessayez plus tard.
HTTP 429Espacez vos envois et réessayez après la fenêtre de limitation.
Autre erreur serveur 5xxConservez la capture et réessayez avec un délai.
Clé invalide ou entreprise bloquéeCorrigez la situation avant de reprendre les envois.

Si une première tentative reste inachevée pendant plus de 10 minutes, un réessai peut repartir dans un nouveau dossier. La restitution du même dossier concerne une capture déjà certifiée ; un dossier resté inachevé n'est pas réutilisé au-delà de ce délai.

Préserver la capture

Conservez le JSON produit par le SDK tel quel. Ne remplacez pas les signaux par ceux du moment de l'envoi et ne retirez pas captureId : il permet à Certificall de reconnaître un réessai.

Avertissements​

Un avertissement n'est pas un échec d'envoi : une réponse réussie avec warnings correspond à une photo enregistrée et certifiée. Les données manquantes peuvent dégrader le score de confiance. Votre application peut prévenir l'utilisateur ou lui proposer une nouvelle prise selon votre besoin métier.

CodeSignification
NO_POSITIONAucune position exploitable ; la photo n'est pas localisée.
NO_MOTIONAucun mouvement collecté.
NO_DEVICEModèle d'appareil absent ou illisible.
NO_BATTERYNiveau de batterie inconnu.
NO_IPAucune adresse IP fournie.
CAPTURE_UNREADABLEDescription de capture absente ou illisible ; les signaux ne peuvent pas être utilisés.
CAPTURE_ID_GENERATEDIdentifiant de prise absent ou invalide, remplacé côté serveur. Un réessai de cet envoi ne bénéficie pas de la reconnaissance par l'identifiant initial.
CAPTURED_AT_MISSINGHeure de prise absente ou invalide ; l'heure de réception est utilisée.
SIGNALS_DROPPEDCertaines positions ou certains mouvements illisibles ont été écartés.
SIGNALS_TRUNCATEDPlus de 200 positions ou mouvements transmis ; les 200 plus récents de chaque historique sont conservés.
METADATA_DROPPEDMétadonnées invalides ; le dossier est créé sans ces métadonnées.

Les message sont des explications en anglais. Utilisez les codes pour piloter votre logique et vos traductions.

Erreurs​

Codes de capture et d'envoi​

CodeOpérationAction
NOT_INITIALIZEDCapture ou envoiConfigurez le SDK et attendez la fin de l'initialisation.
DEVICE_NOT_TRUSTEDCaptureLisez reasons et expliquez le refus d'appareil à l'utilisateur.
CAPTURE_CANCELLEDCaptureL'utilisateur a quitté la caméra. Aucun envoi n'a lieu.
NO_CAMERACaptureAucune caméra disponible ; la galerie n'est pas proposée à la place.
CAPTURE_FAILEDCaptureLa caméra n'a pas rendu une photo exploitable ; reprenez la capture.
INVALID_PHOTOEnvoi via un bridge ou restauration iOSPassez l'objet complet retourné par takePhoto().
NETWORK_UNAVAILABLEEnvoiConservez la capture pour un réessai.
SERVER_REJECTEDEnvoiLisez le statut HTTP et la raison serveur, puis appliquez la stratégie correspondante.

Les erreurs de configuration ou de permissions peuvent aussi relever des API de votre plateforme. Vérifiez les autorisations et la présence des paramètres de configuration.

Lire les informations complémentaires​

PlateformeCodeRaisons d'un refus d'appareilStatut et raison serveur
Capacitorerror.codeerror.data.reasonserror.data.status, error.data.reason
React Nativeerror.codeerror.userInfo.reasonserror.userInfo.status, error.userInfo.reason
SwiftCertificallSDKError.code(of: error)CertificallSDKError.reasonshttpStatus, serverCode sur l'erreur typée
KotlinCertificallError.codeOf(error)DeviceNotTrustedException.reasonsSendPhotoException.httpStatus, SendPhotoException.serverCode

Refus serveur​

Les refus HTTP remontent sous SERVER_REJECTED. La raison peut être absente ; ne vous appuyez pas uniquement sur le texte du message.

Statut HTTPRaison lorsqu'elle est fournieAction
400INVALID_CAPTURE si l'image manqueVérifiez que la capture et son image sont complètes.
401Clé absente, invalide, inactive ou expiréeVérifiez la clé de l'environnement et son renouvellement.
403DEBUG_BUILD_REJECTEDReprenez la photo avec un build de distribution pour la production.
409CAPTURE_IN_PROGRESSRéessayez la même capture plus tard.
409CAPTURE_ID_TAKENL'identifiant est déjà utilisé par une autre capture ; reprenez une photo.
423Entreprise bloquéeFaites rétablir l'accès de l'entreprise avant de reprendre les envois.
429Limite d'appels atteinteEspacez les envois.
503CAPTURE_NOT_CERTIFIEDConservez la capture et réessayez plus tard.

Une réponse HTTP 2xx qui ne contient pas de résultat de dossier peut également remonter comme SERVER_REJECTED. Vérifiez baseUrl, notamment son suffixe /certificall/, et conservez la capture jusqu'à un envoi réussi.