# GoalPublicViewModel

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "ID da meta",
      "format": "uuid"
    },
    "name": {
      "type": "string",
      "description": "Nome da meta"
    },
    "description": {
      "type": "string",
      "description": "Descrição da meta",
      "nullable": true
    },
    "objectiveValue": {
      "type": "number",
      "description": "Valor objetivo da meta"
    },
    "baselineValue": {
      "type": "number",
      "description": "Valor de partida da meta"
    },
    "achievedValue": {
      "type": "number",
      "description": "Valor atingido: último valor registrado no indicador. Nulo se ainda não há valor.",
      "nullable": true
    },
    "progress": {
      "type": "number",
      "description": "Progresso da meta, em porcentagem"
    },
    "status": {
      "type": "string",
      "description": "Status da meta",
      "enum": [
        "ONGOING",
        "ACHIEVED",
        "FAILED"
      ]
    },
    "startDate": {
      "type": "string",
      "description": "Início da vigência da meta",
      "format": "date-time",
      "nullable": true
    },
    "endDate": {
      "type": "string",
      "description": "Fim da vigência da meta",
      "format": "date-time",
      "nullable": true
    },
    "indicator": {
      "description": "Indicador ao qual a meta está ligada",
      "nullable": true,
      "allOf": [
        {
          "$ref": "#/components/schemas/GoalIndicatorPublicViewModel"
        }
      ]
    },
    "createdAt": {
      "type": "string",
      "description": "Data de criação da meta",
      "format": "date-time"
    },
    "updatedAt": {
      "type": "string",
      "description": "Data da última atualização da meta",
      "format": "date-time"
    }
  },
  "required": [
    "id",
    "name",
    "description",
    "objectiveValue",
    "baselineValue",
    "achievedValue",
    "progress",
    "status",
    "startDate",
    "endDate",
    "indicator",
    "createdAt",
    "updatedAt"
  ]
}
```
