> ## 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.

# Détails d'un client

> Retourne les détails d'un client par son identifiant.

**Permission requise :** `CLIENT_READ`




## OpenAPI

````yaml openapi.yaml get /clients/{id}
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:
  /clients/{id}:
    get:
      tags:
        - Clients
      summary: Détails d'un client
      description: |
        Retourne les détails d'un client par son identifiant.

        **Permission requise :** `CLIENT_READ`
      operationId: getClient
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Détails du client
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    ResourceId:
      name: id
      in: path
      required: true
      description: Identifiant unique (UUID)
      schema:
        type: string
        format: uuid
  schemas:
    Client:
      type: object
      description: Propriétaire d'un ou plusieurs animaux
      properties:
        id:
          type: string
          format: uuid
          description: Identifiant unique
        firstName:
          type: string
          example: Jean
        lastName:
          type: string
          example: Dupont
        phone:
          type: string
          example: '+33612345678'
        email:
          type: string
          format: email
          example: jean.dupont@email.fr
        address:
          type: string
        createdAt:
          type: string
          format: date-time
        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
    NotFound:
      description: Ressource introuvable
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Resource not found
    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_...`

````