> ## Documentation Index
> Fetch the complete documentation index at: https://developers.pontua.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Cria e aplica uma nova exceção de turno



## OpenAPI

````yaml https://api.pre.pontua.tech/api/public/doc-json post /turnos-excecoes/implementar
openapi: 3.0.0
info:
  title: Pontua Public API
  description: >-
    API oficial da Pontua para integrações de clientes externos. Autentique com
    o token gerado no dashboard em **Configurações → API**. Envie o token no
    header `Authorization: Bearer <SEU_TOKEN>`.
  version: '1.0'
  contact: {}
servers: []
security: []
tags: []
paths:
  /turnos-excecoes/implementar:
    post:
      tags:
        - Turno Exceção
      summary: Cria e aplica uma nova exceção de turno
      operationId: ExceptionsController_implement
      parameters: []
      requestBody:
        required: true
        description: Dados para criação da exceção de turno
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImplementExceptionDto'
            examples:
              Exceção vinculada a um turno:
                value:
                  name: Viagem da firma
                  startDate: '2023-01-01T00:00:00.000Z'
                  endDate: '2023-01-31T00:00:00.000Z'
                  shiftId: 123abc
                  collaboratorIds:
                    - 123abc
                    - 456def
              Exceção que cria e se vincula a um turno fixo:
                value:
                  name: Viagem da firma
                  startDate: '2023-01-01T00:00:00.000Z'
                  endDate: '2023-01-31T00:00:00.000Z'
                  shiftType: turnoFixo
                  collaboratorIds:
                    - 123abc
                    - 456def
                  createShift: true
                  shiftName: Turno Fixo - seg a sex - 08:00 às 18:00
                  values:
                    dias:
                      - diaReferencia: SEGUNDA
                        tipoDia: NORMAL
                        entrada: '08:00'
                        saida: '18:00'
                        intervalo:
                          isFlexivel: false
                          horarios:
                            - entrada: '12:00'
                              saida: '13:00'
                      - diaReferencia: TERCA
                        tipoDia: NORMAL
                        entrada: '08:00'
                        saida: '18:00'
                        intervalo:
                          isFlexivel: false
                          horarios:
                            - entrada: '12:00'
                              saida: '13:00'
                      - diaReferencia: QUARTA
                        tipoDia: NORMAL
                        entrada: '08:00'
                        saida: '18:00'
                        intervalo:
                          isFlexivel: false
                          horarios:
                            - entrada: '12:00'
                              saida: '13:00'
                      - diaReferencia: QUINTA
                        tipoDia: NORMAL
                        entrada: '08:00'
                        saida: '18:00'
                        intervalo:
                          isFlexivel: false
                          horarios:
                            - entrada: '12:00'
                              saida: '13:00'
                      - diaReferencia: SEXTA
                        tipoDia: NORMAL
                        entrada: '08:00'
                        saida: '18:00'
                        intervalo:
                          isFlexivel: false
                          horarios:
                            - entrada: '12:00'
                              saida: '13:00'
                      - diaReferencia: SABADO
                        tipoDia: DSR
                      - diaReferencia: DOMINGO
                        tipoDia: DSR
              Exceção com configuração de turno flexível:
                value:
                  name: Viagem da firma
                  startDate: '2023-01-01T00:00:00.000Z'
                  endDate: '2023-01-31T00:00:00.000Z'
                  shiftType: turnoFlexivel
                  collaboratorIds:
                    - 123abc
                    - 456def
                  createShift: false
                  values:
                    tipoHorario: DIARIO
                    dias:
                      - diasReferencia:
                          - SEGUNDA
                          - TERCA
                        minutosTotal: 480
                        intervalo:
                          isFlexivel: true
                          horarios:
                            - maximo: '01:00'
                      - diasReferencia:
                          - QUARTA
                        minutosTotal: 120
              Exceção que cria e se vincula a um turno revezamento:
                value:
                  name: Viagem da firma
                  startDate: '2023-01-01T00:00:00.000Z'
                  endDate: '2023-01-31T00:00:00.000Z'
                  shiftType: turnoRevezamento
                  collaboratorIds:
                    - 123abc
                    - 456def
                  createShift: true
                  shiftName: Turno Revezamento - 2 meses, com 3 e 2 dias
                  values:
                    meses:
                      - numeroMes: 1
                        dias:
                          - numeroDia: 1
                            tipoDia: NORMAL
                            entrada: '08:00'
                            saida: '18:00'
                            intervalo:
                              isFlexivel: false
                              horarios:
                                - entrada: '12:00'
                                  saida: '13:00'
                          - numeroDia: 2
                            tipoDia: DSR
                          - numeroDia: 3
                            tipoDia: NORMAL
                            entrada: '08:00'
                            saida: '18:00'
                            intervalo:
                              isFlexivel: true
                              horarios:
                                - maximo: '01:00'
                      - numeroMes: 2
                        dias:
                          - numeroDia: 1
                            tipoDia: NORMAL
                            entrada: '08:00'
                            saida: '18:00'
                            intervalo:
                              isFlexivel: false
                              horarios:
                                - entrada: '12:00'
                                  saida: '13:00'
                          - numeroDia: 2
                            tipoDia: DSR
      responses:
        '201':
          description: Resumo da exceção criada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionShiftDto'
        default:
          description: "\n\t\t\t400 - Bad Request: A solicitação não está no formato correto.\n\t\t\t401 - Unauthorized: A solicitação não foi autorizada. Verifique se o token de acesso é válido.\n\t\t\t403 - Forbidden: Acesso proibido! Requer um nível de permissão mais elevado.\n\t\t\t404 - Not Found: O recurso solicitado não foi encontrado.\n\t\t\t500 - Internal Server Error: Erro de execução no servidor!\n\t\t\t"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
      deprecated: false
      security:
        - bearer: []
