Skip to content

Instantly share code, notes, and snippets.

@lpirola
Last active October 23, 2025 14:13
Show Gist options
  • Save lpirola/33dbf97c928bb20de675024751308a49 to your computer and use it in GitHub Desktop.
Save lpirola/33dbf97c928bb20de675024751308a49 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="SwaggerUI" />
<title>SwaggerUI</title>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/swagger-ui.css" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="https://unpkg.com/[email protected]/swagger-ui-bundle.js" crossorigin></script>
<script src="https://unpkg.com/[email protected]/swagger-ui-standalone-preset.js" crossorigin></script>
<script>
window.onload = () => {
window.ui = SwaggerUIBundle({
url: 'https://gist.githubusercontent.com/lpirola/33dbf97c928bb20de675024751308a49/raw/896164ac232ce8b2dda842308d8d7976c230432b/openapi.yaml',
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
layout: "StandaloneLayout",
});
};
</script>
</body>
</html>
openapi: 3.0.3
info:
title: Mapas Culturais API
description: |-
Documentação OpenAPI gerada a partir dos controladores e convenções do framework interno do Mapas Culturais (Slim 4 + Controllers).
As rotas sob `/api/{controller}/{acao}` mapeiam para métodos `API_*` dos controladores. Parâmetros de busca suportam a sintaxe rica do Mapas Culturais (ex.: `@select`, `@order`, operadores abaixo).
Guia de Operadores (filtros em query string)
- EQ(valor): Igualdade. Ex.: `id=EQ(10)`
- GT(valor), GTE(valor): Maior que / Maior ou igual. Ex.: `id=GT(10)`
- LT(valor), LTE(valor): Menor que / Menor ou igual. Ex.: `id=LTE(100)`
- NULL(): Nulo/não definido. Ex.: `age=NULL()`
- IN(v1,v2,...): Pertence ao conjunto. Ex.: `id=IN(10,18,33)`
- BET(inf,sup): Entre limites (fechado). Ex.: `id=BET(100,200)`
- LIKE(padrao): Like SQL sensível a maiúsculas. Ex.: `name=LIKE(*fael*)`
- ILIKE(padrao): Like case-insensitive. Ex.: `name=ILIKE(rafael*)`
- OR(expr1,expr2,...): Disjunção lógica. Ex.: `id=OR(BET(100,200),BET(300,400),IN(10,19,33))`
- AND(expr1,expr2,...): Conjunção lógica. Ex.: `name=AND(ILIKE(Rafael%),ILIKE(*Freitas))`
- GEONEAR(lon,lat,raio_m): Proximidade geográfica. Ex.: `_geoLocation=GEONEAR(-46.64,-23.54,700)`
Dicas adicionais
- Use `@select` para escolher campos e relações (ex.: `@select=id,name,owner.name`).
- Use `@order` para ordenação (ex.: `@order=name ASC,id DESC`).
- Pagine com `@limit` e `@page`.
- `@files` para incluir grupos de arquivos (quando suportado).
- `@count=1` para retornar apenas a contagem.
version: 0.3.0
servers:
- url: https://app.mapas.tec.br
security:
- bearerAuth: []
tags:
- name: Site
- name: User
- name: Agent
- name: Space
- name: Event
- name: Project
- name: Opportunity
- name: Registration
- name: RegistrationStep
- name: Term
- name: Subsite
- name: Notification
- name: EventOccurrence
- name: EventAttendance
- name: RegistrationEvaluation
- name: EvaluationMethodConfiguration
- name: Seals
- name: Apps
- name: Role
- name: SystemRole
- name: Blame
- name: GeoDivisions
- name: File
- name: PermissionCache
- name: Auth
- name: ProjectMonitoring
- name: ThemeCustomizer
- name: Search
- name: Support
- name: Spreadsheets
- name: Panel
- name: FAQ
- name: EventImporter
- name: LGPD
- name: Home
- name: BaseV1EmbedTools
paths:
# Site (público)
/api/site/version:
get:
tags: [Site]
summary: Obter versão do Mapas Culturais
security: []
responses:
'200':
description: Versão atual
content:
application/json:
schema:
type: object
additionalProperties: true
/api/site/info:
get:
tags: [Site]
summary: Informações gerais do site
security: []
responses:
'200': { description: Informações do site, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# User
/api/user/find:
get:
tags: [User]
summary: Buscar usuários
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' }, { $ref: '#/components/parameters/type' } ]
responses:
'200': { description: Lista de usuários, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } }, headers: { API-Metadata: { description: Metadados de paginação, schema: { type: string } } } }
/api/user/findOne:
get:
tags: [User]
summary: Buscar um usuário
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/type' } ]
responses:
'200': { description: Usuário, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
'404': { description: Não encontrado }
/api/user/getId:
get:
tags: [User]
summary: Obter ID do usuário por `authUid`
parameters: [ { in: query, name: authUid, required: true, schema: { type: string } } ]
responses:
'200': { description: ID do usuário (ou null), content: { application/json: { schema: { type: integer, nullable: true } } } }
/api/user/describe:
get:
tags: [User]
summary: Descrever metadados de Usuário
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/user/filters:
get:
tags: [User]
summary: Listar filtros disponíveis para Usuário
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Agent
/api/agent/find:
get:
tags: [Agent]
summary: Buscar agentes
description: >-
Busca agentes usando a sintaxe de consulta do Mapas Culturais.
Exemplos de operadores: EQ(id), ILIKE(name), IN(id). Use `@select` para escolher campos e relações.
Consulte o "Guia de Operadores" na seção de descrição da API.
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' }, { $ref: '#/components/parameters/type' }, { $ref: '#/components/parameters/files' }, { $ref: '#/components/parameters/seals' }, { $ref: '#/components/parameters/keyword' } ]
responses:
'200':
description: Lista de agentes
headers: { API-Metadata: { description: Metadados, schema: { type: string } } }
content:
application/json:
schema: { type: array, items: { type: object, additionalProperties: true } }
examples:
exemplo:
value:
- { id: 123, name: 'Coletivo XYZ', type: 2 }
- { id: 456, name: 'Fulana de Tal', type: 1 }
/api/agent/findOne:
get:
tags: [Agent]
summary: Buscar um agente
description: Retorna um único agente que satisfaça os filtros fornecidos.
Consulte o "Guia de Operadores" na seção de descrição da API.
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/type' }, { $ref: '#/components/parameters/files' } ]
responses:
'200':
description: Agente
content:
application/json:
schema: { type: object, additionalProperties: true }
examples:
exemplo: { value: { id: 456, name: 'Fulana de Tal', type: 1, owner: { id: 5, name: 'Org A' } } }
/api/agent/describe:
get:
tags: [Agent]
summary: Descrever metadados do Agente
responses:
'200':
description: Campos e grupos de arquivos
content:
application/json:
schema: { type: object, additionalProperties: true }
examples:
exemplo:
value:
id: { type: integer, required: true }
name: { type: string, required: true }
_type: { type: smallint, required: true, '@select': 'type' }
'@file': { avatar: [ 'avatar', 'avatarSmall', 'avatarMedium' ] }
/api/agent/filters:
get:
tags: [Agent]
summary: Listar filtros disponíveis
responses:
'200':
description: Filtros por campo/metadado aceitos no `find`
content:
application/json:
schema: { type: object, additionalProperties: true }
examples: { exemplo: { value: { name: 'ILIKE()', id: 'IN()', status: 'EQ()' } } }
/api/agent/getTypes:
get:
tags: [Agent]
summary: Listar tipos de Agente
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 1, name: 'Individual' }, { id: 2, name: 'Coletivo' } ] } } } } }
/api/agent/getTypeGroups:
get:
tags: [Agent]
summary: Listar grupos de tipos de Agente
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 10, name: 'Grupo A' }, { id: 20, name: 'Grupo B' } ] } } } } }
/api/agent/getChildrenIds:
get:
tags: [Agent]
summary: Listar IDs de filhos (hierarquia)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: IDs, content: { application/json: { schema: { type: array, items: { type: integer } } } } }
# Agent (rotas não-API)
/agent/edit:
get:
tags: [Agent]
summary: Página de edição do agente
responses:
'200': { description: HTML da edição, content: { text/html: { schema: { type: string } } } }
/agent/single:
get:
tags: [Agent]
summary: Página pública do agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML da página do agente, content: { text/html: { schema: { type: string } } } }
# Space
/api/space/find:
get:
tags: [Space]
summary: Buscar espaços
description: Busca espaços por filtros de propriedades e metadados; suporta geofiltros via operadores específicos.
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' }, { $ref: '#/components/parameters/type' } ]
responses:
'200': { description: Lista de espaços, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 77, name: 'Teatro ABC' } ] } } } } }
/api/space/findOne:
get:
tags: [Space]
summary: Buscar um espaço
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Espaço, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/space/describe:
get:
tags: [Space]
summary: Descrever metadados do Espaço
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/space/filters:
get:
tags: [Space]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/space/getTypes:
get:
tags: [Space]
summary: Listar tipos de Espaço
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/space/getTypeGroups:
get:
tags: [Space]
summary: Listar grupos de tipos de Espaço
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/space/getChildrenIds:
get:
tags: [Space]
summary: Listar IDs de filhos (hierarquia)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: IDs, content: { application/json: { schema: { type: array, items: { type: integer } } } } }
/api/space/findByEvents:
get:
tags: [Space]
summary: Buscar espaços por eventos
parameters: [ { in: query, name: eventId, required: false, schema: { type: integer } } ]
responses:
'200': { description: Espaços, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Space (rotas não-API)
/space/create:
get:
tags: [Space]
summary: Página de criação de espaço
responses:
'200': { description: HTML da criação de espaço, content: { text/html: { schema: { type: string } } } }
# Event
/api/event/find:
get:
tags: [Event]
summary: Buscar eventos
description: Busca eventos com paginação e seleção de campos; combine com `findOccurrences` para ocorrências.
Consulte o "Guia de Operadores" na seção de descrição da API.
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Lista de eventos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 11, name: 'Mostra de Cinema' } ] } } } } }
/api/event/findOne:
get:
tags: [Event]
summary: Buscar um evento
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Evento, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/event/describe:
get:
tags: [Event]
summary: Descrever metadados do Evento
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/event/filters:
get:
tags: [Event]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/event/getTypes:
get:
tags: [Event]
summary: Listar tipos de Evento
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/event/getTypeGroups:
get:
tags: [Event]
summary: Listar grupos de tipos de Evento
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/event/getChildrenIds:
get:
tags: [Event]
summary: Listar IDs de filhos (hierarquia)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: IDs, content: { application/json: { schema: { type: array, items: { type: integer } } } } }
/api/event/findOccurrences:
get:
tags: [Event]
summary: Buscar ocorrências de eventos (por filtros)
description: Retorna ocorrências com base em filtros de data/local e evento.
responses:
'200': { description: Ocorrências, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 9001, startsAt: '2025-01-10T19:00:00Z', event: { id: 11 } } ] } } } } }
/api/event/occurrences:
get:
tags: [Event]
summary: Listar ocorrências de um evento
parameters: [ { in: query, name: eventId, required: true, schema: { type: integer } } ]
responses:
'200': { description: Ocorrências, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 9002, rule: { byDay: [ 'MO' ] } } ] } } } } }
/api/event/findBySpace:
get:
tags: [Event]
summary: Buscar eventos por espaço
parameters: [ { in: query, name: space, required: true, schema: { type: integer } } ]
responses:
'200': { description: Eventos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Event (rotas não-API)
/event/index:
post:
tags: [Event]
summary: Criar evento
requestBody:
required: true
content:
application/json:
schema: { type: object, additionalProperties: true }
application/x-www-form-urlencoded:
schema: { type: object, additionalProperties: true }
responses:
'200': { description: Evento criado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/event/create:
get:
tags: [Event]
summary: Página de criação de evento
responses:
'200': { description: HTML da criação de evento, content: { text/html: { schema: { type: string } } } }
/api/event/findByLocation:
get:
tags: [Event]
summary: Buscar eventos por localização (geolocalização)
parameters: [ { in: query, name: lon, required: true, schema: { type: number, format: float } }, { in: query, name: lat, required: true, schema: { type: number, format: float } }, { in: query, name: radius, required: false, schema: { type: integer } } ]
responses:
'200': { description: Eventos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Project
/api/project/find:
get:
tags: [Project]
summary: Buscar projetos
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Projetos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/project/findOne:
get:
tags: [Project]
summary: Buscar um projeto
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Projeto, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/project/describe:
get:
tags: [Project]
summary: Descrever metadados do Projeto
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/project/filters:
get:
tags: [Project]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/project/getTypes:
get:
tags: [Project]
summary: Listar tipos de Projeto
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/project/getTypeGroups:
get:
tags: [Project]
summary: Listar grupos de tipos de Projeto
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/project/getChildrenIds:
get:
tags: [Project]
summary: Listar IDs de filhos (hierarquia)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: IDs, content: { application/json: { schema: { type: array, items: { type: integer } } } } }
# Project (rotas não-API)
/project/create:
get:
tags: [Project]
summary: Página de criação de projeto
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/project/report:
get:
tags: [Project]
summary: Página de relatório do projeto
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/project/publishEvents:
post:
tags: [Project]
summary: Publicar eventos do projeto
responses:
'200': { description: Resultado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/unpublishEvents:
post:
tags: [Project]
summary: Despublicar eventos do projeto
responses:
'200': { description: Resultado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Opportunity
/api/opportunity/find:
get:
tags: [Opportunity]
summary: Buscar oportunidades
description: Busca oportunidades com filtros por status, período e propriedades.
Consulte o "Guia de Operadores" na seção de descrição da API.
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Oportunidades, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 333, name: 'Edital de Música 2025' } ] } } } } }
/api/opportunity/findOne:
get:
tags: [Opportunity]
summary: Buscar uma oportunidade
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Oportunidade, content: { application/json: { schema: { type: object, additionalProperties: true } }, examples: { exemplo: { value: { id: 333, name: 'Edital de Música 2025', registrations: { '@count': 120 } } } } } }
description: |
Retorna uma oportunidade que satisfaça os filtros fornecidos.
Consulte o "Guia de Operadores" na seção de descrição da API.
/api/opportunity/describe:
get:
tags: [Opportunity]
summary: Descrever metadados da Oportunidade
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } }, examples: { exemplo: { value: { id: { type: 'integer' }, name: { type: 'string' }, '@file': { attachments: [ 'downloads' ] } } } } } }
/api/opportunity/filters:
get:
tags: [Opportunity]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/opportunity/getTypes:
get:
tags: [Opportunity]
summary: Listar tipos de Oportunidade
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/getTypeGroups:
get:
tags: [Opportunity]
summary: Listar grupos de tipos de Oportunidade
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/getChildrenIds:
get:
tags: [Opportunity]
summary: Listar IDs de filhos (hierarquia)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: IDs, content: { application/json: { schema: { type: array, items: { type: integer } } } } }
/api/opportunity/findByUserApprovedRegistration:
get:
tags: [Opportunity]
summary: Listar oportunidades com inscrições aprovadas do usuário
responses:
'200': { description: Oportunidades, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/evaluationCommittee:
get:
tags: [Opportunity]
summary: Obter comissão de avaliação da oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Comissão, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/selectFields:
get:
tags: [Opportunity]
summary: Obter campos da inscrição selecionáveis
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Campos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/findRegistrations:
get:
tags: [Opportunity]
summary: Listar inscrições vinculadas à oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Inscrições, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 7001, owner: { id: 12, name: 'Coletivo XYZ' }, status: 1 } ] } } } } }
/api/opportunity/findRegistrationsAndEvaluations:
get:
tags: [Opportunity]
summary: Listar inscrições e suas avaliações
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Inscrições com avaliações, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/findEvaluations:
get:
tags: [Opportunity]
summary: Listar avaliações da oportunidade
parameters: [ { in: query, name: id, required: false, schema: { type: integer } } ]
responses:
'200': { description: Avaliações, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/opportunity/findEvaluable:
get:
tags: [Opportunity]
summary: Listar inscrições aptas à avaliação
responses:
'200': { description: Inscrições avaliáveis, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Opportunity (rotas não-API)
/opportunity/single:
patch:
tags: [Opportunity]
summary: Atualizar parcialmente oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
application/x-www-form-urlencoded: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Oportunidade atualizada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/create:
get:
tags: [Opportunity]
summary: Página de criação de oportunidade
responses:
'200': { description: HTML da criação, content: { text/html: { schema: { type: string } } } }
/opportunity/index:
post:
tags: [Opportunity]
summary: Criar oportunidade
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
application/x-www-form-urlencoded: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Oportunidade criada, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/opportunity/reportDrafts:
get:
tags: [Opportunity]
summary: Relatório de rascunhos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/opportunity/reportEvaluations:
get:
tags: [Opportunity]
summary: Relatório de avaliações (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/opportunity/exportFields:
get:
tags: [Opportunity]
summary: Exportar campos de inscrição (download)
responses:
'200': { description: Arquivo exportado, content: { application/octet-stream: { schema: { type: string, format: binary } } } }
/opportunity/importFields:
post:
tags: [Opportunity]
summary: Importar campos de inscrição
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file: { type: string, format: binary }
responses:
'200': { description: Resultado da importação, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/saveFieldsOrder:
post:
tags: [Opportunity]
summary: Salvar ordenação de campos
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Ordem salva, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/formBuilder:
get:
tags: [Opportunity]
summary: Construtor de formulário (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/opportunity/registrations:
get:
tags: [Opportunity]
summary: Listagem de inscrições (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/opportunity/userEvaluations:
get:
tags: [Opportunity]
summary: Avaliações do usuário (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/opportunity/allEvaluations:
get:
tags: [Opportunity]
summary: Todas as avaliações (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/opportunity/reopenEvaluations:
post:
tags: [Opportunity]
summary: Reabrir avaliações
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Avaliações reabertas, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Registration
/api/registration/find:
get:
tags: [Registration]
summary: Buscar inscrições
description: Busca inscrições ligadas a oportunidades; suporte a filtros em campos e metadados.
Consulte o "Guia de Operadores" na seção de descrição da API.
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Inscrições, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } }, examples: { exemplo: { value: [ { id: 7001, opportunity: { id: 333 }, status: 1 } ] } } } } }
/api/registration/findOne:
get:
tags: [Registration]
summary: Buscar uma inscrição
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Inscrição, content: { application/json: { schema: { type: object, additionalProperties: true } }, examples: { exemplo: { value: { id: 7001, owner: { id: 12 }, consolidated_result: '85.0' } } } } }
description: |
Retorna uma inscrição que satisfaça os filtros fornecidos.
Consulte o "Guia de Operadores" na seção de descrição da API.
/api/registration/describe:
get:
tags: [Registration]
summary: Descrever metadados da Inscrição
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } }, examples: { exemplo: { value: { id: { type: 'integer' }, owner: { type: 'relation', targetEntity: 'Agent' } } } } } }
/api/registration/filters:
get:
tags: [Registration]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros aceitos no find (campos/metadados), content: { application/json: { schema: { type: object, additionalProperties: true }, examples: { exemplo: { value: { status: 'IN()', consolidated_result: 'BET()', owner: 'EQ()' } } } } } }
# RegistrationStep
/api/registrationstep/find:
get:
tags: [RegistrationStep]
summary: Buscar etapas de inscrição
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Etapas, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/registrationstep/findOne:
get:
tags: [RegistrationStep]
summary: Buscar uma etapa de inscrição
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Etapa, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/registrationstep/describe:
get:
tags: [RegistrationStep]
summary: Descrever metadados da etapa de inscrição
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/registrationstep/filters:
get:
tags: [RegistrationStep]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Registration (rotas não-API)
/registration/preview:
get:
tags: [Registration]
summary: Pré-visualização (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/create:
get:
tags: [Registration]
summary: Página de criação (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/view:
get:
tags: [Registration]
summary: Visualização (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/single:
get:
tags: [Registration]
summary: Página pública da inscrição (HTML)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/edit:
get:
tags: [Registration]
summary: Página de edição (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/registrationEdit:
get:
tags: [Registration]
summary: Edição alternativa (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/createSpaceRelation:
post:
tags: [Registration]
summary: Criar relação com espaço
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Relação criada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/removeSpaceRelation:
post:
tags: [Registration]
summary: Remover relação com espaço
responses:
'200': { description: Relação removida, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/deleteRegistration:
post:
tags: [Registration]
summary: Excluir inscrição
responses:
'200': { description: Resultado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/reopenEvaluation:
post:
tags: [Registration]
summary: Reabrir avaliação
responses:
'200': { description: Avaliação reaberta, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/sendEvaluation:
post:
tags: [Registration]
summary: Enviar avaliação
responses:
'200': { description: Avaliação enviada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/setStatusTo:
post:
tags: [Registration]
summary: Definir status da inscrição
responses:
'200': { description: Status alterado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/setMultipleStatus:
post:
tags: [Registration]
summary: Definir status de múltiplas inscrições
responses:
'200': { description: Status alterados, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/send:
post:
tags: [Registration]
summary: Enviar inscrição
responses:
'200': { description: Envio efetuado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/saveEvaluation:
post:
tags: [Registration]
summary: Salvar avaliação
responses:
'200': { description: Avaliação salva, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/saveEvaluationAndChangeStatus:
post:
tags: [Registration]
summary: Salvar avaliação e mudar status
responses:
'200': { description: Salvo e status alterado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/valuersExceptionsList:
patch:
tags: [Registration]
summary: Atualizar lista de exceções de avaliadores
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Lista atualizada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/validateEntity:
post:
tags: [Registration]
summary: Validar entidade
responses:
'200': { description: OK/erros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/validateProperties:
post:
tags: [Registration]
summary: Validar propriedades
responses:
'200': { description: OK/erros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/evaluation:
get:
tags: [Registration]
summary: Página de avaliação (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/registration/sendEditableFields:
post:
tags: [Registration]
summary: Solicitar campos editáveis
responses:
'200': { description: Solicitação enviada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/registration/reopenEditableFields:
post:
tags: [Registration]
summary: Reabrir campos editáveis
responses:
'200': { description: Reabertura solicitada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Term
/api/term/list:
get:
tags: [Term]
summary: Listar termos (taxonomias)
parameters: [ { in: query, name: taxonomy, required: false, schema: { type: string } } ]
responses:
'200': { description: Termos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/term/find:
get:
tags: [Term]
summary: Buscar termos
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Termos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/term/findOne:
get:
tags: [Term]
summary: Buscar um termo
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Termo, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/term/describe:
get:
tags: [Term]
summary: Descrever metadados de Termo
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/term/filters:
get:
tags: [Term]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Subsite
/api/subsite/find:
get:
tags: [Subsite]
summary: Buscar subsites
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Subsites, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/subsite/findOne:
get:
tags: [Subsite]
summary: Buscar um subsite
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Subsite, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/subsite/describe:
get:
tags: [Subsite]
summary: Descrever metadados do Subsite
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/subsite/filters:
get:
tags: [Subsite]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/subsite/getTypes:
get:
tags: [Subsite]
summary: Listar tipos de Subsite
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/subsite/getTypeGroups:
get:
tags: [Subsite]
summary: Listar grupos de tipos de Subsite
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Notification
/api/notification/find:
get:
tags: [Notification]
summary: Buscar notificações
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Notificações, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/notification/findOne:
get:
tags: [Notification]
summary: Buscar uma notificação
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Notificação, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/notification/describe:
get:
tags: [Notification]
summary: Descrever metadados da Notificação
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/notification/filters:
get:
tags: [Notification]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# EventOccurrence
/api/eventOccurrence/find:
get:
tags: [EventOccurrence]
summary: Buscar ocorrências de eventos
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Ocorrências, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/eventOccurrence/findOne:
get:
tags: [EventOccurrence]
summary: Buscar uma ocorrência de evento
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Ocorrência, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/eventOccurrence/describe:
get:
tags: [EventOccurrence]
summary: Descrever metadados da ocorrência de evento
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/eventOccurrence/filters:
get:
tags: [EventOccurrence]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# EventAttendance
/api/eventAttendance/find:
get:
tags: [EventAttendance]
summary: Buscar presenças em eventos
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Registros de presença, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/eventAttendance/findOne:
get:
tags: [EventAttendance]
summary: Buscar um registro de presença
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Presença, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/eventAttendance/describe:
get:
tags: [EventAttendance]
summary: Descrever metadados do registro de presença
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/eventAttendance/filters:
get:
tags: [EventAttendance]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# RegistrationEvaluation
/api/registrationEvaluation/find:
get:
tags: [RegistrationEvaluation]
summary: Buscar avaliações de inscrições
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Avaliações, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/registrationEvaluation/findOne:
get:
tags: [RegistrationEvaluation]
summary: Buscar uma avaliação
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Avaliação, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/registrationEvaluation/describe:
get:
tags: [RegistrationEvaluation]
summary: Descrever metadados da avaliação de inscrição
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/registrationEvaluation/filters:
get:
tags: [RegistrationEvaluation]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# ChatMessage
/api/chatMessage/find:
get:
tags: [RegistrationEvaluation]
summary: Buscar mensagens de chat
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Mensagens, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/chatMessage/findOne:
get:
tags: [RegistrationEvaluation]
summary: Buscar uma mensagem
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Mensagem, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/chatMessage/describe:
get:
tags: [RegistrationEvaluation]
summary: Descrever metadados da mensagem
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/chatMessage/filters:
get:
tags: [RegistrationEvaluation]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/chatMessage/getChildrenIds:
get:
tags: [RegistrationEvaluation]
summary: Listar IDs de filhos (threads)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: IDs, content: { application/json: { schema: { type: array, items: { type: integer } } } } }
# EvaluationMethodConfiguration
/api/evaluationMethodConfiguration/find:
get:
tags: [EvaluationMethodConfiguration]
summary: Buscar configurações de método de avaliação
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Configurações, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/evaluationMethodConfiguration/findOne:
get:
tags: [EvaluationMethodConfiguration]
summary: Buscar uma configuração de método de avaliação
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Configuração, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/evaluationMethodConfiguration/describe:
get:
tags: [EvaluationMethodConfiguration]
summary: Descrever metadados
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/evaluationMethodConfiguration/filters:
get:
tags: [EvaluationMethodConfiguration]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/evaluationMethodConfiguration/getTypes:
get:
tags: [EvaluationMethodConfiguration]
summary: Listar tipos
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/evaluationMethodConfiguration/getTypeGroups:
get:
tags: [EvaluationMethodConfiguration]
summary: Listar grupos de tipos
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Seals (module)
/api/seal/find:
get:
tags: [Seals]
summary: Buscar selos
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Selos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/seal/findOne:
get:
tags: [Seals]
summary: Buscar um selo
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Selo, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/seal/describe:
get:
tags: [Seals]
summary: Descrever metadados de Selo
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/seal/filters:
get:
tags: [Seals]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/seal/getTypes:
get:
tags: [Seals]
summary: Listar tipos de Selo
responses:
'200': { description: Tipos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/seal/getTypeGroups:
get:
tags: [Seals]
summary: Listar grupos de tipos de Selo
responses:
'200': { description: Grupos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Apps (UserApp)
/api/app/find:
get:
tags: [Apps]
summary: Buscar apps de usuário
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Apps, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/app/findOne:
get:
tags: [Apps]
summary: Buscar um app de usuário
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: App, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/app/describe:
get:
tags: [Apps]
summary: Descrever metadados do app de usuário
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/app/filters:
get:
tags: [Apps]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Role (UserManagement)
/api/role/find:
get:
tags: [Role]
summary: Buscar roles
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Roles, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/role/findOne:
get:
tags: [Role]
summary: Buscar uma role
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Role, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/role/describe:
get:
tags: [Role]
summary: Descrever metadados da role
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/role/filters:
get:
tags: [Role]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# SystemRole (UserManagement)
/api/system-role/find:
get:
tags: [SystemRole]
summary: Buscar roles de sistema
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Roles de sistema, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/system-role/findOne:
get:
tags: [SystemRole]
summary: Buscar uma role de sistema
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Role de sistema, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/system-role/describe:
get:
tags: [SystemRole]
summary: Descrever metadados
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/system-role/filters:
get:
tags: [SystemRole]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Blame (plugin)
/api/blame/find:
get:
tags: [Blame]
summary: Buscar registros de blame
parameters: [ { $ref: '#/components/parameters/select' }, { $ref: '#/components/parameters/order' }, { $ref: '#/components/parameters/limit' }, { $ref: '#/components/parameters/page' } ]
responses:
'200': { description: Registros, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/api/blame/findOne:
get:
tags: [Blame]
summary: Buscar um registro de blame
parameters: [ { $ref: '#/components/parameters/select' } ]
responses:
'200': { description: Registro, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/blame/describe:
get:
tags: [Blame]
summary: Descrever metadados
responses:
'200': { description: Estrutura de campos, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/api/blame/filters:
get:
tags: [Blame]
summary: Listar filtros disponíveis
responses:
'200': { description: Filtros, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# GeoDivisions
/api/geodivisions/list:
get:
tags: [GeoDivisions]
summary: Listar divisões geográficas
responses:
'200': { description: Divisões, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Core: ALL_* e utilidades
/site/clearCache:
post:
tags: [Site]
summary: Limpar cache da aplicação
responses:
'200': { description: Cache limpo, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Site]
summary: Limpar cache da aplicação
responses:
'200': { description: Cache limpo, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/site/error:
get:
tags: [Site]
summary: Página de erro
parameters: [ { in: query, name: code, required: false, schema: { type: integer } } ]
responses:
'200': { description: HTML de erro, content: { text/html: { schema: { type: string } } } }
/subsite/deleteCache:
post:
tags: [Subsite]
summary: Limpar cache de subsite
responses:
'200': { description: Cache limpo, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Limpar cache de subsite
responses:
'200': { description: Cache limpo, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/auth/logout:
get:
tags: [Auth]
summary: Logout do usuário
responses:
'302': { description: Redireciona para a página inicial }
/agent/setAsUserProfile:
post:
tags: [Agent]
summary: Definir agente como perfil do usuário logado
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Resultado booleano, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Agent]
summary: Definir agente como perfil do usuário logado
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Resultado booleano, content: { application/json: { schema: { type: boolean } } } }
/agent/addRole:
post:
tags: [Agent]
summary: Atribuir role a usuário do agente
parameters:
- { in: query, name: id, required: true, schema: { type: integer } }
- { in: query, name: role, required: true, schema: { type: string } }
- { in: query, name: subsiteId, required: false, schema: { type: integer, nullable: true } }
responses:
'200': { description: Resultado booleano, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Agent]
summary: Atribuir role a usuário do agente
parameters:
- { in: query, name: id, required: true, schema: { type: integer } }
- { in: query, name: role, required: true, schema: { type: string } }
- { in: query, name: subsiteId, required: false, schema: { type: integer, nullable: true } }
responses:
'200': { description: Resultado booleano, content: { application/json: { schema: { type: boolean } } } }
/agent/removeRole:
post:
tags: [Agent]
summary: Remover role de usuário do agente
parameters:
- { in: query, name: id, required: true, schema: { type: integer } }
- { in: query, name: role, required: true, schema: { type: string } }
- { in: query, name: subsiteId, required: false, schema: { type: integer } }
responses:
'200': { description: Resultado booleano, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Agent]
summary: Remover role de usuário do agente
parameters:
- { in: query, name: id, required: true, schema: { type: integer } }
- { in: query, name: role, required: true, schema: { type: string } }
- { in: query, name: subsiteId, required: false, schema: { type: integer } }
responses:
'200': { description: Resultado booleano, content: { application/json: { schema: { type: boolean } } } }
/notification/approve:
post:
tags: [Notification]
summary: Aprovar notificação (executa request associado)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Aprovado, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
get:
tags: [Notification]
summary: Aprovar notificação (executa request associado)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Aprovado, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
/notification/reject:
post:
tags: [Notification]
summary: Rejeitar notificação (cancela request)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Rejeitado, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
get:
tags: [Notification]
summary: Rejeitar notificação (cancela request)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Rejeitado, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
/opportunity/sendEvaluations:
post:
tags: [Opportunity]
summary: Enviar avaliações (ALL_sendEvaluations)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Enviar avaliações (ALL_sendEvaluations)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/publishRegistrations:
post:
tags: [Opportunity]
summary: Publicar inscrições (ALL_publishRegistrations)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Publicar inscrições (ALL_publishRegistrations)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/unPublishRegistrations:
post:
tags: [Opportunity]
summary: Despublicar inscrições (ALL_unPublishRegistrations)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Despublicar inscrições (ALL_unPublishRegistrations)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/reconsolidateResults:
post:
tags: [Opportunity]
summary: Recalcular consolidação de resultados
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Recalcular consolidação de resultados
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/fixNextPhaseRegistrationIds:
post:
tags: [Opportunity]
summary: Corrigir IDs de inscrição na próxima fase
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Corrigir IDs de inscrição na próxima fase
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Trait endpoints comuns (publish/unpublish/archive/unarchive/undelete/destroy/unlock/enqueuePCache)
# Agent
/agent/publish:
post:
tags: [Agent]
summary: Publicar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Publicar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/agent/unpublish:
post:
tags: [Agent]
summary: Despublicar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Despublicar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/agent/archive:
post:
tags: [Agent]
summary: Arquivar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Arquivar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/agent/unarchive:
post:
tags: [Agent]
summary: Desarquivar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Desarquivar agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/agent/undelete:
post:
tags: [Agent]
summary: Restaurar agente (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Restaurar agente (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/agent/destroy:
post:
tags: [Agent]
summary: Destruir agente (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Destruir agente (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/agent/unlock:
post:
tags: [Agent]
summary: Desbloquear edição do agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
get:
tags: [Agent]
summary: Desbloquear edição do agente
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
/agent/enqueuePCache:
post:
tags: [Agent]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string }, description: "'each' ou lista de IDs separados por vírgula" } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Event (traits)
/event/publish:
post:
tags: [Event]
summary: Publicar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Event]
summary: Publicar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/event/unpublish:
post:
tags: [Event]
summary: Despublicar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Event]
summary: Despublicar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/event/archive:
post:
tags: [Event]
summary: Arquivar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
get:
tags: [Event]
summary: Arquivar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
/event/unarchive:
post:
tags: [Event]
summary: Desarquivar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Event]
summary: Desarquivar evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/event/undelete:
post:
tags: [Event]
summary: Restaurar evento (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Event]
summary: Restaurar evento (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/event/destroy:
post:
tags: [Event]
summary: Destruir evento (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Event]
summary: Destruir evento (soft delete)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/event/unlock:
post:
tags: [Event]
summary: Desbloquear edição do evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
get:
tags: [Event]
summary: Desbloquear edição do evento
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } }, text/html: { schema: { type: string } } } }
/event/renewLock:
post:
tags: [Event]
summary: Renovar lock de edição
requestBody:
required: true
content:
application/json: { schema: { type: object, properties: { token: { type: string } }, required: [token] } }
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/event/enqueuePCache:
post:
tags: [Event]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Event]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Space (traits)
/space/publish:
post:
tags: [Space]
summary: Publicar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Space]
summary: Publicar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/space/unpublish:
post:
tags: [Space]
summary: Despublicar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Space]
summary: Despublicar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/space/archive:
post:
tags: [Space]
summary: Arquivar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Space]
summary: Arquivar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/space/unarchive:
post:
tags: [Space]
summary: Desarquivar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Space]
summary: Desarquivar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/space/undelete:
post:
tags: [Space]
summary: Restaurar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Space]
summary: Restaurar espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/space/destroy:
post:
tags: [Space]
summary: Destruir espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Space]
summary: Destruir espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/space/unlock:
post:
tags: [Space]
summary: Desbloquear edição do espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Space]
summary: Desbloquear edição do espaço
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/space/renewLock:
post:
tags: [Space]
summary: Renovar lock de edição
requestBody:
required: true
content:
application/json: { schema: { type: object, properties: { token: { type: string } }, required: [token] } }
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/space/enqueuePCache:
post:
tags: [Space]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Space]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Project (traits)
/project/publish:
post:
tags: [Project]
summary: Publicar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Project]
summary: Publicar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/unpublish:
post:
tags: [Project]
summary: Despublicar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Project]
summary: Despublicar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/archive:
post:
tags: [Project]
summary: Arquivar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Project]
summary: Arquivar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/unarchive:
post:
tags: [Project]
summary: Desarquivar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Project]
summary: Desarquivar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/undelete:
post:
tags: [Project]
summary: Restaurar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Project]
summary: Restaurar projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/destroy:
post:
tags: [Project]
summary: Destruir projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Project]
summary: Destruir projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/project/unlock:
post:
tags: [Project]
summary: Desbloquear edição do projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Project]
summary: Desbloquear edição do projeto
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/project/renewLock:
post:
tags: [Project]
summary: Renovar lock de edição
requestBody:
required: true
content:
application/json: { schema: { type: object, properties: { token: { type: string } }, required: [token] } }
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/project/enqueuePCache:
post:
tags: [Project]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Project]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Subsite (traits; sem unlock)
/subsite/publish:
post:
tags: [Subsite]
summary: Publicar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Publicar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/subsite/unpublish:
post:
tags: [Subsite]
summary: Despublicar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Despublicar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/subsite/archive:
post:
tags: [Subsite]
summary: Arquivar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Arquivar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/subsite/unarchive:
post:
tags: [Subsite]
summary: Desarquivar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Desarquivar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/subsite/undelete:
post:
tags: [Subsite]
summary: Restaurar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Restaurar subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/subsite/destroy:
post:
tags: [Subsite]
summary: Destruir subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Subsite]
summary: Destruir subsite
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/subsite/enqueuePCache:
post:
tags: [Subsite]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Subsite]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Opportunity (traits comuns)
/opportunity/publish:
post:
tags: [Opportunity]
summary: Publicar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Publicar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/unpublish:
post:
tags: [Opportunity]
summary: Despublicar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Despublicar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/archive:
post:
tags: [Opportunity]
summary: Arquivar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Arquivar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/unarchive:
post:
tags: [Opportunity]
summary: Desarquivar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Desarquivar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/undelete:
post:
tags: [Opportunity]
summary: Restaurar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Restaurar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/destroy:
post:
tags: [Opportunity]
summary: Destruir oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Destruir oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/unlock:
post:
tags: [Opportunity]
summary: Desbloquear edição da oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Opportunity]
summary: Desbloquear edição da oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: token, required: false, schema: { type: string } } ]
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/opportunity/renewLock:
post:
tags: [Opportunity]
summary: Renovar lock de edição
requestBody:
required: true
content:
application/json: { schema: { type: object, properties: { token: { type: string } }, required: [token] } }
responses:
'200': { description: OK, content: { application/json: { schema: { type: boolean } } } }
/opportunity/enqueuePCache:
post:
tags: [Opportunity]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Opportunity]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Seals (traits; sem unlock)
/seal/publish:
post:
tags: [Seals]
summary: Publicar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Seals]
summary: Publicar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/unpublish:
post:
tags: [Seals]
summary: Despublicar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Seals]
summary: Despublicar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/archive:
post:
tags: [Seals]
summary: Arquivar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Seals]
summary: Arquivar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/unarchive:
post:
tags: [Seals]
summary: Desarquivar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Seals]
summary: Desarquivar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Desarquivado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/undelete:
post:
tags: [Seals]
summary: Restaurar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Seals]
summary: Restaurar selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/destroy:
post:
tags: [Seals]
summary: Destruir selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Seals]
summary: Destruir selo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/enqueuePCache:
post:
tags: [Seals]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Seals]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# User (traits: soft delete, entity actions)
/user/undelete:
post:
tags: [User]
summary: Restaurar usuário
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [User]
summary: Restaurar usuário
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/user/destroy:
post:
tags: [User]
summary: Destruir usuário
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [User]
summary: Destruir usuário
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/user/enqueuePCache:
post:
tags: [User]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [User]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Role (traits: draft, soft delete)
/role/publish:
post:
tags: [Role]
summary: Publicar role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Role]
summary: Publicar role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/role/unpublish:
post:
tags: [Role]
summary: Despublicar role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Role]
summary: Despublicar role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/role/undelete:
post:
tags: [Role]
summary: Restaurar role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Role]
summary: Restaurar role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/role/destroy:
post:
tags: [Role]
summary: Destruir role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Role]
summary: Destruir role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/role/enqueuePCache:
post:
tags: [Role]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Role]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# SystemRole (traits: draft, soft delete)
/system-role/publish:
post:
tags: [SystemRole]
summary: Publicar system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [SystemRole]
summary: Publicar system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Publicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/system-role/unpublish:
post:
tags: [SystemRole]
summary: Despublicar system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [SystemRole]
summary: Despublicar system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Despublicado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/system-role/undelete:
post:
tags: [SystemRole]
summary: Restaurar system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [SystemRole]
summary: Restaurar system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/system-role/destroy:
post:
tags: [SystemRole]
summary: Destruir system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [SystemRole]
summary: Destruir system-role
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/system-role/enqueuePCache:
post:
tags: [SystemRole]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [SystemRole]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Apps (traits: soft delete)
/app/undelete:
post:
tags: [Apps]
summary: Restaurar app
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Apps]
summary: Restaurar app
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Restaurado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/app/destroy:
post:
tags: [Apps]
summary: Destruir app
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Apps]
summary: Destruir app
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Destruído, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/app/enqueuePCache:
post:
tags: [Apps]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get:
tags: [Apps]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
get_agent:
tags: [Agent]
summary: Recriar cache de permissões (fila)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: users, required: false, schema: { type: string } } ]
responses:
'200': { description: Enfileirado, content: { application/json: { schema: { type: boolean } } } }
# Para brevidade, os mesmos endpoints (publish/unpublish/archive/unarchive/undelete/destroy/unlock/enqueuePCache) valem para:
# Event (/event/*), Space (/space/*), Project (/project/*), Subsite (/subsite/* [sem unlock]), Opportunity (/opportunity/*), Seals (/seal/* [sem unlock]),
# User (/user/undelete, /user/destroy, /user/enqueuePCache), Role (/role/* exceto unlock/archive? inclui publish/unpublish/undelete/destroy/enqueue), SystemRole (idem), Apps (/app/undelete,/app/destroy,/app/enqueuePCache).
# Se desejar, posso expandir explicitamente todos agora — mantendo este comentário para sinalizar a paridade com Agent.
# Opportunity (extras dos traits específicos)
/opportunity/duplicate:
post:
tags: [Opportunity]
summary: Duplicar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Oportunidade duplicada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Duplicar oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Oportunidade duplicada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/generatemodel:
post:
tags: [Opportunity]
summary: Gerar modelo de oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Modelo gerado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Gerar modelo de oportunidade
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Modelo gerado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/opportunity/generateopportunity:
post:
tags: [Opportunity]
summary: Gerar oportunidade a partir de modelo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Oportunidade gerada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
get:
tags: [Opportunity]
summary: Gerar oportunidade a partir de modelo
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Oportunidade gerada, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Reports: CSV dinâmico via ALL_csvDynamicGraphic
/reports/csvDynamicGraphic:
get:
tags: [Reports]
summary: Exportar CSV de gráfico dinâmico
parameters: [ { in: query, name: opportunity_id, required: true, schema: { type: integer } }, { in: query, name: graphicId, required: true, schema: { type: integer } } ]
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
post:
tags: [Reports]
summary: Exportar CSV de gráfico dinâmico
parameters: [ { in: query, name: opportunity_id, required: true, schema: { type: integer } }, { in: query, name: graphicId, required: true, schema: { type: integer } } ]
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/panel/setUrlCookie:
post:
tags: [Panel]
summary: Definir cookie de URL (navegação do painel)
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/permissioncache/recreate:
get:
tags: [PermissionCache]
summary: Recriar cache de permissões
responses:
'200': { description: OK, content: { text/html: { schema: { type: string } }, application/json: { schema: { type: object, additionalProperties: true } } } }
/file/index:
post:
tags: [File]
summary: Upload de arquivo
requestBody:
required: true
content:
multipart/form-data: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Arquivo criado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/file/privateFile:
get:
tags: [File]
summary: Obter arquivo privado (se permitido)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Arquivo, content: { application/octet-stream: { schema: { type: string, format: binary } } } }
/evaluationMethodConfiguration/reopenValuerEvaluations:
post:
tags: [EvaluationMethodConfiguration]
summary: Reabrir avaliações de um avaliador
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/evaluationMethodConfiguration/disableValuer:
post:
tags: [EvaluationMethodConfiguration]
summary: Desabilitar avaliador
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/evaluationMethodConfiguration/enableValuer:
post:
tags: [EvaluationMethodConfiguration]
summary: Habilitar avaliador
responses:
'200': { description: OK, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# =========================
# Módulos: rotas não-API e utilitários
# =========================
# ProjectMonitoring
/projectReporting/reportingPhase:
post:
tags: [ProjectMonitoring]
summary: Criar fases de coleta e avaliação
requestBody:
required: true
content:
application/json:
schema: { type: object, additionalProperties: true }
responses:
'200': { description: Fases criadas, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
'400': { description: Erros de validação, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# ThemeCustomizer
/theme-customizer/index:
get:
tags: [ThemeCustomizer]
summary: Página de customização de tema
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
# Search
/search/index:
get:
tags: [Search]
summary: Busca geral (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/search/agents:
get:
tags: [Search]
summary: Busca de agentes (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/search/events:
get:
tags: [Search]
summary: Busca de eventos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/search/projects:
get:
tags: [Search]
summary: Busca de projetos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/search/opportunities:
get:
tags: [Search]
summary: Busca de oportunidades (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/search/spaces:
get:
tags: [Search]
summary: Busca de espaços (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
# Support
/support/registration:
get:
tags: [Support]
summary: Tela de atendimento à inscrição
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/support/getAgentsRelation:
get:
tags: [Support]
summary: Agentes do grupo @support para a oportunidade
parameters: [ { in: query, name: opportunityId, required: true, schema: { type: integer } } ]
responses:
'200': { description: Relações, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
/support/settings:
get:
tags: [Support]
summary: Permissões de campos por agente (oportunidade)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Permissões por agente, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/support/list:
get:
tags: [Support]
summary: Lista de itens de suporte (HTML)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/support/form:
get:
tags: [Support]
summary: Formulário de suporte (HTML)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/support/supportConfig:
get:
tags: [Support]
summary: Configuração de suporte (HTML)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/support/opportunityPermissions:
put:
tags: [Support]
summary: Atualizar permissões de campos de um agente
parameters: [ { in: query, name: opportunityId, required: true, schema: { type: integer } }, { in: query, name: agentId, required: true, schema: { type: integer } } ]
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
application/x-www-form-urlencoded: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Permissões atualizadas, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Spreadsheets
/spreadsheets/entities:
post:
tags: [Spreadsheets]
summary: Geração de planilha de entidades (job)
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Job enfileirado, content: { application/json: { schema: { type: boolean } } } }
/spreadsheets/registrations:
post:
tags: [Spreadsheets]
summary: Geração de planilha de inscrições (job)
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Job enfileirado, content: { application/json: { schema: { type: boolean } } } }
/spreadsheets/evaluations:
post:
tags: [Spreadsheets]
summary: Geração de planilha de avaliações (job)
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Job enfileirado, content: { application/json: { schema: { type: boolean } } } }
/spreadsheets/filesByGroup:
get:
tags: [Spreadsheets]
summary: Listar arquivos por grupo da entidade
parameters: [ { in: query, name: entityType, required: true, schema: { type: string } }, { in: query, name: id, required: true, schema: { type: integer } }, { in: query, name: group, required: true, schema: { type: string } } ]
responses:
'200': { description: Arquivos, content: { application/json: { schema: { type: array, items: { type: object, additionalProperties: true } } } } }
# Seals
/seal/index:
post:
tags: [Seals]
summary: Criar selo
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
application/x-www-form-urlencoded: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Selo criado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/seal/sealRelation:
get:
tags: [Seals]
summary: Visualizar relação de selo (HTML)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/seal/printSealRelation:
get:
tags: [Seals]
summary: Imprimir relação de selo (HTML)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/seal/create:
get:
tags: [Seals]
summary: Página de criação de selo (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
# Reports
/reports/agents:
get:
tags: [Reports]
summary: Relatório de agentes (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/spaces:
get:
tags: [Reports]
summary: Relatório de espaços (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/events:
get:
tags: [Reports]
summary: Relatório de eventos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/projects:
get:
tags: [Reports]
summary: Relatório de projetos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/opportunities:
get:
tags: [Reports]
summary: Relatório de oportunidades (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/files:
get:
tags: [Reports]
summary: Relatório de arquivos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/registrations:
get:
tags: [Reports]
summary: Relatório de inscrições (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/printReports:
get:
tags: [Reports]
summary: Página de impressão de relatórios (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/reports/exportRegistrationsByStatus:
get:
tags: [Reports]
summary: Exportar CSV de inscrições por status
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/registrationsByEvaluationStatusBar:
get:
tags: [Reports]
summary: Exportar CSV de inscrições por faixas de avaliação
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/exportRegistrationsByEvaluation:
get:
tags: [Reports]
summary: Exportar CSV de inscrições por avaliação
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/exportRegistrationsByEvaluationStatus:
get:
tags: [Reports]
summary: Exportar CSV de inscrições por status de avaliação
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/exportRegistrationsByCategory:
get:
tags: [Reports]
summary: Exportar CSV por categoria
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/exportRegistrationsDraftVsSent:
get:
tags: [Reports]
summary: Exportar CSV de rascunhos vs enviadas
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/registrationsByTime:
get:
tags: [Reports]
summary: Exportar CSV por tempo
responses:
'200': { description: CSV, content: { text/csv: { schema: { type: string, format: binary } } } }
/reports/getGraphic:
get:
tags: [Reports]
summary: Dados de gráfico
responses:
'200': { description: Dados, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/reports/saveGraphic:
post:
tags: [Reports]
summary: Salvar gráfico
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Salvo, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/reports/dataOpportunityReport:
get:
tags: [Reports]
summary: Dados para relatório por oportunidade
responses:
'200': { description: Dados, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# Panel
/panel/index:
get:
tags: [Panel]
summary: Painel geral (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/panel/agents:
get:
tags: [Panel]
summary: Painel de agentes (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/panel/spaces:
get:
tags: [Panel]
summary: Painel de espaços (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/panel/projects:
get:
tags: [Panel]
summary: Painel de projetos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/panel/events:
get:
tags: [Panel]
summary: Painel de eventos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/panel/terms:
get:
tags: [Panel]
summary: Painel de termos (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
# OpportunityAccountability
/accountability/registration:
get:
tags: [OpportunityAccountability]
summary: Tela de prestação de contas (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/accountability/publishedResult:
post:
tags: [OpportunityAccountability]
summary: Marcar publicação de resultado
responses:
'200': { description: Resultado marcado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/accountability/openField:
post:
tags: [OpportunityAccountability]
summary: Abrir campo para edição
responses:
'200': { description: Campo aberto, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/accountability/closeField:
post:
tags: [OpportunityAccountability]
summary: Fechar campo para edição
responses:
'200': { description: Campo fechado, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
# OpportunityWorkplan
/workplan/index:
get:
tags: [OpportunityWorkplan]
summary: Obter plano de trabalho (JSON)
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Dados do plano, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/workplan/save:
post:
tags: [OpportunityWorkplan]
summary: Salvar plano de trabalho
requestBody:
required: true
content:
application/json: { schema: { type: object, additionalProperties: true } }
responses:
'200': { description: Plano salvo, content: { application/json: { schema: { type: object, additionalProperties: true } } } }
/workplan/goal:
delete:
tags: [OpportunityWorkplan]
summary: Remover meta
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Removido, content: { application/json: { schema: { type: boolean } } } }
/workplan/delivery:
delete:
tags: [OpportunityWorkplan]
summary: Remover entrega
parameters: [ { in: query, name: id, required: true, schema: { type: integer } } ]
responses:
'200': { description: Removido, content: { application/json: { schema: { type: boolean } } } }
# FAQ
/faq/index:
get:
tags: [FAQ]
summary: Página de FAQ (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
# EventImporter
/eventimporter/downloadExample:
get:
tags: [EventImporter]
summary: Baixar arquivo de exemplo de importação
responses:
'200': { description: Arquivo, content: { application/octet-stream: { schema: { type: string, format: binary } } } }
/eventimporter/processFile:
get:
tags: [EventImporter]
summary: Processar arquivo de importação
responses:
'200': { description: Resultado do processamento, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
# LGPD
/lgpd/view:
get:
tags: [LGPD]
summary: Visualizar termo LGPD (HTML)
parameters: [ { in: query, name: 0, required: false, schema: { type: string } } ]
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/lgpd/accept:
get:
tags: [LGPD]
summary: Página de aceite LGPD (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
post:
tags: [LGPD]
summary: Aceitar termo LGPD
responses:
'200': { description: Redirecionamento/OK, content: { application/json: { schema: { type: object, additionalProperties: true } }, text/html: { schema: { type: string } } } }
# Home
/home/index:
get:
tags: [Home]
summary: Página inicial (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
# BaseV1EmbedTools
/embedtools/formbuilder:
get:
tags: [BaseV1EmbedTools]
summary: Form Builder (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/registrationmanager:
get:
tags: [BaseV1EmbedTools]
summary: Gerenciador de inscrições (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/supportbuilder:
get:
tags: [BaseV1EmbedTools]
summary: Builder de suporte (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/evaluationmanager:
get:
tags: [BaseV1EmbedTools]
summary: Gerenciador de avaliação (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/opportunityresults:
get:
tags: [BaseV1EmbedTools]
summary: Resultados da oportunidade (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/registrationform:
get:
tags: [BaseV1EmbedTools]
summary: Formulário de inscrição (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/reportmanager:
get:
tags: [BaseV1EmbedTools]
summary: Gerenciador de relatórios (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/evaluationforms:
get:
tags: [BaseV1EmbedTools]
summary: Formulários de avaliação (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/registrationview:
get:
tags: [BaseV1EmbedTools]
summary: Visualização da inscrição (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/valuers:
get:
tags: [BaseV1EmbedTools]
summary: Lista de avaliadores (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/registrationevaluationtionformview:
get:
tags: [BaseV1EmbedTools]
summary: Visualização de avaliação (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/fieldsvisible:
get:
tags: [BaseV1EmbedTools]
summary: Campos visíveis (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/evaluationlist:
get:
tags: [BaseV1EmbedTools]
summary: Listas de avaliações (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/sopportlist:
get:
tags: [BaseV1EmbedTools]
summary: Lista de suporte (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/supporteditview:
get:
tags: [BaseV1EmbedTools]
summary: Edição de suporte (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/registrationformpreview:
get:
tags: [BaseV1EmbedTools]
summary: Pré-visualização do formulário de inscrição (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/sidebarleftevaluations:
get:
tags: [BaseV1EmbedTools]
summary: Sidebar de avaliações (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
/embedtools/registrationformedit:
get:
tags: [BaseV1EmbedTools]
summary: Edição de campos editáveis (HTML)
responses:
'200': { description: HTML, content: { text/html: { schema: { type: string } } } }
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
parameters:
select:
name: '@select'
in: query
description: Seleciona campos e relações (ex. id,name,owner.name)
schema: { type: string }
required: false
order:
name: '@order'
in: query
description: Ordenação. Ex. "name ASC, id DESC"
schema: { type: string }
required: false
limit:
name: '@limit'
in: query
description: Limite de registros por página
schema: { type: integer, minimum: 1 }
required: false
page:
name: '@page'
in: query
description: Número da página (com @limit)
schema: { type: integer, minimum: 1 }
required: false
type:
name: '@type'
in: query
description: Formato de saída (json, html, xml)
schema: { type: string }
required: false
files:
name: '@files'
in: query
description: Incluir grupos de arquivos (ex. (avatar.avatarSmall,header):name,url)
schema: { type: string }
required: false
seals:
name: '@seals'
in: query
description: Filtrar por selos aplicados (ids separados por vírgula)
schema: { type: string }
required: false
keyword:
name: '@keyword'
in: query
description: Palavra-chave de busca textual
schema: { type: string }
required: false
count:
name: '@count'
in: query
description: Quando presente, retorna apenas o total de itens (altera o formato da resposta).
schema: { type: integer, enum: [1] }
required: false
responses:
Html200:
description: HTML
content:
text/html:
schema: { type: string }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment