GeoNetAgent, LDAPWeb, server-audit, server-connection
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

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-clientsService 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();