You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.4 KiB
3.4 KiB
Integration Guide — geonet-console API
Panduan integrasi untuk AI Agent dan microservice yang menggunakan geonet-console API.
Alur Integrasi untuk AI Agent (JWT)
Langkah 1: Login
POST /api/v1/auth/login
↓
Langkah 2: Simpan access_token
↓
Langkah 3: Gunakan token pada setiap request
Authorization: Bearer <access_token>
↓
Langkah 4: Jika response 401 → Login ulang
↓
Langkah 5: Jika response 403 → Token tidak punya scope yang cukup
Alur Integrasi untuk Microservice (API Token / Service Token)
Langkah 1: Admin buat API Token atau Service Token di /api-clients
↓
Langkah 2: Simpan token di .env atau config microservice
↓
Langkah 3: Gunakan pada setiap request
Authorization: Bearer <token>
↓
Langkah 4: Token tidak expire kecuali dihapus/direvoke manual
Dependency Antar Service
geonet-console
↓ membaca
LDAP (Active Directory) — 10.100.1.40
↓ membaca/menulis
PostgreSQL App DB (databaselist_app) — 10.100.1.24 (Docker)
↓ menulis audit
PostgreSQL Audit DB (databaselist_audit) — 10.100.1.24 (Docker)
↓ sinkronisasi service tokens
PostgreSQL GeoNetAgent DB (geonetagent_dev) — 10.100.1.25
↓ query project search
PostgreSQL Project Search DB (geonet_project_search) — 10.100.1.25
↓ inference
Ollama (VM aiopr) — 10.100.1.26
GeoNetAgent Integration
GeoNetAgent menggunakan Service Token untuk autentikasi ke collector.
Token dikelola di geonet-console /api-clients → Service Tokens.
Saat token dibuat/regenerate di UI, token otomatis disinkronkan ke geonetagent_dev.agent_tokens.
Admin buat Service Token di geonet-console
↓ sinkron otomatis
geonetagent_dev.agent_tokens (via AgentTokenSyncService)
↓
GeoNetAgent Agent (PowerShell) baca config.json
↓
POST https://agent.gisportal.id/api/v1/agent/report
Authorization: Bearer <service_token>
↓
Collector (FastAPI) validasi token dari agent_tokens
↓
200 OK / 401 Unauthorized
File config agent: GeoNetAgent/agent/config.json
{
"collector_url": "https://agent.gisportal.id/api/v1/agent/report",
"agent_token": "<service_token_lengkap>"
}
Contoh SDK
cURL (wajib)
# Login
curl -s -X POST https://console.gisportal.id/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"john.doe","password":"password123"}'
# List databases (dengan JWT)
curl -s https://console.gisportal.id/api/v1/databases \
-H "Authorization: Bearer <jwt_token>"
# List service tokens (dengan API Token)
curl -s https://console.gisportal.id/api/v1/service-tokens \
-H "Authorization: Bearer <api_token>"
Python
import requests
BASE_URL = "https://console.gisportal.id/api/v1"
# Login
resp = requests.post(f"{BASE_URL}/auth/login", json={
"username": "john.doe",
"password": "password123"
})
token = resp.json()["data"]["access_token"]
# Gunakan token
headers = {"Authorization": f"Bearer {token}"}
databases = requests.get(f"{BASE_URL}/databases", headers=headers).json()
Laravel (PHP)
use Illuminate\Support\Facades\Http;
$response = Http::post('https://console.gisportal.id/api/v1/auth/login', [
'username' => 'john.doe',
'password' => 'password123',
]);
$token = $response->json('data.access_token');
$databases = Http::withToken($token)
->get('https://console.gisportal.id/api/v1/databases')
->json();