Dokumentasi API

Feed Formula
API Documentation

Panduan lengkap penggunaan API sistem formulasi pakan ternak cerdas dengan algoritma AMPSO - dari registrasi hingga optimasi formula pakan yang sempurna!

Flow Penggunaan Sistem

Berikut adalah alur lengkap penggunaan sistem formulasi pakan dari registrasi hingga mendapatkan hasil optimasi

1

Registrasi & Login

User harus mendaftar dan login terlebih dahulu untuk mengakses sistem formulasi pakan.

Endpoint:

POST /api/auth/register
POST /api/auth/login
// Request Body - Register
{
  "name": "Budi Peternak",
  "email": "budi@example.com",
  "password": "password123",
  "phone": "081234567890",
  "farm_type": "ayam_broiler"
}
2

Dashboard Profile

Setelah login, user dapat mengakses dashboard untuk mengelola profile dan melihat riwayat formula yang pernah dibuat.

Kelola data personal
Lihat riwayat formula
Simpan formula favorit
// Response - User Profile
{
  "user": {
    "id": 1,
    "name": "Budi Peternak",
    "email": "budi@example.com",
    "farm_type": "ayam_broiler",
    "total_formulas": 5,
    "last_login": "2024-10-06 08:30:00"
  },
  "recent_formulas": [...]
}
3

Lihat Data Acuan

User dapat melihat daftar lengkap bahan pakan yang tersedia dalam database beserta kandungan nutrisi dan harga.

Endpoint:

GET /api/ingredients
// Response - Available Ingredients
{
  "success": true,
  "data": [
    {
      "name": "Jagung giling kuning",
      "price_per_kg": 8000,
      "ME": 3320.0,
      "protein": 8.9,
      "fat": 4.0,
      "fiber": 2.8
    },
    {
      "name": "Bungkil kedelai",
      "price_per_kg": 9000,
      "ME": 2230.0,
      "protein": 44.6,
      "fat": 1.1
    }
  ],
  "total_ingredients": 28
}
4

Pilih Bahan Pakan

User memilih bahan-bahan pakan yang tersedia dan ingin digunakan dalam formula optimasi.

Contoh: Jagung, Dedak, Bungkil Kedelai
Min: 3 jenis bahan
Max: 15 jenis bahan
// Selected Ingredients
{
  "selected_ingredients": [
    "Jagung giling kuning",
    "Dedak (rice bran)",
    "Bungkil kedelai",
    "Fish meal (tepung ikan)",
    "Bekatul",
    "DCP",
    "premix",
    "L-Lysine HCl",
    "DL-Methionine",
    "NaCl"
  ]
}
5

Set Parameter Target

User mengatur parameter produksi seperti target berat pakan, jenis ternak, dan standar nutrisi custom (opsional).

Target produksi (kg)
Jenis ternak
Custom standar nutrisi
// Parameters Setting
{
  "target_weight": 300.0,
  "animal_type": "ayam_layer",
  "custom_standards": {
    "PK %": ["min", 20.0],
    "ME (Kkal/kg)": ["min", 2950.0],
    "LK %": ["target", 7.5]
  },
  "include_cost_optimization": true
}
6

Optimasi & Hasil

Sistem menjalankan algoritma AMPSO untuk menghasilkan formula pakan optimal dengan komposisi, nutrisi, dan analisis biaya lengkap.

Endpoint:

POST /api/optimize
// Optimization Result
{
  "success": true,
  "target_weight_kg": 300.0,
  "total_cost_per_kg": 5247.89,
  "total_batch_cost": 1574367.0,
  "composition_details": [
    {
      "ingredient_name": "Jagung giling kuning",
      "percentage": 63.92,
      "weight_kg": 191.76,
      "cost_contribution": 862920.0
    }
  ],
  "nutrient_composition": {...},
  "standards_compliance": {...}
}

API Endpoints

Daftar lengkap endpoint yang tersedia dalam sistem formulasi pakan

Authentication

POST /api/auth/register

Registrasi user baru

POST /api/auth/login

Login user

POST /api/auth/logout

Logout user

User Management

GET /api/user/profile

Data profile user

PUT /api/user/profile

Update profile user

GET /api/user/formulas

Riwayat formula user

Feed Ingredients

