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

# Atualização de critério de lead score

> Atualiza parcialmente um critério de lead score da empresa da chave. Só os campos enviados mudam.
- `options`, quando enviado, substitui a lista inteira: opções com `id` são atualizadas, sem `id` são criadas e as atuais que não vierem são removidas logicamente. Consulte o critério antes para reenviar os `id` das opções que continuam.
- Leads e oportunidades que já receberam o critério não são recalculados: cada aplicação guarda a pontuação e os nomes da época.
- `status=0` inativa o critério (ele deixa de poder ser aplicado). Não há exclusão pela API pública.




## OpenAPI

````yaml /openapi.json put /integrations/external/lead-scores/criteria/{id}
openapi: 3.0.3
info:
  title: >-
    Integração Externa - Leads, Oportunidades, Lead Score, Tarefas, Arquivos,
    Propostas, Chats, Satisfação e Campos Personalizados
  version: 1.0.0
  description: >
    Documentação oficial da API externa da Wegly para campos personalizados,
    leads, oportunidades, critérios de lead score, tarefas, arquivos, propostas,
    chats e satisfação (`/integrations/external/custom-fields`,
    `/integrations/external/files`, `/integrations/external/leads`,
    `/integrations/external/deals`, `/integrations/external/lead-scores`,
    `/integrations/external/tasks`, `/integrations/external/proposals`,
    `/integrations/external/chats` e `/integrations/external/satisfaction`).
    Todas as descrições estão em português e refletem as regras aplicadas pelo
    serviço.
servers:
  - url: https://api.wegly.com.br
    description: Ambiente de produção Wegly
security:
  - bearerAuth: []
tags:
  - name: Campos Personalizados
    description: >-
      Consulta dos campos personalizados disponíveis para uso nas integrações
      externas.
  - name: Arquivos
    description: >-
      Upload e consulta de arquivos vinculados diretamente a leads ou
      oportunidades. Arquivos de proposta usam as rotas de anexos em Propostas.
  - name: Leads
    description: >-
      Operações de listagem, criação, consulta e atualização de leads via
      integração externa.
  - name: Oportunidades
    description: Operações de criação de oportunidades (deals) via integração externa.
  - name: Lead Score
    description: >-
      Listagem, consulta, criação e atualização de critérios de lead score via
      integração externa. Não há exclusão pela API pública.
  - name: Tarefas
    description: >-
      Operações de listagem, criação, consulta, atualização e remoção de tarefas
      vinculadas a leads, oportunidades, entregas, pessoas, organizações ou
      clientes.
  - name: Satisfação
    description: >-
      Geração de links públicos para formulários de satisfação via integração
      externa.
  - name: Propostas
    description: >-
      Operações de listagem, criação, consulta, atualização e remoção de
      propostas via integração externa, incluindo seus anexos (arquivos e
      documentos da biblioteca).
  - name: Chats
    description: >-
      Operações principais de listagem, criação, consulta e resumo de não lidas
      de chats via integração externa.
paths:
  /integrations/external/lead-scores/criteria/{id}:
    put:
      tags:
        - Lead Score
      summary: Atualização de critério de lead score
      description: >
        Atualiza parcialmente um critério de lead score da empresa da chave. Só
        os campos enviados mudam.

        - `options`, quando enviado, substitui a lista inteira: opções com `id`
        são atualizadas, sem `id` são criadas e as atuais que não vierem são
        removidas logicamente. Consulte o critério antes para reenviar os `id`
        das opções que continuam.

        - Leads e oportunidades que já receberam o critério não são
        recalculados: cada aplicação guarda a pontuação e os nomes da época.

        - `status=0` inativa o critério (ele deixa de poder ser aplicado). Não
        há exclusão pela API pública.
      parameters:
        - $ref: '#/components/parameters/ScoreCriterionId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateExternalScoreCriterion'
            examples:
              renomearEAjustarOpcoes:
                summary: Renomeia o critério, mantém uma opção e cria outra
                value:
                  name: Faixa de orçamento mensal
                  options:
                    - id: 9b2d6f4a-1c3e-4a5b-8d7f-0e1a2b3c4d5e
                      label: Até R$ 10 mil
                      points: 5
                    - label: Acima de R$ 50 mil
                      points: 30
              inativar:
                summary: Inativa o critério
                value:
                  status: 0
      responses:
        '200':
          description: Critério atualizado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalScoreCriterion'
              example:
                id: 5f0f3c8e-8a59-4c1c-9d3e-2b7f8a1c4d10
                category_id: 1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a
                category:
                  id: 1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a
                  name: Qualificação
                  color:
                    background: '#1E88E5'
                    foreground: '#FFFFFF'
                  status: 1
                target_type: BOTH
                name: Faixa de orçamento mensal
                description: Orçamento informado pelo contato
                points: 10
                status: 1
                options:
                  - id: 9b2d6f4a-1c3e-4a5b-8d7f-0e1a2b3c4d5e
                    label: Até R$ 10 mil
                    description: null
                    points: 5
                    position: 0
                    status: 1
                  - id: 4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a
                    label: Acima de R$ 50 mil
                    description: null
                    points: 30
                    position: 1
                    status: 1
                created_at: '2026-11-12T12:00:00.000Z'
                updated_at: '2026-11-12T14:20:00.000Z'
        '400':
          description: >-
            Payload inválido (mesmas regras da criação), `null` em campo que não
            pode ficar vazio ou opções com nomes repetidos.
        '401':
          description: >-
            Chave de integração ausente, inválida, inativa ou expirada, ou
            domínio de origem não autorizado para a chave.
        '403':
          description: >-
            Permissão `crm/lead-score.update` ausente na chave ou usuário
            criador da chave inativo.
        '404':
          description: >-
            Critério inexistente, removido ou de outra empresa, categoria
            inexistente ou inativa, ou `id` de opção que não pertence ao
            critério.
        '429':
          description: Limite de requisições atingido.
          headers:
            Retry-After:
              description: Tempo de espera em segundos, quando enviado.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalApiError'
