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

# Listar projetos

> Lista os projetos criados na plataforma do SULTS. A busca é **paginada** e limitada a **100 registros** por página.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/projeto
openapi: 3.1.0
info:
  title: API SULTS
  version: v1
  description: >-
    API REST do SULTS. Todas as chamadas devem ser autenticadas por um token
    enviado, puro e sem o prefixo `Bearer`, no cabeçalho HTTP `Authorization`.
    As datas seguem o formato UTC ISO 8601 (`yyyy-MM-ddTHH:mm:ssZ`) e campos com
    máscara (CNPJ, telefone, CEP etc.) são retornados sem máscara. Endpoints de
    listagem paginados aceitam os parâmetros `start` e `limit`.
  contact:
    name: Suporte SULTS
    url: https://ajuda.sults.com.br
servers:
  - url: https://api.sults.com.br
    description: Produção
security:
  - apiKeyAuth: []
tags:
  - name: Unidades
    description: >-
      Unidades da rede e colaboradores ativos cadastrados no SULTS. Somente
      leitura: a API não grava unidades nem colaboradores. A API do SULTS é REST
      sobre HTTPS e responde em JSON. Cada requisição leva o token no cabeçalho
      `Authorization`, enviado puro, sem o prefixo `Bearer`. O token é gerado
      por um administrador na plataforma, em Segurança > API > Gestão de Tokens
      v1. O limite é de 2 requisições por segundo, por IP.
  - name: Chamados
    description: >-
      Chamados abertos na plataforma e a timeline de cada um, com os endpoints
      de criação e conclusão. A API do SULTS é REST sobre HTTPS e responde em
      JSON. Cada requisição leva o token no cabeçalho `Authorization`, enviado
      puro, sem o prefixo `Bearer`. O token é gerado por um administrador na
      plataforma, em Segurança > API > Gestão de Tokens v1. O limite é de 2
      requisições por segundo, por IP.
  - name: Checklist
    description: >-
      Avaliações de checklist aplicadas nas unidades, com respostas, check-ins,
      check-outs e planos de ação. A API do SULTS é REST sobre HTTPS e responde
      em JSON. Cada requisição leva o token no cabeçalho `Authorization`,
      enviado puro, sem o prefixo `Bearer`. O token é gerado por um
      administrador na plataforma, em Segurança > API > Gestão de Tokens v1. O
      limite é de 2 requisições por segundo, por IP.
  - name: Compras
    description: >-
      Pedidos de compra e catálogo de produtos da v1, incluindo o cadastro e a
      edição de produto e a edição de pedido. A v1 de Compras não recebe novas
      funcionalidades: mix de produtos, etapas de pedido e as próximas novidades
      do módulo estão só na API v2, que é a indicada para integrações novas de
      Compras. A API do SULTS é REST sobre HTTPS e responde em JSON. Cada
      requisição leva o token no cabeçalho `Authorization`, enviado puro, sem o
      prefixo `Bearer`. O token é gerado por um administrador na plataforma, em
      Segurança > API > Gestão de Tokens v1. O limite é de 2 requisições por
      segundo, por IP.
  - name: implantacao
    description: >-
      Projetos de implantação de novas unidades e as tarefas de cada projeto. A
      API do SULTS é REST sobre HTTPS e responde em JSON. Cada requisição leva o
      token no cabeçalho `Authorization`, enviado puro, sem o prefixo `Bearer`.
      O token é gerado por um administrador na plataforma, em Segurança > API >
      Gestão de Tokens v1. O limite é de 2 requisições por segundo, por IP.
    x-group: Implantação
  - name: Projetos
    description: >-
      Projetos da operação e as tarefas vinculadas a eles. A API do SULTS é REST
      sobre HTTPS e responde em JSON. Cada requisição leva o token no cabeçalho
      `Authorization`, enviado puro, sem o prefixo `Bearer`. O token é gerado
      por um administrador na plataforma, em Segurança > API > Gestão de Tokens
      v1. O limite é de 2 requisições por segundo, por IP.
  - name: expansao
    description: >-
      Negócios do funil de Expansão e a timeline de cada um, com o endpoint de
      criação de negócio. A API do SULTS é REST sobre HTTPS e responde em JSON.
      Cada requisição leva o token no cabeçalho `Authorization`, enviado puro,
      sem o prefixo `Bearer`. O token é gerado por um administrador na
      plataforma, em Segurança > API > Gestão de Tokens v1. O limite é de 2
      requisições por segundo, por IP.
    x-group: Expansão
