openapi: 3.0.3
info:
  title: RCWS API
  version: 1.0.0
servers:
  - url: /api/v1
security:
  - ApiKeyAuth: []
paths:
  /health:
    get:
      security: []
      responses:
        '200':
          description: API disponible
  /domains:
    get:
      responses:
        '200':
          description: Liste des domaines
        '401':
          description: Authentification absente ou invalide
  /domains/{id}:
    get:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Domaine
        '401':
          description: Authentification absente ou invalide
        '422':
          description: Identifiant invalide
  /domains/{id}/users:
    get:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Utilisateurs du domaine
        '401':
          description: Authentification absente ou invalide
        '422':
          description: Identifiant invalide
  /bootstrap:
    get:
      responses:
        '200':
          description: Domaines et profils nécessaires aux écrans utilisateurs
        '401':
          description: Authentification absente ou invalide
  /users:
    get:
      responses:
        '200':
          description: Liste des utilisateurs
        '401':
          description: Authentification absente ou invalide
    post:
      responses:
        '201':
          description: Utilisateur créé
        '401':
          description: Authentification absente ou invalide
        '422':
          description: Payload invalide
  /users/new:
    get:
      responses:
        '200':
          description: Modèle utilisateur vide compatible avec le client legacy
        '401':
          description: Authentification absente ou invalide
  /users/{id}:
    get:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Utilisateur
        '401':
          description: Authentification absente ou invalide
        '404':
          description: Utilisateur absent
        '422':
          description: Identifiant invalide
    patch:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Utilisateur modifié
        '401':
          description: Authentification absente ou invalide
        '422':
          description: Payload invalide
    delete:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Utilisateur supprimé ou retiré du domaine demandé
        '401':
          description: Authentification absente ou invalide
        '422':
          description: Payload invalide
  /domains/{id}/users/{userId}/roles:
    put:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
        - name: userId
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Rôles utilisateur remplacés pour le domaine
        '401':
          description: Authentification absente ou invalide
        '422':
          description: Payload invalide
  /auth/login:
    post:
      security: []
      responses:
        '200':
          description: Authentification legacy testLog
        '401':
          description: Identifiants invalides
        '422':
          description: Payload invalide
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
    BearerAuth:
      type: http
      scheme: bearer
