---
title: "Update Team User"
method: PUT
path: "/api/v1/Admin/TeamUsers/{id}"
tags: ["Team"]
---

# Update Team User

`PUT /api/v1/Admin/TeamUsers/{id}`

## Request

- Base URL: `https://api.fireserviceusa.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.fireserviceusa.com/api/v1/Admin/TeamUsers/{id}`
- Auth: none declared

## Path parameters

- `id` integer, required

## Request body

- TeamUser
  - `TeamUserId` integer
  - `TeamId` integer, required
  - `UserId` integer, required
  - `TeamPosId` integer, required
  - `CreateDate` string, date-time
  - `CreateUser` string, nullable
  - `UpdateDate` string, date-time
  - `UpdateUser` string, nullable
  - `Team` Team
    - `TeamId` integer
    - `TeamDesc` string, required
    - `InActive` boolean
    - `HideInReporting` boolean
    - `CalendarOnly` boolean
    - `AllowOnCalendar` boolean: Team can appear in calendar filters and be tagged on appointments. Forced on when P2.Api.Models.DomainModels.Team.CalendarOnly is true. Regular teams can opt in too.
    - `CreateDate` string, date-time
    - `CreateUser` string, nullable
    - `UpdateDate` string, date-time
    - `UpdateUser` string, nullable
    - `TeamUsers` TeamUser[], nullable
  - `User` ApplicationUser
    - `Id` integer
    - `UserName` string, nullable
    - `NormalizedUserName` string, nullable
    - `Email` string, nullable
    - `NormalizedEmail` string, nullable
    - `EmailConfirmed` boolean
    - `PasswordHash` string, nullable
    - `SecurityStamp` string, nullable
    - `ConcurrencyStamp` string, nullable
    - `PhoneNumber` string, nullable
    - `PhoneNumberConfirmed` boolean
    - `TwoFactorEnabled` boolean
    - `LockoutEnd` string, date-time, nullable
    - `LockoutEnabled` boolean
    - `AccessFailedCount` integer
    - `FirstName` string, nullable
    - `LastName` string, nullable
    - `FullName` string, nullable
    - `GP_Department` string, nullable
    - `GP_JobTitle` string, nullable
    - `GP_LocationId` string, nullable
    - `GP_DivisionCode` string, nullable
    - `GP_EmpId` string, nullable
    - `IsActive` boolean
    - `ReceiveTextNotifications` boolean
    - `ReceiveEmailNotifications` boolean
    - `HideInProductionLists` boolean
    - `HideFromTimeApproval` boolean
    - `ForcePasswordReset` boolean
    - `IsEstimator` boolean
    - `IsSupervisor` boolean
    - `LastPasswordChangedDate` string, date-time
    - `PasswordResetExempt` boolean
    - `ProfilePictureUrl` string, nullable
    - `MicrosoftUserId` string, nullable
    - `MicrosoftUserPrincipalName` string, nullable
    - `CalendarSyncEnabled` boolean
    - `CalendarSyncLastSucceeded` boolean, nullable
    - `CalendarSyncFailReason` string, nullable
    - `CalendarVisibleToMasterViewOnly` boolean: When true, this user's calendar details are only visible to users with CalendarMasterView.
    - `CalendarPrivateForEveryone` boolean: When true, only this user can see their calendar details; everyone else sees private blocks.
    - `CalendarHiddenFromNonMasterView` boolean: Ghost mode: this user's organized appointments are omitted entirely for viewers without CalendarMasterView unless the viewer is an attendee. Conflict checks still show a private block.
    - `UseGeneralCalendar` boolean: When true, Outlook create/update/delete for this user uses the shared general organizer mailbox instead of their personal Microsoft account (they may have none, or share someone else's).
    - `TagAppointmentsWithUserTeams` boolean: When true, Outlook sync tags appointments this user organizes with their teams if the appointment is not already on a team calendar. Off by default.
    - `AutoLinkOutlookAppointmentsByJobId` boolean: When true, Outlook sync links this user's incoming appointments to an existing P2 job when the title contains an unbroken run of exactly five digits that matches a job. Off by default. An appointment that already has a job is left as-is.
    - `OutlookSyncCalendarEventTypeId` integer, nullable: When set, Outlook sync assigns this appointment type to this user's appointments that do not already have one. Null leaves types unchanged.
    - `CalendarDefaultBuiltinFilterId` string, nullable: Built-in calendar quick-filter id (e.g. mine-only) used as the user's default view on load. Mutually exclusive with a preset marked IsDefault.
    - `TeamUsers` TeamUser[], nullable
  - `Position` TeamPosition
    - `TeamPosId` integer
    - `Position` string, required
    - `InActive` boolean
    - `CreateDate` string, date-time
    - `CreateUser` string, nullable
    - `UpdateDate` string, date-time
    - `UpdateUser` string, nullable

## Response `200`

Success

## Changes

> 17 revisions in range; 1 not diffed.

- **2026-10-25** `33ed6aa0e944`: 4 info
  - added the new optional request property `Team/AllowOnCalendar` (media type: application/json-patch+json)
  - added the new optional request property `Team/AllowOnCalendar` (media type: application/json)
  - added the new optional request property `Team/AllowOnCalendar` (media type: text/json)
  - added the new optional request property `Team/AllowOnCalendar` (media type: application/*+json)
  - …this revision’s changelog is incomplete

[Operation history](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api/changes/api/v1/Admin/TeamUsers/:id/put.md)

---

[API](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api.md) - [All operations](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api/revisions/96ea2ea68d87?raw)
