@lambda-development/erp-core 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -516,6 +516,20 @@ export declare const api: {
516
516
  updateSettings: (data: Record<string, string>) => Promise<Record<string, string>>;
517
517
  getMySettings: () => Promise<Record<string, string>>;
518
518
  updateMySettings: (data: Record<string, string>) => Promise<Record<string, string>>;
519
+ getConnectionStatus: () => Promise<{
520
+ mcp_url: string;
521
+ rest_enabled: boolean;
522
+ chat_enabled: boolean;
523
+ }>;
524
+ getMcpConsent: (requestId: string) => Promise<{
525
+ client_name: string;
526
+ redirect_uri: string;
527
+ roles: string[];
528
+ csrf_token: string;
529
+ }>;
530
+ approveMcp: (request_id: string, csrf_token: string, allow: boolean, role: string) => Promise<{
531
+ redirect_uri: string;
532
+ }>;
519
533
  getApiKeys: () => Promise<{
520
534
  id: string;
521
535
  name: string;
@@ -525,11 +539,12 @@ export declare const api: {
525
539
  created_at?: string;
526
540
  last_used_at?: string | null;
527
541
  revoked: boolean;
542
+ app_type?: string;
528
543
  owner_full_name?: string | null;
529
544
  owner_email?: string | null;
530
545
  is_mine?: boolean;
531
546
  }[]>;
532
- createApiKey: (name: string, role: string) => Promise<{
547
+ createApiKey: (name: string, role: string, app_type?: "claude_code" | "codex" | "other") => Promise<{
533
548
  id: string;
534
549
  name: string;
535
550
  user?: string;
@@ -0,0 +1,7 @@
1
+ export declare function CopyValue({ value, label }: {
2
+ value: string;
3
+ label: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export declare function AppConnectionSetup({ ownRole }: {
6
+ ownRole: string;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -417,7 +417,7 @@ declare const _default: {
417
417
  "signupDisabled": "Derzeit deaktiviert — die Registrierung erfolgt nur per Einladung.",
418
418
  "chatApiTitle": "Chat-API",
419
419
  "apiTitle": "Programmatische API",
420
- "restApiBody": "Konnektoren und Skripten erlauben, dieses ERP über seine REST-API (Belege, Stammdaten, Berichte) mit denselben Bearer-API-Schlüsseln zu steuern. Standardmäßig deaktiviert.",
420
+ "restApiBody": "Apps und Skripten den Zugriff auf dieses ERP über REST oder MCP erlauben — mit API-Schlüsseln oder OAuth-Anmeldung. Standardmässig deaktiviert.",
421
421
  "restApiEnabled": "Derzeit aktiviert — ausgestellte Schlüssel können /api/documents, /api/masters und die übrige REST-API aufrufen.",
422
422
  "restApiDisabled": "Derzeit deaktiviert — die REST-API akzeptiert nur das Sitzungs-Cookie; Schlüssel werden abgewiesen.",
423
423
  "restApiDeactivateTitle": "REST-API deaktivieren?",
@@ -428,13 +428,13 @@ declare const _default: {
428
428
  "chatApiDeactivateTitle": "Chat-API deaktivieren?",
429
429
  "chatApiDeactivateBody": "Die Chat-API wird abgeschaltet — jede programmatische Anfrage (Bearer-API-Schlüssel) wird abgewiesen, bis Sie sie wieder einschalten. Ihre API-Schlüssel werden NICHT gelöscht: Sie bleiben gespeichert und funktionieren wieder, sobald Sie die API erneut aktivieren.",
430
430
  "chatApiDeactivateConfirm": "API deaktivieren",
431
- "chatApiKeysTitle": "API-Schlüssel",
431
+ "chatApiKeysTitle": "Apps und API-Schlüssel",
432
432
  "chatApiTokenOnce": "Kopieren Sie diesen Token jetzt — er wird nicht erneut angezeigt.",
433
433
  "chatApiCopy": "Kopieren",
434
434
  "chatApiDismiss": "Schließen",
435
435
  "chatApiRevoked": "widerrufen",
436
436
  "chatApiRevoke": "Widerrufen",
437
- "chatApiNoKeys": "Noch keine API-Schlüssel.",
437
+ "chatApiNoKeys": "Noch keine Verbindungen.",
438
438
  "chatApiName": "Name",
439
439
  "chatApiRole": "Rolle",
440
440
  "chatApiCreate": "Schlüssel erstellen",
@@ -451,14 +451,14 @@ declare const _default: {
451
451
  "enabling": "Wird aktiviert...",
452
452
  "tokenSpendTitle": "Token-Ausgaben",
453
453
  "chatApiDelete": "Löschen",
454
- "chatApiYourKeys": "Ihre Schlüssel",
454
+ "chatApiYourKeys": "Ihre Verbindungen",
455
455
  "chatApiYouBadge": "Sie",
456
456
  "chatApiUnknownUser": "Unbekannter Benutzer",
457
- "chatApiAdminAllNote": "Als Administrator enthält die Liste unten die Schlüssel aller Benutzer, nach Eigentümer gruppiert. Ihre eigenen stehen oben.",
458
- "chatApiConfirmTitle": "Dieser Schlüssel gehört nicht Ihnen",
459
- "chatApiConfirmRevokeBody": "„{{key}}“ gehört {{name}}. Beim Widerrufen verliert diese Person sofort den API-Zugriff. Fortfahren?",
460
- "chatApiConfirmDeleteBody": "„{{key}}“ gehört {{name}}. Beim Löschen wird der Schlüssel dieser Person dauerhaft entfernt. Fortfahren?",
461
- "chatApiPersonal": "Persönliche Bearer-Keys für die programmatische Chat-API. Ein Key handelt als SIE: begrenzt auf Ihre Rolle, folgt Rollenänderungen live und erlischt mit Ihrem Konto. Setzt voraus, dass der Admin die Chat-API aktiviert hat.",
457
+ "chatApiAdminAllNote": "Als Administrator können Sie die Verbindungen aller Benutzer verwalten. Ihre eigenen Verbindungen stehen zuerst.",
458
+ "chatApiConfirmTitle": "Diese Verbindung gehört einem anderen Benutzer",
459
+ "chatApiConfirmRevokeBody": "«{{key}}» gehört {{name}}. Ein Widerruf trennt die App sofort. Fortfahren?",
460
+ "chatApiConfirmDeleteBody": "«{{key}}» gehört {{name}}. Diese widerrufene Verbindung endgültig entfernen?",
461
+ "chatApiPersonal": "Verbinden Sie Apps mit Ihrem ERP-Konto. Der Zugriff überschreitet niemals Ihre aktuellen Berechtigungen.",
462
462
  "version": "Version {{version}}"
463
463
  },
464
464
  "status": {
@@ -624,6 +624,7 @@ declare const _default: {
624
624
  "Zip Code": "PLZ",
625
625
  "Country": "Land",
626
626
  "Tax ID": "Steuernummer",
627
+ "Website": "Webseite",
627
628
  "Contact Person": "Ansprechperson",
628
629
  "Contact Email": "E-Mail Ansprechperson",
629
630
  "Contact Phone": "Telefon Ansprechperson",
@@ -938,6 +939,53 @@ declare const _default: {
938
939
  "retry": "Erneut versuchen",
939
940
  "unavailable": "Die gespeicherte Vorlage ist für diese Firma nicht als Verkaufsteuervorlage verfügbar. Bitte prüfen Sie die Auswahl.",
940
941
  "empty": "Für diese Firma sind noch keine Verkaufsteuervorlagen hinterlegt."
942
+ },
943
+ "connections": {
944
+ "title": "App verbinden",
945
+ "subtitle": "Wählen Sie, wo Sie Lambda ERP nutzen möchten. Wir zeigen Ihnen die passende Einrichtung.",
946
+ "other": "Etwas anderes",
947
+ "customName": "Eigene Integration",
948
+ "signIn": "Anmelden",
949
+ "apiKey": "API-Schlüssel",
950
+ "access": "Zugriff",
951
+ "role_viewer": "Daten ansehen",
952
+ "role_manager": "Erstellen und bearbeiten",
953
+ "role_admin": "Voller administrativer Zugriff",
954
+ "roleHelp": "Der Zugriff ist immer durch Ihre eigenen ERP-Berechtigungen begrenzt. Wählen Sie nur, was diese App benötigt.",
955
+ "copied": "Kopiert",
956
+ "copyFailed": "Automatisches Kopieren fehlgeschlagen. Markieren und kopieren Sie den Text manuell.",
957
+ "retry": "Erneut versuchen",
958
+ "interface": "Verbindungsart",
959
+ "chatDisabled": "Der Chat-API-Zugriff ist deaktiviert. Ein Administrator kann ihn oben in den API-Einstellungen aktivieren.",
960
+ "restDisabled": "Der REST-API-/MCP-Zugriff ist deaktiviert. Ein Administrator muss ihn in den API-Einstellungen aktivieren, bevor sich diese App verbinden kann.",
961
+ "chatgptStep": "Fügen Sie in ChatGPT eine eigene App / einen Konnektor hinzu. Entwicklermodus und eine Workspace-Berechtigung können erforderlich sein.",
962
+ "claudeStep": "Öffnen Sie in Claude «Connectors» und wählen Sie «Add custom connector».",
963
+ "urlStep": "Fügen Sie diese Server-URL ein. Verwenden Sie die OAuth-Anmeldung; lassen Sie optionale Felder für Client-ID und Client-Secret leer.",
964
+ "approveStep": "Verbinden Sie die App, melden Sie sich bei Lambda ERP an und bestätigen Sie den gewünschten Zugriff.",
965
+ "noKeyNeeded": "Sie benötigen weder API-Schlüssel noch eigene Header. Den Zugriff wählen Sie auf der Bestätigungsseite.",
966
+ "officialGuide": "Einrichtungsanleitung der App öffnen",
967
+ "copyUrl": "Server-URL kopieren",
968
+ "keyReady": "Ihr Verbindungsschlüssel ist bereit",
969
+ "copySetup": "Einrichtung kopieren",
970
+ "copyHeader": "Autorisierungsheader kopieren",
971
+ "cliStep": "Führen Sie diesen Befehl im Terminal aus. Prüfen Sie die Verbindung anschliessend mit /mcp in Claude Code.",
972
+ "codexStep": "Fügen Sie diesen Eintrag Ihrer Codex-Konfiguration hinzu. Starten Sie Codex neu und prüfen Sie /mcp.",
973
+ "done": "Fertig — Schlüssel ausblenden",
974
+ "existing": "Bestehende Verbindungen",
975
+ "refresh": "Aktualisieren",
976
+ "lastUsed": "Zuletzt verwendet",
977
+ "notUsed": "Noch nicht verwendet",
978
+ "consentTitle": "Mit Lambda ERP verbinden",
979
+ "expired": "Diese Verbindungsanfrage fehlt oder ist abgelaufen. Starten Sie erneut in Ihrer App.",
980
+ "loginFirst": "Melden Sie sich bei Ihrem ERP-Konto an, um die Anfrage dieser App zu prüfen.",
981
+ "consentBody": "«{{app}}» möchte auf Ihr ERP zugreifen. Wählen Sie den Zugriff, den Sie erlauben möchten.",
982
+ "returnTo": "Nach der Bestätigung kehren Sie hierhin zurück",
983
+ "revokeHelp": "Sie können diese Verbindung jederzeit unter Einstellungen → API-Zugriff widerrufen.",
984
+ "deny": "Abbrechen",
985
+ "allow": "Verbindung erlauben",
986
+ "explain_viewer": "Die App kann ERP-Datensätze und Berichte lesen sowie Beleg-PDFs erstellen. Sie kann keine Geschäftsdaten bearbeiten.",
987
+ "explain_manager": "Die App kann zusätzlich Belege erstellen, bearbeiten, buchen und stornieren sowie Stammdaten aktualisieren.",
988
+ "explain_admin": "Die App kann alle verfügbaren ERP-Werkzeuge nutzen, einschliesslich administrativer Aktionen und dem Löschen von Stammdaten."
941
989
  }
942
990
  }
943
991
  ;
@@ -417,7 +417,7 @@ declare const _default: {
417
417
  "signupDisabled": "Currently disabled — registration is invite-only.",
418
418
  "chatApiTitle": "Chat API",
419
419
  "apiTitle": "Programmatic API",
420
- "restApiBody": "Let connectors and scripts drive this ERP over its REST API (documents, masters, reports) with the same Bearer API keys. Off by default.",
420
+ "restApiBody": "Allow apps and scripts to access this ERP through REST or MCP, using API keys or OAuth account linking. Disabled by default.",
421
421
  "restApiEnabled": "Currently enabled — issued keys can call /api/documents, /api/masters, and the rest of the REST API.",
422
422
  "restApiDisabled": "Currently disabled — the REST API only accepts the session cookie; keys are rejected.",
423
423
  "restApiDeactivateTitle": "Deactivate the REST API?",
@@ -428,13 +428,13 @@ declare const _default: {
428
428
  "chatApiDeactivateTitle": "Deactivate the chat API?",
429
429
  "chatApiDeactivateBody": "The chat API will be switched off — every programmatic request (Bearer API keys) is rejected until you turn it back on. Your API keys are NOT deleted: they stay saved and start working again the instant you re-enable the API.",
430
430
  "chatApiDeactivateConfirm": "Deactivate API",
431
- "chatApiKeysTitle": "API keys",
431
+ "chatApiKeysTitle": "Apps and API keys",
432
432
  "chatApiTokenOnce": "Copy this token now — it won't be shown again.",
433
433
  "chatApiCopy": "Copy",
434
434
  "chatApiDismiss": "Dismiss",
435
435
  "chatApiRevoked": "revoked",
436
436
  "chatApiRevoke": "Revoke",
437
- "chatApiNoKeys": "No API keys yet.",
437
+ "chatApiNoKeys": "No connections yet.",
438
438
  "chatApiName": "Name",
439
439
  "chatApiRole": "Role",
440
440
  "chatApiCreate": "Create key",
@@ -451,14 +451,14 @@ declare const _default: {
451
451
  "enabling": "Enabling...",
452
452
  "tokenSpendTitle": "Token Spend",
453
453
  "chatApiDelete": "Delete",
454
- "chatApiYourKeys": "Your keys",
454
+ "chatApiYourKeys": "Your connections",
455
455
  "chatApiYouBadge": "you",
456
456
  "chatApiUnknownUser": "Unknown user",
457
- "chatApiAdminAllNote": "You're an admin — the list below includes every user's keys, grouped by owner. Your own keys are shown first.",
458
- "chatApiConfirmTitle": "This key isn't yours",
459
- "chatApiConfirmRevokeBody": "\"{{key}}\" belongs to {{name}}. Revoking it will immediately break their API access. Continue?",
460
- "chatApiConfirmDeleteBody": "\"{{key}}\" belongs to {{name}}. Deleting it permanently removes their key. Continue?",
461
- "chatApiPersonal": "Personal Bearer keys for the programmatic chat API. A key acts as YOU: it is capped at your role, follows role changes live, and dies with your account. Requires the admin to have enabled the Chat API.",
457
+ "chatApiAdminAllNote": "As an administrator, you can manage everyone’s connections. Your own connections appear first.",
458
+ "chatApiConfirmTitle": "This connection belongs to another user",
459
+ "chatApiConfirmRevokeBody": "“{{key}}” belongs to {{name}}. Revoking it will immediately disconnect their app. Continue?",
460
+ "chatApiConfirmDeleteBody": "“{{key}}” belongs to {{name}}. Permanently remove this revoked connection?",
461
+ "chatApiPersonal": "Connect apps using your ERP account. Access never exceeds your current permissions.",
462
462
  "version": "Version {{version}}"
463
463
  },
464
464
  "status": {
@@ -579,6 +579,7 @@ declare const _default: {
579
579
  "Credit Limit": "Credit Limit",
580
580
  "Currency": "Currency",
581
581
  "Current Period End": "Current Period End",
582
+ "Website": "Website",
582
583
  "Contact Person": "Contact Person",
583
584
  "Contact Email": "Contact Email",
584
585
  "Contact Phone": "Contact Phone",
@@ -938,6 +939,53 @@ declare const _default: {
938
939
  "retry": "Try again",
939
940
  "unavailable": "The saved template is not available as a sales tax template for this company. Please check the selection.",
940
941
  "empty": "This company has no sales tax templates yet."
942
+ },
943
+ "connections": {
944
+ "title": "Connect an app",
945
+ "subtitle": "Choose where you want to use Lambda ERP. We’ll show only the setup you need.",
946
+ "other": "Something else",
947
+ "customName": "Custom integration",
948
+ "signIn": "Sign in",
949
+ "apiKey": "API key",
950
+ "access": "Access",
951
+ "role_viewer": "View data",
952
+ "role_manager": "Create and edit",
953
+ "role_admin": "Full administrative access",
954
+ "roleHelp": "Access is always limited by your own ERP permissions. Choose only what this app needs.",
955
+ "copied": "Copied",
956
+ "copyFailed": "Could not copy automatically. Select the text and copy it manually.",
957
+ "retry": "Try again",
958
+ "interface": "Connection type",
959
+ "chatDisabled": "Chat API access is disabled. Ask an administrator to enable it in the API settings above.",
960
+ "restDisabled": "REST API / MCP access is disabled. An administrator must enable it in the API settings before this app can connect.",
961
+ "chatgptStep": "In ChatGPT, add a custom app / connector. Developer mode and workspace permission may be required.",
962
+ "claudeStep": "In Claude, open Connectors and choose Add custom connector.",
963
+ "urlStep": "Paste this server URL. Use OAuth sign-in; leave optional client ID and client secret fields empty.",
964
+ "approveStep": "Connect, sign in to Lambda ERP, and approve the access you want to grant.",
965
+ "noKeyNeeded": "No API key or custom header is needed. Access is chosen on the approval screen.",
966
+ "officialGuide": "Open the app’s setup guide",
967
+ "copyUrl": "Copy server URL",
968
+ "keyReady": "Your connection key is ready",
969
+ "copySetup": "Copy setup",
970
+ "copyHeader": "Copy authorization header",
971
+ "cliStep": "Run this command in your terminal, then open /mcp in Claude Code to check the connection.",
972
+ "codexStep": "Add this entry to your Codex configuration, then restart Codex and check /mcp.",
973
+ "done": "Done — hide secret",
974
+ "existing": "Existing connections",
975
+ "refresh": "Refresh",
976
+ "lastUsed": "Last used",
977
+ "notUsed": "Not used yet",
978
+ "consentTitle": "Connect to Lambda ERP",
979
+ "expired": "This connection request is missing or expired. Start again in your app.",
980
+ "loginFirst": "Sign in to your ERP account to review this app’s request.",
981
+ "consentBody": "“{{app}}” is requesting access to your ERP. Choose the access you want to allow.",
982
+ "returnTo": "After approval, you will return to",
983
+ "revokeHelp": "You can revoke this connection at any time in Settings → API access.",
984
+ "deny": "Cancel",
985
+ "allow": "Allow connection",
986
+ "explain_viewer": "The app can read ERP records and reports and generate document PDFs. It cannot edit business records.",
987
+ "explain_manager": "The app can also create, edit, submit and cancel business documents and update master data.",
988
+ "explain_admin": "The app can use all available ERP tools, including administrative actions and deleting master data."
941
989
  }
942
990
  }
943
991
  ;
@@ -417,7 +417,7 @@ declare const _default: {
417
417
  "signupDisabled": "Actuellement désactivé — l'inscription se fait uniquement sur invitation.",
418
418
  "chatApiTitle": "API de chat",
419
419
  "apiTitle": "API programmatique",
420
- "restApiBody": "Permettre à des connecteurs et scripts de piloter cet ERP via son API REST (documents, données de base, rapports) avec les mêmes clés API Bearer. Désactivé par défaut.",
420
+ "restApiBody": "Autoriser les applications et scripts à accéder à cet ERP via REST ou MCP, avec des clés API ou une connexion OAuth. Désactivé par défaut.",
421
421
  "restApiEnabled": "Actuellement activé — les clés émises peuvent appeler /api/documents, /api/masters et le reste de l'API REST.",
422
422
  "restApiDisabled": "Actuellement désactivé — l'API REST n'accepte que le cookie de session ; les clés sont rejetées.",
423
423
  "restApiDeactivateTitle": "Désactiver l'API REST ?",
@@ -428,13 +428,13 @@ declare const _default: {
428
428
  "chatApiDeactivateTitle": "Désactiver l'API chat ?",
429
429
  "chatApiDeactivateBody": "L'API chat sera désactivée — toute requête programmatique (clés API Bearer) est rejetée jusqu'à sa réactivation. Vos clés API ne sont PAS supprimées : elles restent enregistrées et fonctionnent à nouveau dès que vous réactivez l'API.",
430
430
  "chatApiDeactivateConfirm": "Désactiver l'API",
431
- "chatApiKeysTitle": "Clés API",
431
+ "chatApiKeysTitle": "Applications et clés API",
432
432
  "chatApiTokenOnce": "Copiez ce jeton maintenant — il ne sera plus affiché.",
433
433
  "chatApiCopy": "Copier",
434
434
  "chatApiDismiss": "Fermer",
435
435
  "chatApiRevoked": "révoquée",
436
436
  "chatApiRevoke": "Révoquer",
437
- "chatApiNoKeys": "Aucune clé API pour l'instant.",
437
+ "chatApiNoKeys": "Aucune connexion pour le moment.",
438
438
  "chatApiName": "Nom",
439
439
  "chatApiRole": "Rôle",
440
440
  "chatApiCreate": "Créer une clé",
@@ -451,14 +451,14 @@ declare const _default: {
451
451
  "enabling": "Activation...",
452
452
  "tokenSpendTitle": "Dépenses de jetons",
453
453
  "chatApiDelete": "Supprimer",
454
- "chatApiYourKeys": "Vos clés",
454
+ "chatApiYourKeys": "Vos connexions",
455
455
  "chatApiYouBadge": "vous",
456
456
  "chatApiUnknownUser": "Utilisateur inconnu",
457
- "chatApiAdminAllNote": "En tant qu'administrateur, la liste ci-dessous inclut les clés de tous les utilisateurs, groupées par propriétaire. Les vôtres apparaissent en premier.",
458
- "chatApiConfirmTitle": "Cette clé ne vous appartient pas",
459
- "chatApiConfirmRevokeBody": "« {{key}} » appartient à {{name}}. La révoquer coupera immédiatement son accès à l'API. Continuer ?",
460
- "chatApiConfirmDeleteBody": "« {{key}} » appartient à {{name}}. La supprimer retire définitivement sa clé. Continuer ?",
461
- "chatApiPersonal": "Clés Bearer personnelles pour l'API de chat programmatique. Une clé agit en VOTRE nom : plafonnée à votre rôle, elle suit les changements de rôle en direct et expire avec votre compte. Nécessite que l'admin ait activé l'API de chat.",
457
+ "chatApiAdminAllNote": "En tant qu’administrateur, vous pouvez gérer les connexions de tous les utilisateurs. Les vôtres apparaissent en premier.",
458
+ "chatApiConfirmTitle": "Cette connexion appartient à un autre utilisateur",
459
+ "chatApiConfirmRevokeBody": "« {{key}} » appartient à {{name}}. La révocation déconnectera immédiatement son application. Continuer ?",
460
+ "chatApiConfirmDeleteBody": "« {{key}} » appartient à {{name}}. Supprimer définitivement cette connexion révoquée ?",
461
+ "chatApiPersonal": "Connectez des applications à votre compte ERP. L’accès ne dépasse jamais vos droits actuels.",
462
462
  "version": "Version {{version}}"
463
463
  },
464
464
  "status": {
@@ -624,6 +624,7 @@ declare const _default: {
624
624
  "Zip Code": "Code postal",
625
625
  "Country": "Pays",
626
626
  "Tax ID": "N° de TVA",
627
+ "Website": "Site web",
627
628
  "Contact Person": "Personne de contact",
628
629
  "Contact Email": "E-mail du contact",
629
630
  "Contact Phone": "Téléphone du contact",
@@ -938,6 +939,53 @@ declare const _default: {
938
939
  "retry": "Réessayer",
939
940
  "unavailable": "Le modèle enregistré n’est pas disponible comme modèle de taxes de vente pour cette entreprise. Vérifiez la sélection.",
940
941
  "empty": "Aucun modèle de taxes de vente n’est encore défini pour cette entreprise."
942
+ },
943
+ "connections": {
944
+ "title": "Connecter une application",
945
+ "subtitle": "Choisissez où utiliser Lambda ERP. Nous afficherons la configuration adaptée.",
946
+ "other": "Autre application",
947
+ "customName": "Intégration personnalisée",
948
+ "signIn": "Se connecter",
949
+ "apiKey": "Clé API",
950
+ "access": "Accès",
951
+ "role_viewer": "Consulter les données",
952
+ "role_manager": "Créer et modifier",
953
+ "role_admin": "Accès administratif complet",
954
+ "roleHelp": "L’accès est toujours limité par vos propres droits ERP. Accordez uniquement ce dont cette application a besoin.",
955
+ "copied": "Copié",
956
+ "copyFailed": "La copie automatique a échoué. Sélectionnez le texte et copiez-le manuellement.",
957
+ "retry": "Réessayer",
958
+ "interface": "Type de connexion",
959
+ "chatDisabled": "L’accès à l’API de chat est désactivé. Demandez à un administrateur de l’activer dans les paramètres API ci-dessus.",
960
+ "restDisabled": "L’accès REST API / MCP est désactivé. Un administrateur doit l’activer dans les paramètres API avant de connecter cette application.",
961
+ "chatgptStep": "Ajoutez une application / un connecteur personnalisé dans ChatGPT. Le mode développeur et une autorisation de l’espace de travail peuvent être nécessaires.",
962
+ "claudeStep": "Dans Claude, ouvrez « Connectors » puis « Add custom connector ».",
963
+ "urlStep": "Collez cette URL de serveur. Utilisez la connexion OAuth ; laissez les champs facultatifs Client ID et Client Secret vides.",
964
+ "approveStep": "Connectez l’application, identifiez-vous dans Lambda ERP et approuvez l’accès souhaité.",
965
+ "noKeyNeeded": "Aucune clé API ni en-tête personnalisé n’est nécessaire. Choisissez l’accès sur l’écran d’autorisation.",
966
+ "officialGuide": "Ouvrir le guide de configuration",
967
+ "copyUrl": "Copier l’URL du serveur",
968
+ "keyReady": "Votre clé de connexion est prête",
969
+ "copySetup": "Copier la configuration",
970
+ "copyHeader": "Copier l’en-tête d’autorisation",
971
+ "cliStep": "Exécutez cette commande dans votre terminal, puis vérifiez la connexion avec /mcp dans Claude Code.",
972
+ "codexStep": "Ajoutez cette entrée à votre configuration Codex, puis redémarrez Codex et vérifiez /mcp.",
973
+ "done": "Terminé — masquer la clé",
974
+ "existing": "Connexions existantes",
975
+ "refresh": "Actualiser",
976
+ "lastUsed": "Dernière utilisation",
977
+ "notUsed": "Pas encore utilisée",
978
+ "consentTitle": "Se connecter à Lambda ERP",
979
+ "expired": "Cette demande de connexion est absente ou expirée. Recommencez depuis votre application.",
980
+ "loginFirst": "Connectez-vous à votre compte ERP pour examiner la demande de cette application.",
981
+ "consentBody": "« {{app}} » demande l’accès à votre ERP. Choisissez l’accès que vous souhaitez autoriser.",
982
+ "returnTo": "Après autorisation, vous retournerez vers",
983
+ "revokeHelp": "Vous pouvez révoquer cette connexion à tout moment dans Paramètres → Accès API.",
984
+ "deny": "Annuler",
985
+ "allow": "Autoriser la connexion",
986
+ "explain_viewer": "L’application peut lire les données et rapports ERP et générer des PDF. Elle ne peut pas modifier les données métier.",
987
+ "explain_manager": "L’application peut aussi créer, modifier, valider et annuler des documents et mettre à jour les données de base.",
988
+ "explain_admin": "L’application peut utiliser tous les outils ERP disponibles, y compris les actions administratives et la suppression de données de base."
941
989
  }
942
990
  }
943
991
  ;