PDF : dans le navigateur, menu Fichier → Imprimer (ou Ctrl+P), choisir Enregistrer au format PDF comme imprimante, puis Enregistrer.
Une organisation est le compte « entreprise » rattaché à votre activité (fabricant, marque, éditeur logiciel, etc.). Elle permet notamment de :
Chaque organisation possède une fiche (raison sociale, marque, contact, site, description, logo) et un type (ex. fabricant / éditeur logiciel selon les options du portail).
| Élément | Détail |
|---|---|
| Méthode | POST /api/auth/organization |
| Corps | JSON OrganizationRegistrationRequest : email, mot de passe, identité utilisateur (username, prénom, nom, téléphone optionnel), pays (countryCode, ex. CA), puis champs entreprise : companyName, brandName, contactEmail, website, description, et organizationType (MANUFACTURER par défaut ou SOFTWARE_VENDOR). |
| Réponse | Message de succès ; connexion ensuite via POST /api/auth/login pour obtenir un JWT (Bearer). |
L’ancien alias POST /api/auth/manufacturer peut encore exister pour compatibilité ; privilégiez POST /api/auth/organization.
Si l’utilisateur connecté est déjà au rôle approprié (ex. fabricant), il peut créer une autre organisation liée à son compte depuis le portail ou via l’API :
| Élément | Détail |
|---|---|
| Méthode | POST /api/organizations/mine |
| Auth | Header Authorization: Bearer <token> |
| Corps | CreateMyOrganizationRequest : companyName (obligatoire), contactEmail (obligatoire, email), brandName, website, description, logoUrl, et optionnellement partnerWebhookSecret (voir §5). |
Toutes les routes ci-dessous exigent un JWT valide et un utilisateur propriétaire de l’organisation.
| Action | Méthode & chemin |
|---|---|
| Lister mes organisations | GET /api/organizations/mine |
| Détail d’une organisation | GET /api/organizations/mine/{id} |
| Mettre à jour | PUT /api/organizations/mine/{id} (même schéma que la création : CreateMyOrganizationRequest) |
| Tableau de bord (indicateurs) | GET /api/organizations/mine/{id}/dashboard — retourne notamment le nombre de produits et de campagnes liés à l’organisation. |
| Méthode | GET /api/organizations |
|---|---|
| Auth | Selon la politique du déploiement (souvent utilisateurs authentifiés pour la découverte). |
Détail public par identifiant : GET /api/organizations/{id}
La promotion est créée dans Try&Tell par l’influenceur, sur un produit déjà rattaché à votre organisation : le lien promotion ↔ produit ↔ organisme est géré côté plateforme. L’influenceur ne vous transmet pas l’identifiant technique de la promotion.
Le lien court partagé au public est du type …/p/{publicSlug} : l’URL contient un slug public, pas l’identifiant interne promotionId.
Au clic, Try&Tell enregistre le clic puis redirige vers votre URL cible en ajoutant notamment :
| Paramètre | Rôle |
|---|---|
| tt_ref | Égal au publicSlug de la promotion ou de la participation campagne — à conserver jusqu’à la conversion. |
| tt_track | Code métier optionnel sur une promotion ; pour une participation campagne, identifiant de campagne. Omis s’il n’y a pas de valeur à transmettre. |
| tt_sub | Jeton opaque pour l’acheteur déjà connecté sur Try&Tell (portail web ou boutique). Absent pour un visiteur non authentifié : ne pas inventer ni reconstruire cette valeur côté organisme. |
Vous stockez tt_ref (et idéalement tt_track) avec la session ou la commande, sans recevoir promotionId par un autre canal. Si tt_sub est présent sur l’URL d’arrivée, conservez la même valeur jusqu’à la conversion.
En pratique : publicSlug = valeur de tt_ref. promotionId est optionnel.
Exemple côté organisme
POST /api/webhooks/partner/conversions
X-Partner-Webhook-Secret: {secret_organisme}
Content-Type: application/json
{
"publicSlug": "2n5O1qTX",
"externalOrderId": "order-12345",
"amount": 99.99,
"currency": "CAD",
"signature": "<sha1_hex calculé>"
}
URL complète (production) : https://partner.tryandtell.ca/api/webhooks/partner/conversions
Votre intégration utilise partner.tryandtell.ca uniquement (passerelle dédiée aux webhooks de conversion).
Important : l’intégration doit toujours être validée (partner_integration_verified = true) et le secret organisme configuré avant qu’un appel réel soit accepté (hors sandbox admin avec les bons réglages).
Signature : SHA-1 hex de publicSlug + externalOrderId + amount + currency + secret_organisme (sans séparateur). Pour amount, utilisez un décimal plain avec un point et sans zéros finaux après la virgule : ex. 50.9 pour 50,90 € (pas 50.90).
Liste blanche IP optionnelle sur la fiche organisme. Corps optionnel : buyerToken (= tt_sub).
Les règles détaillées (idempotence, ledger) figurent dans la spécification partner-off-platform-attribution.
Lorsque le webhook inclut un buyerToken valide (même valeur que tt_sub) et que le produit prévoit un pool cashback acheteur au-delà de la commission influenceur sur la promotion, Try&Tell peut créditer le portefeuille de l’acheteur après règlement de la commission créateur. La part acheteur est calculée sur le montant de vente déclaré : taux cashback produit moins taux commission promotion (si la marge restante est positive). Le débit correspondant est imputé au portefeuille organisme ; l’acheteur retrouve le mouvement dans son historique portefeuille sur Try&Tell.
Sans buyerToken, seule la commission influenceur (et le suivi de conversion) est traitée selon les règles habituelles du webhook.
Les endpoints sous /api/organizations/{organizationId}/... couvrent flotte, découverte d’influenceurs et partenariats. Le détail est exposé dans Swagger.
À compléter selon votre contrat (équipe Try&Tell ou revendeur).
Document fourni pour partage avec un partenaire — les chemins d’API peuvent évoluer selon la version déployée.