Documentation Index
Fetch the complete documentation index at: https://docs.mivicall.com/llms.txt
Use this file to discover all available pages before exploring further.
Multi-tenancy
Cada clínica = um tenant. Toda a API é tenant-scoped: a API key identifica o tenant, todas as listagens/escritas vivem dentro dele. Nunca vês dados de outra clínica.Professionals (médicos)
Cada profissional pertence a 1 tenant. Temname, title, specialty, bio, opcionalmente email. Não tem login — é uma entidade de agendamento, não um utilizador.
Service types (tipos de consulta)
name, durationMinutes, bufferMinutes, priceEur, lista de eligibleProfessionalIds. A AI ao marcar verifica se o profissional escolhido pode executar o serviço.
Availability rules
Horários recorrentes por dia da semana e por profissional:09:00-13:00 e 14:00-19:00).
Excepções (folgas, feriados, dias com horário diferente) vivem em availability_exceptions — sobrepõem-se às regras recorrentes.
Appointments (marcações)
Transições de status
Calls (chamadas)
Cada chamada Telnyx fica registada com:from_number,to_number— E.164 (+351...)started_at,ended_at,duration_secondsstatus—in_progress,completed,failedoutcome—booking_created,info_only,handoff_to_human,voicemail, etc.recording_url— path R2 (signed URL viaGET /v1/calls/:id/recording)
transcription_final— texto do que foi ditotool_call— function call do LLM (check_availability, etc.)tool_result— resposta da nossa APIspeech— frase pronunciada pela AI
Patients (RGPD)
Pacientes NÃO são utilizadores. Existem como edges ligadas a marcações via:patient_phone_hash(HMAC-SHA256 + salt) — usado para lookups sem expor PIIpatient_phone_encrypted(AES-256-GCM) — desencriptado on-demand para SMS
Tenant config (jsonb)
Personalização da AI por clínica:Idempotency
Endpoints de escrita (POST, PATCH) aceitam header Idempotency-Key. Garantia: a mesma key dentro da mesma janela de 24h devolve a resposta original sem re-executar a acção.
Recomendado para integrações PMS — usa um identificador estável do teu lado (ex.: pms-checkin-{appointmentId}).