> ## 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 rendez-vous

> Retourne les détails d'un rendez-vous par son identifiant.

**Champs retournés selon le niveau d'accès :**
- **BASIC** : `id`, `patientId`, `vetId`, `scheduledAt`, `status`
- **STANDARD** : + `clientId`, `appointmentTypeId`, `endTime`, `reason`, `isUrgent`, `createdAt`
- **FULL** : Tous les champs

**Permission requise :** `APPOINTMENT_READ`




## OpenAPI

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


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

        - **BASIC** : `id`, `patientId`, `vetId`, `scheduledAt`, `status`

        - **STANDARD** : + `clientId`, `appointmentTypeId`, `endTime`, `reason`,
        `isUrgent`, `createdAt`

        - **FULL** : Tous les champs


        **Permission requise :** `APPOINTMENT_READ`
      operationId: getAppointment
      parameters:
        - $ref: '#/components/parameters/ResourceId'
      responses:
        '200':
          description: Détails du rendez-vous
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Appointment'
        '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:
    Appointment:
      type: object
      description: Rendez-vous à la clinique
      properties:
        id:
          type: string
          format: uuid
        clientId:
          type: string
          format: uuid
          description: Propriétaire
        patientId:
          type: string
          format: uuid
          description: Animal concerné
        appointmentTypeId:
          type: string
          format: uuid
          description: Type de rendez-vous
        vetId:
          type: string
          format: uuid
          description: Vétérinaire assigné
        scheduledAt:
          type: string
          format: date-time
          description: Date et heure prévues
        endTime:
          type: string
          format: date-time
          description: Heure de fin prévue
        reason:
          type: string
          description: Motif du rendez-vous
        isUrgent:
          type: boolean
        status:
          type: string
          description: Statut actuel du rendez-vous
        displayStatus:
          type: string
          description: Statut affiché (libellé)
        createdAt:
          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_...`

````