Pular para o conteúdo principal

Metas

Uma Meta representa o objetivo financeiro principal do usuário. Cada usuário tem uma meta ativa por vez, e ela molda diretamente o tom e as prioridades do plano financeiro, money moves e respostas do coach de IA.

Tipos de meta:

  • "savings" — o usuário está trabalhando para atingir um alvo de poupança (ex.: fundo de emergência, entrada para imóvel)
  • "debt" — o usuário está focado em quitar dívidas (ex.: cartão de crédito, empréstimos estudantis)

Referência do objeto

CampoTipoDescrição
idstringIdentificador único desta meta
user_idstringO usuário Ozzie a quem esta meta pertence
goal_type"savings" | "debt"O tipo de meta financeira
goal_namestringUm rótulo legível para a meta (ex.: "Fundo de Emergência")
target_amountnumberO valor em dinheiro que o usuário está tentando atingir ou eliminar
starting_amountnumberO saldo atual ou valor da dívida do usuário no momento da criação da meta
cadence"weekly" | "biweekly" | "twice_monthly" | "monthly"Com que frequência o usuário quer fazer contribuições de progresso
next_move_datestring (ISO 8601)A próxima data agendada para uma contribuição de money move
created_atstring (ISO 8601)Timestamp de quando a meta foi criada

GET /v1/users/{user_id}/goals

Recupera a meta atualmente ativa do usuário. Retorna um único objeto de meta (usuários têm uma meta ativa por vez).

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
user_idstringSimO ID do usuário Ozzie

Requisição

curl https://api.ozzieapp.com/v1/users/usr_4f8a1b2c3d/goals \
-H "Authorization: Bearer ozp_Y2xpZW50X2ExYjJjM2Q0OnNrX2xpdmVfeEs5bVAycVI3dEwu"

Resposta

{
"object": "goal",
"data": {
"id": "goal_9c2e7a1b4d",
"user_id": "usr_4f8a1b2c3d",
"goal_type": "savings",
"goal_name": "Emergency Fund",
"target_amount": 10000.00,
"starting_amount": 1200.00,
"cadence": "biweekly",
"next_move_date": "2025-05-19T00:00:00Z",
"created_at": "2025-05-05T14:32:10Z"
}
}

Erros

CódigoStatus HTTPQuando ocorre
UNAUTHORIZED401Credenciais ausentes ou inválidas
NOT_FOUND404O usuário não existe, ou não tem meta ativa

POST /v1/users/{user_id}/goals

Cria ou atualiza a meta ativa do usuário. Se já existe uma meta, esta chamada a substitui completamente pelos novos valores. Não há endpoint PATCH separado — sempre envie o objeto de meta completo.

informação

Definir ou atualizar uma meta fará com que o coach de IA recalibre suas recomendações no próximo chat ou geração de money move. Se um plano existir, ele refletirá a nova meta na próxima vez que POST /plan for chamado.

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
user_idstringSimO ID do usuário Ozzie

Corpo da requisição

CampoTipoObrigatórioDescrição
goal_type"savings" | "debt"SimO tipo de meta
goal_namestringSimUm rótulo curto para a meta. Máx 100 caracteres.
target_amountnumberSimO valor alvo em dinheiro. Deve ser positivo.
starting_amountnumberSimSaldo atual ou dívida atual. Deve ser ≥ 0.
cadence"weekly" | "biweekly" | "twice_monthly" | "monthly"SimFrequência de contribuição

Requisição

curl -X POST https://api.ozzieapp.com/v1/users/usr_4f8a1b2c3d/goals \
-H "Authorization: Bearer ozp_Y2xpZW50X2ExYjJjM2Q0OnNrX2xpdmVfeEs5bVAycVI3dEwu" \
-H "Content-Type: application/json" \
-d '{
"goal_type": "savings",
"goal_name": "Emergency Fund",
"target_amount": 10000.00,
"starting_amount": 1200.00,
"cadence": "biweekly"
}'

Resposta

Retorna o objeto de meta criado ou atualizado completo.

{
"object": "goal",
"data": {
"id": "goal_9c2e7a1b4d",
"user_id": "usr_4f8a1b2c3d",
"goal_type": "savings",
"goal_name": "Emergency Fund",
"target_amount": 10000.00,
"starting_amount": 1200.00,
"cadence": "biweekly",
"next_move_date": "2025-05-19T00:00:00Z",
"created_at": "2025-05-05T14:32:10Z"
}
}

Exemplo de quitação de dívida

curl -X POST https://api.ozzieapp.com/v1/users/usr_4f8a1b2c3d/goals \
-H "Authorization: Bearer ozp_Y2xpZW50X2ExYjJjM2Q0OnNrX2xpdmVfeEs5bVAycVI3dEwu" \
-H "Content-Type: application/json" \
-d '{
"goal_type": "debt",
"goal_name": "Quitar Cartão de Crédito",
"target_amount": 0,
"starting_amount": 4850.00,
"cadence": "monthly"
}'
{
"object": "goal",
"data": {
"id": "goal_7d3f9b2e1a",
"user_id": "usr_4f8a1b2c3d",
"goal_type": "debt",
"goal_name": "Quitar Cartão de Crédito",
"target_amount": 0,
"starting_amount": 4850.00,
"cadence": "monthly",
"next_move_date": "2025-06-01T00:00:00Z",
"created_at": "2025-05-05T15:00:00Z"
}
}

Erros

CódigoStatus HTTPQuando ocorre
UNAUTHORIZED401Credenciais ausentes ou inválidas
NOT_FOUND404O usuário não existe
VALIDATION_ERROR422Campos obrigatórios ausentes, goal_type ou cadence inválidos, target_amount negativo
INVALID_JSON400O corpo da requisição não é JSON válido
dica

Para metas de dívida, defina target_amount como 0 — esse é o estado da meta (dívida zero). Defina starting_amount como o saldo devedor atual.