Les extensions Ts-Immo sont publiées sur un dépôt Composer privé. Cette page décrit le branchement du dépôt, l’authentification par jeton et la lecture des erreurs 403 — pour les intégrateurs et les agences qui versionnent le composer.json de leur site WordPress.
Paquets publiés
39
Vendor
ts-services
Authentification
Token API, en Bearer
Le dépôt Composer
Un seul dépôt sert toutes les extensions. Il est de type composer, expose 39 paquets, tous sous le vendor ts-services.
Le dépôt est privé : sans en-tête d’authentification, il répond 403 Forbidden, y compris sur son index. Un navigateur ouvert sur cette URL affichera donc une erreur — c’est le comportement attendu, pas un incident.
Le composer.json minimal
À placer à la racine du site WordPress, à côté de wp-content.
composer/installers et installer-paths sont obligatoires
Sans eux, Composer applique son comportement par défaut et dépose les extensions dans vendor/ : WordPress ne les voit pas, et la liste des extensions reste vide malgré une installation réussie. Le bloc allow-plugins est tout aussi nécessaire — depuis Composer 2.2, un plugin Composer non autorisé explicitement n’est pas exécuté, et composer/installers est précisément un plugin Composer.
Les deux chemins déclarés dans installer-paths couvrent les extensions (type:wordpress-plugin) et les thèmes (type:wordpress-theme). Ajoutez-y vos propres destinations si votre arborescence n’est pas standard.
Authentification
Le jeton attendu est un token API client, généré depuis l’espace client Ts-Immo, rubrique des clés d’accès. Il est envoyé en Bearer sur l’hôte du dépôt.
Méthode recommandée — écrire le jeton une fois pour toutes
Cette commande fonctionne à l’identique sur macOS, Linux et Windows. Elle écrit le jeton dans le auth.json global de Composer : il est réutilisé par tous vos projets, et rien n’est à réexporter à chaque session de terminal.
C’est sans conséquence pour le fichier global, qui reste sur votre poste. En revanche, si vous déposez un auth.json dans le projet, à côté du composer.json, excluez-le du dépôt Git — sinon le jeton part dans l’historique, où il survit à la suppression du fichier.
.gitignore
gitignore
auth.json
Alternative — la variable d’environnement COMPOSER_AUTH
Utile en intégration continue, ou pour une installation ponctuelle sans écrire de fichier. La valeur est le même JSON dans les trois cas ; c’est la syntaxe qui change d’un shell à l’autre.
C’est bien $env: et non set — voir le premier piège ci-dessous.
Windows — cmd.exe
batch
set COMPOSER_AUTH={"bearer":{"api.ts-services.com":"VOTRE_TOKEN"}}
Aucun guillemet autour du JSON : ils seraient intégrés à la valeur.
Les trois pièges
Ils sont à l’origine de l’essentiel des demandes de support sur Composer.
1
Sous PowerShell, set ne crée pas une variable d’environnement
Dans PowerShell, set est un alias de Set-Variable : la valeur reste dans la session PowerShell et n’est jamais transmise à Composer. Composer se retrouve alors sans jeton et affiche l’invite « Username: ». Répondez Ctrl+C — ne saisissez aucun identifiant, il n’y en a pas — puis rejouez la commande avec la syntaxe $env:.
2
En cmd.exe, n’entourez pas le JSON de guillemets
La commande set de cmd.exe prend tout ce qui suit le signe égal, guillemets compris. set COMPOSER_AUTH="{...}" enregistre donc une valeur qui commence et finit par un guillemet : Composer ne parvient pas à la lire comme du JSON et repart sans authentification.
3
La clé d’authentification est le nom d’hôte seul
Composer indexe les identifiants par hôte : la clé est api.ts-services.com, rien d’autre. Ni l’URL complète du dépôt, ni un chemin, ni api.ts-services.com:443. Une clé mal formée n’est jamais signalée comme telle : le jeton n’est simplement pas envoyé, et le dépôt répond 403 — ce qui ressemble à un problème de droits alors que c’est un problème de configuration.
Installer et mettre à jour
Une fois le dépôt déclaré et le jeton en place, les commandes sont celles de Composer, sans particularité.
Commandes courantes
shell
# Installer ce que décrit le composer.json
composer install
# Ajouter une extension
composer require ts-services/ts-immo-slider
# Mettre à jour les seules extensions Ts-Immo
# (guillemets obligatoires : zsh refuse un motif sans correspondance)
composer update "ts-services/*"
Les extensions sont déposées dans wp-content/plugins/, une par dossier, et restent à activer depuis l’administration WordPress.
Extensions disponibles
Extensions gratuites
Installables avec un compte actif, sans add-on.
Paquet
Rôle
ts-services/ts-immo
Extension historique Ts-Immo
ts-services/ts-immo-manager
Gestionnaire d’extensions
ts-services/ts-immo-support
Support client
ts-services/ts-immo-sync
Connecteur de synchronisation (versions 1.0.x)
Extensions soumises à un add-on
Chaque add-on débloque le téléchargement des paquets de sa ligne.
Add-on
Prix
Extensions incluses
Page bien
9,90 €/mois ou 99 €/an
ts-services/ts-immo-property-specs
ts-services/ts-immo-slider
ts-services/ts-immo-badges
ts-services/ts-immo-energy-badge
ts-services/ts-immo-neighborhood
ts-services/ts-immo-poi
ts-services/ts-immo-mortgage
Recherche & navigation
9,90 €/mois ou 99 €/an
ts-services/ts-immo-listing
ts-services/ts-immo-ai-listing
ts-services/ts-immo-map-search
ts-services/ts-immo-compare
ts-services/ts-immo-favorites
ts-services/ts-immo-similar
Conversion & leads
9,90 €/mois ou 99 €/an
ts-services/ts-immo-lead-forms
ts-services/ts-immo-alerts
ts-services/ts-immo-valuation-tracker
ts-services/ts-immo-agents
Vitrine & marketing
4,90 €/mois ou 49 €/an
ts-services/ts-immo-sections
ts-services/ts-immo-showcase
ts-services/ts-immo-window-card
ts-services/ts-immo-pdf-brochure
ts-services/ts-immo-virtual-tour
ts-services/ts-immo-reviews
ts-services/ts-insta
ts-services/ts-yt
ts-services/ts-immo-share
ts-services/ts-immo-schema-seo
ts-services/ts-immo-widgets
Boîte à outils Pro
9,90 €/mois ou 99 €/an
ts-services/ts-css-and-js
ts-services/ts-debug-manager
Conformité légale
4,90 €/mois ou 49 €/an
ts-services/ts-immo-legal
Ts-Immo Sync PRO
4,90 €/mois ou 49 €/an
ts-services/ts-immo-sync-pro
Module Estimation
4,90 €/mois ou 49 €/an
ts-services/ts-estimation
Statistiques des visiteurs
4,90 €/mois ou 49 €/an
ts-services/ts-immo-insights
Chatbot sur le site
9,00 €/mois
ts-services/ts-immo-chatbot
Tous les paquets sont visibles dans le dépôt
Y compris ceux dont vous n’avez pas l’add-on. Le refus a lieu au téléchargement, pas à la découverte : composer show et la résolution des dépendances listeront donc des paquets que vous ne pouvez pas encore installer.
Le détail de chaque add-on figure sur la page tarifs.
Dépannage
Composer n’affiche pas la raison d’un refus. Quel que soit le problème, le message est le même :
Sortie de Composer
text
The 'https://api.ts-services.com/v1/identity/wordpress/composer/…' URL could not be accessed (HTTP 403): HTTP/1.1 403 Forbidden
Les trois causes d’un 403
Cause
Ce que vous observez
À faire
Jeton absent, expiré ou mal configuré
Le dépôt entier échoue à se charger, dès la résolution des dépendances. Composer peut aussi demander « Username: ».
Vérifiez la clé d’hôte dans auth.json ou COMPOSER_AUTH, puis régénérez le jeton depuis l’espace client.
Add-on non souscrit pour ce paquet
La résolution aboutit, les paquets sont listés, et un seul d’entre eux échoue au téléchargement.
Repérez le paquet dans le tableau des add-ons et souscrivez l’add-on correspondant.
Abonnement échu
Des paquets qui s’installaient la veille sont refusés, sans changement du composer.json.
Vérifiez l’état de l’abonnement et des paiements dans l’espace client.
Le test qui départage jeton et add-on
Si composer install liste bien les paquets et n’échoue que sur le téléchargement de l’un d’eux, c’est l’add-on qui manque. S’il échoue à charger le dépôt entier, avant même de résoudre les dépendances, c’est le jeton.
Après un échec, nettoyez le composer.json
Un composer require refusé laisse quand même sa trace
La ligne reste écrite dans composer.jsonet dans composer.lock. Il faut la retirer à la main : sinon les composer install suivants rejoueront la même dépendance et échoueront à nouveau, sur un site pourtant sain.
Nettoyage
shell
# Retirer la dépendance refusée (composer.json + composer.lock)
composer remove ts-services/ts-immo-slider
# Si la commande échoue elle aussi : supprimer la ligne à la main dans
# composer.json, puis synchroniser le lock sur ce seul paquet
composer update ts-services/ts-immo-slider
composer update --lock ne suffit pas : cette option réécrit l’empreinte du fichier de verrouillage sans toucher aux paquets. Celui que vous venez de retirer de composer.json reste dans composer.lock, et le composer install suivant le réinstalle — donc échoue à nouveau.