Metas
Metas da empresa, de times e de quadros: resultado, projeto, rotina e sim ou não, com métricas, indicadores, check-ins, marcos e a meta que se repete todo mês.
O que é
Metas são os objetivos com prazo da empresa, de um time ou de um quadro: "vender 40 planos em novembro", "manter os servidores no ar 99,9% do mês", "lançar o site novo até dezembro". O miCore calcula o progresso, o ritmo (onde a meta deveria estar hoje) e a situação (no prazo, em risco ou atrasada) e sugere o resultado pelas faixas da meta.
Pela API, uma integração ou uma IA cria e acompanha metas, registra check-ins, marca marcos e, principalmente, alimenta o realizado a partir de outro sistema — com as mesmas regras e o mesmo histórico do painel.
O que dá para fazer hoje
- Listar e consultar metas, com filtros por tipo, prioridade, dono, time, quadro, meta maior, etapa, situação, chave de métrica e busca.
- Criar uma meta da empresa, de um time ou de um quadro, inclusive como rascunho e a que se repete todo mês, e publicar o rascunho.
- Editar uma meta, suas métricas, marcos e participantes.
- Registrar check-ins, marcar os marcos sem tarefas e confirmar a meta de sim ou não.
- Encerrar (com o aprendizado), reabrir e cancelar.
- Trocar o realizado de uma métrica, ver o histórico e informar o número de uma chave de integração a todas as metas abertas do dia.
Tipos de meta e de progresso
| `type` | Para quê | `progress_mode` comum |
|---|---|---|
resultado | Um número a alcançar (vendas, disponibilidade) | metricas |
projeto | Uma entrega com etapas (marcos com as tarefas de cada um) | marcos ou tarefas |
rotina | Algo que se repete (routine_target vezes por routine_cadence) | checkins |
sim_nao | Aconteceu ou não | confirmacao |
owner_scope diz de quem é a meta: empresa, time (exige team_id) ou quadro (exige board_id). Metas podem somar numa meta maior (parent_id, com parent_weight em %).
Tipos de métrica
| `source` | Alvo | Realizado |
|---|---|---|
manual | Digitado (target_value) | Digitado no painel, no check-in ou trocado pela API |
task_template | Vem das tarefas: frequency e frequency_target | Tarefas finalizadas do modelo (task_template_id); não aceita troca à mão |
integration | Digitado (target_value) | Só muda pelo outro sistema, pela integration_key |
indicator | Digitado (target_value) | Indicador do sistema (indicator_key, ex.: crm.won_deals, finance.received, workflow.process_completed), com indicator_filters; não aceita troca à mão |
Cada métrica tem direction: aumentar (padrão), reduzir (exige baseline_value, onde se está hoje) ou manter (dentro de tolerance_min e tolerance_max). weight é o peso no progresso da meta (%).
Marcos com tarefas
No projeto, o marco é um grupo de tarefas: cada tarefa principal da meta fica em no máximo um marco. O marco com tarefas (automatic: true) fecha sozinho quando todas as tarefas dele são finalizadas e reabre quando uma volta a ficar aberta; ele traz task_ids, tasks_total e tasks_done. O marco sem tarefas (automatic: false) é marcado à mão.
Com progress_mode: marcos, cada tarefa principal da meta (com ou sem marco) e cada marco sem tarefas valem um item: o progresso é itens feitos ÷ itens, e progress traz items_total e items_done.
Resultado e faixas
progress.percent tem teto de 100; progress.achievement não tem, e passa de 100 quando a meta superou. Pelas faixas (band_partial_from e band_exceeded_from, em % do alvo; 80 e 120 por padrão), progress.suggested_result sugere nao_atingida, parcialmente_atingida, atingida ou superada. O bloco pace mostra o ritmo: tempo passado, % ideal, dias restantes e a projeção. Meta de resultado medida por métricas sem nenhuma métrica fica em 0 (progress.achievement = 0): o progresso não cai para as tarefas.
Meta que se repete todo mês
Com recurrence: monthly, o name enviado é o nome sem o mês. A meta fica com as datas do mês e o nome ganha o mês ("Disponibilidade do sistema Novembro"). No fim do mês ela é encerrada sozinha com o resultado das métricas e a do mês seguinte nasce igual, com o realizado zerado: ativa quando todas as métricas são automáticas e o progresso não depende de check-in nem de confirmação; senão, como rascunho para o responsável revisar. Cancelada, para de repetir.
Importante
- Leitura exige
objectives:read; todo o resto,objectives:write. Os dois andam com a permissão Metas do painel, em que quem vê a meta também edita. - Toda leitura respeita quem pode ver a meta (
visibility): rascunho só para quem criou; criador, responsável e participantes sempre veem. - Criar exige
Idempotency-Key: a mesma chave nunca cria duas metas. - Ação num estado que não a permite responde
409invalid_transition. - Meta arquivada não aparece e responde
404.
Disponibilidade na API
Endpoints de Metas
Liste, crie (da empresa, de time ou de quadro, inclusive como rascunho e a meta mensal), publique, edite, encerre, reabra e cancele metas; registre check-ins, marque marcos, confirme metas de sim ou não e informe o realizado das métricas, inclusive por chave de integração. Os exemplos abaixo são gerados pelo contrato OpenAPI oficial.
/api/v1/objectives
Lista as metas
Exige `objectives:read` e a permissão Metas (visualizar). Metas fora do arquivo, mais recentes primeiro, com as métricas ativas, o progresso e a situação (progresso contra o tempo, a mesma regra da listagem do painel).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
board_idquery | integer | Não | Metas do quadro. |
statusquery | string | Não | open junta não iniciada e em andamento. Rascunho só aparece para quem criou. |
situationquery | string | Não | — |
metric_keyquery | string | Não | Metas com métrica ativa por integração com esta chave (ex.: sentinel.availability). |
typequery | string | Não | — |
priorityquery | string | Não | — |
owner_scopequery | string | Não | — |
team_idquery | integer | Não | — |
parent_idquery | integer | Não | Metas-filhas da meta informada. |
searchquery | string | Não | Busca no nome da meta. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/objectives" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/objectives
Cria uma meta
Exige `objectives:write`, a permissão Metas e `Idempotency-Key` (a mesma chave nunca cria duas metas). Mesma regra do cadastro do painel: o responsável só vale se for do time do quadro, e as métricas passam pela regra única (manual, contada por tarefas de um modelo ou por integração). Com `recurrence: monthly` o `name` é o nome sem o mês: a meta fica com as datas do mês de `date_start` (o mês atual, sem data) e o nome ganha o mês ("Disponibilidade do sistema Novembro"); no fim do mês ela é encerrada sozinha com o resultado das métricas e a do mês seguinte nasce igual, com o realizado zerado.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
board_id | integer | null | Não | — |
owner_scope | string | Não | Quadro exige board_id; time exige team_id. Valores: empresa, time, quadro. |
team_id | integer | null | Não | — |
type | string | Não | Valores: resultado, projeto, rotina, sim_nao. |
priority | string | Não | Valores: baixa, media, alta, critica. |
visibility | string | Não | Valores: empresa, time_quadro, participantes. |
parent_id | integer | null | Não | — |
parent_weight | number | null | Não | — |
progress_mode | string | Não | Valores: metricas, tarefas, marcos, checkins, confirmacao. |
routine_target | integer | null | Não | — |
routine_cadence | string | null | Não | Valores: day, week, month, . |
band_partial_from | number | Não | — |
band_exceeded_from | number | Não | — |
checkin_cadence | string | null | Não | Valores: weekly, biweekly, monthly, . |
checkin_weekday | integer | null | Não | — |
alerts | object | null | Não | — |
on_complete | object | null | Não | — |
participant_ids | array<integer> | Não | — |
milestones | array<object> | Não | — |
draft | boolean | Não | Grava como rascunho (só quem criou vê). |
name | string | Sim | Até 255 caracteres. |
description | string | null | Não | — |
achievement_criteria | string | null | Não | — |
date_start | string (date) | Não | Obrigatória sem repetição mensal. |
date_end | string (date) | Não | Obrigatória sem repetição mensal; não antes de date_start. |
responsible_id | integer | null | Não | — |
status | string | Não | Valores: nao_iniciada, em_andamento. Padrão: "em_andamento". |
recurrence | string | null | Não | Valores: monthly, . |
metrics | array<object> | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"board_id":1,"owner_scope":"empresa","team_id":1,"type":"resultado","priority":"baixa","visibility":"empresa","parent_id":1,"parent_weight":1,"progress_mode":"metricas","routine_target":1,"routine_cadence":"day","band_partial_from":1,"band_exceeded_from":1,"checkin_cadence":"weekly","checkin_weekday":1,"alerts":[],"on_complete":[],"participant_ids":[1],"milestones":[{"id":1,"name":"string","due_date":"2026-10-20"}],"draft":true,"name":"string","description":null,"achievement_criteria":null,"date_start":"2026-10-20","date_end":"2026-10-20","responsible_id":1,"status":"nao_iniciada","recurrence":"monthly","metrics":[{"id":1,"name":"string","source":"manual","direction":"aumentar","baseline_value":1,"tolerance_min":1,"tolerance_max":1,"weight":1,"count_scope":"responsavel","indicator_key":null,"indicator_filters":[],"target_value":1,"current_value":1,"unit":null,"integration_key":null,"task_template_id":1,"user_id":1,"frequency":"day","frequency_target":1}]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}
Exibe uma meta
Exige `objectives:read` e a permissão Metas (visualizar). Meta arquivada responde 404.
Exemplo de requisição
curl "$MICORE_BASE_URL/objectives/{objective}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}
Edita uma meta (parcial)
Exige `objectives:write` e a permissão Metas. Só os campos enviados mudam. `metrics`, quando vem, é a lista completa: as que ficarem de fora são desativadas (com o histórico guardado); use o `id` para manter uma métrica. `status` aceita só não iniciada e em andamento (para encerrar use `/close`); voltar a abrir apaga o resultado do encerramento. Com repetição mensal, `name` é o nome sem o mês. `recurrence: null` tira a repetição e mantém o nome e as datas.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
board_id | integer | null | Não | — |
owner_scope | string | Não | Quadro exige board_id; time exige team_id. Valores: empresa, time, quadro. |
team_id | integer | null | Não | — |
type | string | Não | Valores: resultado, projeto, rotina, sim_nao. |
priority | string | Não | Valores: baixa, media, alta, critica. |
visibility | string | Não | Valores: empresa, time_quadro, participantes. |
parent_id | integer | null | Não | — |
parent_weight | number | null | Não | — |
progress_mode | string | Não | Valores: metricas, tarefas, marcos, checkins, confirmacao. |
routine_target | integer | null | Não | — |
routine_cadence | string | null | Não | Valores: day, week, month, . |
band_partial_from | number | Não | — |
band_exceeded_from | number | Não | — |
checkin_cadence | string | null | Não | Valores: weekly, biweekly, monthly, . |
checkin_weekday | integer | null | Não | — |
alerts | object | null | Não | — |
on_complete | object | null | Não | — |
participant_ids | array<integer> | Não | — |
milestones | array<object> | Não | — |
name | string | Não | Até 255 caracteres. |
description | string | null | Não | — |
achievement_criteria | string | null | Não | — |
date_start | string (date) | Não | — |
date_end | string (date) | Não | — |
responsible_id | integer | null | Não | — |
status | string | Não | Valores: nao_iniciada, em_andamento. |
recurrence | string | null | Não | Valores: monthly, . |
metrics | array<object> | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/objectives/{objective}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"board_id":1,"owner_scope":"empresa","team_id":1,"type":"resultado","priority":"baixa","visibility":"empresa","parent_id":1,"parent_weight":1,"progress_mode":"metricas","routine_target":1,"routine_cadence":"day","band_partial_from":1,"band_exceeded_from":1,"checkin_cadence":"weekly","checkin_weekday":1,"alerts":[],"on_complete":[],"participant_ids":[1],"milestones":[{"id":1,"name":"string","due_date":"2026-10-20"}],"name":"string","description":null,"achievement_criteria":null,"date_start":"2026-10-20","date_end":"2026-10-20","responsible_id":1,"status":"nao_iniciada","recurrence":"monthly","metrics":[{"id":1,"name":"string","source":"manual","direction":"aumentar","baseline_value":1,"tolerance_min":1,"tolerance_max":1,"weight":1,"count_scope":"responsavel","indicator_key":null,"indicator_filters":[],"target_value":1,"current_value":1,"unit":null,"integration_key":null,"task_template_id":1,"user_id":1,"frequency":"day","frequency_target":1}]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/metrics/{metric}/history
Histórico de uma métrica
Exige `objectives:read` e a permissão Metas (visualizar). Cada mudança do realizado, mais recente primeiro: lançamento à mão (somar, subtrair, ajustar) ou número informado por outro sistema, com a diferença, a observação e quem lançou (a pessoa no painel ou o dono da credencial da API). A métrica contada por tarefas não grava histórico. O mesmo histórico aparece no cartão da métrica, na tela da meta.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/objectives/{objective}/metrics/{metric}/history" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"value_after": 1,
"delta": 1,
"note": null,
"author": {
"id": 1,
"name": "string"
},
"created_at": "2026-10-20T10:00:00-03:00"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 1,
"total": 1
}
}Respostas possíveis
/api/v1/objectives/{objective}/publish
Publica um rascunho
Exige `objectives:write` e a permissão Metas. Rascunho só aparece para quem criou e não gera tarefas, check-ins nem alertas; publicado, passa a em andamento. Meta que não é rascunho responde 409 `invalid_transition`. Sem corpo.
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/publish" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/checkins
Check-ins da meta
Exige `objectives:read`. Mais recentes primeiro: confiança, comentário, bloqueio, o realizado informado das métricas manuais e quem fez.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/objectives/{objective}/checkins" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"confidence": "no_ritmo",
"comment": null,
"blocker": null,
"metric_values": [],
"user": {
"id": 1,
"name": "string"
},
"created_at": "2026-10-20T10:00:00-03:00"
}
],
"meta": []
}Respostas possíveis
/api/v1/objectives/{objective}/checkins
Registra um check-in
Exige `objectives:write`. Mesma regra do painel: confiança (`no_ritmo`, `em_risco`, `fora_do_ritmo`), comentário, bloqueio e o realizado das métricas **manuais** (`metric_values` por id; automáticas são ignoradas, e cada valor vira um ajuste no histórico da métrica). Meta encerrada ou rascunho responde 409. A meta não iniciada passa a em andamento.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
confidence | string | Sim | Valores: no_ritmo, em_risco, fora_do_ritmo. |
comment | string | null | Não | Até 2000 caracteres. |
blocker | string | null | Não | Até 2000 caracteres. |
metric_values | object | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/checkins" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"confidence":"no_ritmo","comment":null,"blocker":null,"metric_values":[]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"confidence": "no_ritmo",
"comment": null,
"blocker": null,
"metric_values": [],
"user": {
"id": 1,
"name": "string"
},
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/milestones/{milestone}
Marca ou desmarca um marco
Exige `objectives:write`. Só marco **sem tarefas** (`automatic: false`): `done: true` marca como atingido agora (e avisa os participantes quando o alerta "Marco atingido" está ligado); `false` desfaz. Marco com tarefas fecha e reabre sozinho com elas e responde 409 `invalid_transition`. Na meta de projeto, o progresso conta cada tarefa principal e cada marco sem tarefa como um item (ADR 0934).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
done | boolean | Sim | — |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/objectives/{objective}/milestones/{milestone}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"done":true}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/milestones/{milestone}/tasks
Cria tarefas dentro de um marco
Exige `objectives:write`. Mesma regra do "+ Tarefa neste marco" do painel: cria as tarefas no quadro da meta (uma por linha, na sintaxe das tarefas iniciais: `-` para subtarefa, `#` para comentário, datas como `01/12/2026 - Tarefa`) e liga as principais ao marco, que passa a fechar sozinho com elas (ADR 0934). Meta sem quadro responde 422. `meta.created_task_ids` traz os ids das tarefas principais criadas.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
tasks | string | Sim | Até 20000 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/milestones/{milestone}/tasks" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"tasks":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
},
"meta": {
"created_task_ids": [
1
]
}
}Respostas possíveis
/api/v1/objectives/{objective}/tasks
Liga uma tarefa existente à meta
Exige `objectives:write`. Mesma regra do campo "Meta" do modal da tarefa no painel: a tarefa principal (não subtarefa, não excluída) passa a ser da meta, com as subtarefas junto e o registro no histórico da tarefa. Com `milestone_id`, já entra no marco. Tarefa que era de outra meta sai dos marcos de lá. Quem liga precisa fazer parte do quadro da tarefa (403), menos o administrador. Funciona também em meta da empresa ou de time, sem quadro.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
task_id | integer | Sim | — |
milestone_id | integer | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/tasks" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"task_id":1,"milestone_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/tasks/{task}
Tira uma tarefa da meta
Exige `objectives:write`. A tarefa principal deixa de ser da meta (e dos marcos dela), com as subtarefas junto; a tarefa continua no quadro. Tarefa que não é principal desta meta responde 422.
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/objectives/{objective}/tasks/{task}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/tasks/{task}/milestone
Põe uma tarefa num marco
Exige `objectives:write`. Mesma regra do "mover para marco" do painel: a tarefa principal da meta fica em um marco só; `milestone_id` nulo tira a tarefa de todos os marcos. Os marcos de origem e de destino são reconferidos (fecham ou reabrem conforme as tarefas). Tarefa que não é principal desta meta responde 422.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
milestone_id | integer | null | Sim | — |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/objectives/{objective}/tasks/{task}/milestone" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"milestone_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/confirm
Confirma a meta de sim ou não
Exige `objectives:write`. Só a meta de sim ou não (tipo `sim_nao` ou progresso por `confirmacao`; as outras respondem 409). Envie `multipart/form-data` quando houver evidência (arquivo até 10 MB).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
note | string | null | Não | Até 2000 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/confirm" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"note":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/confirm
Desfaz a confirmação
Exige `objectives:write`. Apaga a confirmação, o comentário e a evidência.
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/objectives/{objective}/confirm" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/close
Encerra uma meta
Exige `objectives:write` e a permissão Metas. Mesma regra do modal de encerramento do painel: `atingida`, `parcialmente_atingida` e `nao_atingida` concluem a meta; `cancelada` cancela. As tarefas pendentes ficam na meta (`keep`, padrão), saem dela (`unlink`) ou vão para o arquivo (`archive`). Meta já encerrada responde 409 `invalid_transition`.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
result | string | Sim | Valores: superada, atingida, parcialmente_atingida, nao_atingida, cancelada. |
note | string | null | Não | Até 2000 caracteres. |
unfinished_tasks_action | string | Não | Valores: keep, unlink, archive. Padrão: "keep". |
lessons_worked | string | null | Não | Até 5000 caracteres. |
lessons_change | string | null | Não | Até 5000 caracteres. |
override_reason | string | null | Não | Por que o resultado é diferente do sugerido pelas faixas. Até 2000 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/close" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"result":"superada","note":null,"unfinished_tasks_action":"keep","lessons_worked":null,"lessons_change":null,"override_reason":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/reopen
Reabre uma meta encerrada
Exige `objectives:write` e a permissão Metas. A meta volta a não iniciada e o resultado do encerramento é apagado. Meta aberta responde 409 `invalid_transition`. Sem corpo.
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/reopen" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/{objective}/cancel
Cancela uma meta
Exige `objectives:write` e a permissão Metas. Mesma regra do cancelar da listagem do painel: as tarefas ativas não finalizadas saem da meta (`unlink`, padrão) ou são excluídas (`delete`, vão para o arquivo). `meta.tasks_affected` diz quantas tarefas foram tratadas. Meta já cancelada responde 409 `invalid_transition`.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
tasks_action | string | Não | Valores: unlink, delete. Padrão: "unlink". |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/cancel" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"tasks_action":"unlink"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
},
"meta": {
"tasks_affected": 1
}
}Respostas possíveis
/api/v1/objectives/{objective}/metrics/{metric}/value
Troca o realizado de uma métrica
Exige `objectives:write` e a permissão Metas. Na métrica manual é o ajuste do painel (com a observação no histórico); na métrica por integração é o número informado pelo outro sistema (o mesmo valor de antes não grava histórico; meta encerrada responde 409). A métrica contada por tarefas de um modelo não aceita (409 `invalid_transition`): o número vem das tarefas finalizadas.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
value | number | Sim | — |
note | string | null | Não | Até 500 caracteres. |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/objectives/{objective}/metrics/{metric}/value" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"value":1,"note":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "resultado",
"priority": "baixa",
"owner_scope": "empresa",
"team": {
"id": 1,
"name": "string"
},
"visibility": "empresa",
"parent": {
"id": 1,
"name": "string",
"weight": 1
},
"progress_mode": "metricas",
"routine": {
"target": 1,
"cadence": "day"
},
"bands": {
"partial_from": 1,
"exceeded_from": 1
},
"checkin": {
"cadence": "weekly",
"weekday": 1
},
"alerts": [],
"on_complete": [],
"participants": [
{
"id": 1,
"name": "string"
}
],
"milestones": [
{
"id": 1,
"name": "string",
"due_date": "2026-10-20",
"done_at": "2026-10-20T10:00:00-03:00",
"automatic": true,
"task_ids": [
1
],
"tasks_total": 1,
"tasks_done": 1
}
],
"confirmation": {
"confirmed_at": "2026-10-20T10:00:00-03:00",
"confirmed_by": 1,
"note": null,
"has_evidence": true
},
"pace": [],
"recurrence": "monthly",
"recurrence_name": null,
"recurrence_source_id": 1,
"description": null,
"achievement_criteria": null,
"board": {
"id": 1,
"name": "string"
},
"responsible": {
"id": 1,
"name": "string"
},
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"status": "rascunho",
"situation": "on_track",
"progress": {
"percent": 1,
"achievement": 1,
"items_total": 1,
"items_done": 1,
"suggested_result": "superada",
"source": "string"
},
"closure": {
"result": "superada",
"note": null,
"lessons_worked": null,
"lessons_change": null,
"override_reason": null,
"closed_at": "2026-10-20T10:00:00-03:00",
"unfinished_tasks_action": "keep"
},
"metrics": [
{
"id": 1,
"name": "string",
"source": "manual",
"integration_key": null,
"indicator_key": null,
"indicator_filters": [],
"direction": "aumentar",
"baseline_value": 1,
"tolerance_min": 1,
"tolerance_max": 1,
"weight": 1,
"count_scope": "responsavel",
"target_value": 1,
"current_value": 1,
"unit": null,
"percent": 1,
"task_template_id": 1,
"user_id": 1,
"frequency": "day",
"frequency_target": 1,
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/objectives/metrics/report
Informa o número de uma chave de integração
Exige `objectives:write` e a permissão Metas. Para outro sistema alimentar metas sem saber o id delas: troca o realizado de todas as métricas ativas por integração com a `key` em metas abertas (não iniciada ou em andamento, fora do arquivo) cujo período contém `date` (hoje, sem data). Lista vazia não é erro: nenhuma meta com a chave naquele dia. Cada mudança fica no histórico da métrica; o mesmo número de antes não grava nada. Usado pelo Sentinel para a disponibilidade dos servidores.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
key | string | Sim | — |
value | number | Sim | — |
date | string (date) | Não | — |
note | string | null | Não | Até 500 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/objectives/metrics/report" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"key":"string","value":1,"date":"2026-10-20","note":null}'Exemplo de resposta JSON
{
"data": {
"key": "string",
"date": "2026-10-20",
"value": 1,
"metrics": [
{
"objective_id": 1,
"metric_id": 1,
"objective_name": "string"
}
]
}
}