Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ms Graph Laravel Package

smorken/ms-graph

A Laravel package for integrating Microsoft Graph, making it easy to access Microsoft 365 data and services such as users, mail, calendars, and files through a simple, fluent PHP API.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • M365 feature scoping: Decides whether Microsoft 365-adjacent capabilities — Outlook mail send/read, calendar sync, OneDrive/SharePoint file operations, Azure AD user and group lookups, Teams notifications — ship inside the existing Laravel application or get pushed into a separate service with its own integration layer.
  • Build vs. buy vs. wrap: Frames the three-way choice between hand-rolling a Graph client on Guzzle, adopting Microsoft's official microsoft/microsoft-graph SDK, and taking a thin Laravel-flavored convenience wrapper. This package is the "wrap" option; the real decision is whether a small amount of saved glue code justifies an unsupported dependency in the auth path.
  • Auth architecture: Forces an explicit choice between delegated (user-context consent) and application (client-credentials, app-only) permissions. That single decision shapes the security review, the consent UX, and which features are even offerable — and it must be made before, not after, a library is selected.
  • Roadmap sequencing: A cheap wrapper makes "M365 integration" a plausible near-term item for internal tools and admin surfaces, moving it earlier on the roadmap. A full SDK commitment raises the cost of entry and raises the bar for which integrations are worth doing at all.
  • Internal use-case shortlist to validate against: HR and onboarding automation (provisioning, license assignment), scheduling assistants, admin dashboards reading directory data, notification pipelines into Teams, and document workflows in SharePoint.
  • Vendor-risk calibration: With zero stars, zero dependents, and a Bitbucket-only home, the package's own adoption profile becomes a decision input. Treat it as a reference implementation whose patterns we borrow, not a foundation for a roadmap pillar.

When to Consider This Package

Consider it when:

  • You are an established Laravel shop needing a thin pass-through to a handful of Graph endpoints — a token, a REST call, a JSON response — and nothing more.
  • The consumer is an internal tool, admin panel, or proof-of-concept where the blast radius of a dependency going stale is small and contained.
  • Your team is willing to vendor or fork it (it is small enough to read in one sitting) and effectively own it from day one.
  • You only need application-permission flows — daemon jobs, scheduled syncs, background provisioning — rather than complex delegated consent or incremental auth.
  • You want a worked example of wiring Graph credentials, config, and service-container bindings into Laravel before committing to a larger SDK.

Look elsewhere when:

  • You need production-grade guarantees: security patching, deprecation notices, versioned releases, a responsive issue tracker. Zero stars, zero dependents, and a Bitbucket-only repo mean no community backstop and no maintenance signal.
  • You need the harder 20% of Graph — change notifications and webhook lifecycle validation, delta queries, batching, throttling with Retry-After, @odata.nextLink pagination, or typed request/response models. Microsoft's official SDK covers these; a thin helper almost certainly does not.
  • The integration is customer-facing or revenue-adjacent, where a single maintainer's absence becomes an incident.
  • Your security posture requires a reviewed, auditable dependency chain — an unvetted package holding client secrets will not clear that review.
  • You need strong typing and IDE support across dozens of endpoints; a generic HTTP wrapper trades that away for brevity.

Pragmatic middle path: timebox a short evaluation, and if the ergonomics hold up, copy the relevant wiring patterns into an internal MicrosoftGraph service class rather than depending on the package.

How to Pitch It (Stakeholders)

For executives — one paragraph: Microsoft 365 is where our users' calendar, mail, files, and directory already live, and reaching that data from our Laravel application is mostly boilerplate — OAuth token handling, HTTP plumbing, JSON wrangling. A small helper like smorken/ms-graph can compress that boilerplate and shorten time-to-first-integration from weeks to days, which matters if we want to test M365 features cheaply before committing roadmap capacity. The caveat is maturity: this specific package has effectively no adoption and no visible maintenance, so I recommend treating it as an accelerator to evaluate in a short spike, not as a strategic dependency. The ask is a two-to-three day technical spike, an internal fork if the patterns prove useful, and a build-versus-official-SDK decision made with real code in hand rather than in the abstract.

For engineering — the ask:

  • What it is: A thin Laravel service-provider wrapper around Microsoft Graph — config-driven credentials, token acquisition, and a handful of convenience calls. Not a typed SDK; the value is in the wiring, not the surface area.
  • What we would own: If adopted, we own it. Assume no upstream fixes, no SLA, and no escalation path. Budget for a mirror, a fork under our namespace, and a short README documenting the endpoints we actually use.
  • What it does not solve: Webhook subscriptions and lifecycle validation, delta queries, batching, throttling/backoff, token caching at scale, and typed models. If the feature needs any of these, the official microsoft/microsoft-graph SDK is the honest baseline and this package is a detour.
  • Proposed next step: A timeboxed spike against a dev tenant covering one delegated flow and one app-only flow. Success criteria: (1) we authenticate and call three endpoints we care about, (2) we can state in one page what the wrapper saves versus the official SDK, (3) we exit with either a fork we are happy to own or a clear decision to use the official SDK behind a small internal adapter.
  • Decision requested: Approve the spike, not the dependency.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib