Ce projet contient des exemples d'appels à l'API Intescia, démontrant l'authentification et diverses opérations courantes.
Ce repository fournit des exemples concrets d'intégration avec l'API Intescia, incluant l'authentification OAuth2/OIDC et l'utilisation de différents endpoints de l'API. Les exemples sont conçus pour être simples et facilement adaptables à vos propres besoins.
- Node.js - Environnement d'exécution JavaScript
- TypeScript (v5.8.3) - Typage statique pour JavaScript
- Yarn (v4.10.3) - Gestionnaire de paquets
- Vite - Outil de build et serveur de développement
- oidc-client-ts - Client OpenID Connect pour l'authentification
- swagger-typescript-api - Génération automatique du client API TypeScript
- ESLint + Prettier - Qualité et formatage du code
- Node.js (version récente recommandée)
- Yarn 4.10.3 (géré automatiquement par packageManager)
- Un compte Intescia avec des credentials OAuth2 (clientId, clientSecret)
# Cloner le repository
git clone <repository-url>
cd intescia-samples
# Installer les dépendances
yarn install
# Générer le client API TypeScript depuis la spec OpenAPI (à faire après avoir modifié le fichier de configuration
yarn generate:apiModifiez le fichier config.ts avec vos propres credentials :
export default {
clientId: 'votre-client-id',
redirectUri: 'http://localhost:3000/features/login/index.html?callback=true',
documentationUrl: '<lien vers la documentation d\'API à récupérer sur votre compte d\organisation>',
};# Démarrer le serveur de développement
yarn startLe serveur démarre sur http://localhost:3000. Naviguez vers les différentes pages d'exemples :
/features/login/- Authentification OAuth2/OIDC/features/users/- Recherche et liste des utilisateurs/features/die/- Gestion des commandes de découpe et rapports
📁 features/login/
- ✅ Connexion via OAuth2/OIDC avec Keycloak
- ✅ Gestion du refresh token automatique
- ✅ Déconnexion
- ✅ Callback après authentification
- ✅ Stockage des tokens dans le localStorage
Points clés :
- Utilise
oidc-client-tspour la gestion complète du flux OAuth2 - Gestion automatique de l'expiration des tokens
- Redirection vers la page d'origine après login
📁 features/users/
- ✅ Recherche d'utilisateurs dans l'organisation courante
- ✅ Filtrage des utilisateurs
- ✅ Affichage du statut (enabled/disabled)
Endpoint utilisé :
POST /me/organization/users/searchExemple de code :
const response = await currentUserApi.searchUsersInCurrentOrganization(
userFilter,
query,
{ headers: { Authorization: `Bearer ${accessToken}` } }
);📁 features/die/
- ✅ Recherche des commandes DIE de l'organisation
- ✅ Récupération d'une étude de coûts (Cost Study)
- ✅ Génération de rapports de production
- ✅ Transformation des données pour la génération de rapports
Endpoints utilisés :
POST /me/organization/die-orders/search
GET /me/organization/die-orders/{id}/cost-study
POST /dies/{id}/reportFonctionnalités avancées :
- Chargement dynamique des études de coûts
- Génération de rapports avec données quantifiées
- Interface interactive pour explorer les commandes
- Gestion du statut des commandes (FINISHED, etc.)
# Vérification TypeScript sans compilation
yarn check:tsc
# Linting du code
yarn check:lint
# Vérification orthographique
yarn check:spell-checker
# Analyse du code non utilisé
yarn check:clean-code
# Génération du client API TypeScript
yarn generate:api
# Démarrer le serveur de développement
yarn start
intescia-samples/
├── features/ # Exemples d'utilisation
│ ├── login/ # Authentification OAuth2
│ │ ├── index.html # Page de login
│ │ ├── index.ts # Point d'entrée
│ │ └── login.ts # Logique d'authentification
│ ├── users/ # Gestion des utilisateurs
│ │ ├── index.html # Interface utilisateur
│ │ └── users.ts # Logique de recherche
│ └── die/ # Gestion des commandes de découpe
│ ├── index.html # Interface die orders
│ └── die.ts # Logique métier
├── lib/ # Utilitaires partagés
│ ├── back-to-home.ts # Navigation
│ ├── build-query-params.ts
│ └── types.ts # Types partagés
├── scripts/ # Scripts de build et génération
│ ├── generate-api.ts # Génération du client API
│ ├── serve.ts # Serveur de développement
│ └── check-css-properties.ts
├── generated/ # Client API auto-généré (après yarn generate:api)
│ ├── data-contracts.ts # Types de données
│ ├── http-client.ts # Client HTTP
│ ├── CurrentUser.ts # API CurrentUser
│ ├── MyOrganizationDieOrders.ts
│ ├── CostStudy.ts
│ └── Report.ts
├── config.ts # Configuration OAuth2 et API
├── tsconfig.json # Configuration TypeScript
├── vite.config.js # Configuration Vite
├── eslint.config.js # Configuration ESLint
└── package.json
- Les tokens OAuth2 sont stockés dans le localStorage
- Le refresh automatique des tokens est géré par
oidc-client-ts - Les credentials doivent être configurés dans
config.ts(⚠️ ne pas committer en production) - Utilisation de l'en-tête
Authorization: Bearer <token>pour tous les appels API
Le projet utilise swagger-typescript-api pour générer automatiquement un client TypeScript typé depuis la spécification OpenAPI d'Intescia :
yarn generate:apiCe que fait le script :
- Récupère la spécification OpenAPI depuis l'URL configurée
- Génère des classes TypeScript pour chaque endpoint
- Crée des types de données complets
Résultat : Un dossier generated/ contenant :
- Types de données complets et validés
- Méthodes typées pour chaque endpoint
- Client HTTP configuré
- Auto-complétion complète dans votre IDE
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Voir le fichier LICENSE pour plus de détails.