> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lister les Produits Internet

> Obtenez les cartes internet ADSL et 4G LTE disponibles avec le stock en temps réel

## Vue d'ensemble

Retourne les cartes de recharge internet disponibles pour les services ADSL et 4G LTE avec les tarifs en temps réel et la disponibilité du stock.

## Paramètres de requête

<ParamField query="type" type="string" required>
  Type de service internet : `ADSL` ou `4G`
</ParamField>

## Réponse

<ResponseField name="success" type="boolean" required>
  Indique si la requête a réussi
</ResponseField>

<ResponseField name="data" type="object" required>
  <Expandable title="propriétés">
    <ResponseField name="products" type="array" required>
      Tableau d'objets produit

      <Expandable title="objet produit">
        <ResponseField name="cost" type="number">
          Votre coût pour cette carte en DZD
        </ResponseField>

        <ResponseField name="value" type="number">
          Valeur nominale de la carte en DZD
        </ResponseField>

        <ResponseField name="available" type="boolean">
          Disponibilité du stock (true = en stock)
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Type de service : `ADSL` ou `4G`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object" required>
  <Expandable title="propriétés">
    <ResponseField name="timestamp" type="string">
      Horodatage de la réponse au format ISO 8601
    </ResponseField>
  </Expandable>
</ResponseField>

## Exemples

<CodeGroup>
  ```bash ADSL Products theme={null}
  curl "https://api.oneclickdz.com/v3/internet/products?type=ADSL" \
    -H "X-Access-Token: YOUR_API_KEY"
  ```

  ```bash 4G Products theme={null}
  curl "https://api.oneclickdz.com/v3/internet/products?type=4G" \
    -H "X-Access-Token: YOUR_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const type = "ADSL"; // or '4G'
  const response = await fetch(
    `https://api.oneclickdz.com/v3/internet/products?type=${type}`,
    { headers: { "X-Access-Token": "YOUR_API_KEY" } }
  );
  const { data } = await response.json();
  ```

  ```python Python theme={null}
  response = requests.get(
      'https://api.oneclickdz.com/v3/internet/products',
      headers={'X-Access-Token': 'YOUR_API_KEY'},
      params={'type': 'ADSL'}
  )
  products = response.json()['data']['products']
  ```

  ```php PHP theme={null}
  <?php
  $type = 'ADSL'; // or '4G'
  $ch = curl_init("https://api.oneclickdz.com/v3/internet/products?type={$type}");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Access-Token: YOUR_API_KEY']);
  $response = curl_exec($ch);
  $data = json_decode($response, true);
  $products = $data['data']['products'];
  ?>
  ```
</CodeGroup>

### Réponse Produits ADSL

```json theme={null}
{
  "success": true,
  "data": {
    "products": [
      {
        "cost": 1900,
        "value": 2000,
        "available": false
      },
      {
        "cost": 2850,
        "value": 3000,
        "available": true
      },
      {
        "cost": 475,
        "value": 500,
        "available": true
      },
      {
        "cost": 950,
        "value": 1000,
        "available": true
      }
    ],
    "type": "ADSL"
  },
  "meta": {
    "timestamp": "2025-10-29T00:36:50.059Z"
  }
}
```

### Réponse Produits 4G

```json theme={null}
{
  "success": true,
  "data": {
    "products": [
      {
        "cost": 950,
        "value": 1000,
        "available": true
      },
      {
        "cost": 1425,
        "value": 1500,
        "available": true
      },
      {
        "cost": 475,
        "value": 500,
        "available": true
      }
    ],
    "type": "4G"
  }
}
```

## Notes Importantes

<Warning>
  **Supprimez `cost` avant d'afficher aux utilisateurs finaux.** Appliquez votre propre marge pour la tarification.
</Warning>

<Note>
  Vérifiez `available: true` avant de permettre aux utilisateurs de commander. Les niveaux de stock sont en temps réel.
</Note>

## Formats de Numéro de Téléphone

### Numéros ADSL

* Format : `0[0-9]{8}`
* Exemples : `036362608`, `031417237`
* Numéros fixes (ligne fixe)

### Numéros 4G

* Format : `213[0-9]{9}`
* Exemples : `213472731602`, `213665983439`
* Numéros mobiles avec indicatif pays

[Valider les numéros avant de commander →](/fr/api-reference/internet/validate-number)

## Bonnes Pratiques

<CardGroup cols={2}>
  <Card title="Vérifier le Stock" icon="boxes-stacked">
    Vérifiez toujours `available: true` avant d'afficher aux utilisateurs
  </Card>

  <Card title="Appliquer une Marge" icon="percent">
    Calculez : `prixVente = cost * (1 + votreMargin)`
  </Card>

  <Card title="Mettre en Cache" icon="clock">
    Mettez en cache pendant 5 à 10 minutes pour réduire les appels API
  </Card>

  <Card title="Valider les Numéros" icon="circle-check">
    Utilisez l'endpoint de validation avant de soumettre les commandes
  </Card>
</CardGroup>

## Endpoints Associés

<CardGroup cols={2}>
  <Card title="Valider le Numéro" icon="check" href="/fr/api-reference/internet/validate-number">
    Valider le téléphone avant de commander
  </Card>

  <Card title="Envoyer une Recharge" icon="paper-plane" href="/fr/api-reference/internet/send-topup">
    Acheter une carte internet
  </Card>
</CardGroup>
