O que é

Solicitações são os pedidos que um time faz a outro: um ajuste, uma tela nova, um problema para resolver. O gestor do time que recebe analisa e decide; quando aceita, o pedido vira tarefa num quadro do time.

Pela API, uma integração ou uma IA abre e acompanha solicitações e, com a permissão de decidir, faz a triagem — com as mesmas regras, avisos e histórico do painel.

O que dá para fazer hoje

  • Listar as solicitações abertas pelo usuário e as recebidas pelos times dele.
  • Consultar uma solicitação.
  • Abrir uma solicitação para outro time.
  • Editar ou cancelar uma solicitação ainda em análise.
  • Aceitar para execução ou como ideia, e recusar com motivo.
  • Registrar a conclusão.
  • Contestar uma recusa.

Ciclo de uma solicitação

EstadoSignificadoComo chega
pendingEm análise pelo gestor do time destinatárioAbrir, ou contestar uma recusa
acceptedAceita para execução, com tarefa e responsávelAceitar com execution
backlogAceita como ideia, para distribuir depoisAceitar com backlog
rejectedRecusada, com motivoRecusar
cancelledCancelada pelo autorCancelar

Importante

  • O estado nunca é escrito direto: muda só pelas ações, cada uma com sua permissão.
  • Abrir e todas as ações exigem Idempotency-Key, porque criam tarefa e disparam avisos.
  • Ação num estado que não a permite responde 409 invalid_transition.
  • Leitura exige requests:read; abrir, editar, cancelar e contestar, requests:write; aceitar, recusar e concluir, requests:decide.

Disponibilidade na API

Endpoints de Solicitações

Abra, acompanhe e decida solicitações entre times, do pedido à conclusão. Os exemplos abaixo são gerados pelo contrato OpenAPI oficial.

GET /api/v1/requests

Lista solicitações entre times

Exige `requests:read` e a permissão Solicitações (visualizar). Lista só as solicitações abertas pelo usuário responsável (`box=mine`) e as recebidas pelos times dos quais ele participa (`box=received`); sem `box`, as duas. Mais recentes primeiro.

Parâmetros

NomeTipoObrigatórioDescrição
boxquerystringNãomine: abertas pelo usuário; received: recebidas pelos times dele.
statusquerystringNão—
priorityquerystringNão—
recipient_team_idqueryintegerNão—
requester_team_idqueryintegerNão—
request_type_idqueryintegerNão—
created_fromquerystring (date)NãoAbertas a partir deste dia.
created_toquerystring (date)NãoAbertas até este dia.
resolvedquerybooleanNãotrue: com conclusão registrada; false: ainda sem conclusão. Aceita true/false ou 1/0.
resolved_fromquerystring (date)Não—
resolved_toquerystring (date)Não—
searchquerystringNãoBusca no título e no nome do autor.
per_pagequeryintegerNão—

Exemplo de requisição

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

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 321,
            "title": "Nova tela de relatórios",
            "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
            "status": "accepted",
            "triage_state": "decided",
            "contested": false,
            "contested_at": null,
            "priority": "critical",
            "submitted_priority": "high",
            "request_type": {
                "id": 12,
                "name": "Ajuste"
            },
            "submitted_request_type": {
                "id": 12,
                "name": "Ajuste"
            },
            "requester_team": {
                "id": 2,
                "name": "Comercial"
            },
            "recipient_team": {
                "id": 3,
                "name": "Desenvolvimento"
            },
            "author": {
                "id": 9,
                "name": "Bruno Lima"
            },
            "responsible": {
                "id": 7,
                "name": "Ana Souza"
            },
            "decided_by": {
                "id": 5,
                "name": "Carla Dias"
            },
            "board": {
                "id": 4,
                "name": "Desenvolvimento"
            },
            "task_id": 512,
            "acceptance_type": "execution",
            "return_text": "<p>Entra na próxima semana.</p>",
            "desired_delivery_date": "2026-11-10",
            "expected_delivery_date": "2026-11-05",
            "decided_at": "2026-10-21T09:30:00-03:00",
            "resolved_at": null,
            "resolved_by": null,
            "resolution_source": null,
            "resolution_note": null,
            "attachment_url": null,
            "created_at": "2026-10-20T14:00:00-03:00",
            "updated_at": "2026-10-21T09:30:00-03:00"
        }
    ],
    "links": [],
    "meta": []
}

