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
resultadoUm número a alcançar (vendas, disponibilidade)metricas
projetoUma entrega com etapas (marcos com as tarefas de cada um)marcos ou tarefas
rotinaAlgo que se repete (routine_target vezes por routine_cadence)checkins
sim_naoAconteceu ou nãoconfirmacao

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`AlvoRealizado
manualDigitado (target_value)Digitado no painel, no check-in ou trocado pela API
task_templateVem das tarefas: frequency e frequency_targetTarefas finalizadas do modelo (task_template_id); não aceita troca à mão
integrationDigitado (target_value)Só muda pelo outro sistema, pela integration_key
indicatorDigitado (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 409 invalid_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.

GET /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

NomeTipoObrigatórioDescrição
board_idqueryintegerNãoMetas do quadro.
statusquerystringNãoopen junta não iniciada e em andamento. Rascunho só aparece para quem criou.
situationquerystringNão—
metric_keyquerystringNãoMetas com métrica ativa por integração com esta chave (ex.: sentinel.availability).
typequerystringNão—
priorityquerystringNão—
owner_scopequerystringNão—
team_idqueryintegerNão—
parent_idqueryintegerNãoMetas-filhas da meta informada.
searchquerystringNãoBusca no nome da meta.
per_pagequeryintegerNão—

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/objectives" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Página de metas401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
board_idinteger | nullNão—
owner_scopestringNãoQuadro exige board_id; time exige team_id. Valores: empresa, time, quadro.
team_idinteger | nullNão—
typestringNãoValores: resultado, projeto, rotina, sim_nao.
prioritystringNãoValores: baixa, media, alta, critica.
visibilitystringNãoValores: empresa, time_quadro, participantes.
parent_idinteger | nullNão—
parent_weightnumber | nullNão—
progress_modestringNãoValores: metricas, tarefas, marcos, checkins, confirmacao.
routine_targetinteger | nullNão—
routine_cadencestring | nullNãoValores: day, week, month, .
band_partial_fromnumberNão—
band_exceeded_fromnumberNão—
checkin_cadencestring | nullNãoValores: weekly, biweekly, monthly, .
checkin_weekdayinteger | nullNão—
alertsobject | nullNão—
on_completeobject | nullNão—
participant_idsarray<integer>Não—
milestonesarray<object>Não—
draftbooleanNãoGrava como rascunho (só quem criou vê).
namestringSimAté 255 caracteres.
descriptionstring | nullNão—
achievement_criteriastring | nullNão—
date_startstring (date)NãoObrigatória sem repetição mensal.
date_endstring (date)NãoObrigatória sem repetição mensal; não antes de date_start.
responsible_idinteger | nullNão—
statusstringNãoValores: nao_iniciada, em_andamento. Padrão: "em_andamento".
recurrencestring | nullNãoValores: monthly, .
metricsarray<object>Não—

Exemplo de requisição

cURL
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

Resposta · 201
{
    "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

201 Meta criada (ou reapresentada pela mesma chave, com `Idempotency-Replayed: true`)401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente409 Chave em processamento ou reutilizada com outro conteúdo422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /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
curl "$MICORE_BASE_URL/objectives/{objective}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Meta401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PATCH /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

CampoTipoObrigatórioDescrição
board_idinteger | nullNão—
owner_scopestringNãoQuadro exige board_id; time exige team_id. Valores: empresa, time, quadro.
team_idinteger | nullNão—
typestringNãoValores: resultado, projeto, rotina, sim_nao.
prioritystringNãoValores: baixa, media, alta, critica.
visibilitystringNãoValores: empresa, time_quadro, participantes.
parent_idinteger | nullNão—
parent_weightnumber | nullNão—
progress_modestringNãoValores: metricas, tarefas, marcos, checkins, confirmacao.
routine_targetinteger | nullNão—
routine_cadencestring | nullNãoValores: day, week, month, .
band_partial_fromnumberNão—
band_exceeded_fromnumberNão—
checkin_cadencestring | nullNãoValores: weekly, biweekly, monthly, .
checkin_weekdayinteger | nullNão—
alertsobject | nullNão—
on_completeobject | nullNão—
participant_idsarray<integer>Não—
milestonesarray<object>Não—
namestringNãoAté 255 caracteres.
descriptionstring | nullNão—
achievement_criteriastring | nullNão—
date_startstring (date)Não—
date_endstring (date)Não—
responsible_idinteger | nullNão—
statusstringNãoValores: nao_iniciada, em_andamento.
recurrencestring | nullNãoValores: monthly, .
metricsarray<object>Não—

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta editada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /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

NomeTipoObrigatórioDescrição
per_pagequeryintegerNão—

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/objectives/{objective}/metrics/{metric}/history" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Página do histórico401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/publish" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Meta publicada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /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

NomeTipoObrigatórioDescrição
per_pagequeryintegerNão—

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/objectives/{objective}/checkins" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Página de check-ins401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
confidencestringSimValores: no_ritmo, em_risco, fora_do_ritmo.
commentstring | nullNãoAté 2000 caracteres.
blockerstring | nullNãoAté 2000 caracteres.
metric_valuesobjectNão—

Exemplo de requisição

cURL
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

Resposta · 201
{
    "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

201 Check-in registrado401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PUT /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

CampoTipoObrigatórioDescrição
donebooleanSim—

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta com o marco atualizado401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
tasksstringSimAté 20000 caracteres.

Exemplo de requisição

cURL
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

Resposta · 201
{
    "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

201 Tarefas criadas e ligadas ao marco401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
task_idintegerSim—
milestone_idinteger | nullNão—

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta com a tarefa ligada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
DELETE /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
curl -X DELETE "$MICORE_BASE_URL/objectives/{objective}/tasks/{task}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Meta sem a tarefa401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PUT /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

CampoTipoObrigatórioDescrição
milestone_idinteger | nullSim—

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta com os marcos atualizados401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
notestring | nullNãoAté 2000 caracteres.

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta confirmada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
DELETE /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
curl -X DELETE "$MICORE_BASE_URL/objectives/{objective}/confirm" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Confirmação desfeita401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
resultstringSimValores: superada, atingida, parcialmente_atingida, nao_atingida, cancelada.
notestring | nullNãoAté 2000 caracteres.
unfinished_tasks_actionstringNãoValores: keep, unlink, archive. Padrão: "keep".
lessons_workedstring | nullNãoAté 5000 caracteres.
lessons_changestring | nullNãoAté 5000 caracteres.
override_reasonstring | nullNãoPor que o resultado é diferente do sugerido pelas faixas. Até 2000 caracteres.

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta encerrada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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
curl -X POST "$MICORE_BASE_URL/objectives/{objective}/reopen" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "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

200 Meta reaberta401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
tasks_actionstringNãoValores: unlink, delete. Padrão: "unlink".

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta cancelada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PUT /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

CampoTipoObrigatórioDescrição
valuenumberSim—
notestring | nullNãoAté 500 caracteres.

Exemplo de requisição

cURL
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

Resposta · 200
{
    "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

200 Meta com a métrica atualizada401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /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

CampoTipoObrigatórioDescrição
keystringSim—
valuenumberSim—
datestring (date)Não—
notestring | nullNãoAté 500 caracteres.

Exemplo de requisição

cURL
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

Resposta · 200
{
    "data": {
        "key": "string",
        "date": "2026-10-20",
        "value": 1,
        "metrics": [
            {
                "objective_id": 1,
                "metric_id": 1,
                "objective_name": "string"
            }
        ]
    }
}

Respostas possíveis

200 Métricas atualizadas401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant