Skip to main content

Ms Graph

@dougschaefer/ms-graphv2026.06.29.1· 8d agoMODELS
01README

Broad Microsoft Graph v1.0 extension — seven model types over app-only client credentials: calendar (room/user calendarView, current/next meeting), places (room resources), users (Entra directory reads, manager, memberOf), groups, mail (Outlook messages), teams (chats/teams/channels/messages), and presence. Shared token-caching + paging client; credentials from the azure-asei vault. Supersedes the narrow ms-graph-calendar and absorbs azure-ad-user's lookup.

02Release Notes

Initial public publish (extension was catalog-only after the productization merge).

03Models7
@dougschaefer/ms-graph-calendarv2026.06.29.1ms-graph/calendar.ts
fn listEvents(roomEmail: string, startDateTime: string, endDateTime: string, top: number)
GET /users/{roomEmail}/calendarView — return all meetings for a room or user mailbox within a caller-supplied time window, ordered by start time.
ArgumentTypeDescription
roomEmailstringRoom or user mailbox address, e.g. conf-b@example.com
startDateTimestringWindow start in ISO-8601 format, e.g. 2026-06-29T00:00:00
endDateTimestringWindow end in ISO-8601 format, e.g. 2026-06-29T23:59:59
topnumberMax events per page (1-999). The method auto-follows @odata.nextLink.
fn getEvent(roomEmail: string, eventId: string)
GET /users/{roomEmail}/events/{id} — fetch a single calendar event by its Graph event id, normalized to the standard meeting shape. (Permission: Calendars.Read)
ArgumentTypeDescription
roomEmailstringRoom or user mailbox address that owns the event, e.g. conf-b@example.com
eventIdstringGraph event id
fn getCurrentMeeting(roomEmail: string)
Convenience method: returns the meeting currently in progress for the room, or null if the room is free.
ArgumentTypeDescription
roomEmailstringRoom mailbox address, e.g. conf-b@example.com
fn getNextMeeting(roomEmail: string, lookAheadHours: number)
Convenience method: returns the next upcoming meeting for the room — the first meeting that starts after now (within the look-ahead window).
ArgumentTypeDescription
roomEmailstringRoom mailbox address, e.g. conf-b@example.com
lookAheadHoursnumberHow many hours ahead to search for the next meeting (default 8 — remainder of the workday)

Resources

calendarView(5m)— Ordered list of meetings for a mailbox within a time window (from /users/{mailbox}/calendarView). Normalized to {subject, start, end, organizer, attendees, attendeeCount}.
event(5m)— A single calendar event fetched by id from /users/{mailbox}/events/{id}, normalized to the standard meeting shape.
currentMeeting(2m)— The meeting in progress right now for the mailbox, or null if none. Derived from a narrow calendarView window centered on the current time. The IARS meeting-agent's primary calendar signal.
nextMeeting(2m)— The next upcoming meeting for the mailbox (the first meeting starting after now). Null if nothing is on the calendar in the look-ahead window. Used by the IARS meeting-agent to prepare the room ahead of time.
@dougschaefer/ms-graph-placesv2026.06.29.1ms-graph/places.ts
fn listRooms(top: number)
GET /places/microsoft.graph.room — list all room resources in the tenant. Returns displayName + emailAddress for each room. Use the emailAddress as the roomEmail input for the calendar model. The method auto-follows @odata.nextLink. (Permission: Place.Read.All)
ArgumentTypeDescription
topnumberMax rooms to return per page (1-100). Paging is handled automatically.
fn getRoom(idOrEmail: string)
GET /places/{idOrEmail} — fetch detail for a single room resource: capacity, building, floor, A/V device names, accessibility, and tags. Pass the room's emailAddress or object ID. (Permission: Place.Read.All)
ArgumentTypeDescription
idOrEmailstringRoom emailAddress (e.g. conf-b@example.com) or Graph object ID

Resources

roomList(1d)— Snapshot of all room resources in the tenant from /places/microsoft.graph.room. Each entry includes displayName and emailAddress.
roomDetail(7d)— Detail for a single room resource from GET /places/{id-or-email}: displayName, emailAddress, capacity, building, floor, and A/V capabilities.
@dougschaefer/ms-graph-usersv2026.06.29.1ms-graph/users.ts
fn get(idOrUpn: string)
GET /users/{idOrUpn} — resolve one user by Entra object id or userPrincipalName, selected to the standard profile fields (displayName, department, jobTitle, officeLocation, mail, etc.). Writes the user under a slug of the object id. This is the IARS reverse-lookup signal — pass the object id. (Permission: User.Read.All)
ArgumentTypeDescription
idOrUpnstringEntra object id (GUID) or userPrincipalName (user@example.com)
fn list(filter?: string, maxItems: number)
GET /users — enumerate directory users, selected to the standard profile fields. Optionally narrow with an OData $filter and cap the total with maxItems. Auto-follows @odata.nextLink. (Permission: User.Read.All)
ArgumentTypeDescription
filter?stringOData $filter, e.g. "startswith(displayName,\
maxItemsnumberHard cap on total users collected across pages (default 200).
fn getManager(idOrUpn: string)
GET /users/{idOrUpn}/manager — return a user's manager as a user record. Throws if the user has no manager assigned. (Permission: User.Read.All)
ArgumentTypeDescription
idOrUpnstringEntra object id (GUID) or userPrincipalName of the user whose manager to fetch
fn memberOf(idOrUpn: string)
GET /users/{idOrUpn}/memberOf — list the groups and directory roles a user is a member of, for access review. Auto-follows @odata.nextLink. (Permission: User.Read.All)
ArgumentTypeDescription
idOrUpnstringEntra object id (GUID) or userPrincipalName of the user