Respostas possíveis

200 Página de solicitações401 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/requests

Abre uma solicitação para um time

Exige `requests:write` e a permissão Solicitações (criar). A solicitação nasce sempre pendente (`pending`), em análise pelo gestor do time destinatário, que é avisado. O tipo precisa ser ativo do time destinatário; o prazo desejado segue a política do time (obrigatório, opcional ou desabilitado). Sem `requester_team_id`, vale o único time do usuário. Anexo não é enviado pela API.

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
titlestringSimAté 255 caracteres.
descriptionstring | nullNãoHTML aceito.
recipient_team_idintegerSimTime ativo que recebe a solicitação (veja /teams).
request_type_idintegerSimTipo ativo do time destinatário.
requester_team_idintegerNãoTime do usuário que pede; obrigatório quando ele participa de mais de um.
prioritystring | nullNãoSem urgência, vale medium. Valores: critical, high, medium, low.
desired_delivery_datestring | null (date)NãoSegue a política de prazo do time destinatário.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/requests" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","description":null,"recipient_team_id":1,"request_type_id":1,"requester_team_id":1,"priority":"critical","desired_delivery_date":"2026-10-20"}'

Exemplo de resposta JSON

Resposta · 201
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

201 Solicitação aberta ou reapresentada pela mesma chave idempotente401 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/requests/{teamRequest}

Consulta uma solicitação

Exige `requests:read`. Visível ao autor e a quem participa do time destinatário; para os demais responde 404.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/requests/{teamRequest}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Solicitação401 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/requests/{teamRequest}

Edita uma solicitação pendente

Exige `requests:write` e a permissão Solicitações (editar). Edição parcial: só os campos enviados mudam; o resto fica como está. Só o autor edita, e só enquanto a solicitação está pendente (depois da decisão responde 409 `invalid_transition`). O estado nunca é editado aqui: muda pelas ações accept, reject, resolve, cancel e contest. Como no painel, a edição revalida time, tipo e prazo e mantém o gestor do time destinatário como responsável.

Corpo da requisição

CampoTipoObrigatórioDescrição
titlestringNãoAté 255 caracteres.
descriptionstring | nullNão—
recipient_team_idintegerNãoAo trocar o time, envie também um tipo ativo dele.
request_type_idintegerNão—
requester_team_idintegerNão—
prioritystringNãoValores: critical, high, medium, low.
desired_delivery_datestring | null (date)Não—

Exemplo de requisição

cURL
curl -X PATCH "$MICORE_BASE_URL/requests/{teamRequest}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","description":null,"recipient_team_id":1,"request_type_id":1,"requester_team_id":1,"priority":"critical","desired_delivery_date":"2026-10-20"}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Solicitação 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/requests/{teamRequest}/accept

Aceita uma solicitação pendente

Exige `requests:decide` e a permissão Solicitações (resolver solicitações). Só o gestor do time destinatário ou o autor decide. `execution` cria a tarefa no quadro escolhido (do time destinatário, com etapa de backlog) atribuída ao responsável, que precisa participar do quadro; `backlog` cria a tarefa para distribuição e deixa a solicitação como ideia. A urgência vira tag na tarefa, o texto de retorno vira comentário e o autor é avisado. Só solicitações pendentes: as demais respondem 409 `invalid_transition`.

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
acceptance_typestringSimexecution: tarefa com responsável; backlog: ideia para distribuir depois. Valores: execution, backlog.
board_idintegerSimQuadro ativo do time destinatário, com etapa de backlog.
responsible_user_idinteger | nullNãoObrigatório em execution; precisa participar do quadro.
expected_delivery_datestring | null (date)NãoSó em execution; hoje ou futura.
prioritystring | nullNãoSem urgência, mantém a atual. Valores: critical, high, medium, low.
return_textstring | nullNãoRetorno ao autor; vira comentário na tarefa.
request_type_idinteger | nullNãoReclassifica para outro tipo ativo do time.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/requests/{teamRequest}/accept" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"acceptance_type":"execution","board_id":1,"responsible_user_id":1,"expected_delivery_date":"2026-10-20","priority":"critical","return_text":null,"request_type_id":1}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Solicitação aceita (ou reapresentada pela mesma chave idempotente)401 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/requests/{teamRequest}/reject

