Utilisation
L'utilisation des APIs publiques est conditionné à l'achat d'une licence.
Les informations techniques relatives à l'utilisation des APIs publiques sont accessibles dans la page d'administration de groupe de travail, pour les utilisateurs ayant le rôle administrateur de groupe de travail
On y retrouvera les informations nécessaires à la gestion de authentifications pour l'invocation des APIs publiques:
- Url de l'API (<base_url>) exemple : https://weu-mining-api.igrafxcloud.com
- Url d'authentification (<auth_url>) exemple : https://identity-emea.igrafxcloud.com/realms/logpickr-api-weu-mining
- ID technique du groupe de travail (<client_id>)
- clé privée du groupe de travail (<client_secret>)
Le principe général consiste à :
- générer un jeton d'authentification (durée limitée)
- invoquer une API publique en incluant un jeton valide en entête (header Authorization)
Génération d'un jeton
Exemple appel d'API avec curl:
curl -X POST \
<auth_url>/protocol/openid-connect/token \
--data "grant_type=client_credentials" \
--data "client_id=<client_id>" \
--data "client_secret=<client_secret>"
curl -X POST \
https://identity-emea.igrafxcloud.com/realms/logpickr-api-weu-mining/protocol/openid-connect/token \
--data "grant_type=client_credentials" \
--data "client_id=1026d505-6945-4aa9-b3cd-08a368033a68" \
--data "client_secret=b9c8872a-3109-40ef-9cdb-98a68b98441c"
Cet appel va générer une réponse json du type :
{
"upgraded":false,
"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJyRGk5cE52elJCU01PQldVOUEtY0VLY0hwZ3Z5WGhoODRsZVBFbjF3TkVjIn0.eyJleHAiOjE1ODc2NTgwMzMsImlhdCI6MTU4NzY1NzczMywianRpIjoiYWIwYTA0OGUtMTM2My00ODBlLWFjNjAtZWIyZDAwZjk1ODZhIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyODA4MC9hdXRoL3JlYWxtcy9sb2dwaWNrciIsImF1ZCI6InNkay1hcGktYWNjZXNzIiwic3ViIjoiMmI3MDBmZDktZDExYy00ZjZmLWI1ZDctYWFmYTAzNzMwMDRmIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoic2RrLWFwaS1hY2Nlc3MiLCJzZXNzaW9uX3N0YXRlIjoiNGM4NWYyMTItN2UzMC00M2E4LTg3N2QtY2Q0ZDE5NTY4Mjc2IiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjgwODAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJzZGstYXBpLWFjY2VzcyI6eyJyb2xlcyI6WyJ1bWFfcHJvdGVjdGlvbiJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwiYXV0aG9yaXphdGlvbiI6eyJwZXJtaXNzaW9ucyI6W3sicnNpZCI6ImYxNTIyYzhkLTQ2ZTQtNDMzZC04NmJjLTBjMTk2MjIxMTE2ZiIsInJzbmFtZSI6IkRlZmF1bHQgUmVzb3VyY2UifV19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6InNkay1hcGktYWNjZXNzIiwiY2xpZW50SG9zdCI6IjE3Mi4yOC4wLjEiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC1zZGstYXBpLWFjY2VzcyIsImNsaWVudEFkZHJlc3MiOiIxNzIuMjguMC4xIn0.i9SPI-lOl6FhaKfyWIlGdxQeyv9qHve24DVSMur0SbCPkfjbHaSh2oZY5fTu7atB0gnmqmwAcKAYY6kPgfq72xRgDfjpfS9lhki3eG_0UF1-QZ7T3ETpcUuxZFjJD0xLCyhKsjVxEQjEY6A9w5tHKW1YEIfTScfL0Akdigy9HUmW57-jcwMqaRp0fcMlGw1-n_5TuzSsIAl07WfsHDLhINrcctUxnk4sZJC4tYhLUQ6vBJ3lwNodKD6cZawd32RJWTbiZY2BCQefQKGtt3VHQ7c9HYp9apQb-YlM8mrrC_Od0Mpqnfr5IJmvHhnFdcfwrOvldkKa1qzoCA3S57kbwA",
"expires_in":300,
"refresh_expires_in":1800,
"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJiZDMzY2UwOC1hMmJhLTQwNDItYTJmOC1iOTIwN2QxNzc4NDcifQ.eyJleHAiOjE1ODc2NTk1MzMsImlhdCI6MTU4NzY1NzczMywianRpIjoiNGVjZjJmZjktOWU3OC00OGEwLWE5NzQtZGVlMTZjMTYyMDE1IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyODA4MC9hdXRoL3JlYWxtcy9sb2dwaWNrciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6MjgwODAvYXV0aC9yZWFsbXMvbG9ncGlja3IiLCJzdWIiOiIyYjcwMGZkOS1kMTFjLTRmNmYtYjVkNy1hYWZhMDM3MzAwNGYiLCJ0eXAiOiJSZWZyZXNoIiwiYXpwIjoic2RrLWFwaS1hY2Nlc3MiLCJzZXNzaW9uX3N0YXRlIjoiNGM4NWYyMTItN2UzMC00M2E4LTg3N2QtY2Q0ZDE5NTY4Mjc2IiwiYXV0aG9yaXphdGlvbiI6eyJwZXJtaXNzaW9ucyI6W3sicnNpZCI6ImYxNTIyYzhkLTQ2ZTQtNDMzZC04NmJjLTBjMTk2MjIxMTE2ZiIsInJzbmFtZSI6IkRlZmF1bHQgUmVzb3VyY2UifV19LCJzY29wZSI6InByb2ZpbGUgZW1haWwifQ.fqNYxzppsCgoFWmY1KBw6_iFT377_njEqGM7KTPKjoE",
"token_type":"Bearer",
"not-before-policy":0,
"session_state": "fb4e04b6-79f7-4d9d-aa49-5218f010cf67",
"scope": "profile email mining-weu-ui-clientscope"
}
Page de référence : https://www.keycloak.org/docs/latest/authorization_services/#_service_pushing_claims
Invocation d'une API publique
C'est la valeur de access_token
de l'appel décrit précédemment qui devra être récupérée et utilisée dans chaque appel d'API publique avec le header Authorization
et le préfixe Bearer
.
Exemple d'appel d'api publique :
curl -X GET "<base_url>/pub/projects" \
-H "accept: application/json" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJyRGk5cE52elJCU01PQldVOUEtY0VLY0hwZ3Z5WGhoODRsZVBFbjF3TkVjIn0.eyJleHAiOjE1ODc5Njk5OTcsImlhdCI6MTU4Nzk2OTY5NywianRpIjoiMzJmODQ3NDEtZjM2ZS00ODM4LWE2YmItZDVkMjFhN2ZiN2U4IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyODA4MC9hdXRoL3JlYWxtcy9sb2dwaWNrciIsImF1ZCI6InNkay1hcGktYWNjZXNzIiwic3ViIjoiMmI3MDBmZDktZDExYy00ZjZmLWI1ZDctYWFmYTAzNzMwMDRmIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoic2RrLWFwaS1hY2Nlc3MiLCJzZXNzaW9uX3N0YXRlIjoiM2Q1MDYyMTEtYzNkYy00MDQwLWIzODAtYWNlZDE0YjU4NWJmIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjgwODAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJzZGstYXBpLWFjY2VzcyI6eyJyb2xlcyI6WyJ1bWFfcHJvdGVjdGlvbiJdfSwiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwiYXV0aG9yaXphdGlvbiI6eyJwZXJtaXNzaW9ucyI6W3sicnNpZCI6ImYxNTIyYzhkLTQ2ZTQtNDMzZC04NmJjLTBjMTk2MjIxMTE2ZiIsInJzbmFtZSI6IkRlZmF1bHQgUmVzb3VyY2UifV19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJjbGllbnRJZCI6InNkay1hcGktYWNjZXNzIiwiY2xpZW50SG9zdCI6IjE3Mi4zMC4wLjEiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC1zZGstYXBpLWFjY2VzcyIsImNsaWVudEFkZHJlc3MiOiIxNzIuMzAuMC4xIn0.T9yzVUrkwKl8WGBzwbpsjmJNoobrg3yw55lAnygJYpuc1PFXcPI_FZ8Eg9zJLxRUr2nei2VNIrdFu2vm0SFsg49v4pxhGdCCvDmx9kACEmOfaazSYL_3fOAsluT6gJpT23dbsriYgRB8Kdb1-Bqeq31qVESOkxkJdR4ITKr0yO7Kp9NTWRL125K90SWvx5eOR6-oGD6ToowmN2WthOgbSGgWNpHykItiSV1C9V6r8cSwPKhWcl4WxjmQaBo4PRFglr9lAYWR4NqxR2kTk34ZVRAn47pyCeGnWCWUss0F-sFcOFvT5jDAQglcDMKF8Ev-Rm3dSCobEjS6GoyJbILpeQ"
Accès JDBC
les APIs publiques fournissent la liste des tables auxquelles vous avez accès, des requêtes complexes peuvent être effectuées en SQL via JDBC.
La syntaxe SQL utilisable est décrite dans la documentation officielle Druid SQL
Le Driver JDBC est Avatica
L'url JDBC sera : "jdbc:avatica:remote:url=http://<base_url>:8082/druid/v2/sql/avatica/"
Exemple : "jdbc:avatica:remote:url=http://api.app.logpickr.com:8082/druid/v2/sql/avatica/"
Les identifiants de connexion correspondent à ceux du groupe de travail auquel vous avez accès :
- identifiant : ID technique du groupe de travail (<client_id>), fourni dans la page API de l'administration du groupe de travail (voir ci-dessus)
- mot de passe : clé privée du groupe de travail (<client_secret>), fourni dans la page API de l'administration du groupe de travail (voir ci-dessus)
plus de détails : https://druid.apache.org/docs/latest/querying/sql.html#jdbc
La structure des tables est décrite dans le chapitre suivant
SDK
Un SDK sera disponible bientôt pour vous permettre d'accéder aux structures et requêtes Logpickr via Python.