paths:
  /api/v1/projeto:
    get:
      tags:
        - Projetos
      summary: Listar projetos
      description: >-
        Lista os projetos criados na plataforma do SULTS. A busca é **paginada**
        e limitada a **100 registros** por página.
      operationId: listarProjetos
      parameters:
        - $ref: '#/components/parameters/Start'
        - $ref: '#/components/parameters/Limit'
        - name: id
          in: query
          required: false
          description: Código do Projeto
          schema:
            type: integer
          example: 1
        - name: modeloId
          in: query
          required: false
          description: Código do Modelo do Projeto
          schema:
            type: integer
          example: 4
        - name: responsavelId
          in: query
          required: false
          description: Código da pessoa responsável pelo Projeto
          schema:
            type: integer
          example: 8
        - name: unidadeId
          in: query
          required: false
          description: Código da empresa do Projeto
          schema:
            type: integer
          example: 12
        - name: concluido
          in: query
          required: false
          description: Indica se o projeto está concluído (`true` ou `false`).
          schema:
            type: boolean
          example: false
        - name: dtInicio
          in: query
          required: false
          description: >-
            Busca os projetos com início a partir da data informada (UTC ISO
            8601).
          schema:
            type: string
            format: date-time
          example: '2026-07-01T00:00:00Z'
        - name: dtFim
          in: query
          required: false
          description: >-
            Busca os projetos com término anterior à data informada (UTC ISO
            8601).
          schema:
            type: string
            format: date-time
          example: '2026-07-31T23:59:59Z'
      responses:
        '200':
          description: Lista paginada de projetos
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Projeto'
                  start:
                    type: integer
                    description: Página retornada
                  limit:
                    type: integer
                    description: Registros por página
                  totalPage:
                    type: integer
                    description: Quantidade de páginas disponíveis
                  size:
                    type: integer
                    description: Quantidade de registros na página
        '400':
          $ref: '#/components/responses/ErroValidacao'
        '401':
          $ref: '#/components/responses/TokenInvalido'
        '404':
          $ref: '#/components/responses/NaoEncontrado'
        '429':
          $ref: '#/components/responses/LimiteDeRequisicoes'
        5XX:
          $ref: '#/components/responses/ErroDoServidor'