GET /api/ingredients

Daftar bahan pakan tersedia

GET /api/standards

Standar nutrisi default

GET /api/health

Status kesehatan API

Optimization

POST /api/optimize

Optimasi formulasi pakan

POST /api/predict

Alias untuk /optimize

POST /api/formula/save

Simpan formula ke profile

Mulai Cepat

Panduan singkat untuk memulai menggunakan API formulasi pakan dalam 5 langkah mudah

1

Setup & Authentication

Daftar akun dan dapatkan token autentikasi untuk mengakses API.

curl -X POST https://api.feedformula.com/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Nama Peternak",
    "email": "email@example.com", 
    "password": "password123"
  }'
2

Cek Bahan Pakan Tersedia

Lihat daftar bahan pakan yang bisa digunakan untuk optimasi.

curl -X GET https://api.feedformula.com/ingredients \
  -H "Authorization: Bearer YOUR_TOKEN"
3

Pilih Bahan & Set Parameter

Tentukan bahan pakan yang akan digunakan dan parameter target produksi.

{
  "selected_ingredients": [
    "Jagung giling kuning",
    "Bungkil kedelai", 
    "Fish meal (tepung ikan)"
  ],
  "target_weight": 300.0,
  "animal_type": "ayam_broiler"
}
4

Jalankan Optimasi

POST data ke endpoint optimasi untuk mendapatkan formula optimal.

curl -X POST https://api.feedformula.com/optimize \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d @formula_request.json
5

Analisis Hasil

Dapatkan komposisi optimal, analisis nutrisi, dan perhitungan biaya.

{
  "success": true,
  "composition_details": [...],
  "nutrient_composition": {...},
  "total_cost_per_kg": 5247.89,
  "standards_compliance": {...}
}

Autentikasi & Security

Sistem keamanan API menggunakan JWT token dengan validasi berlapis untuk melindungi data formula pakan Anda

Token-Based Authentication

Semua request ke API (kecuali endpoint publik) memerlukan JWT token yang diperoleh saat login. Token akan expire dalam 24 jam dan perlu di-refresh secara berkala.

Header Authorization

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

Rate Limiting

Endpoint optimize: 10 requests/menit
Endpoint lainnya: 60 requests/menit

Example Login Flow

1. Login Request
POST /api/auth/login
{
  "email": "peternak@example.com",
  "password": "password123"
}
2. Login Response
{
  "success": true,
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  "expires_in": 86400,
  "user": {
    "id": 1,
    "name": "Peternak Sukses",
    "email": "peternak@example.com"
  }
}
3. Using Token
GET /api/user/profile
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

Contoh Response

Format dan struktur response yang akan Anda terima dari berbagai endpoint API

Response Optimasi Formula

{
  "success": true,
  "target_weight_kg": 300.0,
  "total_cost_per_kg": 5247.89,
  "total_batch_cost": 1574367.0,
  "composition_details": [
    {
      "ingredient_name": "Jagung giling kuning",
      "percentage": 63.92,
      "weight_kg": 191.76,
      "price_per_kg": 8000,
      "total_cost": 1534080.0,
      "nutrient_contribution": {
        "ME": 2121.864,
        "protein": 5.69,
        "fat": 2.56
      }
    },
    {
      "ingredient_name": "Bungkil kedelai", 
      "percentage": 15.20,
      "weight_kg": 45.60,
      "price_per_kg": 9000,
      "total_cost": 410400.0,
      "nutrient_contribution": {
        "ME": 338.96,
        "protein": 6.78,
        "fat": 0.17
      }
    }
  ],
  "nutrient_composition": {
    "ME (Kkal/kg)": {
      "value": 2904.7656,
      "unit": "kkal/kg",
      "status": "✓",
      "requirement": ">= 2900"
    },
    "PK %": {
      "value": 18.71,
      "unit": "%", 
      "status": "✓",
      "requirement": ">= 18.7"
    },
    "LK %": {
      "value": 7.24,
      "unit": "%",
      "status": "✓", 
      "requirement": "7.0 ± 0.5"
    }
  },
  "standards_compliance": {
    "total_passed": 8,
    "total_checked": 10,
    "compliance_rate": 80.0,
    "failed_standards": [
      "SK % (7.2% > 7.0%)",
      "Ca % (0.68% < 0.72%)"
    ]
  },
  "optimization_info": {
    "algorithm": "AMPSO",
    "iterations": 127,
    "convergence_time": "2.34s",
    "feasible": true
  },
  "selected_ingredients": [
    "Jagung giling kuning",
    "Bungkil kedelai",
    "Fish meal (tepung ikan)",
    "DCP",
    "premix"
  ]
}