components:
  schemas:
    ImplementExceptionDto:
      type: object
      properties:
        name:
          type: string
          description: Nome da exceção
          example: Intercâmbio do José da Silva
        startDate:
          format: date-time
          type: string
          description: Data de início
          example: '2023-01-01T00:00:00.000Z'
        endDate:
          format: date-time
          type: string
          description: Data de término
          example: '2023-01-31T00:00:00.000Z'
        shiftId:
          type: string
          description: Id do turno a ser vinculado à exceção
          example: abc-123
        shiftType:
          type: string
          description: Tipo da exceção, caso não vinculada a um turno
          enum:
            - turnoFixo
            - turnoFlexivel
            - turnoRevezamento
          default: turnoFixo
        values:
          description: Dados de jornada da exceção, caso não vinculada a um turno
          oneOf:
            - $ref: '#/components/schemas/CreateTurnoHorarioFixoDto'
            - $ref: '#/components/schemas/CreateTurnoHorarioFlexivelDto'
            - $ref: '#/components/schemas/TurnoHorarioRevezamentoDto'
        createShift:
          type: boolean
          description: "Indica se os dados de jornada da exceção devem ser usados para a criação de um turno, \n\t\t\tque será vinculado a esta exceção. O turno criado poderá futuramente ser vinculado a colaboradores, \n\t\t\tbem como outras exceções"
          example: true
        shiftName:
          type: string
          description: "Caso um turno seja criado, este campo pode ser usado para atribuir um nome a ele. \n\t\t\tSe não especificado, o turno criado terá o mesmo nome da exceção"
          example: Turno para viagem da firma
        collaboratorIds:
          type: string
          description: Ids dos colaboradores que serão vinculados à exceção criada
          example:
            - 123abc
            - 456def
      required:
        - name
        - startDate
        - endDate
    ExceptionShiftDto:
      type: object
      properties:
        exceptionShiftId:
          type: string
          description: ID referente à exceção de turno
          example: 123-abc
        name:
          type: string
          description: Nome da exceção
          example: Intercâmbio do José da Silva
        type:
          type: string
          description: Tipo da exceção ou do turno vinculado a ela
          enum:
            - turnoFixo
            - turnoFlexivel
            - turnoRevezamento
            - turnoCiclo
          default: turnoFixo
        status:
          type: string
          description: Status da exceção
          enum:
            - APROVADO
            - PENDENTE
            - CANCELADO
            - REJEITADO
          default: PENDENTE
        origin:
          type: string
          description: Tipo de usuário de quem criou a exceção
          enum:
            - ADMIN
            - GESTOR
            - USER
          default: ADMIN
        startDate:
          format: date-time
          type: string
          description: Data de início
          example: '2023-01-01T00:00:00.000Z'
        endDate:
          format: date-time
          type: string
          description: Data de término
          example: '2023-02-01T00:00:00.000Z'
        numberCollaborators:
          type: number
          description: Quantidade de colaboradores vinculados à exceção
          example: 1
        createdAt:
          format: date-time
          type: string
          description: Data de criação
          example: '2022-12-01T00:00:00.000Z'
        updatedAt:
          format: date-time
          type: string
          description: Data de atualização
          example: '2023-12-01T00:00:00.000Z'
        shiftId:
          type: string
          description: Id do turno vinculado à exceção
          example: abc-123
        shiftName:
          type: string
          description: Nome do turno vinculado à exceção
          example: Turno para viagem da firma
        values:
          description: Detalhes de horário da exceção ou do turno vinculado a ela
          oneOf:
            - $ref: '#/components/schemas/CreateTurnoHorarioFixoDto'
            - $ref: '#/components/schemas/CreateTurnoHorarioFlexivelDto'
            - $ref: '#/components/schemas/TurnoHorarioRevezamentoDto'
      required:
        - exceptionShiftId
        - name
        - type
        - status
        - origin
        - startDate
        - endDate
        - numberCollaborators
        - createdAt
        - updatedAt
    ErrorDto:
      type: object
      properties:
        service:
          type: string
          description: Rota solicitada
        method:
          type: string
          description: Método http
        message:
          description: Mensagem do erro
          oneOf:
            - type: string
              example: message erro
            - type: array
              items:
                type: string
                example:
                  - erro 1
                  - erro 2
      required:
        - service
        - method
        - message
    CreateTurnoHorarioFixoDto:
      type: object
      properties:
        dias:
          description: Dias da semana para a configuração
          type: array
          items:
            $ref: '#/components/schemas/CreateConfiguracaoDiaFixo'
    CreateTurnoHorarioFlexivelDto:
      type: object
      properties:
        tipoHorario:
          type: string
          description: Tipo de horário flexível
          enum:
            - DIARIO
            - SEMANAL
            - MENSAL
            - LIVRE
        semDiasDefinidos:
          type: boolean
          description: >-
            Não há dias de trabalho definidos (somente para os tipos SEMANAL e
            MENSAL)
          example: false
        viraNoiteGeral:
          type: string
          description: >-
            Valor no formato HH:mm do horário de virada da data da jornada. Este
            valor geral será o padrão, caso não existir no grupo de dias
          example: '01:00'
        dias:
          description: Array de configuração das semanas flexíveis
          type: array
          items:
            $ref: '#/components/schemas/CreateConfiguracaoDiasFlexivel'
      required:
        - tipoHorario
    TurnoHorarioRevezamentoDto:
      type: object
      properties:
        meses:
          description: meses para a configuração
          type: array
          items:
            $ref: '#/components/schemas/MesRevezamento'
    CreateConfiguracaoDiaFixo:
      type: object
      properties:
        diaReferencia:
          type: string
          description: Dia de referência para a configuração
          enum:
            - DOMINGO
            - SEGUNDA
            - TERCA
            - QUARTA
            - QUINTA
            - SEXTA
            - SABADO
          default: SEGUNDA
        tipoDia:
          type: string
          description: Tipo do dia
          enum:
            - NORMAL
            - COMPENSADO
            - DSR
          default: NORMAL
        entrada:
          type: string
          description: Valor no formato HH:mm do horário de entrada no dia
          example: '08:00'
        saida:
          type: string
          description: Valor no formato HH:mm do horário da saída no dia
          example: '18:00'
        intervalo:
          description: Intervalos
          allOf:
            - $ref: '#/components/schemas/CreateIntervaloDto'
      required:
        - diaReferencia
        - tipoDia
    CreateConfiguracaoDiasFlexivel:
      type: object
      properties:
        diasReferencia:
          type: array
          description: Dias de referência para a configuração
          items:
            type: string
            enum:
              - DOMINGO
              - SEGUNDA
              - TERCA
              - QUARTA
              - QUINTA
              - SEXTA
              - SABADO
        minutosTotal:
          type: number
          description: Número de minutos referente ao trabalho total, incluindo intervalo
          example: 480
        viraNoite:
          type: string
          description: >-
            Valor no formato HH:mm do horário de virada da data da jornada. Este
            valor sobrescreve o geral
          example: '01:00'
        intervalo:
          description: Intervalos
          allOf:
            - $ref: '#/components/schemas/CreateIntervaloDto'
      required:
        - minutosTotal
    MesRevezamento:
      type: object
      properties:
        numeroMes:
          type: number
          description: Número de referencia para ordenação dos meses
          example: 1
        dias:
          description: dias para a configuração
          type: array
          items:
            $ref: '#/components/schemas/DiaRevezamento'
    CreateIntervaloDto:
      type: object
      properties:
        isFlexivel:
          type: boolean
          description: 'Define como intervalo com horário flexível '
          example: true
        horarios:
          description: Horários do intervalo fixo ou limites do intervalo flexivel
          type: array
          items:
            oneOf:
              - type: array
                items:
                  $ref: '#/components/schemas/CreateHorarioIntervaloFlexivel'
              - type: array
                items:
                  $ref: '#/components/schemas/CreateHorarioIntervaloFixo'
      required:
        - isFlexivel
        - horarios
    DiaRevezamento:
      type: object
      properties:
        numeroDia:
          type: number
          description: Número de referencia para ordenação dos dias
          example: 1
        tipoDia:
          type: string
          description: Tipo do dia
          enum:
            - NORMAL
            - COMPENSADO
            - DSR
          default: NORMAL
        entrada:
          type: string
          description: Valor no formato HH:mm do horario de entrada no dia
          example: '08:00'
        saida:
          type: string
          description: Valor no formato HH:mm do horario da saida no dia
          example: '18:00'
        intervalo:
          description: Intervalos
          allOf:
            - $ref: '#/components/schemas/CreateIntervaloDto'
      required:
        - tipoDia
    CreateHorarioIntervaloFlexivel:
      type: object
      properties:
        minimo:
          type: string
          description: Valor no formato HH:mm de horario mínimo para o intervalo
          example: '00:30'
        maximo:
          type: string
          description: Valor no formato HH:mm de horario máximo para o intervalo
          example: '01:30'
      required:
        - maximo
    CreateHorarioIntervaloFixo:
      type: object
      properties:
        entrada:
          type: string
          description: Valor no formato HH:mm do horario de entrada no intervalo
          example: '12:00'
        saida:
          type: string
          description: Valor no formato HH:mm do horario de saida do intervalo
          example: '13:00'
      required:
        - entrada
        - saida

````