AilianceApi.swift
150 lignes · 6798 octets
import Foundation /// HTTP contract used by `SyncEngine`; `AilianceApiClient` implements it, fakes in tests. protocol AilianceApi { func authCle(nom: String, motDePasse: String) async -> AilianceApiClient.ApiResult<AuthCleResponse> func syncStatus(sinceIso: String, ressourcesQuery: String?) async -> AilianceApiClient.ApiResult<SyncStatusResponse> func syncPull(sinceIso: String, ressourcesQuery: String?) async -> AilianceApiClient.ApiResult<SyncPullResponse> func createContact(jsonBody: String) async -> AilianceApiClient.ApiResult<String> func updateContact(id: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func deleteContact(id: String) async -> AilianceApiClient.ApiResult<Void> func createEntreprise(jsonBody: String) async -> AilianceApiClient.ApiResult<String> func updateEntreprise(id: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func deleteEntreprise(id: String) async -> AilianceApiClient.ApiResult<Void> func createProjet(jsonBody: String) async -> AilianceApiClient.ApiResult<String> func updateProjet(id: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func deleteProjet(id: String) async -> AilianceApiClient.ApiResult<Void> func createTache(projetId: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func updateTache(projetId: String, tacheId: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func deleteTache(projetId: String, tacheId: String) async -> AilianceApiClient.ApiResult<Void> func moveTache(projetId: String, tacheId: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> /// Coche/décoche une sous-tâche. Route dédiée : le `PUT` général ne /// transporte que des titres et ne peut donc pas basculer l'état `fait`. func toggleSousTache( projetId: String, tacheId: String, sousTacheId: String ) async -> AilianceApiClient.ApiResult<String> func createInteraction(contactId: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func listRdv() async -> AilianceApiClient.ApiResult<[RendezVousDto]> func createRdv(jsonBody: String) async -> AilianceApiClient.ApiResult<String> func getRdv(id: String) async -> AilianceApiClient.ApiResult<RendezVousDto> func updateRdv(id: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func deleteRdv(id: String) async -> AilianceApiClient.ApiResult<Void> func getRessourcesCatalogue() async -> AilianceApiClient.ApiResult<RessourcesCatalogueDto> func listReservations(genre: String, resourceId: String) async -> AilianceApiClient.ApiResult<[ReservationDto]> func createReservation(genre: String, resourceId: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> func updateReservation( genre: String, resourceId: String, reservationId: String, jsonBody: String ) async -> AilianceApiClient.ApiResult<String> func deleteReservation(genre: String, resourceId: String, reservationId: String) async -> AilianceApiClient.ApiResult<Void> func listIndisponibilites(genre: String, resourceId: String) async -> AilianceApiClient.ApiResult<[IndisponibiliteDto]> func uploadContactCarte( id: String, bytes: Data, filename: String, contentType: String ) async -> AilianceApiClient.ApiResult<String> func uploadContactPhoto( id: String, bytes: Data, filename: String, contentType: String ) async -> AilianceApiClient.ApiResult<String> func downloadContactCarte(id: String) async -> AilianceApiClient.ApiResult<Data> func downloadContactPhoto(id: String) async -> AilianceApiClient.ApiResult<Data> /// POST /api/contacts/:contactId/interactions/:interactionId/audio (multipart, champ `file`). /// Retourne le corps brut (interaction mise à jour au format JSON). func uploadInteractionAudio( contactId: String, interactionId: String, bytes: Data, filename: String ) async -> AilianceApiClient.ApiResult<String> /// GET /api/contacts/:contactId/interactions/:interactionId/audio func downloadInteractionAudio(contactId: String, interactionId: String) async -> AilianceApiClient.ApiResult<Data> /// POST /api/projets/:projetId/notes (JSON body `CreateNoteProjetRequest`). func createNoteProjet(projetId: String, jsonBody: String) async -> AilianceApiClient.ApiResult<String> /// POST /api/projets/:projetId/notes/:noteId/audio (multipart, champ `file`). func uploadNoteProjetAudio( projetId: String, noteId: String, bytes: Data, filename: String ) async -> AilianceApiClient.ApiResult<String> /// GET /api/projets/:projetId/notes/:noteId/audio func downloadNoteProjetAudio(projetId: String, noteId: String) async -> AilianceApiClient.ApiResult<Data> /// DELETE /api/interactions/:interactionId func deleteInteraction(interactionId: String) async -> AilianceApiClient.ApiResult<Void> /// DELETE /api/projets/:projetId/notes/:noteId func deleteNoteProjet(projetId: String, noteId: String) async -> AilianceApiClient.ApiResult<Void> /// POST /api/contacts/:contactId/interactions/:interactionId/transcription /// Relance la transcription côté serveur ; retourne le corps JSON de l'entité mise à jour. func relancerTranscriptionInteraction(contactId: String, interactionId: String) async -> AilianceApiClient.ApiResult<String> /// POST /api/projets/:projetId/notes/:noteId/transcription /// Relance la transcription côté serveur ; retourne le corps JSON de l'entité mise à jour. func relancerTranscriptionNoteProjet(projetId: String, noteId: String) async -> AilianceApiClient.ApiResult<String> } /// Kotlin default parameter values, mirrored as overloads. extension AilianceApi { func syncStatus(sinceIso: String) async -> AilianceApiClient.ApiResult<SyncStatusResponse> { await syncStatus(sinceIso: sinceIso, ressourcesQuery: nil) } func syncPull(sinceIso: String) async -> AilianceApiClient.ApiResult<SyncPullResponse> { await syncPull(sinceIso: sinceIso, ressourcesQuery: nil) } func uploadContactCarte(id: String, bytes: Data, filename: String) async -> AilianceApiClient.ApiResult<String> { await uploadContactCarte(id: id, bytes: bytes, filename: filename, contentType: "image/jpeg") } func uploadContactPhoto(id: String, bytes: Data, filename: String) async -> AilianceApiClient.ApiResult<String> { await uploadContactPhoto(id: id, bytes: bytes, filename: filename, contentType: "image/jpeg") } }
GitRust