Documentation Iraka API

Endpoint de Base

https://www.iraka.elido-ramiandrisoa.mg/apiv1/service

Utilisez ce point de terminaison pour récupérer les services. Vous pouvez combiner les paramètres pour affiner vos résultats.

Paramètre Type Description
karoka string Recherche par mots-clés (titre, description).
sokajy string Filtrer par nom de catégorie.
user_iraka_id string Filtrer par l'ID unique du prestataire.

Exemples d'Utilisation

1. Recherche par mot-clé

Pour rechercher des services liés au web :

URL
GET https://www.iraka.elido-ramiandrisoa.mg/apiv1/service?karoka=web

2. Filtrer par Prestataire (ID)

Afficher uniquement les services d'un utilisateur spécifique :

URL
GET https://www.iraka.elido-ramiandrisoa.mg/apiv1/service?user_iraka_id=AmZ4pUuFjCsqaTTyqdjw

3. Combinaison Filtre + Recherche

Rechercher un logo dans une catégorie spécifique :

URL
GET https://www.iraka.elido-ramiandrisoa.mg/apiv1/service?sokajy=Design Graphique & Création&karoka=logo

Intégration TypeScript

Consommer l'API proprement

Voici comment typer et appeler l'API dans un projet moderne (React, Vue, Next.js).

service.service.ts
interface IrakaService {
  iraka_id: string;
  iraka_title: string;
  sokajy: string;
  vidiny: number;
  sary: string; // Chemin relatif commençant par innova.mg
  mpanao_iraka: {
    user_iraka_id: string;
    anarana: string;
    sary_piraofila: string;
  };
}

async function getServices(search: string = ''): Promise<IrakaService[]> {
  const response = await fetch(`https://www.iraka.elido-ramiandrisoa.mg/apiv1/service?karoka=${search}`);
  const json = await response.json();
  return json.data;
}

Exemple Complet (Quick Start)

Copiez ce code dans un fichier .html pour afficher instantanément les services sur votre site.

index.html
<!DOCTYPE html>
<html>
<head>
  <style>
    .iraka-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; font-family: sans-serif; padding: 20px; }
    .iraka-card { border: 1px solid #eee; border-radius: 12px; overflow: hidden; padding: 15px; transition: 0.3s; }
    .iraka-card:hover { box-shadow: 0 10px 20px rgba(0,0,0,0.1); }
    .iraka-img { width: 100%; height: 160px; object-fit: cover; border-radius: 8px; }
    .iraka-cat { font-size: 0.75rem; color: #6366f1; font-weight: 700; margin: 10px 0 5px; }
    .iraka-title { font-size: 1.1rem; margin: 5px 0; height: 2.4em; overflow: hidden; }
    .iraka-provider { display: flex; align-items: center; gap: 10px; margin-top: 10px; border-top: 1px solid #f5f5f5; padding-top: 10px; }
    .iraka-avatar { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; }
    .iraka-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; }
    .iraka-price { color: #09090b; font-weight: 800; }
    .iraka-rating { color: #facc15; font-size: 0.85rem; }
  </style>
</head>
<body>
  <div id="services-container" class="iraka-grid">Chargement...</div>

  <script>
    async function loadIraka() {
      // Option 1: Utilisation Globale (Tous les services)
      const url = 'https://www.iraka.elido-ramiandrisoa.mg/apiv1/service';

      // Option 2: Filtrer par ID de prestataire (Décommentez pour utiliser)
      // const url = 'https://www.iraka.elido-ramiandrisoa.mg/apiv1/service?user_iraka_id=AmZ4pUuFjCsqaTTyqdjw';

      const res = await fetch(url);
      const json = await res.json();
      const container = document.getElementById('services-container');

      // On génère le HTML pour chaque service
      container.innerHTML = json.data.map(svc => `
        <div class="iraka-card">
          <img src="https://www.iraka.elido-ramiandrisoa.mg/${svc.sary}" class="iraka-img">
          <div class="iraka-cat">${svc.sokajy}</div>
          <h3 class="iraka-title">${svc.iraka_title}</h3>
          <div class="iraka-provider">
            <img src="https://www.iraka.elido-ramiandrisoa.mg/${svc.mpanao_iraka.sary_piraofila}" class="iraka-avatar">
            <span style="font-size:0.85rem; color:#666">${svc.mpanao_iraka.anarana}</span>
          </div>
          <div class="iraka-footer">
            <div class="iraka-price">${svc.vidiny_ar}</div>
            <div class="iraka-rating">⭐ ${svc.statistika.naoty}</div>
          </div>
        </div>
      `).join('');
    }
    loadIraka();
  </script>
</body>
</html>

Exemple de Réponse

Response JSON (200 OK)
{
  "success": true,
  "count": 1,
  "data": [
    {
      "iraka_id": "ofeRyCC2BLdSt7WmawrR",
      "iraka_title": "Création d'entreprise",
      "sokajy": "Autre Service (Non listé)",
      "zana_tsokajy": "Création d'entreprise ( NIF & STAT )",
      "vidiny": 200000,
      "vidiny_ar": "200 000 Ar",
      "saokajy_vidiny": "projet",
      "sary": "innova.mg/irakaimage/rmslido/service/ofeRyCC2BLdSt7WmawrR",
      "mpanao_iraka": {
        "user_iraka_id": "AmZ4pUuFjCsqaTTyqdjw",
        "anarana": "Faniry Hrentsoa",
        "anarana_fohy": "Faniry",
        "sary_piraofila": "innova.mg/irakaimage/rmslido/avatar/AmZ4pUuFjCsqaTTyqdjw",
        "voamarina": true,
        "an_tserasera": false
      },
      "statistika": {
        "naoty": 0,
        "isan_ny_hevitra": 0
      },
      "toerana": {
        "faritra": "ANALAMANGA",
        "distrika": "ANTANANARIVO"
      }
    }
  ]
}

Codes d'Erreurs

400 Bad Request

Terme de recherche trop court ou paramètres invalides.

500 Server Error

Erreur interne du serveur lors du traitement de la requête.