---
title: "Create Team"
method: POST
path: "/api/v1/Admin/Teams"
tags: ["Team"]
---

# Create Team

`POST /api/v1/Admin/Teams`

## 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/Teams`
- Auth: none declared

## Request body

- 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
    - `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 (recursive)
    - `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 `AllowOnCalendar` (media type: application/json-patch+json)
  - added the new optional request property `AllowOnCalendar` (media type: application/json)
  - added the new optional request property `AllowOnCalendar` (media type: text/json)
  - added the new optional request property `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/Teams/post.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)
