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

# Lister le stock

> Retourne la liste des articles en stock.

**Champs retournés selon le niveau d'accès :**
- **BASIC** : `id`, `productName`, `productCategory`, `quantity`, `isLowStock`, `isOutOfStock`
- **STANDARD** : + `productId`, `minThreshold`, `maxThreshold`, `lastMovementAt`
- **FULL** : Tous les champs

**Permission requise :** `STOCK_READ`




## OpenAPI

````yaml openapi.yaml get /stock
openapi: 3.1.0
info:
  title: Veto Public API
  description: >
    API publique de la plateforme vétérinaire Veto, destinée aux intégrations
    partenaires.


    ## Authentification


    Toutes les requêtes doivent inclure une clé API via le header `X-API-Key`.

    Les clés sont créées et configurées par l'administrateur de la clinique.


    ```

    X-API-Key: vk_votre_cle_ici

    ```


    ## Niveaux d'accès


    Chaque clé API est configurée avec un niveau d'accès qui détermine la
    visibilité des champs dans les réponses :


    | Niveau | Description |

    |--------|-------------|

    | **BASIC** | Identifiants et informations minimales (noms, espèces,
    statuts) |

    | **STANDARD** | Informations métier courantes (contacts, dates, montants) |

    | **FULL** | Toutes les informations disponibles |


    Le niveau peut être défini globalement ou par ressource. Par exemple, une
    clé peut avoir un accès FULL sur les patients mais BASIC sur les clients.


    ## Rate Limiting


    Chaque clé est soumise à une limite de requêtes par heure (par défaut :
    1000).

    En cas de dépassement, l'API retourne `429 Too Many Requests` avec un header
    `Retry-After`.


    ## Permissions


    La clé API détermine quels endpoints sont accessibles. Les permissions
    disponibles sont :


    | Permission | Accès |

    |------------|-------|

    | `PATIENT_READ` | Lecture des patients |

    | `CLIENT_READ` | Lecture des clients |

    | `APPOINTMENT_READ` | Lecture des rendez-vous, créneaux, types |

    | `APPOINTMENT_CREATE` | Création de rendez-vous |

    | `CONSULTATION_READ` | Lecture des consultations |

    | `INVOICE_READ` | Lecture des factures |

    | `STOCK_READ` | Lecture du stock |
  version: 1.0.0
  contact:
    name: Support API Veto
servers:
  - url: https://api.treats.vet/api/v1
    description: Production
security:
  - apiKeyAuth: []
tags:
  - name: Patients
    description: Animaux enregistrés dans la clinique
  - name: Clients
    description: Propriétaires des animaux
  - name: Rendez-vous
    description: Prise et consultation de rendez-vous
  - name: Consultations
    description: Comptes-rendus de consultations vétérinaires
  - name: Factures
    description: Factures et suivi financier
  - name: Stock
    description: Inventaire et niveaux de stock
paths:
  /stock:
    get:
      tags:
        - Stock
      summary: Lister le stock
      description: >
        Retourne la liste des articles en stock.


        **Champs retournés selon le niveau d'accès :**

        - **BASIC** : `id`, `productName`, `productCategory`, `quantity`,
        `isLowStock`, `isOutOfStock`

        - **STANDARD** : + `productId`, `minThreshold`, `maxThreshold`,
        `lastMovementAt`

        - **FULL** : Tous les champs


        **Permission requise :** `STOCK_READ`
      operationId: listStock
      responses:
        '200':
          description: Liste du stock
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StockItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    StockItem:
      type: object
      description: Article en stock
      properties:
        id:
          type: string
          format: uuid
        productId:
          type: string
          format: uuid
        productName:
          type: string
          example: Amoxicilline 500mg
        productCategory:
          type: string
          example: Antibiotique
        quantity:
          type: integer
          description: Quantité actuelle
        minThreshold:
          type: integer
          description: Seuil minimum d'alerte
        maxThreshold:
          type: integer
          description: Seuil maximum
        isLowStock:
          type: boolean
          description: Stock sous le seuil minimum
        isOutOfStock:
          type: boolean
          description: Rupture de stock
        lastMovementAt:
          type: string
          format: date-time
          description: Date du dernier mouvement de stock
        updatedAt:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Clé API manquante, invalide ou expirée
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Invalid or expired API key
    RateLimited:
      description: Limite de requêtes dépassée
      headers:
        Retry-After:
          schema:
            type: integer
          description: Secondes avant réinitialisation de la limite
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Nombre maximum de requêtes par heure
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Requêtes restantes dans la fenêtre courante
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Rate limit exceeded. Please try again later.
              retryAfter:
                type: integer
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: |
        Clé API fournie par l'administrateur de la clinique.
        Format : `vk_...`

````