Resources

user(infinite)— An Entra ID user from GET /users/{id}, selected to the standard profile fields. Written under a slug of the object id; the user fields land under the data instance's content.
membership(infinite)— A directory object (group or directory role) a user is a member of, from /users/{id}/memberOf.
@dougschaefer/ms-graph-groupsv2026.06.29.1ms-graph/groups.ts
fn list(filter?: string, maxItems: number)
GET /groups — enumerate directory groups, selected to the standard fields. Optionally narrow with an OData $filter and cap the total with maxItems. Auto-follows @odata.nextLink. (Permission: Group.Read.All)
ArgumentTypeDescription
filter?stringOData $filter, e.g. "securityEnabled eq true" or "startswith(displayName,\
maxItemsnumberHard cap on total groups collected across pages (default 200).
fn get(id: string)
GET /groups/{id} — resolve one group by Entra object id, selected to the standard fields. (Permission: Group.Read.All)
ArgumentTypeDescription
idstringEntra group object id (GUID)
fn listMembers(id: string, maxItems: number)
GET /groups/{id}/members — list the members of a group (users, devices, nested groups). Auto-follows @odata.nextLink. (Permission: Group.Read.All)
ArgumentTypeDescription
idstringEntra group object id (GUID)
maxItemsnumberHard cap on total members collected across pages (default 500).

Resources

group(infinite)— An Entra ID group from GET /groups/{id}, selected to the standard fields (displayName, mail, securityEnabled, groupTypes, membershipRule, etc.).
member(infinite)— A member of a group (user, device, or nested group) from /groups/{id}/members.
@dougschaefer/ms-graph-mailv2026.06.29.1ms-graph/mail.ts
fn listMessages(userId: string, filter?: string, maxItems: number)
GET /users/{userId}/messages — list a mailbox's messages, ordered newest first, with metadata and bodyPreview. Optionally narrow with an OData $filter and cap with maxItems. Auto-follows @odata.nextLink. (Permission: Mail.Read)
ArgumentTypeDescription
userIdstringMailbox userPrincipalName or object id, e.g. user@example.com
filter?stringOData $filter, e.g. "isRead eq false" or "importance eq \
maxItemsnumberHard cap on total messages collected across pages (default 50).
fn getMessage(userId: string, messageId: string)
GET /users/{userId}/messages/{id} — fetch one message including its full body. (Permission: Mail.Read)
ArgumentTypeDescription
userIdstringMailbox userPrincipalName or object id that owns the message
messageIdstringGraph message id

Resources

messageList(5m)— Snapshot of a mailbox's messages from GET /users/{userId}/messages, newest first, with metadata and bodyPreview.
message(5m)— A single Outlook message from GET /users/{userId}/messages/{id}, including the full body.
@dougschaefer/ms-graph-teamsv2026.06.29.1ms-graph/teams.ts
fn listChats(userId: string, maxItems: number)
GET /users/{userId}/chats — list a user's Teams chats. Auto-follows @odata.nextLink. (Permission: Chat.Read.All)
ArgumentTypeDescription
userIdstringUser userPrincipalName or object id, e.g. user@example.com
maxItemsnumberHard cap on total chats collected across pages (default 100).
fn listJoinedTeams(userId: string)
GET /users/{userId}/joinedTeams — list the teams a user has joined. Auto-follows @odata.nextLink. (Permission: Team.ReadBasic.All)
ArgumentTypeDescription
userIdstringUser userPrincipalName or object id, e.g. user@example.com
fn listChannels(teamId: string)
GET /teams/{teamId}/channels — list a team's channels. Auto-follows @odata.nextLink. (Permission: Channel.ReadBasic.All)
ArgumentTypeDescription
teamIdstringTeam (group) object id
fn listMessages(chatId?: string, teamId?: string, channelId?: string, maxItems: number)
List messages from a chat (pass chatId) or a channel (pass teamId + channelId). Auto-follows @odata.nextLink.
ArgumentTypeDescription
chatId?stringChat id — provide for chat messages (mutually exclusive with teamId/channelId)
teamId?stringTeam id — provide with channelId for channel messages
channelId?stringChannel id — provide with teamId for channel messages
maxItemsnumberHard cap on total messages collected across pages (default 50).

Resources

chat(1h)— A Teams chat from /users/{userId}/chats.
team(1d)— A team the user has joined, from /users/{userId}/joinedTeams.
channel(1d)— A channel of a team, from /teams/{teamId}/channels.
messageList(5m)— Snapshot of messages from a chat or channel, from /chats/{id}/messages or /teams/{teamId}/channels/{channelId}/messages.
@dougschaefer/ms-graph-presencev2026.06.29.1ms-graph/presence.ts
fn getPresence(userId: string)
GET /users/{userId}/presence — return a user's current Teams presence (availability + activity). (Permission: Presence.Read.All)
ArgumentTypeDescription
userIdstringUser object id or userPrincipalName, e.g. user@example.com

Resources

presence(2m)— A user's Teams presence from GET /users/{userId}/presence: availability and activity at capture time.
04Stats
A
100 / 100
Downloads
0
Archive size
29.6 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License declared1/1earned
  • Verified public repository2/2earned
05Platforms
06Labels