openapi: 3.0.0
info:
  title: Api
  description: This is an awesome app!
  version: 1.0.0
paths:
  /api/token:
    post:
      tags:
        - Authentification
      summary: Login user
      requestBody:
        content:
          application/json:
            schema:
              required:
                - username
                - password
                - context
              properties:
                username:
                  type: string
                password:
                  type: string
                context:
                  type: string
                  enum:
                    - PORTAIL_EU
                    - PORTAIL_ETT
              type: object
      responses:
        '200':
          description: Successful login
          content:
            application/json:
              schema:
                properties:
                  token:
                    type: string
                type: object
        '401':
          description: Invalid credentials

  /api/v1/amendment:
    get:
      tags:
        - Avenants
      summary: 'Liste des avenants '
      operationId: get_Avenants
      parameters:
        - name: status
          in: query
          description: Statut
          schema:
            type: number
            enum:
              - 0
              - 1
              - 2
              - 3
              - 4
              - 5
              - 10
              - 11
            nullable: true
        - name: createdFrom
          in: query
          description: Créé après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: updatedFrom
          in: query
          description: Modifiée après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: startingFrom
          in: query
          description: Démarrant après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: limit
          in: query
          description: Nombre de résultats maximum
          schema:
            type: number
            default: 10
            maximum: 100
        - name: page
          in: query
          description: Page à récupérer
          schema:
            type: number
            default: 1
      responses:
        '200':
          description: Liste des avenants
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/AmendmentDTO'
                  limit:
                    description: Nombre de résultats par page
                    type: number
                  total:
                    description: Nombre de résultats total
                    type: number
                  page:
                    description: Page courante
                    type: number
                type: object
      security:
        - bearerAuth: []
    post:
      tags:
        - Avenants
      summary: Ajouter un avenant
      operationId: post_Création avenant
      requestBody:
        description: Avenant à créer
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AmendmentDTO'
      responses:
        '200':
          description: Demande modifiée ou renouvelée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkerRequestDetailsDTO'
      security:
        - bearerAuth: []
  /api/v1/amendment/{id}:
    put:
      tags:
        - Avenants
      summary: Modifier un avenant
      operationId: put_Modification Avenant
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: L'avenant à modifier
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AmendmentDTO'
      responses:
        '200':
          description: Avenant modifié
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AmendmentDTO'
      security:
        - bearerAuth: []
  /api/v1/amendment/{id}/status:
    patch:
      tags:
        - Avenants
      summary: Modifier le statut d'un avenant
      operationId: patch_Envoi Avenant
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Nouveau Statut
        content:
          application/json:
            schema:
              properties:
                status:
                  type: string
              type: object
      responses:
        '200':
          description: Avenant envoyé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AmendmentDTO'
      security:
        - bearerAuth: []
  /api/v1/application:
    get:
      tags:
        - Candidatures
      summary: Liste des candidatures (pour une demande donnée ou répondant à certains critères)
      operationId: get_Candidatures par demande
      parameters:
        - name: workerRequestId
          in: query
          required: false
          schema:
            type: string
        - name: createdFrom
          in: query
          required: false
          schema:
            type: string
        - name: createdTo
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Liste des candidats
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApplicationDTO'
                type: object
      security:
        - bearerAuth: []
  /api/v1/application/{id}:
    get:
      tags:
        - Candidatures
      summary: Détail d'une candidature
      operationId: get_Candidature
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Liste des candidats
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApplicationDTO'
                type: object
      security:
        - bearerAuth: []
    put:
      tags:
        - Candidatures
      summary: Modifier une candidature
      operationId: put_Modifier candidature
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: La candidature à modifier
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationDTO'
      responses:
        '200':
          description: La candidature modifiée
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApplicationDTO'
                type: object
      security:
        - bearerAuth: []
  /api/v1/workerRequest/{id}/application/:
    post:
      tags:
        - Candidatures
      summary: Proposer une candidature pour une demande
      operationId: post_Ajouter candidature
      parameters:
        - name: id
          in: path
          description: Identifiant de la demande sur laquelle la candidature est proposée
          required: true
          schema:
            type: string
      requestBody:
        description: La candidature proposée
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationDTO'
      responses:
        '200':
          description: La proposition de candidat ajoutée
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApplicationDTO'
                type: object
      security:
        - bearerAuth: []
  /api/v1/application/{id}/status:
    get:
      tags:
        - Candidatures
      summary: Consulter le statut d'une candidature (la disponibilité d'un candidat)
      operationId: get_Dispo candidat
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Disponibilité
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApplicationStatusDTO'
                type: object
      security:
        - bearerAuth: []
    patch:
      tags:
        - Candidatures
      summary: Modifier le statut d'une candidature
      operationId: patch_Envoi Candidature
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Nouveau Statut
        content:
          application/json:
            schema:
              properties:
                status:
                  type: string
              type: object
      responses:
        '200':
          description: Candidature approuvée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationDTO'
      security:
        - bearerAuth: []
  /external-api/v1/login:
    post:
      tags:
        - Authentification
      summary: Se connecter à l'api externe
      operationId: post_Login
      requestBody:
        description: Identifiants
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginDTO'
      responses:
        '200':
          description: Token
          content:
            application/json:
              schema:
                properties:
                  token:
                    type: string
                type: object
        '401':
          description: Unauthorized
  /api/v1/mission:
    get:
      tags:
        - Missions
      summary: Liste des missions
      operationId: get_Missions
      parameters:
        - name: X-AUTH-TOKEN
          in: header
          description: Auth token
          required: true
          schema:
            type: string
        - name: X-CONSUMER-ID
          in: header
          description: CLIENT ID
          required: true
          schema:
            type: string
        - name: createdFrom
          in: query
          description: Créé depuis
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: updatedFrom
          in: query
          description: Modifiée après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: startingFrom
          in: query
          description: Démarrant après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: limit
          in: query
          description: Nombre de résultats maximum
          schema:
            type: number
            default: 10
            maximum: 100
        - name: page
          in: query
          description: Page à récupérer
          schema:
            type: number
            default: 1
      responses:
        '200':
          description: Liste des missions
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/MissionDTO'
                  limit:
                    description: Nombre de résultats par page
                    type: number
                  total:
                    description: Nombre de résultats total
                    type: number
                  page:
                    description: Page courante
                    type: number
                type: object
      security:
        - bearerAuth: []
    post:
      tags:
        - Missions
      summary: Ajouter une mission
      operationId: post_MissionAdd
      requestBody:
        description: La mission à ajouter
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MissionDetailsDTO'
      responses:
        '200':
          description: Mission ajoutée
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/MissionDetailsDTO'
                type: object
  /api/v1/mission/{id}:
    get:
      tags:
        - Missions
      summary: Détail mission
      operationId: get_MissionDetails
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Détail mission
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/MissionDetailsDTO'
                type: object
    put:
      tags:
        - Missions
      summary: Modifier une mission
      operationId: put_MissionUpdate
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: La mission à modifier
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MissionDetailsDTO'
      responses:
        '200':
          description: Mission modifiée
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/MissionDetailsDTO'
                type: object
  /api/vi/worker-request:
    get:
      tags:
        - Demandes
      summary: Liste des demandes
      operationId: get_Demande
      parameters:
        - name: status
          in: query
          description: Statut
          schema:
            type: number
            enum:
              - 0
              - 1
              - 2
              - 3
              - 4
              - 5
              - 10
              - 11
            nullable: true
        - name: createdFrom
          in: query
          description: Créé après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: updatedFrom
          in: query
          description: Modifiée après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: startingFrom
          in: query
          description: Démarrant après le
          schema:
            type: string
            format: date
            pattern: '[0-9]{2}/[0-9]{2}/[0-9]{4}'
            example: 31/12/2022
        - name: limit
          in: query
          description: Nombre de résultats maximum
          schema:
            type: number
            default: 10
            maximum: 100
        - name: page
          in: query
          description: Page à récupérer
          schema:
            type: number
            default: 1
      responses:
        '200':
          description: Liste des demandes
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkerRequestDTO'
                  limit:
                    description: Nombre de résultats par page
                    type: number
                  total:
                    description: Nombre de résultats total
                    type: number
                  page:
                    description: Page courante
                    type: number
                type: object
      security:
        - bearerAuth: []
    post:
      tags:
        - Demandes
      summary: Créer une demande
      operationId: post_Création Demande
      requestBody:
        description: La demande à créer
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkerRequestDetailsDTO'
      responses:
        '200':
          description: Demande
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/WorkerRequestDetailsDTO'
                type: object
      security:
        - bearerAuth: []
  /api/vi/worker-request/{id}:
    get:
      tags:
        - Demandes
      summary: Détails d'une demande
      operationId: get_Details demande
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Liste des demandes
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/WorkerRequestDetailsDTO'
                type: object
      security:
        - bearerAuth: []
    put:
      tags:
        - Demandes
      summary: Modifier une demande
      operationId: put_Modification Demande
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: La demande à modifier
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkerRequestDetailsDTO'
      responses:
        '200':
          description: Demande
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/WorkerRequestDetailsDTO'
                type: object
      security:
        - bearerAuth: []
  /api/v1/worker-request/{id}/status:
    patch:
      tags:
        - Demandes
      summary: Modifier le statut d'une demande (approuver, envoyer, fermer, annuler, refuser)
      operationId: patch_Modifier statut mission
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Nouveau Statut
        content:
          application/json:
            schema:
              properties:
                status:
                  type: string
              type: object
      responses:
        '200':
          description: Demande modifiée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkerRequestDetailsDTO'
      security:
        - bearerAuth: []
