Tools har nu en personlig Microsoft To Do-integration för inloggade användare.
/api/microsoft-todo/* för appar och andra klienter./settings/integrations/microsoft-todoauth:webFrån den sidan kan en användare:
Den delade Azure-appen för plattformen kan nu hanteras på två sätt:
MICROSOFT_TODO_*-värden, eller/settings/integrations/microsoft-todo av en acknowledged admin.Miljövariabler har fortfarande företräde när de finns.
Sidan visar nu även en konfigurationspanel med diagnostik för plattformsappen, inklusive:
Den visar nu också en tydlig tenant-/kontotypshint. Det är särskilt viktigt när Microsoft svarar med unauthorized_client: då finns appregistreringen ofta redan, men dess tillåtna kontotyper matchar inte den tenant-inställning som används här.
När plattformsappen inte är miljöstyrd kan acknowledged admins nu spara/uppdatera den delade Microsoft To Do-appen direkt från sidan via AJAX. Själva client secret visas aldrig tillbaka; UI:t rapporterar bara om en secret redan finns sparad.
Rekommenderade delade Microsoft-variabler är nu:
MICROSOFT_TENANT=common
MICROSOFT_CLIENT_ID=
MICROSOFT_CLIENT_SECRET=
MICROSOFT_REDIRECT_URI=
MICROSOFT_DEFAULT_SCOPES="offline_access openid profile User.Read Tasks.ReadWrite"
Äldre Microsoft To Do-specifika alias accepteras fortfarande också:
MICROSOFT_TODO_TENANT=common
MICROSOFT_TODO_CLIENT_ID=
MICROSOFT_TODO_CLIENT_SECRET=
MICROSOFT_TODO_REDIRECT_URI=
MICROSOFT_TODO_DEFAULT_SCOPES="offline_access openid profile User.Read Tasks.ReadWrite"
Callback-URL:en för aktuell miljö visas på webbsidan och finns även via routen:
/oauth/microsoft/callback/oauth/microsoft-todo/callbackWebbsidan visar nu också en direkt klickbar auth-startlänk för browsertest/kopiering när plattformsappen är komplett. Den länken använder:
/oauth/microsoft/start-link/oauth/microsoft-todo/start-linkoauth.microsoft_todo.start/oauth/microsoft-todo/startPOSTauth:weboauth.microsoft.start_link/oauth/microsoft/start-linkoauth.microsoft_todo.start_link/oauth/microsoft-todo/start-linkGETauth:webDen här routen finns så att Microsoft To Do-sidan kan visa en vanlig klickbar delad Microsoft-authlänk utöver POST-knappen. Varje öppning skapar en ny signerad OAuth-state och skickar sedan browsern direkt vidare till Microsoft.
oauth.microsoft.callback/oauth/microsoft/callbackoauth.microsoft_todo.callback/oauth/microsoft-todo/callbackGETCallbacken kan nu slutföra kopplingen även om webbläsaren inte längre har en aktiv Tools-webbsession, så länge den signerade Microsoft-state:n fortfarande hör till rätt användare/transaktion. När det sker bygger Tools nu också upp rätt webbsession igen från den signerade state:n innan användaren skickas tillbaka till Microsoft To Do-sidan, så en lyckad callback inte landar i en ny inloggningsvägg direkt efteråt.
GET /api/microsoft/auth/statusReturnerar generisk Microsoft auth-/plattform-appstatus för den autentiserade användaren.
Tänkt användning:
Svaret kan innehålla additiva fält som:
provider="microsoft"platform="microsoft_graph"auth_readycallback_urlcallback_legacy_urlsupported_integrations[]planned_integrations[]platform_app.supports_personal_accountsplatform_app.supports_work_or_school_accountsplatform_app.account_support_hintDessa endpoints accepterar antingen:
POST /api/account/login.GET /api/microsoft-todo/statusReturnerar anslutningsstatus, kontonamn, lokala räknare och om plattformsappen är tillgänglig.
Svaret innehåller nu också additiv platform_app-diagnostik utan hemligheter, till exempel:
managed_viaenv_managedclient_id_configuredclient_secret_configuredtenantredirect_urirecommended_callback_urlrecommended_callback_legacy_urlrecommended_start_link_urldefault_scopesaccount_support_hintsupports_personal_accountssupports_work_or_school_accountsmissing_fields[]status_messagete Svaret kan nu också innehålla connect_api_url och additivt connect_api_legacy_url, så en native-/mobilklient kan hämta den aktuella OAuth-start-URL:en direkt från API:t och samtidigt känna till den äldre kompatibilitetsvägen.
GET /api/microsoft/oauth/startBygger en Microsoft-auktoriserings-URL för den aktuellt autentiserade användaren.
Kompatibilitetsnotis:
GET /api/microsoft-todo/oauth/start fungerar fortfarande/oauth/microsoft/callback, medan /oauth/microsoft-todo/callback finns kvar som legacy-aliasTänkt användning:
Exempelsvar:
{
"ok": true,
"authorization_url": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?...",
"callback_url": "https://tools.tornevall.com/oauth/microsoft-todo/callback",
"connect_web_url": "/settings/integrations/microsoft-todo",
"connect_api_url": "/api/microsoft/oauth/start",
"connect_api_legacy_url": "/api/microsoft-todo/oauth/start"
}
POST /api/microsoft-todo/syncKör en omedelbar push/pull-synkronisering.
GET /api/microsoft-todo/listsReturnerar lokalt speglade listor. Som standard inkluderas uppgifter.
Valfria query-parametrar:
include_tasks=1 (standard)include_tasks=0POST /api/microsoft-todo/listsSkapar en lista och synkar den till Microsoft To Do.
Exempelbody:
{
"display_name": "Arbete"
}
PATCH /api/microsoft-todo/lists/{listId}Byter namn på en synkad lista.
DELETE /api/microsoft-todo/lists/{listId}Tar bort listan både lokalt och fjärrmässigt.
GET /api/microsoft-todo/lists/{listId}/tasksReturnerar uppgifterna för en lokal speglad lista.
POST /api/microsoft-todo/lists/{listId}/tasksSkapar en uppgift i vald lista.
Exempelbody:
{
"title": "Följ upp kunden",
"body_text": "Kom ihåg att bifoga rapporten.",
"importance": "high",
"status": "notStarted",
"due_at": "2026-04-02 09:00:00",
"reminder_at": "2026-04-02 08:30:00"
}
PATCH /api/microsoft-todo/tasks/{taskId}Uppdaterar en uppgift.
DELETE /api/microsoft-todo/tasks/{taskId}Tar bort en uppgift både lokalt och fjärrmässigt.
Synkmodellen är medvetet enkel och förutsägbar:
En schemalagd synk körs också automatiskt var 15:e minut via:
php artisan microsoft-todo:sync/settings/integrations/microsoft-todo.GET /api/microsoft/oauth/start och sedan öppna den i en webbläsaryta. Den äldre vägen GET /api/microsoft-todo/oauth/start finns kvar som kompatibilitetsalias.GET /api/microsoft/auth/status i stället för att börja i den To Do-specifika status-endpointen.common eller consumers, och Azure-appregistreringen måste också vara aktiverad för personliga konton (MSA).organizations (eller en specifik tenant GUID/domän). Status-/authdiagnostiken rapporterar nu också om aktuell tenantmodell stöder work/school-konton.