Olá, Vânia!
Obrigado por compartilhar o seu problema. A mensagem de erro que você mostrou, keyNotFound("id"), é bem específica e nos dá uma pista do que está acontecendo.
Pelo que parece, a sua aplicação iOS está tentando decodificar a resposta da requisição POST e espera encontrar uma chave chamada "id". No entanto, a API que você está usando para agendar a consulta pode estar retornando um JSON que não inclui essa chave.
O fato de funcionar no Insomnia é um ótimo ponto de partida. Isso nos mostra que o agendamento em si está funcionando. A diferença está na resposta que a API envia de volta.
Para te ajudar a solucionar isso, tenho algumas sugestões:
Verifique a Resposta da API: No Insomnia, depois de agendar a consulta, observe a resposta exata que a API retorna. Ela deve ser um JSON. Verifique se existe um campo chamado "id" dentro desse JSON.
Ajuste o struct de Decodificação: No seu código SwiftUI, o struct que você está usando para decodificar a resposta da requisição POST deve ter um campo id. Se a API não estiver retornando um id, você pode precisar ajustar o seu struct para que esse campo seja opcional, usando var id: String?, ou remover a expectativa de receber essa chave.
Código do Curso: Como você mencionou que está fazendo um curso, vale a pena voltar no material e revisar exatamente como o struct de decodificação foi montado e o que a API do curso deveria retornar. Às vezes, um detalhe pequeno na implementação do struct pode causar esse tipo de erro.
Conferir a resposta no Insomnia e compará-la com o seu código de decodificação no SwiftUI é o caminho mais rápido para encontrar a solução.
Espero que ajude! Me avise se você conseguir resolver.