Recusa uma solicitação pendente

Exige `requests:decide` e a permissão Solicitações (resolver solicitações). Só o gestor do time destinatário ou o autor decide; o motivo é obrigatório e precisa ter texto. O autor é avisado e pode contestar uma vez. Só solicitações pendentes: as demais respondem 409 `invalid_transition`.

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
return_textstringSimMotivo da recusa (HTML aceito; precisa ter texto).
request_type_idinteger | nullNãoReclassifica para outro tipo ativo do time.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/requests/{teamRequest}/reject" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"return_text":"string","request_type_id":1}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Solicitação recusada (ou reapresentada pela mesma chave idempotente)401 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/requests/{teamRequest}/resolve

Registra a conclusão de uma solicitação

Exige `requests:decide` e a permissão Solicitações (resolver solicitações). Vale para solicitações aceitas (`accepted`) ou ideias (`backlog`), por quem participa do quadro da solicitação. Sem `resolved_at`, a conclusão vale agora; repetir com outra chave atualiza a data e a observação, como no painel. Aceitar não conclui: a conclusão é um registro próprio. Outros estados respondem 409 `invalid_transition`.

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
resolved_atstring | null (date-time)NãoSem data, vale agora.
resolution_notestring | nullNãoAté 2000 caracteres.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/requests/{teamRequest}/resolve" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"resolved_at":"2026-10-20T10:00:00-03:00","resolution_note":null}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Conclusão registrada (ou reapresentada pela mesma chave idempotente)401 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/requests/{teamRequest}/cancel

Cancela uma solicitação pendente

Exige `requests:write` e a permissão Solicitações (editar). Só o autor cancela, e só enquanto a solicitação está pendente; o gestor do time destinatário é avisado. Cancelada ou já decidida responde 409 `invalid_transition`. Sem corpo.

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.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/requests/{teamRequest}/cancel" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Solicitação cancelada (ou reapresentada pela mesma chave idempotente)401 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/requests/{teamRequest}/contest

Contesta a recusa de uma solicitação

Exige `requests:write` e a permissão Solicitações (visualizar). Só o autor contesta uma recusa (`rejected`), uma única vez; a solicitação volta para pendente com `triage_state` `contested`, a decisão anterior fica no histórico e o gestor do time destinatário é avisado. Outros estados ou segunda contestação respondem 409 `invalid_transition`.

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
messagestringSimMotivo da contestação (HTML aceito; precisa ter texto).

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/requests/{teamRequest}/contest" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"message":"string"}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 321,
        "title": "Nova tela de relatórios",
        "description": "<p>Precisamos do relatório de vendas por vendedor.</p>",
        "status": "accepted",
        "triage_state": "decided",
        "contested": false,
        "contested_at": null,
        "priority": "critical",
        "submitted_priority": "high",
        "request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "submitted_request_type": {
            "id": 12,
            "name": "Ajuste"
        },
        "requester_team": {
            "id": 2,
            "name": "Comercial"
        },
        "recipient_team": {
            "id": 3,
            "name": "Desenvolvimento"
        },
        "author": {
            "id": 9,
            "name": "Bruno Lima"
        },
        "responsible": {
            "id": 7,
            "name": "Ana Souza"
        },
        "decided_by": {
            "id": 5,
            "name": "Carla Dias"
        },
        "board": {
            "id": 4,
            "name": "Desenvolvimento"
        },
        "task_id": 512,
        "acceptance_type": "execution",
        "return_text": "<p>Entra na próxima semana.</p>",
        "desired_delivery_date": "2026-11-10",
        "expected_delivery_date": "2026-11-05",
        "decided_at": "2026-10-21T09:30:00-03:00",
        "resolved_at": null,
        "resolved_by": null,
        "resolution_source": null,
        "resolution_note": null,
        "attachment_url": null,
        "created_at": "2026-10-20T14:00:00-03:00",
        "updated_at": "2026-10-21T09:30:00-03:00"
    }
}

Respostas possíveis

200 Contestação registrada (ou reapresentada pela mesma chave idempotente)401 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