Webhook après validation d'un certificat
Marche à suivre
Pour configurer votre webhook, veuillez suivre les instructions ci-dessous :
- Envoyer l'URL de l'endpoint : Veuillez nous fournir une URL de votre endpoint capable de recevoir des requêtes POST.
- Envoyer les informations d'authentification : Vous devez nous fournir soit un
authTokende type Bearer, soit une combinaison deapiKeyetapiSecretKeysoit un identifiant et mot de passe pour auhtentificationBasic. Ces informations seront utilisées pour sécuriser les communications entre nos systèmes. - Concevoir la réception du token : Assurez-vous que votre endpoint est capable de recevoir le token d'authentification dans l'en-tête de la requête. Le
authTokensera envoyé dans l'en-têteAuthorizationsous la formeBearer <authToken>. Si vous utilisez une combinaison deapiKeyetapiSecretKey, les en-têtes et la signature de la requête seront structurés comme suit :
- Pour le Bearer Token :
Authorization: Bearer <authToken>
Content-Type: application/json
- Pour l'authentification avec
apiKeyetapiSecretKey:
Une signature HMAC-SHA256 sera utilisée avec les données de la requête pour sécuriser l'authentification. Voici un exemple de génération de la signature et des en-têtes de la requête :
const data = JSON.stringify(requestBody); // requestBody est le contenu de la requête
const signature = this.encryptionService.encryptHmacSha256(data, this.credentials.apiSecretKey);
const headers = {
Authorization: 'HMAC-SHA256 ' + this.credentials.apiKey + ':' + signature,
'X-Api-Key': this.credentials.apiKey,
'Content-Type': 'application/json',
};
Et voici l'exemple des en-têtes HTTP que vous devez implémenter sur votre endpoint :
Authorization: HMAC-SHA256 <apiKey>:<signature>
X-Api-Key: <your_api_key>
Content-Type: application/json
DTO
Le DTO ShareCasesWithMetaDatasDto est conçu pour représenter une structure de données qui contient les informations détaillées sur un certificat particulier et une liste d'éléments associés à ce certificat. Voici les composants principaux de ce DTO :
cfRef(String): Une référence unique pour le certificat, servant d'identifiant.reportId(String): L'identifiant du rapport associé au certificat.caseUrl(URL): L'URL vers un fichier PDF streamable lié au certificat.createdAt(ISO8601): La date et l'heure de création du cas, formatée selon la norme ISO8601.items(Array ofBaseItemDto): Une liste d'éléments associés au certificat, où chaque élément est représenté par une instance deBaseItemDto.
Chaque BaseItemDto dans la liste items contient les informations suivantes :
createdAt(ISO8601): La date et l'heure de création de l'élément.cfRef(String): Une référence unique pour l'élément.description(String): Une description de l'élément.geolocLatitudeetgeolocLongitude(String): Les coordonnées géographiques de l'élément.data(String): Le contenu de l'élément si ce dernier est de typeDATE_FIELD,EMAIL,NUMBER_FIELD,TEXT_FIELDouTIME, le titre de l'image si ce dernier est de typePHOTOGRAPHYimageUrl(URL, optionnel): L'URL vers une image PNG/JPG streamable associée à l'élément.StepActionenum: Le type d'élément, spécifié par une énumérationStepActionqui inclut des valeurs commeDATE_FIELD,EMAIL,NUMBER_FIELD,PHOTOGRAPHY,TEXT_FIELD,TIME.
class ItemDto {
@IsISO8601()
createdAt: Date;
@IsString()
cfRef: string;
@IsString()
description: string;
@IsString()
geolocLatitude: string;
@IsString()
geolocLongitude: string;
@IsOptional()
@IsUrl()
imageUrl?: string; // url to get streamableFile
@IsEnum(StepAction)
stepAction: StepAction;
}
export class CaseForApiResponseDto {
@IsString()
cfRef: string;
@IsISO8601()
createdAt: Date;
@IsString()
reportId: string;
@IsString()
frame: string;
@IsBoolean()
closed: boolean;
@IsUrl()
caseUrl: string;
@IsArray()
@Type(() => ItemDto)
items: ItemDto[];
}
enum StepAction {
DateField = 'DATE_FIELD',
Email = 'EMAIL',
NumberField = 'NUMBER_FIELD',
Photography = 'PHOTOGRAPHY',
Video = 'VIDEO',
TextField = 'TEXT_FIELD',
Time = 'TIME',
Select = 'SELECT',
Singature = 'SIGNATURE'
}