Response Error

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_INGREDIENTS",
    "message": "Minimal 3 bahan pakan diperlukan untuk optimasi",
    "details": {
      "provided_ingredients": 2,
      "minimum_required": 3,
      "suggestions": [
        "Tambahkan minimal 1 bahan pakan lagi",
        "Pilih dari daftar bahan yang tersedia di /ingredients"
      ]
    }
  },
  "timestamp": "2024-10-06T10:30:00Z",
  "request_id": "req_abc123xyz"
}

Response Daftar Bahan Pakan

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "Jagung giling kuning",
      "category": "cereal_grains",
      "price_per_kg": 8000,
      "currency": "IDR",
      "nutrients": {
        "ME": 3320.0,
        "protein": 8.9,
        "fat": 4.0,
        "fiber": 2.8,
        "calcium": 0.02,
        "phosphorus": 0.28
      },
      "usage_limits": {
        "min_percentage": 0.0,
        "max_percentage": 70.0
      },
      "availability": "available"
    },
    {
      "id": 2,
      "name": "Bungkil kedelai", 
      "category": "protein_sources",
      "price_per_kg": 9000,
      "currency": "IDR",
      "nutrients": {
        "ME": 2230.0,
        "protein": 44.6,
        "fat": 1.1,
        "fiber": 6.0,
        "calcium": 0.24,
        "phosphorus": 0.62
      },
      "usage_limits": {
        "min_percentage": 0.0,
        "max_percentage": 25.0
      },
      "availability": "available"
    }
  ],
  "total_ingredients": 28,
  "categories": [
    "cereal_grains",
    "protein_sources", 
    "mineral_supplements",
    "vitamin_premixes"
  ],
  "last_updated": "2024-10-06T08:00:00Z"
}

FAQ Pengembang

Pertanyaan yang sering diajukan seputar implementasi dan penggunaan API

Bagaimana cara menangani timeout pada proses optimasi?

Proses optimasi AMPSO biasanya memakan waktu 2-5 detik. Set timeout HTTP client minimal 30 detik. Jika timeout terjadi, coba kurangi jumlah bahan pakan atau parameter custom yang kompleks.

curl --timeout 30 -X POST /api/optimize

Apakah bisa menggunakan data bahan pakan custom?

Saat ini API menggunakan database bahan pakan yang sudah tersedia. Untuk kebutuhan bahan custom, silakan hubungi tim support untuk penambahan ke database utama.

Bagaimana cara monitoring penggunaan API quota?

Setiap response API menyertakan header rate limit information:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1633024800

Apakah hasil optimasi selalu sama untuk input yang sama?

Algoritma AMPSO menggunakan random seed yang dapat dikontrol. Untuk hasil deterministik, gunakan parameter "seed" yang sama pada setiap request. Tanpa seed, hasil bisa sedikit berbeda namun tetap optimal secara matematis.

Bagaimana menangani error validasi bahan pakan?

API akan mengembalikan error jika nama bahan tidak ditemukan atau kombinasi bahan tidak feasible:

HTTP 400: {"error": "INGREDIENT_NOT_FOUND", "invalid_ingredients": ["Bahan X"]}
HTTP 422: {"error": "INFEASIBLE_CONSTRAINTS", "reason": "Tidak ada solusi yang memenuhi semua batasan"}

Siap Implementasi API?

Mulai integrasikan sistem formulasi pakan cerdas ke aplikasi Anda hari ini. Dapatkan akses API key dan dokumentasi lengkap secara gratis!

🚀

Setup Cepat

Integrasi API dalam hitungan menit dengan dokumentasi lengkap dan contoh kode.

🔧

Support 24/7

Tim developer siap membantu implementasi dan troubleshooting kapan saja.

📊

Analytics Dashboard

Monitor penggunaan API, performa, dan statistik melalui dashboard yang intuitive.