components:
  schemas:
    AmendmentDTO:
      required:
        - amendmentType
        - originalSWorkerRequestId
        - attachments
        - hourlyRate
        - supervisor
        - prerequisites
        - applications
        - id
        - date
        - number
        - site
        - qualification
        - shiftWorkTeam
        - quantity
        - startDate
        - endDate
        - reason
        - duration
        - status
        - answer
        - signed
      properties:
        amendmentType:
          description: Type d'avenant
          type: string
          example: Renouvellement / Modification
        originalSWorkerRequestId:
          description: Id demande
          type: integer
        attachments:
          type: array
          items: {}
        hourlyRate:
          $ref: '#/components/schemas/HourlyRateDTO'
        supervisor:
          type: string
        prerequisites:
          type: array
          items: {}
        applications:
          type: array
          items: {}
        id:
          type: integer
        date:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
          nullable: true
        number:
          type: string
        analyticCode:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/AnalyticCodeDTO'
        subAnalyticCode:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/AnalyticCodeDTO'
        site:
          type: string
        qualification:
          type: string
        shiftWorkTeam:
          type: string
        quantity:
          type: integer
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        reason:
          $ref: '#/components/schemas/ReasonDTO'
        duration:
          type: integer
        status:
          type: string
        answer:
          type: string
        signed:
          type: boolean
      type: object
    WorkerRequestDetailsDTO:
      required:
        - hourlyRate
        - prerequisites
        - applications
        - id
        - date
        - number
        - site
        - qualification
        - shiftWorkTeam
        - quantity
        - startDate
        - endDate
        - reason
        - duration
        - status
        - answer
        - signed
      properties:
        attachments:
          description: Pièces jointes
          type: array
          items: {}
          default: []
        hourlyRate:
          $ref: '#/components/schemas/HourlyRateDTO'
        supervisor:
          description: Responsable
          type: string
        prerequisites:
          description: Prérequis
          type: array
          items: {}
        applications:
          description: Candidats
          type: array
          items: {}
        id:
          type: integer
        date:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
          nullable: true
        number:
          type: string
        analyticCode:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/AnalyticCodeDTO'
        subAnalyticCode:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/AnalyticCodeDTO'
        site:
          type: string
        qualification:
          type: string
        shiftWorkTeam:
          type: string
        quantity:
          type: integer
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        reason:
          $ref: '#/components/schemas/ReasonDTO'
        duration:
          type: integer
        status:
          type: string
        answer:
          type: string
        signed:
          type: boolean
      type: object
    ApplicationDTO:
      required:
        - workerRequestId
      properties:
        origin:
          description: Origine
          type: string
          example: F (Fournisseur)
        workerRequestId:
          description: Demande
          type: string
        workerId:
          description: Identifiant de l'intérimaire
          type : string
        status:
          description: Statut
          type: string
        type:
          description: Type
          type: string
          example: Gestion
        hourlyRate:
          description: Taux Horaire
          type: number
          format: float
          nullable: true
        prerequisites:
          description: Prérequis
          type: string
          nullable: true
      type: object
    ApplicationStatusDTO:
      required:
        - applicationId
        - status
      properties:
        applicationId:
          type: string
        status:
          type: string
      type: object
    ContractDTO:
      required:
        - contractNumber
        - temporaryWorker
      properties:
        contractNumber:
          description: Numéro du contrat à signer.
          type: string
        avenantNumber:
          description: Numéro de l'avenant.
          type: integer
          nullable: true
        temporaryWorker:
          description: Nom complet de l'intérimaire.
          type: string
        job:
          description: Poste occupé par l'intérimaire.
          type: string
          nullable: true
        agency:
          description: Nom de l'agence.
          type: string
          nullable: true
        site:
          description: Nom du site.
          type: string
          nullable: true
        analyticCode:
          description: Code analytique.
          type: string
          nullable: true
        startDate:
          description: Date de début du contrat.
          type: string
          format: date-time
          nullable: true
        endDate:
          description: Date de fin du contrat.
          type: string
          format: date-time
          nullable: true
        coefficient:
          description: Coefficient du taux payé.
          type: string
          nullable: true
        reason:
          description: Motif.
          type: string
          nullable: true
        controlStatus:
          description: Statut contrôle.
          type: string
          nullable: true
        status:
          description: Statut du contrat.
          type: string
          nullable: true
        priceCompliance:
          description: Conformité conditions tarifaires.
          type: boolean
          nullable: true
        commandeCompliance:
          description: Conformité commande.
          type: boolean
          nullable: true
        referenceCompliance:
          description: Conformité référentiel.
          type: boolean
          nullable: true
      type: object
    ContractDetailDTO:
      required:
        - rates
        - traceability
        - contractNumber
        - temporaryWorker
      properties:
        anomalies:
          description: Anomalies de conformité détectées
          type: string
          nullable: true
        contractType:
          description: Type de contrat
          type: string
          nullable: true
        durationType:
          description: Type de durée
          type: string
          nullable: true
        client:
          description: Client
          type: string
          nullable: true
        staff:
          description: Personnel
          type: string
          nullable: true
        replacedEmployee:
          description: Salarié remplacé
          type: string
          nullable: true
        justification:
          description: Justification
          type: string
          nullable: true
        initialContract:
          description: Contrat initial
          type: string
          nullable: true
        qualification:
          description: Qualification
          type: string
          nullable: true
        schedule:
          description: Horaires
          type: string
          nullable: true
        hourlyBasis:
          description: Base horaire
          type: string
          nullable: true
        characteristic:
          description: Caractéristiques
          type: string
          nullable: true
        place:
          description: Lieu
          type: string
          nullable: true
        positionAtRisk:
          description: Poste à risque / Suivi médical
          type: string
          nullable: true
        epi:
          description: E.P.I
          type: string
          nullable: true
        subAnalytics:
          description: Sous-analytique
          type: string
          nullable: true
        team:
          description: Équipe
          type: string
          nullable: true
        manager:
          description: Responsable
          type: string
          nullable: true
        rates:
          type: array
          items:
            $ref: '#/components/schemas/ContractRateDTO'
        traceability:
          type: array
          items:
            $ref: '#/components/schemas/ContractTraceabilityDTO'
        contractNumber:
          type: string
        avenantNumber:
          type: integer
          nullable: true
        temporaryWorker:
          type: string
        job:
          type: string
          nullable: true
        agency:
          type: string
          nullable: true
        site:
          type: string
          nullable: true
        analyticCode:
          type: string
          nullable: true
        startDate:
          type: string
          format: date-time
          nullable: true
        endDate:
          type: string
          format: date-time
          nullable: true
        coefficient:
          type: string
          nullable: true
        reason:
          type: string
          nullable: true
        controlStatus:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        priceCompliance:
          type: boolean
          nullable: true
        commandeCompliance:
          type: boolean
          nullable: true
        referenceCompliance:
          type: boolean
          nullable: true
      type: object
    LoginDTO:
      required:
        - userName
        - password
      properties:
        userName:
          description: Compte
          type: string
        password:
          description: Mot de passe
          type: string
      type: object
    MissionDTO:
      required:
        - missionNumber
        - temporaryWorker
        - site
        - qualification
        - shiftWorkTeam
        - startDate
        - endDate
      properties:
        missionNumber:
          description: Numéro de la mission
          type: string
        temporaryWorker:
          $ref: '#/components/schemas/WorkerDTO'
        renewal:
          description: AvenantTotal / Renouvellement
          type: string
          nullable: true
        site:
          description: Site
          type: string
        qualification:
          description: Qualification
          type: string
        shiftWorkTeam:
          description: Equipe Horaire
          type: string
        analyticCode:
          description: Code analytique
          type: string
          nullable: true
        analytic:
          description: Analytique
          type: string
          nullable: true
        startDate:
          description: Date de début de mission
          type: string
          format: date-time
        endDate:
          description: Date de fin de mission
          type: string
          format: date-time
        trialEndDate:
          description: Date de fin d’essai
          type: string
          format: date-time
          nullable: true
        desiredEndDate:
          description: Date de fin souhaitée
          type: string
          format: date-time
          nullable: true
        flexibilityMinDate:
          description: souplesse-
          type: string
          format: date-time
          nullable: true
        flexibilityMaxDate:
          description: souplesse+
          type: string
          format: date-time
          nullable: true
        expiration:
          description: Expiration
          type: string
          nullable: true
        reason:
          description: Motif
          type: string
          nullable: true
        justification:
          description: Justification
          type: string
          nullable: true
        exitDate:
          description: Date sortie
          type: string
          format: date-time
          nullable: true
        weekly:
          description: Hebdo
          type: number
          format: float
          nullable: true
        isHazardous:
          description: Poste à risque
          type: boolean
          nullable: true
        individualMonitoring:
          description: Suivi Individuel Renforcé
          type: boolean
          nullable: true
        amendmentRequest:
          description: Demande d'avenant liée à la mission
          type: boolean
          nullable: true
      type: object
    MissionDetailsDTO:
      required:
        - missionType
        - supplier
        - staff
        - trialPeriod
        - qualification
        - workHours
        - remunerations
        - amendments
        - timeSheets
        - traceability
        - missionNumber
        - temporaryWorker
        - site
        - shiftWorkTeam
        - startDate
        - endDate
      properties:
        orderNumber:
          description: Numéro de la commande
          type: string
          nullable: true
        purchaseReference:
          description: Référence achats client
          type: string
          nullable: true
        missionType:
          description: Type de missions
          type: string
        durationType:
          description: Type de durée
          type: string
          nullable: true
        supplier:
          description: Fournisseur
          type: string
        staff:
          description: Personnel
          type: string
        replacedEmployeeFamilyName:
          description: Nom Salarié remplacé
          type: string
          nullable: true
        replacedEmployeeName:
          description: Prénom Salarié remplacé
          type: string
          nullable: true
        replacedEmployeeQualification:
          description: Qualification du salarié remplacé
          type: string
          nullable: true
        trialPeriod:
          description: Période d'essai en jours
          type: integer
        uo:
          description: UO
          type: string
          nullable: true
        qualification:
          description: Qualification
          type: string
        paidRate:
          description: Taux payé
          type: string
          nullable: true
        coefficient:
          description: Coefficient
          type: string
          nullable: true
        chargedRate:
          description: Taux facturé
          type: string
          nullable: true
        workHours:
          description: Équipe horaire
          type: string
        schedules:
          description: Horaires
          type: string
          nullable: true
        hiringHour:
          description: Heure d'embauche
          type: string
          nullable: true
        siteManager:
          description: Responsable sur site
          type: string
          nullable: true
        jobInformation:
          description: Informations sur le poste
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/MissionJobInformationDTO'
        remunerations:
          description: Rémunération
          type: array
          items:
            $ref: '#/components/schemas/MissionRemunerationDTO'
        amendments:
          description: Avenants
          type: array
          items:
            $ref: '#/components/schemas/MissionAmendmentDTO'
        timeSheets:
          description: Relevés d'heures
          type: array
          items:
            $ref: '#/components/schemas/MissionTimeSheetsDTO'
        traceability:
          description: Traçabilité
          type: array
          items:
            $ref: '#/components/schemas/MissionTraceabilityDTO'
        oiOetp:
          type: string
          nullable: true
        nrMr:
          type: string
          nullable: true
        missionNumber:
          type: string
        temporaryWorker:
          $ref: '#/components/schemas/WorkerDTO'
        renewal:
          type: string
          nullable: true
        site:
          type: string
        shiftWorkTeam:
          type: string
        analyticCode:
          type: string
          nullable: true
        analytic:
          type: string
          nullable: true
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        trialEndDate:
          type: string
          format: date-time
          nullable: true
        desiredEndDate:
          type: string
          format: date-time
          nullable: true
        flexibilityMinDate:
          type: string
          format: date-time
          nullable: true
        flexibilityMaxDate:
          type: string
          format: date-time
          nullable: true
        expiration:
          type: string
          nullable: true
        reason:
          type: string
          nullable: true
        justification:
          type: string
          nullable: true
        exitDate:
          type: string
          format: date-time
          nullable: true
        weekly:
          type: number
          format: float
          nullable: true
        isHazardous:
          type: boolean
          nullable: true
        individualMonitoring:
          type: boolean
          nullable: true
        amendmentRequest:
          type: boolean
          nullable: true
      type: object
    WorkerRequestDTO:
      required:
        - id
        - date
        - number
        - site
        - qualification
        - shiftWorkTeam
        - startDate
        - endDate
        - reason
        - duration
        - status
        - answer
        - signed
      properties:
        id:
          description: Id
          type: integer
        date:
          description: Date de création
          type: string
          format: date-time
        updateDate:
          description: Date de mise à jour
          type: string
          format: date-time
          nullable: true
        number:
          description: Numéro
          type: string
        analyticCode:
          description: Code Analytique
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/AnalyticCodeDTO'
        subAnalyticCode:
          description: Code Analytique secondaire
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/AnalyticCodeDTO'
        site:
          description: Site
          type: string
        qualification:
          description: Qualification
          type: string
        shiftWorkTeam:
          description: Equipe Horaire
          type: string
        quantity:
          description: Quantité
          type: integer
          default: 1
        startDate:
          description: Début
          type: string
          format: date-time
        endDate:
          description: Fin
          type: string
          format: date-time
        reason:
          $ref: '#/components/schemas/ReasonDTO'
        duration:
          description: Durée
          type: integer
        status:
          description: Statut
          type: string
        answer:
          description: Réponse
          type: string
        signed:
          description: Signé
          type: boolean
      type: object
    HourlyRateDTO:
      properties:
        NRxMRId:
          description: Nom NRxMR
          type: string
        NRxMRLabel:
          description: Id NRxMR
          type: number
        rate:
          description: Taux horaire
          type: number
      type: object
    AnalyticCodeDTO:
      required:
        - customerLabel
        - label
        - code
      properties:
        customerLabel:
          description: Nom Client
          type: string
        label:
          description: Nom
          type: string
        code:
          description: Code
          type: string
      type: object
    ReasonDTO:
      required:
        - code
        - label
      properties:
        code:
          description: Code
          type: string
        label:
          description: Label
          type: string
      type: object
    WorkerDTO:
      required:
        - firstName
        - lastName
        - type
        - site
      properties:
        firstName:
          description: Prénom
          type: string
        lastName:
          description: Nom de famille
          type: string
        type:
          description: Type
          type: string
          example: Intérimaire
        site:
          description: Site
          type: string
        registrationNumber:
          description: Matricule
          type: string
          nullable: true
      type: object
    ContractRateDTO:
      properties:
        code:
          description: Code
          type: string
          nullable: true
        rubric:
          description: Rubrique
          type: string
          nullable: true
        paidRate:
          description: Taux payé
          type: number
          format: float
          nullable: true
        coefficient:
          description: Coefficient
          type: number
          format: float
          nullable: true
        chargedRate:
          description: Taux facturé
          type: number
          format: float
          nullable: true
      type: object
    ContractTraceabilityDTO:
      properties:
        date:
          description: Date
          type: string
          format: date-time
          nullable: true
        time:
          description: Time
          type: string
          format: date-time
          nullable: true
        details:
          description: Détails
          type: string
          format: date-time
          nullable: true
      type: object
    MissionJobInformationDTO:
      properties:
        firstSuspensionStartDate:
          description: Date début 1ère suspension
          type: string
          format: date-time
          nullable: true
        firstSuspensionEndDate:
          description: Date fin 1ère suspension
          type: string
          format: date-time
          nullable: true
        secondSuspensionStartDate:
          description: Date début 2ème suspension
          type: string
          format: date-time
          nullable: true
        secondSuspensionEndDate:
          description: Date fin 2ème suspension
          type: string
          format: date-time
          nullable: true
        location:
          description: Lieu de la mission.
          type: string
          nullable: true
        customerComments:
          description: Caractéristiques du poste
          type: string
          nullable: true
        personalProtectiveEquipment:
          description: Équipements de protection individuelle
          type: string
          nullable: true
        hardshipFactors:
          description: Facteurs de pénibilité
          type: string
          nullable: true
      type: object
    MissionRemunerationDTO:
      properties:
        contractType:
          description: Type contrat
          type: string
          nullable: true
        applicationDate:
          description: Date d'application
          type: string
          nullable: true
        code:
          description: Code
          type: string
          nullable: true
        label:
          description: Libellé
          type: string
          nullable: true
        rate:
          description: Taux
          type: number
          format: float
          nullable: true
        paidRate:
          description: Taux payé
          type: number
          format: float
          nullable: true
        coefficient:
          description: Coefficient
          type: number
          format: float
          nullable: true
        siteManager:
          description: Taux facturé
          type: number
          format: float
          nullable: true
      type: object
    MissionAmendmentDTO:
      required:
        - modifications
      properties:
        amendmentType:
          description: Type
          type: string
          nullable: true
        modifications:
          description: Modification
          type: array
          items:
            type: string
        job:
          description: Poste (Qualification/Equipe)
          type: string
          nullable: true
        analytic:
          description: Analytique
          type: string
          nullable: true
        paidRate:
          description: Taux Payé
          type: string
          nullable: true
        coefficient:
          description: Coefficient
          type: number
          format: float
          nullable: true
      type: object
    MissionTimeSheetsDTO:
      properties:
        month:
          description: Mois
          type: string
          nullable: true
        week:
          description: Semaine
          type: string
          nullable: true
        workedHours:
          description: Heures travaillées
          type: number
          format: float
          nullable: true
        overtimeHours:
          description: Heures supplément
          type: number
          format: float
          nullable: true
        daysWorked:
          description: Jours travaillés
          type: integer
          nullable: true
        holidaysWorked:
          description: Heures fériés travaillées
          type: number
          format: float
          nullable: true
      type: object
    MissionTraceabilityDTO:
      properties:
        type:
          description: Type
          type: string
          nullable: true
        event:
          description: Évènement
          type: string
          nullable: true
        date:
          description: Date
          type: string
          format: date-time
          nullable: true
        amendmentType:
          description: Utilisateur
          type: string
          nullable: true
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      bearerFormat: JWT
      scheme: bearer
