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

# Ajouter à la collection

> Adds a movie or TV show to your collection. **Requires a secret key** (`sk_...`).

## Utilisation

Ajoute un média à la collection de l’utilisateur authentifié.

L’authentification est requise via `x-api-key` ou `Authorization: Bearer`.

## Exemple

```bash theme={null}
curl -X POST -H "x-api-key: $DEJAVU_API_KEY" -H "Content-Type: application/json" "https://dejavu.plus/api/v1/collection"
```

## Paramètres et réponse

Les paramètres, schémas et réponses sont définis par la spécification OpenAPI affichée sur cette page. Envoyez un corps JSON conforme au schéma indiqué.

## Erreurs

Consultez **Responses** pour les codes et formats d’erreur propres à l’opération.

## Notes

Pour les épisodes, utilisez le contexte de série, saison et épisode prévu par le schéma. N’exposez jamais une clé API `sk_` dans du code client ou un dépôt public.


## OpenAPI

````yaml POST /collection
openapi: 3.1.0
info:
  title: dejaVu API V1
  description: >-
    API publique dejaVu V1 pour intégrer la collection, l’historique, les
    favoris, les notes, la watchlist, le scrobble, les listes, les chaînes, les
    connecteurs et les fonctions d’intégration.
  version: 1.0.0
servers:
  - url: https://dejavu.plus/api/v1
    description: Production
security:
  - ApiKeyHeader: []
  - BearerAuth: []
tags:
  - name: Collection
    description: Gérez votre collection personnelle de films et séries vus ou possédés.
  - name: History
    description: Consultez et gérez votre historique de visionnage.
  - name: Favorites
    description: Ajoutez et retirez des films et séries de vos favoris.
  - name: Ratings
    description: Notez et rédigez des avis sur vos films, séries, saisons et épisodes.
  - name: Watchlist
    description: Gérez votre liste de contenus à regarder.
  - name: Scrobble
    description: Suivez la progression de lecture en temps réel.
  - name: Up Next
    description: Obtenez les prochains épisodes à regarder pour les séries que vous suivez.
  - name: Lists
    description: Créez et gérez des listes personnalisées de films et séries.
  - name: Dashboard
    description: Expose la configuration du tableau de bord et le contenu des widgets.
  - name: User
    description: Informations de compte et statistiques.
  - name: Auth
    description: Authentification des appareils et gestion des jetons.
  - name: Channels
    description: Chaînes et univers accessibles à l’utilisateur.
  - name: Connectors
    description: Connecteurs utilisés par l’extension navigateur.
  - name: Kodi
    description: Import de bibliothèques Kodi.
  - name: Media
    description: Résolution et statut de médias.
paths:
  /collection:
    post:
      tags:
        - Collection
      summary: Ajouter à la collection
      description: >-
        Ajoute un film ou une série à votre collection. **Requiert une clé
        secrète** (`sk_...`).
      operationId: addToCollection
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionInput'
            example:
              type: movie
              id: 550
      responses:
        '200':
          description: Élément ajouté à la collection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionItem'
        '400':
          $ref: '#/components/responses/UnprocessableEntity'
          description: 'Requête invalide : paramètre ou corps de requête incorrect.'
        '401':
          $ref: '#/components/responses/Unauthorized'
          description: Authentification absente, invalide ou clé API non autorisée.
        '403':
          $ref: '#/components/responses/Forbidden'
          description: Clé API valide mais permissions insuffisantes pour cette opération.
      security:
        - ApiKeyHeader: []
        - BearerAuth: []
components:
  schemas:
    CollectionInput:
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - movie
            - tv
        id:
          type: integer
          description: ID TMDB
        format:
          type: string
          description: 'Format de stockage (ex: Blu-ray, DVD, digital)'
        notes:
          type: string
    CollectionItem:
      allOf:
        - $ref: '#/components/schemas/MediaItem'
        - type: object
          properties:
            format:
              type: string
              description: Format de stockage (Blu-ray, DVD, etc.)
              nullable: true
            notes:
              type: string
              nullable: true
            addedAt:
              type: string
              format: date-time
    MediaItem:
      type: object
      properties:
        id:
          type: integer
          description: ID TMDB
        type:
          type: string
          enum:
            - movie
            - tv
        title:
          type: string
        posterPath:
          type: string
          nullable: true
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Code d'erreur machine-readable
        message:
          type: string
          description: Description lisible de l'erreur
  responses:
    UnprocessableEntity:
      description: Données de requête invalides.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: VALIDATION_ERROR
            message: The field 'rating' must be between 1 and 10.
    Unauthorized:
      description: >-
        Authentification requise. Utilisez le header x-api-key ou Authorization:
        Bearer <key>.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: UNAUTHORIZED
            message: API key is missing or invalid.
    Forbidden:
      description: Accès refusé. Cette opération nécessite une **clé secrète** (`sk_...`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: FORBIDDEN
            message: A secret key (sk_...) is required for write operations.
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: Clé API dejaVu. pk_* = lecture seule ; sk_* = lecture et écriture.
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Clé API dejaVu envoyée dans Authorization: Bearer <key>.'

````