← Back to docs

Microsoft To Do

Language: SV | EN | SV

Microsoft To Do

Tools har nu en personlig Microsoft To Do-integration för inloggade användare.

Vad den gör

  • Kopplar ditt Microsoft-konto till Tools via Microsoft OAuth.
  • Speglar dina Microsoft To Do-listor in i Tools.
  • Speglar dina Microsoft To Do-uppgifter in i Tools.
  • Skickar ändringar som görs i Tools tillbaka till Microsoft To Do.
  • Hämtar fjärrändringar från Microsoft To Do tillbaka till Tools.
  • Återanvänder en delad Microsoft-/Microsoft Graph-authapp som är tänkt att kunna bära bredare Microsoft-/Entra-baserade integrationer senare också.
  • Exponerar autentiserade JSON-endpoints under /api/microsoft-todo/* för appar och andra klienter.

Webbgränssnitt

  • Path: /settings/integrations/microsoft-todo
  • Auth: auth:web

Från den sidan kan en användare:

  • koppla sitt Microsoft-konto,
  • köra en manuell synk,
  • skapa, byta namn på och ta bort listor,
  • skapa, redigera, markera klara och ta bort uppgifter,
  • koppla bort den lokala Microsoft To Do-anslutningen.

Konfiguration

Den delade Azure-appen för plattformen kan nu hanteras på två sätt:

  1. miljöstyrt via MICROSOFT_TODO_*-värden, eller
  2. databasbaserat direkt från /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:

  • om appen är komplett och användbar,
  • om den styrs via miljö eller databas,
  • vilka obligatoriska fält som fortfarande saknas,
  • effektiv redirect URI,
  • rekommenderad callback-URL för aktuell host,
  • och en riktig direkt auth-startlänk från aktuell Tools-host när plattformsappen är komplett.

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/callback

Webbsidan 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-link

OAuth-routes

Starta OAuth-flöde

  • Route name: oauth.microsoft_todo.start
  • Path: /oauth/microsoft-todo/start
  • Method: POST
  • Auth: auth:web

Direkt auth-startlänk

  • Föredragen route name: oauth.microsoft.start_link
  • Föredragen path: /oauth/microsoft/start-link
  • Äldre kompatibilitets-route name: oauth.microsoft_todo.start_link
  • Äldre kompatibilitets-path: /oauth/microsoft-todo/start-link
  • Method: GET
  • Auth: auth:web

Den 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-callback

  • Föredragen route name: oauth.microsoft.callback
  • Föredragen path: /oauth/microsoft/callback
  • Äldre kompatibilitets-route name: oauth.microsoft_todo.callback
  • Äldre kompatibilitets-path: /oauth/microsoft-todo/callback
  • Method: GET
  • Auth: publik callback-URL (men den signerade OAuth-state:n måste fortfarande matcha)

Callbacken 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/status

Returnerar generisk Microsoft auth-/plattform-appstatus för den autentiserade användaren.

Tänkt användning:

  • klienter som vill ha en delad Microsoft-authstatus i stället för att börja från To Do-specifik status,
  • native-/mobilklienter som behöver callback-/start-URL:er och tenant/kontotypsdiagnostik,
  • framtida Microsoft-/Graph-integrationer som inte ska tvingas starta från To Do-kontraktet.

Svaret kan innehålla additiva fält som:

  • provider="microsoft"
  • platform="microsoft_graph"
  • auth_ready
  • callback_url
  • callback_legacy_url
  • supported_integrations[]
  • planned_integrations[]
  • platform_app.supports_personal_accounts
  • platform_app.supports_work_or_school_accounts
  • platform_app.account_support_hint

API-endpoints

Dessa endpoints accepterar antingen:

  • en vanlig inloggad webbsession, eller
  • en JWT bearer-token från POST /api/account/login.

GET /api/microsoft-todo/status

Returnerar 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_via
  • env_managed
  • client_id_configured
  • client_secret_configured
  • tenant
  • redirect_uri
  • recommended_callback_url
  • recommended_callback_legacy_url
  • recommended_start_link_url
  • default_scopes
  • account_support_hint
  • supports_personal_accounts
  • supports_work_or_school_accounts
  • missing_fields[]
  • status_message

te 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/start

Bygger en Microsoft-auktoriserings-URL för den aktuellt autentiserade användaren.

Kompatibilitetsnotis:

  • den äldre vägen GET /api/microsoft-todo/oauth/start fungerar fortfarande
  • den nya generiska vägen är nu den rekommenderade API-startpunkten när samma Microsoft-appregistrering ska kunna användas bredare i Tools-plattformen och inte bara låsas till To Do-formuleringen
  • callbacken i svaret pekar nu på den föredragna generiska browser-callbacken /oauth/microsoft/callback, medan /oauth/microsoft-todo/callback finns kvar som legacy-alias

Tänkt användning:

  • native-/mobilklienter som först autentiserar sig mot Tools,
  • klienter som vill öppna Microsofts samtyckessida i en WebView/Custom Tab,
  • hjälparflöden som behöver den aktuella OAuth-start-URL:en från API:t istället för att bara använda webbformuläret.

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/sync

Kör en omedelbar push/pull-synkronisering.

GET /api/microsoft-todo/lists

Returnerar lokalt speglade listor. Som standard inkluderas uppgifter.

Valfria query-parametrar:

  • include_tasks=1 (standard)
  • include_tasks=0

POST /api/microsoft-todo/lists

Skapar 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}/tasks

Returnerar uppgifterna för en lokal speglad lista.

POST /api/microsoft-todo/lists/{listId}/tasks

Skapar 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.

Synkbeteende

Synkmodellen är medvetet enkel och förutsägbar:

  1. Lokala smutsiga listor pushas först.
  2. Lokala smutsiga uppgifter pushas därefter.
  3. Den fjärrbaserade Microsoft To Do-snapshopen hämtas tillbaka till Tools.
  4. Fjärrborttagningar speglas lokalt när den lokala raden inte är smutsig.
  5. Lokalt smutsiga rader skrivs inte över av pull-steget.

En schemalagd synk körs också automatiskt var 15:e minut via:

  • php artisan microsoft-todo:sync

Noteringar

  • Webbanvändare kan fortfarande starta kopplingen från /settings/integrations/microsoft-todo.
  • API-/nativeklienter kan nu hämta aktuell Microsoft OAuth-start-URL via 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.
  • Klienter som vill ha en generell Microsoft-authstatus kan nu också använda GET /api/microsoft/auth/status i stället för att börja i den To Do-specifika status-endpointen.
  • Om du förväntar dig personliga Microsoft-konton ska tenant normalt vara common eller consumers, och Azure-appregistreringen måste också vara aktiverad för personliga konton (MSA).
  • Om du i stället förväntar dig Microsoft Entra-konton för arbete/skola ska tenant normalt vara organizations (eller en specifik tenant GUID/domän). Status-/authdiagnostiken rapporterar nu också om aktuell tenantmodell stöder work/school-konton.
  • Om Microsoft-tokenförnyelse misslyckas kan användaren behöva koppla om integrationen.