components:
  parameters:
    ScoreCriterionId:
      name: id
      in: path
      required: true
      description: UUID do critério de lead score.
      schema:
        type: string
        format: uuid
  schemas:
    UpdateExternalScoreCriterion:
      type: object
      description: >-
        Atualização parcial: só os campos enviados mudam. `target_type`, `name`,
        `points`, `status` e `options` não aceitam `null`.
      properties:
        category_id:
          type: string
          format: uuid
          nullable: true
          description: Categoria ativa da empresa. `null` remove a categoria.
        target_type:
          $ref: '#/components/schemas/ScoreTargetType'
        name:
          type: string
          minLength: 1
          maxLength: 120
        description:
          type: string
          nullable: true
          maxLength: 5000
          description: '`null` ou texto vazio limpa a descrição.'
        points:
          type: integer
          minimum: -100
          maximum: 100
          description: Inteiro entre -100 e 100, diferente de 0.
        status:
          allOf:
            - $ref: '#/components/schemas/ScoreStatus'
          description: 0 inativa e 1 reativa o critério.
        options:
          type: array
          maxItems: 50
          description: >-
            Lista completa das opções: com `id` são atualizadas, sem `id` são
            criadas e as atuais que não vierem são removidas logicamente.
            Omitido, mantém as opções; `[]` remove todas.
          items:
            $ref: '#/components/schemas/UpdateExternalScoreCriterionOption'
    ExternalScoreCriterion:
      type: object
      required:
        - id
        - category_id
        - category
        - target_type
        - name
        - description
        - points
        - status
        - options
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
        category_id:
          type: string
          format: uuid
          nullable: true
        category:
          allOf:
            - $ref: '#/components/schemas/ExternalScoreCriterionCategory'
          nullable: true
        target_type:
          $ref: '#/components/schemas/ScoreTargetType'
        name:
          type: string
          maxLength: 120
        description:
          type: string
          nullable: true
        points:
          type: integer
          minimum: -100
          maximum: 100
          description: Pontos do critério; valem quando ele não tem opções ativas.
        status:
          $ref: '#/components/schemas/ScoreStatus'
        options:
          type: array
          description: >-
            Opções não removidas (ativas e inativas), ordenadas por `position`.
            Vazio quando não há.
          items:
            $ref: '#/components/schemas/ExternalScoreCriterionOption'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    ExternalApiError:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        error:
          type: string
      description: >-
        Formato de erro do HTTP/NestJS; os campos presentes variam conforme a
        exceção.
    ScoreTargetType:
      type: string
      enum:
        - LEAD
        - DEAL
        - BOTH
      description: >-
        Tipo de registro do critério: `LEAD` (leads), `DEAL` (oportunidades) ou
        `BOTH` (os dois).
    ScoreStatus:
      type: integer
      enum:
        - 0
        - 1
      description: 'Situação do critério ou da opção: 0 = inativo, 1 = ativo.'
    UpdateExternalScoreCriterionOption:
      allOf:
        - $ref: '#/components/schemas/CreateExternalScoreCriterionOption'
        - type: object
          properties:
            id:
              type: string
              format: uuid
              description: ID de uma opção atual do critério. Sem `id`, a opção é criada.
    ExternalScoreCriterionCategory:
      type: object
      required:
        - id
        - name
        - color
        - status
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        color:
          type: object
          nullable: true
          description: >-
            Cor da categoria, no formato das tags. `null` quando não há cor
            gravada.
          required:
            - background
            - foreground
          properties:
            background:
              type: string
              example: '#1E88E5'
            foreground:
              type: string
              example: '#FFFFFF'
        status:
          $ref: '#/components/schemas/ScoreStatus'
    ExternalScoreCriterionOption:
      type: object
      required:
        - id
        - label
        - description
        - points
        - position
        - status
      properties:
        id:
          type: string
          format: uuid
        label:
          type: string
          maxLength: 120
        description:
          type: string
          nullable: true
        points:
          type: integer
          minimum: -100
          maximum: 100
          description: Pontos aplicados quando a opção é escolhida.
        position:
          type: integer
          minimum: 0
        status:
          $ref: '#/components/schemas/ScoreStatus'
    CreateExternalScoreCriterionOption:
      type: object
      required:
        - label
        - points
      properties:
        label:
          type: string
          minLength: 1
          maxLength: 120
          description: >-
            Nome da opção; não pode repetir no mesmo critério. Espaços das
            extremidades são removidos.
        description:
          type: string
          nullable: true
          maxLength: 5000
        points:
          type: integer
          minimum: -100
          maximum: 100
          description: Inteiro entre -100 e 100, diferente de 0.
        position:
          type: integer
          minimum: 0
          description: 'Padrão: a posição da opção na lista.'
        status:
          allOf:
            - $ref: '#/components/schemas/ScoreStatus'
          default: 1
          description: 'Padrão: 1 (ativa).'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Chave de integração com prefixo wegly_, enviada em Authorization: Bearer
        <chave>. Não é JWT. A chave deve estar ativa, não excluída e dentro da
        validade. Com allowed_domain, Origin (ou Referer na ausência de Origin)
        precisa informar o hostname permitido. A empresa e as permissões são
        obtidas pela chave.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.