Référence de l’API
Référence de l’API gRPC de KiloCenter — définitions Protocol Buffer pour les stations de base, les points de terminaison, avec portail en ligne.
KiloCenter fournit une API gRPC pour intégrer ou étendre la plateforme. Toutes les définitions d’API sont des Protocol Buffers hébergés dans le dépôt sous KC-Core/api/proto/.
Référence API interactive
Une référence API navigable avec tous les points de terminaison RPC est disponible à :
https://servicecenter-api.kiloiot.io/
Présentation de gRPC
gRPC est un framework RPC hautes performances qui utilise Protocol Buffers pour la sérialisation et HTTP/2 pour le transport. Pour plus d’informations, voir grpc.io.
L’API de KiloCenter est définie dans trois fichiers proto :
kilocenter.proto
Service unifié rétrocompatible (117 RPC au total)
core.proto
Messages du domaine central (points de terminaison, stations de base, messages, liaisons descendantes, événements, certificats, plans)
identity.proto
Messages du domaine d’identité (utilisateurs, organisations, clés API, authentification)
Génération de client
Go (avec buf — valeur par défaut du projet) :
cd KC-Core/api/proto && buf generateSortie : KC-Core/api/gen/ (uniquement des stubs Go — buf.gen.yaml configure les plugins Go).
Autres langages (avec protoc) :
# Exemple Python
python -m grpc_tools.protoc \\
-I KC-Core/api/proto \\
--python_out=./gen --grpc_python_out=./gen \\
KC-Core/api/proto/kilocenter.proto \\
KC-Core/api/proto/core.proto \\
KC-Core/api/proto/identity.protobuf.gen.yaml génère uniquement des stubs Go. Pour les autres langages, utilisez protoc ou ajoutez des plugins buf. Voir grpc.io/docs/languages pour des guides spécifiques à chaque langage.
Authentification
Édition communautaire
L’édition Community s’exécute avec l’authentification désactivée (KILOCENTER_AUTH_ENABLED=false). Aucun en-tête n’est requis pour aucun RPC — toutes les méthodes sont accessibles directement.
Édition Entreprise
Lorsque l’authentification est activée (KILOCENTER_AUTH_ENABLED=true), trois en-têtes de métadonnées s’appliquent :
authorization
Tous les RPC non publics
Bearer <JWT_TOKEN> ou Bearer <API_KEY>
x-organization-id
Tous les RPC non exemptés
UUID de l’organisation cible
x-user-id
RPC appelés sans JWT (mode d’authentification par en-têtes uniquement)
UUID de l’utilisateur agissant
Méthodes publiques (aucun en-tête requis) : Connexion, RefreshTokens, GetAuthSettings, ExchangeOIDC, ExchangeOAuth2, GetReleaseInfo, RegisterAccount Source : KC-Core/pkg/grpc/public_methods.go
Méthodes exemptées d’organisation (authentification requise, aucun en-tête d’organisation) : GetSystemStatus, GetProfile, Déconnexion, ChangePassword, CRUD Utilisateur/Organisation/Adhésion (contexte d’organisation résolu à partir des champs de la requête) Source : KC-Core/pkg/grpc/public_methods.go → OrgExemptMethods
Les jetons d’API sont créés via KC-Web ou le CreateApiKey RPC.
Référence API par domaine
Points de terminaison (7)
CreateEndPoint, GetEndPoint, UpdateEndPoint, DeleteEndPoint, ListEndPoints, AttachEndPoint, DetachEndPoint
Stations de base (7)
CreateBaseStation, GetBaseStation, UpdateBaseStation, DeleteBaseStation, ListBaseStations, GetBaseStationStats, UpdateBaseStationEui
Messages (11)
GetMessage, ListMessages, StreamMessages, ListBaseStationMessages, GetBaseStationMessage, GetBaseStationMessageStats, SearchBaseStationMessages, ExportBaseStationMessages, StreamBaseStationMessages, ListEndpointMessages, ListBaseStationActivity
Liaisons descendantes (4)
SendDownlink, RevokeDownlink, ListDownlinkQueue, GetDownlinkResults
Transmission UL (1)
SendULTransmit
Contrôle des stations de base (2)
RequestBaseStationStatus, InitiatePing
Statut de réception DL (3)
GetDLRXStatus, QueryDLRXStatus, GetDLRXStatusQueries
Système (3)
GetSystemStatus, GetStatistics, GetReleaseInfo
Clés API (4)
CreateApiKey, GetApiKey, DeleteApiKey, ListApiKeys
Intégrations (5)
CreateIntegration, GetIntegration, UpdateIntegration, DeleteIntegration, ListIntegrations
Analytique (3)
GetAnalyticsOverview, GetActivityAnalytics, GetSignalQualityAnalytics
Événements et alertes (8)
ListEvents, ListBaseStationEvents, ListEndPointEvents, StreamEvents, StreamBaseStationEvents, StreamEndPointEvents, ListAlerts, GetAlertSummary
Surveillance SCACI (6)
ListScaciSessions, GetScaciSession, GetScaciStatistics, ListScaciErrors, ListScaciQueues, GetScaciStatus
Certificats (6)
GenerateCertificate, DownloadCertificate, DownloadBaseStationCertificate, GenerateServerCertificates, RenewServerCertificates, GetServerCertificateStatus
Fabricants (5)
CreateManufacturer, GetManufacturer, UpdateManufacturer, DeleteManufacturer, ListManufacturers
Modèles d’appareils (5)
CreateDeviceModel, GetDeviceModel, UpdateDeviceModel, DeleteDeviceModel, ListDeviceModels
Plans (8)
CreateBlueprint, GetBlueprint, UpdateBlueprint, DeleteBlueprint, ListBlueprints, SetDefaultBlueprint, SubmitBlueprintToRegistry, CreateDeviceModelWithBlueprint
Utilitaires de plans (1)
DecodePreview
Statistiques des points de terminaison (2)
GetEndPointStats, GetEndPointOperations
Auth et session (8) — Entreprise
Connexion, RefreshTokens, GetProfile, GetAuthSettings, Déconnexion, ChangePassword, ExchangeOIDC, ExchangeOAuth2
Inscription en libre-service (1) — Entreprise
RegisterAccount
Utilisateurs (6) — Entreprise
CreateUser, GetUser, UpdateUser, DeleteUser, ListUsers, UpdateUserPassword
Organisations (5) — Entreprise
CreateOrganization, GetOrganization, UpdateOrganization, DeleteOrganization, ListOrganizations
Adhésions aux organisations (6) — Entreprise
AddOrganizationUser, GetOrganizationUser, UpdateOrganizationUser, RemoveOrganizationUser, ListOrganizationUsers, ListUserOrganizations
RPC en streaming
Cinq RPC utilisent le streaming côté serveur pour fournir des données en temps réel :
StreamMessages
Messages de liaison montante en temps réel
StreamBaseStationMessages
Flux de messages de la station de base
StreamEvents
Notifications d’événements système
StreamBaseStationEvents
Flux d’événements de la station de base
StreamEndPointEvents
Flux d’événements du point de terminaison
Pagination
Tous List* Les RPC prennent en charge la pagination basée sur un offset via page_size et page_token champs.
RPC de liste standard : 20 par défaut, 100 max Listes à fort volume (points de terminaison, stations de base, liaisons descendantes) : 100 par défaut, 1000 max
Source : KC-Core/pkg/grpc/pagination.go
Gestion des erreurs
Toutes les erreurs utilisent les codes d’état gRPC avec des jetons d’erreur lisibles par machine provenant de KC-Core/pkg/grpc/errors_catalog.go.
INVALID_ARGUMENT (3)
400
Requête mal formée, échecs de validation
NOT_FOUND (5)
404
La ressource n’existe pas
ALREADY_EXISTS (6)
409
Ressource en double
PERMISSION_DENIED (7)
403
Échec d’autorisation
UNAUTHENTICATED (16)
401
Jeton manquant ou invalide
FAILED_PRECONDITION (9)
400
Échec lié à l’état
INTERNAL (13)
500
Erreur serveur
Pour le modèle d’erreur complet et les plages de jetons d’erreur, voir docs/api.md.
Console API
La réflexion gRPC est activée sur KC-Gateway. Outils compatibles :
Pour aller plus loin
Référence API complète — contrats requête/réponse et plages de jetons d’erreur
Fichiers sources Proto — définitions canoniques de l’API
Premiers pas avec gRPC — vérifier la connectivité et découvrir les méthodes
Mis à jour