components:
  parameters:
    Start:
      name: start
      in: query
      description: >-
        Número da página da listagem, começando em `0`. Incremente até a
        resposta vir vazia ou até atingir `totalPage`.
      schema:
        type: integer
        minimum: 0
        default: 0
      example: 0
    Limit:
      name: limit
      in: query
      description: Quantidade de registros por página. O máximo aceito pela API é `100`.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 100
      example: 100
  schemas:
    Projeto:
      type: object
      properties:
        id:
          type: integer
          description: Código do Projeto
          example: 1
        nome:
          type: string
          description: Nome do Projeto
          example: Inauguração Sabor Mineiro Uberaba
        modelo:
          type: object
          description: Modelo do Projeto
          properties:
            id:
              type: integer
              description: Código
              example: 1
            nome:
              type: string
              description: Nome
              example: Abertura de unidade
        categoria:
          type: object
          description: Categoria do Projeto
          properties:
            id:
              type: integer
              description: Código
              example: 1
            nome:
              type: string
              description: Nome
              example: Expansão
        responsavel:
          type: object
          description: Pessoa responsável pelo Projeto
          properties:
            id:
              type: integer
              description: Código
              example: 1
            nome:
              type: string
              description: Nome
              example: Fernanda Rocha
        unidade:
          type: object
          description: Unidade do Projeto
          properties:
            id:
              type: integer
              description: Código da Unidade
              example: 1
            nomeFantasia:
              type: string
              description: Nome fantasia da Unidade
              example: Sabor Mineiro Savassi
            cnpj:
              type: string
              description: CNPJ da Unidade
              example: '12345678000190'
        tipoCalculoTarefa:
          type: integer
          enum:
            - 1
            - 2
          description: >-
            O significado de cada valor ainda não foi confirmado pela
            engenharia. Enquanto isso, trate o campo como um código opaco e não
            derive regra de negócio a partir dele.
          example: 1
        diaSemanaTarefa:
          type: integer
          enum:
            - 1
            - 2
            - 3
          description: >-
            O significado de cada valor ainda não foi confirmado pela
            engenharia. Enquanto isso, trate o campo como um código opaco e não
            derive regra de negócio a partir dele.
          example: 1
        descricaoHtml:
          type: string
          description: Descrição do Projeto (HTML)
          example: <p>Café torrado e moído, pacote de 500 g.</p>
        anotacaoAtencao:
          type: string
          description: Nota de atenção do Projeto
          example: Unidade em período de implantação.
        ativo:
          type: boolean
          description: '`true`: projeto ativo. `false`: projeto inativo.'
          example: true
        pausado:
          type: boolean
          description: '`true`: projeto pausado. `false`: projeto não pausado.'
          example: true
        concluido:
          type: boolean
          description: '`true`: projeto concluído. `false`: projeto não concluído.'
          example: true
        dtCriacao:
          type: string
          format: date-time
          description: Data em que o projeto foi criado (UTC ISO 8601)
          example: '2026-06-02T13:00:00Z'
        dtInicio:
          type: string
          format: date-time
          description: Data em que o projeto foi iniciado (UTC ISO 8601)
          example: '2026-06-16T12:30:00Z'
        dtFim:
          type: string
          format: date-time
          description: Data em que o projeto foi finalizado (UTC ISO 8601)
          example: '2026-10-02T20:00:00Z'
        dtInicioPlanejamento:
          type: string
          format: date-time
          description: Data planejada para o início do projeto (UTC ISO 8601)
          example: '2026-06-15T12:00:00Z'
        dtFimPlanejamento:
          type: string
          format: date-time
          description: Data planejada para o término do projeto (UTC ISO 8601)
          example: '2026-10-30T21:00:00Z'
        dtConclusao:
          type: string
          format: date-time
          description: Data em que o projeto foi concluído (UTC ISO 8601)
          example: '2026-10-02T20:00:00Z'
        dtPausado:
          type: string
          format: date-time
          description: Data em que o projeto foi pausado (UTC ISO 8601)
          example: '2026-08-10T18:00:00Z'
        pausadoPessoa:
          type: object
          description: Pessoa que pausou o Projeto
          properties:
            id:
              type: integer
              description: Código
              example: 1
            nome:
              type: string
              description: Nome
              example: Carlos Mendes
        equipe:
          type: array
          items:
            $ref: '#/components/schemas/ProjetoEquipeMembro'
          description: Pessoas e permissões no Projeto
        etiqueta:
          type: array
          items:
            $ref: '#/components/schemas/Etiqueta'
          description: Etiquetas do Projeto
    ProjetoEquipeMembro:
      type: object
      description: >-
        Pessoa e permissões na equipe do Projeto. Os campos de Documentos e
        Disco Virtual são retornados no módulo de Implantação.
      properties:
        pessoa:
          type: object
          description: Pessoa da equipe do Projeto
          properties:
            id:
              type: integer
              description: Código
              example: 1
            nome:
              type: string
              description: Nome
              example: Bruno Almeida
        permitidoProjetoEdicao:
          type: boolean
          description: Se `true`, a pessoa pode editar o Projeto
          example: true
        permitidoProjetoDocumentoEdicao:
          type: boolean
          description: Se `true`, a pessoa pode editar os Documentos do Projeto
          example: true
        permitidoProjetoDiscoVirtualEdicao:
          type: boolean
          description: Se `true`, a pessoa pode editar o Disco Virtual do Projeto
          example: true
        permitidoTarefasVerTodas:
          type: boolean
          description: Se `true`, a pessoa pode ver todas as Tarefas do Projeto
          example: true
        permitidoTarefasEdicaoBasica:
          type: boolean
          description: Se `true`, a pessoa pode fazer edições básicas nas Tarefas
          example: true
        permitidoTarefasEdicaoAvancada:
          type: boolean
          description: Se `true`, a pessoa pode fazer edições avançadas nas Tarefas
          example: true
    Etiqueta:
      type: object
      properties:
        id:
          type: integer
          description: Código da etiqueta
          example: 1
        nome:
          type: string
          description: Nome da etiqueta
          example: Urgente
        cor:
          type: string
          description: Cor da etiqueta (hex)
          example: Verde
    Erro:
      type: object
      description: >-
        Corpo padrão de erro da API. Não existe código de erro interno: decida a
        sua lógica pelo status HTTP e use a mensagem apenas para logs e
        diagnóstico.
      required:
        - error
      properties:
        error:
          type: string
          description: >-
            Mensagem legível, em português, descrevendo a falha. O texto pode
            mudar: nunca o use como condição de código.
          example: Campo responsavel não pode ser vazio ou nulo.
  responses:
    ErroValidacao:
      description: >-
        Erro de validação ou formato errado nos dados de entrada. A API aponta
        **um campo por vez**: corrija o campo indicado na mensagem, reenvie e
        repita até o 200.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            error: Campo responsavel não pode ser vazio ou nulo.
    TokenInvalido:
      description: >-
        Token ausente ou inválido. Confira: copiado por completo, cabeçalho
        `Authorization` com o nome exato, valor sem o prefixo `Bearer` e gerado
        na **Gestão de Tokens v1** (tokens v2 não funcionam nesta API). Sem
        retry automático. O corpo real é `{"error": "Acesso não autorizado."}`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
          example:
            error: Acesso não autorizado.
    NaoEncontrado:
      description: >-
        Recurso ou entidade inexistente (por exemplo, um `{id}` do caminho que
        não existe ou foi excluído no SULTS). Reenviar sem corrigir devolve o
        mesmo erro.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
    LimiteDeRequisicoes:
      description: >-
        Limite de requisições excedido: **2 requisições por segundo, por IP**. A
        resposta é a página HTML padrão do servidor, não JSON, e não há o header
        `Retry-After`: trate pelo status 429, sem fazer parse do corpo, com
        espera crescente a partir de 1 segundo.
      content:
        text/html:
          schema:
            type: string
            description: >-
              Página HTML padrão do servidor. Não faça parse; decida pelo
              status.
    ErroDoServidor:
      description: >-
        Falha inesperada do servidor (raro). Repita com espera crescente;
        persistindo, acione o suporte com data, hora e endpoint.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Token  gerado através do sistema do SULTS. Deve ser enviado no cabeçalho
        `Authorization` de todas as requisições.

````

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