---
title: "POST /api/v1/Jobs/RemoveWorkAuthorization"
method: POST
path: "/api/v1/Jobs/RemoveWorkAuthorization"
tags: ["Job"]
---

# POST /api/v1/Jobs/RemoveWorkAuthorization

`POST /api/v1/Jobs/RemoveWorkAuthorization`

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

## Query parameters

- `isVerbalAuth` boolean
- `jobId` integer

## Request body

- JobVm
  - `JobId` integer
  - `JobName` string, nullable
  - `JobAccountId` integer, required
  - `JobAccount` Account
    - `AccountId` integer
    - `GpCustomerNumber` string, nullable
    - `CompanyName` string, nullable
    - `FullName` string, nullable
    - `DisplayName` string, nullable
    - `FirstName` string, nullable
    - `LastName` string, nullable
    - `CustClass` string, nullable
    - `DefaultAddressId` integer
    - `Address1` string, nullable
    - `Address2` string, nullable
    - `City` string, nullable
    - `State` string, nullable
    - `County` string, nullable
    - `Country` string, nullable
    - `Zip` string, nullable
    - `Phone1` string, nullable
    - `Phone1Type` string, nullable
    - `Phone2` string, nullable
    - `Phone2Type` string, nullable
    - `Email` string, nullable
    - `InActive` boolean
    - `CreateDate` string, date-time
    - `CreateUser` string, nullable
    - `UpdateDate` string, date-time
    - `UpdateUser` string, nullable
    - `Description` string, nullable
    - `IsCommercial` boolean
    - `ExemptFromDuplicate` boolean
    - `SmsEnrolled` boolean
    - `SmsEnrolledDate` string, date-time, nullable
    - `SpecialInstructionId` integer, nullable
    - `SpecialInstructions` string, nullable
    - `Contacts` Contact[], nullable
      - `ContactId` integer
      - `FullName` string, nullable
      - `FirstName` string, required
      - `LastName` string, required
      - `AccountId` integer, nullable
      - `DefaultAddressType` string, nullable
      - `OtherAddressType` string, nullable
      - `Address1` string, nullable
      - `Address2` string, nullable
      - `City` string, nullable
      - `State` string, nullable
      - `County` string, nullable
      - `Country` string, nullable
      - `Zip` string, nullable
      - `Phone1` string, required
      - `Phone1Type` string, nullable
      - `Phone2` string, nullable
      - `Phone2Type` string, nullable
      - `Email` string, nullable
      - `BusDevId` integer, nullable
      - `RefContactClassId` integer, nullable
      - `InActive` boolean
      - `ExemptFromDuplicate` boolean
      - `SmsEnrolled` boolean
      - `SmsEnrolledDate` string, date-time, nullable
      - `CreateDate` string, date-time
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `Birthday` string, date-time, nullable
      - `Anniversary` string, date-time, nullable
      - `Married` boolean
      - `Children` boolean
      - `HobbiesAndInterests` string, nullable
      - `ReasonCodeId` integer, nullable
      - `SpecialInstructionId` integer, nullable
      - `SpecialInstructions` string, nullable
      - `isFavorite` boolean
      - `Account` Account (recursive)
      - `SpecialInstruction` Note
        - `NoteId` integer
        - `NoteText` string, required
        - `InActive` boolean
        - `CategoryId` integer, nullable
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
        - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
        - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
          - `NoteFollowUpUserId` integer
          - `NoteId` integer, required
          - `UserId` integer, required
          - `CreateDate` string, date-time: Auditing
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Note` Note (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
              - …
        - `FollowUpUserIds` integer[], nullable
        - `FollowUpUsers` string[], nullable
        - `FollowUpUsersDisplay` string, nullable
        - `JobId` integer, nullable
        - `ProjectId` integer, nullable
        - `OutlookEventId` string, nullable
        - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
        - `AccountId` integer, nullable
        - `ContactId` integer, nullable
        - `AddressV2Id` integer, nullable
        - `ReferringEntityId` integer, nullable
        - `Category` Category
          - `CategoryId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
      - `BusDevUser` 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
          - `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 (recursive)
          - `Position` TeamPosition
            - `TeamPosId` integer
            - `Position` string, required
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
      - `RefContactClass` RefContactClass
        - `RefContactClassId` integer
        - `Description` string, nullable
        - `InActive` boolean
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `ContactRefContactClass` ContactRefContactClass[], nullable
          - `ContactRefContactClassId` integer
          - `ContactId` integer
          - `RefContactClassId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `RefContactClass` RefContactClass (recursive)
      - `ContactConTypes` ContactConType[], nullable
        - `ContactConTypeId` integer
        - `ContactId` integer
        - `ContactTypeId` integer
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Contact` Contact (recursive)
        - `ContactType` ContactType
          - `ContactTypeId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `ContactConTypes` ContactConType[], nullable
      - `ContactRefContactClasses` ContactRefContactClass[], nullable
        - `ContactRefContactClassId` integer
        - `ContactId` integer
        - `RefContactClassId` integer
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Contact` Contact (recursive)
        - `RefContactClass` RefContactClass
          - `RefContactClassId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `ContactRefContactClass` ContactRefContactClass[], nullable
      - `Addresses` Address[], nullable
        - `AddressId` integer
        - `AddressType` string, required
        - `OtherAddressType` string, nullable
        - `AccountId` integer, nullable
        - `ContactId` integer, nullable
        - `IsDefault` boolean
        - `InActive` boolean
        - `HasMigratedToV2Address` boolean
        - `ContactPerson` string, nullable: Job Address
        - `Address1` string, required
        - `Address2` string, nullable
        - `City` string, required
        - `State` string, required
        - `County` string, nullable
        - `Country` string, nullable
        - `Zip` string, required
        - `Phone1` string, required
        - `Phone1Type` string, required
        - `Phone2` string, nullable
        - `Phone2Type` string, nullable
        - `Email` string, nullable
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Account` Account (recursive)
        - `Contact` Contact (recursive)
      - `ReasonCode` ReasonCode
        - `ReasonCodeId` integer
        - `Description` string, nullable
        - `Category` string, nullable
        - `InActive` boolean
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
      - `ContactAddresses` ContactAddress[], nullable
        - `ContactAddressId` integer
        - `ContactId` integer: Foreign key to Contact
        - `AddressV2Id` integer: Foreign key to AddressV2
        - `AddressTypeId` integer: Foreign key to AddressType lookup
        - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
        - `IsPrimary` boolean: Marks this as the primary/default address for the contact
        - `Phone1` string, nullable: Phone number associated with this specific address
        - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
        - `Phone2` string, nullable: Secondary phone number
        - `Phone2Type` string, nullable: Secondary phone type
        - `Email` string, nullable: Email address associated with this specific address
        - `InActive` boolean: Soft-delete flag for the assignment
        - `CreateDate` string, date-time: Audit fields
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Contact` Contact (recursive)
        - `AddressV2` AddressV2: Version 2 of Address model - contains ONLY address-related fields. Phone, email, and contact person moved to entity-specific link tables or parent entities. Replaces legacy Address table which mixed address data with contact data.
          - `AddressV2Id` integer
          - `Address1` string, required: Street address line 1
          - `Address2` string, nullable: Street address line 2 (apt, suite, etc.)
          - `City` string, required: City name
          - `State` string, required: State/Province abbreviation or name
          - `County` string, nullable: County name
          - `Country` string, nullable: Country name or code
          - `Zip` string, required: Postal/ZIP code
          - `NormalizedAddress` string, nullable: Normalized address string for duplicate detection (lowercase, trimmed, standardized abbreviations) Computed field - not user-editable
          - `Latitude` number, double, nullable: Latitude coordinate (if geocoded)
          - `Longitude` number, double, nullable: Longitude coordinate (if geocoded)
          - `InActive` boolean: Soft-delete flag
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `SpecialInstructionId` integer, nullable
          - `SpecialInstructions` string, nullable
          - `AccountAddresses` AccountAddress[], nullable: Navigation properties - entities that reference this address
            - `AccountAddressId` integer
            - `AccountId` integer: Foreign key to Account
            - `AddressV2Id` integer: Foreign key to AddressV2
            - `AddressTypeId` integer: Foreign key to AddressType lookup
            - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
            - `IsPrimary` boolean: Marks this as the primary/default address for the account
            - `IsDefaultBilling` boolean: Marks this as the default billing address for the account
            - `IsDefaultJob` boolean: Marks this as the default job address for the account
            - `ContactPerson` string, nullable: Contact person at this address (job-specific)
            - `Phone1` string, nullable: Phone number associated with this specific address
            - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
            - `Phone2` string, nullable: Secondary phone number
            - `Phone2Type` string, nullable: Secondary phone type
            - `Email` string, nullable: Email address associated with this specific address
            - `InActive` boolean: Soft-delete flag for the assignment
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Account` Account (recursive)
            - `AddressV2` AddressV2 (recursive)
            - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
              - …
          - `ContactAddresses` ContactAddress[], nullable
          - `ReferringEntityAddresses` ReferringEntityAddress[], nullable
            - `ReferringEntityAddressId` integer
            - `ReferringEntityId` integer: Foreign key to ReferringEntity
            - `AddressId` integer, nullable: Foreign key to legacy Address table (existing data uses this) Nullable for records migrated to V2-only
            - `AddressV2Id` integer, nullable: Foreign key to AddressV2 (new clean address model) Nullable until migrated to V2 system
            - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
            - `IsPrimary` boolean: Marks whether this address is the primary address for the referring entity
            - `InActive` boolean: Soft-delete flag for the assignment
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ReferringEntity` ReferringEntity: Unified model for referring entities that combines the functionality of referring Accounts and Contacts Supports both company and individual referral sources Migrated from Account (with AccountType="Referring Account") and Contact (with RefContactClass="Referring Contact")
              - …
            - `Address` Address
              - …
            - `AddressV2` AddressV2 (recursive)
          - `AddressesV2AddressTypeAssignments` AddressesV2AddressTypeAssignments[], nullable: Address type assignments for this address (many-to-many with AddressType)
            - `AddressesV2AddressTypeAssignmentId` integer: Primary key
            - `AddressV2Id` integer, required: Foreign key to AddressV2
            - `AddressTypeId` integer, required: Foreign key to AddressType
            - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable: User who created the record
            - `UpdateDate` string, date-time: Date the record was last updated
            - `UpdateUser` string, nullable: User who last updated the record
            - `AddressV2` AddressV2 (recursive)
            - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
              - …
          - `SpecialInstruction` Note
            - `NoteId` integer
            - `NoteText` string, required
            - `InActive` boolean
            - `CategoryId` integer, nullable
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
            - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
            - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
              - …
            - `FollowUpUserIds` integer[], nullable
            - `FollowUpUsers` string[], nullable
            - `FollowUpUsersDisplay` string, nullable
            - `JobId` integer, nullable
            - `ProjectId` integer, nullable
            - `OutlookEventId` string, nullable
            - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
            - `AccountId` integer, nullable
            - `ContactId` integer, nullable
            - `AddressV2Id` integer, nullable
            - `ReferringEntityId` integer, nullable
            - `Category` Category
              - …
        - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
          - `AddressTypeId` integer
          - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
          - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
          - `InActive` boolean: Soft-delete flag
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable: User who created the record
          - `UpdateDate` string, date-time: Date the record was last updated
          - `UpdateUser` string, nullable: User who last updated the record
      - `AccountContacts` AccountContact[], nullable
        - `AccountContactId` integer
        - `AccountId` integer: Foreign key to Account
        - `ContactId` integer: Foreign key to Contact
        - `IsPrimary` boolean: Marks this contact as the primary contact for the account
        - `InActive` boolean: Soft-delete flag for the assignment
        - `CreateDate` string, date-time: Audit fields
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Account` Account (recursive)
        - `Contact` Contact (recursive)
    - `Addresses` Address[], nullable
      - `AddressId` integer
      - `AddressType` string, required
      - `OtherAddressType` string, nullable
      - `AccountId` integer, nullable
      - `ContactId` integer, nullable
      - `IsDefault` boolean
      - `InActive` boolean
      - `HasMigratedToV2Address` boolean
      - `ContactPerson` string, nullable: Job Address
      - `Address1` string, required
      - `Address2` string, nullable
      - `City` string, required
      - `State` string, required
      - `County` string, nullable
      - `Country` string, nullable
      - `Zip` string, required
      - `Phone1` string, required
      - `Phone1Type` string, required
      - `Phone2` string, nullable
      - `Phone2Type` string, nullable
      - `Email` string, nullable
      - `CreateDate` string, date-time
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `Account` Account (recursive)
      - `Contact` Contact
        - `ContactId` integer
        - `FullName` string, nullable
        - `FirstName` string, required
        - `LastName` string, required
        - `AccountId` integer, nullable
        - `DefaultAddressType` string, nullable
        - `OtherAddressType` string, nullable
        - `Address1` string, nullable
        - `Address2` string, nullable
        - `City` string, nullable
        - `State` string, nullable
        - `County` string, nullable
        - `Country` string, nullable
        - `Zip` string, nullable
        - `Phone1` string, required
        - `Phone1Type` string, nullable
        - `Phone2` string, nullable
        - `Phone2Type` string, nullable
        - `Email` string, nullable
        - `BusDevId` integer, nullable
        - `RefContactClassId` integer, nullable
        - `InActive` boolean
        - `ExemptFromDuplicate` boolean
        - `SmsEnrolled` boolean
        - `SmsEnrolledDate` string, date-time, nullable
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Birthday` string, date-time, nullable
        - `Anniversary` string, date-time, nullable
        - `Married` boolean
        - `Children` boolean
        - `HobbiesAndInterests` string, nullable
        - `ReasonCodeId` integer, nullable
        - `SpecialInstructionId` integer, nullable
        - `SpecialInstructions` string, nullable
        - `isFavorite` boolean
        - `Account` Account (recursive)
        - `SpecialInstruction` Note
          - `NoteId` integer
          - `NoteText` string, required
          - `InActive` boolean
          - `CategoryId` integer, nullable
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
          - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
          - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
            - `NoteFollowUpUserId` integer
            - `NoteId` integer, required
            - `UserId` integer, required
            - `CreateDate` string, date-time: Auditing
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Note` Note (recursive)
            - `User` ApplicationUser
              - …
          - `FollowUpUserIds` integer[], nullable
          - `FollowUpUsers` string[], nullable
          - `FollowUpUsersDisplay` string, nullable
          - `JobId` integer, nullable
          - `ProjectId` integer, nullable
          - `OutlookEventId` string, nullable
          - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
          - `AccountId` integer, nullable
          - `ContactId` integer, nullable
          - `AddressV2Id` integer, nullable
          - `ReferringEntityId` integer, nullable
          - `Category` Category
            - `CategoryId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
        - `BusDevUser` 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
            - `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
              - …
            - `User` ApplicationUser (recursive)
            - `Position` TeamPosition
              - …
        - `RefContactClass` RefContactClass
          - `RefContactClassId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `ContactRefContactClass` ContactRefContactClass[], nullable
            - `ContactRefContactClassId` integer
            - `ContactId` integer
            - `RefContactClassId` integer
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Contact` Contact (recursive)
            - `RefContactClass` RefContactClass (recursive)
        - `ContactConTypes` ContactConType[], nullable
          - `ContactConTypeId` integer
          - `ContactId` integer
          - `ContactTypeId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `ContactType` ContactType
            - `ContactTypeId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ContactConTypes` ContactConType[], nullable
        - `ContactRefContactClasses` ContactRefContactClass[], nullable
          - `ContactRefContactClassId` integer
          - `ContactId` integer
          - `RefContactClassId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `RefContactClass` RefContactClass
            - `RefContactClassId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ContactRefContactClass` ContactRefContactClass[], nullable
        - `Addresses` Address[], nullable
        - `ReasonCode` ReasonCode
          - `ReasonCodeId` integer
          - `Description` string, nullable
          - `Category` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
        - `ContactAddresses` ContactAddress[], nullable
          - `ContactAddressId` integer
          - `ContactId` integer: Foreign key to Contact
          - `AddressV2Id` integer: Foreign key to AddressV2
          - `AddressTypeId` integer: Foreign key to AddressType lookup
          - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
          - `IsPrimary` boolean: Marks this as the primary/default address for the contact
          - `Phone1` string, nullable: Phone number associated with this specific address
          - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
          - `Phone2` string, nullable: Secondary phone number
          - `Phone2Type` string, nullable: Secondary phone type
          - `Email` string, nullable: Email address associated with this specific address
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `AddressV2` AddressV2: Version 2 of Address model - contains ONLY address-related fields. Phone, email, and contact person moved to entity-specific link tables or parent entities. Replaces legacy Address table which mixed address data with contact data.
            - `AddressV2Id` integer
            - `Address1` string, required: Street address line 1
            - `Address2` string, nullable: Street address line 2 (apt, suite, etc.)
            - `City` string, required: City name
            - `State` string, required: State/Province abbreviation or name
            - `County` string, nullable: County name
            - `Country` string, nullable: Country name or code
            - `Zip` string, required: Postal/ZIP code
            - `NormalizedAddress` string, nullable: Normalized address string for duplicate detection (lowercase, trimmed, standardized abbreviations) Computed field - not user-editable
            - `Latitude` number, double, nullable: Latitude coordinate (if geocoded)
            - `Longitude` number, double, nullable: Longitude coordinate (if geocoded)
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `SpecialInstructionId` integer, nullable
            - `SpecialInstructions` string, nullable
            - `AccountAddresses` AccountAddress[], nullable: Navigation properties - entities that reference this address
              - …
            - `ContactAddresses` ContactAddress[], nullable
            - `ReferringEntityAddresses` ReferringEntityAddress[], nullable
              - …
            - `AddressesV2AddressTypeAssignments` AddressesV2AddressTypeAssignments[], nullable: Address type assignments for this address (many-to-many with AddressType)
              - …
            - `SpecialInstruction` Note
              - …
          - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
            - `AddressTypeId` integer
            - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
            - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable: User who created the record
            - `UpdateDate` string, date-time: Date the record was last updated
            - `UpdateUser` string, nullable: User who last updated the record
        - `AccountContacts` AccountContact[], nullable
          - `AccountContactId` integer
          - `AccountId` integer: Foreign key to Account
          - `ContactId` integer: Foreign key to Contact
          - `IsPrimary` boolean: Marks this contact as the primary contact for the account
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Account` Account (recursive)
          - `Contact` Contact (recursive)
    - `AccountAccountTypes` AccountAccountType[], nullable
      - `AccountAccountTypeId` integer
      - `AccountId` integer
      - `AccountTypeId` integer
      - `CreateDate` string, date-time
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `Account` Account (recursive)
      - `AccountType` AccountType
        - `AccountTypeId` integer
        - `Description` string, nullable
        - `InActive` boolean
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `AccountAccountTypes` AccountAccountType[], nullable
    - `AccountAddresses` AccountAddress[], nullable
      - `AccountAddressId` integer
      - `AccountId` integer: Foreign key to Account
      - `AddressV2Id` integer: Foreign key to AddressV2
      - `AddressTypeId` integer: Foreign key to AddressType lookup
      - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
      - `IsPrimary` boolean: Marks this as the primary/default address for the account
      - `IsDefaultBilling` boolean: Marks this as the default billing address for the account
      - `IsDefaultJob` boolean: Marks this as the default job address for the account
      - `ContactPerson` string, nullable: Contact person at this address (job-specific)
      - `Phone1` string, nullable: Phone number associated with this specific address
      - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
      - `Phone2` string, nullable: Secondary phone number
      - `Phone2Type` string, nullable: Secondary phone type
      - `Email` string, nullable: Email address associated with this specific address
      - `InActive` boolean: Soft-delete flag for the assignment
      - `CreateDate` string, date-time: Audit fields
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `Account` Account (recursive)
      - `AddressV2` AddressV2: Version 2 of Address model - contains ONLY address-related fields. Phone, email, and contact person moved to entity-specific link tables or parent entities. Replaces legacy Address table which mixed address data with contact data.
        - `AddressV2Id` integer
        - `Address1` string, required: Street address line 1
        - `Address2` string, nullable: Street address line 2 (apt, suite, etc.)
        - `City` string, required: City name
        - `State` string, required: State/Province abbreviation or name
        - `County` string, nullable: County name
        - `Country` string, nullable: Country name or code
        - `Zip` string, required: Postal/ZIP code
        - `NormalizedAddress` string, nullable: Normalized address string for duplicate detection (lowercase, trimmed, standardized abbreviations) Computed field - not user-editable
        - `Latitude` number, double, nullable: Latitude coordinate (if geocoded)
        - `Longitude` number, double, nullable: Longitude coordinate (if geocoded)
        - `InActive` boolean: Soft-delete flag
        - `CreateDate` string, date-time: Audit fields
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `SpecialInstructionId` integer, nullable
        - `SpecialInstructions` string, nullable
        - `AccountAddresses` AccountAddress[], nullable: Navigation properties - entities that reference this address
        - `ContactAddresses` ContactAddress[], nullable
          - `ContactAddressId` integer
          - `ContactId` integer: Foreign key to Contact
          - `AddressV2Id` integer: Foreign key to AddressV2
          - `AddressTypeId` integer: Foreign key to AddressType lookup
          - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
          - `IsPrimary` boolean: Marks this as the primary/default address for the contact
          - `Phone1` string, nullable: Phone number associated with this specific address
          - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
          - `Phone2` string, nullable: Secondary phone number
          - `Phone2Type` string, nullable: Secondary phone type
          - `Email` string, nullable: Email address associated with this specific address
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact
            - `ContactId` integer
            - `FullName` string, nullable
            - `FirstName` string, required
            - `LastName` string, required
            - `AccountId` integer, nullable
            - `DefaultAddressType` string, nullable
            - `OtherAddressType` string, nullable
            - `Address1` string, nullable
            - `Address2` string, nullable
            - `City` string, nullable
            - `State` string, nullable
            - `County` string, nullable
            - `Country` string, nullable
            - `Zip` string, nullable
            - `Phone1` string, required
            - `Phone1Type` string, nullable
            - `Phone2` string, nullable
            - `Phone2Type` string, nullable
            - `Email` string, nullable
            - `BusDevId` integer, nullable
            - `RefContactClassId` integer, nullable
            - `InActive` boolean
            - `ExemptFromDuplicate` boolean
            - `SmsEnrolled` boolean
            - `SmsEnrolledDate` string, date-time, nullable
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Birthday` string, date-time, nullable
            - `Anniversary` string, date-time, nullable
            - `Married` boolean
            - `Children` boolean
            - `HobbiesAndInterests` string, nullable
            - `ReasonCodeId` integer, nullable
            - `SpecialInstructionId` integer, nullable
            - `SpecialInstructions` string, nullable
            - `isFavorite` boolean
            - `Account` Account (recursive)
            - `SpecialInstruction` Note
              - …
            - `BusDevUser` ApplicationUser
              - …
            - `RefContactClass` RefContactClass
              - …
            - `ContactConTypes` ContactConType[], nullable
              - …
            - `ContactRefContactClasses` ContactRefContactClass[], nullable
              - …
            - `Addresses` Address[], nullable
              - …
            - `ReasonCode` ReasonCode
              - …
            - `ContactAddresses` ContactAddress[], nullable
            - `AccountContacts` AccountContact[], nullable
              - …
          - `AddressV2` AddressV2 (recursive)
          - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
            - `AddressTypeId` integer
            - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
            - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable: User who created the record
            - `UpdateDate` string, date-time: Date the record was last updated
            - `UpdateUser` string, nullable: User who last updated the record
        - `ReferringEntityAddresses` ReferringEntityAddress[], nullable
          - `ReferringEntityAddressId` integer
          - `ReferringEntityId` integer: Foreign key to ReferringEntity
          - `AddressId` integer, nullable: Foreign key to legacy Address table (existing data uses this) Nullable for records migrated to V2-only
          - `AddressV2Id` integer, nullable: Foreign key to AddressV2 (new clean address model) Nullable until migrated to V2 system
          - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
          - `IsPrimary` boolean: Marks whether this address is the primary address for the referring entity
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `ReferringEntity` ReferringEntity: Unified model for referring entities that combines the functionality of referring Accounts and Contacts Supports both company and individual referral sources Migrated from Account (with AccountType="Referring Account") and Contact (with RefContactClass="Referring Contact")
            - `ReferringEntityId` integer
            - `LegacyAccountId` integer, nullable: Legacy Account ID for migration tracking (nullable after migration complete)
            - `LegacyContactId` integer, nullable: Legacy Contact ID for migration tracking (nullable after migration complete)
            - `MasterReferringEntityId` integer, nullable: Primary/Master ReferringEntity that this entity reports to (can be any level up in hierarchy, not just immediate parent)
            - `FullName` string, required: Full name of the referring entity (person name or company name)
            - `GPIdentifier` string, nullable: GP Customer Number for transferred accounts from legacy system
            - `PreMergeGPIdentifiers` string, nullable: Comma-separated list of historical GP identifiers from merged entities. Used to maintain visibility into expenses/transactions from all merged sources. Does NOT include the current GPIdentifier (stored above). Example: "REF000002,REF000003" means this entity absorbed entities with those GP IDs.
            - `ReferringEntityClassId` integer, nullable: Foreign key to ReferringEntityClass (classification/categorization of this entity)
            - `NotifyIfActivityExceeds` integer, nullable: When activity count exceeds this threshold, notify (used when Entity Class is VIP).
            - `ChannelId` integer, nullable: Marketing / referral channel for this entity.
            - `SubChannelId` integer, nullable: Sub-channel within the selected channel (must be linked via ChannelSubChannel).
            - `Phone1` string, required
            - `Phone1Type` string, nullable
            - `Phone2` string, nullable
            - `Phone2Type` string, nullable
            - `Email` string, nullable
            - `SmsEnrolled` boolean
            - `SmsEnrolledDate` string, date-time, nullable
            - `About` string, nullable: Free-text about this referring entity (hobbies, interests, notes migrated from legacy Contacts.HobbiesAndInterests)
            - `SpecialInstructionId` integer, nullable: FK to the Special Instruction note (CategoryId -200) for this referring entity.
            - `SpecialInstructions` string, nullable: Special instructions text (backed by Note; not a column).
            - `BusDevId` integer, nullable: Business Development User responsible for this referring entity
            - `IsCommercial` boolean: Indicates if this is a commercial referring entity
            - `Category` string, nullable: Entity category: Person, Organization, or Location. Null until set on the entity.
            - `UnitCount` integer, nullable: Number of units for Location-category referring entities. Null when Category is not Location.
            - `IsPerson` boolean: True if this referring entity represents an individual person; false if it represents a company/organization or location. Kept in sync with Category for backward compatibility.
            - `Birthday` string, date-time, nullable
            - `Anniversary` string, date-time, nullable
            - `Married` boolean
            - `Children` boolean
            - `InActive` boolean
            - `ExemptFromDuplicate` boolean: When true, this referring entity is excluded from duplicate detection groups.
            - `ReasonCodeId` integer, nullable
            - `IsOrphaned` boolean: Indicates if this referring entity is orphaned (no longer associated with active referrals)
            - `IsPendingReview` boolean: True while a newly created referrer awaits ApprovePending review. Pending create referrers are excluded from typeaheads, hierarchies, and reports.
            - `PendingReviewCreatedByUserId` integer, nullable: User who created this entity while it was pending review (CreatePending flow).
            - `PendingReviewCreatedByUser` ApplicationUser
              - …
            - `IsRoot` boolean: Indicates if this referring entity is at the root of the hierarchy (has descendants but no parent)
            - `IsEnrolledInLoyaltyRewardsProgram` boolean: Indicates if this referring entity is enrolled in the loyalty rewards program
            - `LoyaltyRewardsBalance` number, double: Loyalty rewards balance for this referring entity
            - `SyncedToGP` boolean: Indicates if this referring entity has been successfully synced to GP
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `BusDevUser` ApplicationUser
              - …
            - `ReasonCode` ReasonCode
              - …
            - `LegacyAccount` Account (recursive)
            - `LegacyContact` Contact
              - …
            - `SpecialInstruction` Note
              - …
            - `MasterReferringEntity` ReferringEntity (recursive)
            - `ReferringEntityTypeAssignments` ReferringEntityTypeAssignment[], nullable: Assignments connecting this entity to one or more ReferringEntityTypes
              - …
            - `ReferringEntityHobbyAssignments` ReferringEntityHobbyAssignment[], nullable: Assignments connecting this entity to one or more Hobbies
              - …
            - `ReferringEntityAddresses` ReferringEntityAddress[], nullable: Addresses associated with this referring entity (via link table ReferringEntityAddress)
            - `LastActivityDate` string, date-time, nullable: Last activity date associated with this referring entity (stored for reporting)
            - `TotalRevenue` number, double: Total revenue from all jobs associated with this referring entity (stored for reporting)
            - `DateOfLastReferredWork` string, date-time, nullable: Date of the last referred work associated with this referring entity
            - `TotalJobs` integer: Total number of jobs associated with this referring entity
            - `TotalActiveJobs` integer: Total number of active jobs
            - `TotalClosedJobs` integer: Total number of closed jobs
            - `TotalInactiveJobs` integer: Total number of inactive jobs
            - `TotalJobRevenue` number, double: Total job revenue
            - `TotalActiveJobRevenue` number, double: Total active job revenue
            - `TotalClosedJobRevenue` number, double: Total closed job revenue
            - `TotalInactiveJobRevenue` number, double: Total inactive job revenue
            - `TotalProjects` integer: Total number of projects
            - `TotalActiveProjects` integer: Total number of active projects
            - `TotalClosedProjects` integer: Total number of closed projects
            - `TotalInactiveProjects` integer: Total number of inactive projects
            - `TotalProjectRevenue` number, double: Total project revenue
            - `TotalActiveProjectRevenue` number, double: Total active project revenue
            - `TotalClosedProjectRevenue` number, double: Total closed project revenue
            - `TotalInactiveProjectRevenue` number, double: Total inactive project revenue
            - `TotalActivity` integer: Total activity count
            - `TotalExpenses` number, double: Total activity expenses
            - `UserMostRecentlyChangedBy` string, nullable: User who most recently changed this entity
            - `ReferringEntityClass` ReferringEntityClass
              - …
            - `Channel` Channel
              - …
            - `SubChannel` SubChannel
              - …
          - `Address` Address
            - `AddressId` integer
            - `AddressType` string, required
            - `OtherAddressType` string, nullable
            - `AccountId` integer, nullable
            - `ContactId` integer, nullable
            - `IsDefault` boolean
            - `InActive` boolean
            - `HasMigratedToV2Address` boolean
            - `ContactPerson` string, nullable: Job Address
            - `Address1` string, required
            - `Address2` string, nullable
            - `City` string, required
            - `State` string, required
            - `County` string, nullable
            - `Country` string, nullable
            - `Zip` string, required
            - `Phone1` string, required
            - `Phone1Type` string, required
            - `Phone2` string, nullable
            - `Phone2Type` string, nullable
            - `Email` string, nullable
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Account` Account (recursive)
            - `Contact` Contact
              - …
          - `AddressV2` AddressV2 (recursive)
        - `AddressesV2AddressTypeAssignments` AddressesV2AddressTypeAssignments[], nullable: Address type assignments for this address (many-to-many with AddressType)
          - `AddressesV2AddressTypeAssignmentId` integer: Primary key
          - `AddressV2Id` integer, required: Foreign key to AddressV2
          - `AddressTypeId` integer, required: Foreign key to AddressType
          - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
          - `InActive` boolean: Soft-delete flag
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable: User who created the record
          - `UpdateDate` string, date-time: Date the record was last updated
          - `UpdateUser` string, nullable: User who last updated the record
          - `AddressV2` AddressV2 (recursive)
          - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
            - `AddressTypeId` integer
            - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
            - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable: User who created the record
            - `UpdateDate` string, date-time: Date the record was last updated
            - `UpdateUser` string, nullable: User who last updated the record
        - `SpecialInstruction` Note
          - `NoteId` integer
          - `NoteText` string, required
          - `InActive` boolean
          - `CategoryId` integer, nullable
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
          - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
          - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
            - `NoteFollowUpUserId` integer
            - `NoteId` integer, required
            - `UserId` integer, required
            - `CreateDate` string, date-time: Auditing
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Note` Note (recursive)
            - `User` ApplicationUser
              - …
          - `FollowUpUserIds` integer[], nullable
          - `FollowUpUsers` string[], nullable
          - `FollowUpUsersDisplay` string, nullable
          - `JobId` integer, nullable
          - `ProjectId` integer, nullable
          - `OutlookEventId` string, nullable
          - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
          - `AccountId` integer, nullable
          - `ContactId` integer, nullable
          - `AddressV2Id` integer, nullable
          - `ReferringEntityId` integer, nullable
          - `Category` Category
            - `CategoryId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
      - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
        - `AddressTypeId` integer
        - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
        - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
        - `InActive` boolean: Soft-delete flag
        - `CreateDate` string, date-time: Audit fields
        - `CreateUser` string, nullable: User who created the record
        - `UpdateDate` string, date-time: Date the record was last updated
        - `UpdateUser` string, nullable: User who last updated the record
    - `AccountContacts` AccountContact[], nullable
      - `AccountContactId` integer
      - `AccountId` integer: Foreign key to Account
      - `ContactId` integer: Foreign key to Contact
      - `IsPrimary` boolean: Marks this contact as the primary contact for the account
      - `InActive` boolean: Soft-delete flag for the assignment
      - `CreateDate` string, date-time: Audit fields
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `Account` Account (recursive)
      - `Contact` Contact
        - `ContactId` integer
        - `FullName` string, nullable
        - `FirstName` string, required
        - `LastName` string, required
        - `AccountId` integer, nullable
        - `DefaultAddressType` string, nullable
        - `OtherAddressType` string, nullable
        - `Address1` string, nullable
        - `Address2` string, nullable
        - `City` string, nullable
        - `State` string, nullable
        - `County` string, nullable
        - `Country` string, nullable
        - `Zip` string, nullable
        - `Phone1` string, required
        - `Phone1Type` string, nullable
        - `Phone2` string, nullable
        - `Phone2Type` string, nullable
        - `Email` string, nullable
        - `BusDevId` integer, nullable
        - `RefContactClassId` integer, nullable
        - `InActive` boolean
        - `ExemptFromDuplicate` boolean
        - `SmsEnrolled` boolean
        - `SmsEnrolledDate` string, date-time, nullable
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Birthday` string, date-time, nullable
        - `Anniversary` string, date-time, nullable
        - `Married` boolean
        - `Children` boolean
        - `HobbiesAndInterests` string, nullable
        - `ReasonCodeId` integer, nullable
        - `SpecialInstructionId` integer, nullable
        - `SpecialInstructions` string, nullable
        - `isFavorite` boolean
        - `Account` Account (recursive)
        - `SpecialInstruction` Note
          - `NoteId` integer
          - `NoteText` string, required
          - `InActive` boolean
          - `CategoryId` integer, nullable
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
          - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
          - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
            - `NoteFollowUpUserId` integer
            - `NoteId` integer, required
            - `UserId` integer, required
            - `CreateDate` string, date-time: Auditing
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Note` Note (recursive)
            - `User` ApplicationUser
              - …
          - `FollowUpUserIds` integer[], nullable
          - `FollowUpUsers` string[], nullable
          - `FollowUpUsersDisplay` string, nullable
          - `JobId` integer, nullable
          - `ProjectId` integer, nullable
          - `OutlookEventId` string, nullable
          - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
          - `AccountId` integer, nullable
          - `ContactId` integer, nullable
          - `AddressV2Id` integer, nullable
          - `ReferringEntityId` integer, nullable
          - `Category` Category
            - `CategoryId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
        - `BusDevUser` 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
            - `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
              - …
            - `User` ApplicationUser (recursive)
            - `Position` TeamPosition
              - …
        - `RefContactClass` RefContactClass
          - `RefContactClassId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `ContactRefContactClass` ContactRefContactClass[], nullable
            - `ContactRefContactClassId` integer
            - `ContactId` integer
            - `RefContactClassId` integer
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Contact` Contact (recursive)
            - `RefContactClass` RefContactClass (recursive)
        - `ContactConTypes` ContactConType[], nullable
          - `ContactConTypeId` integer
          - `ContactId` integer
          - `ContactTypeId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `ContactType` ContactType
            - `ContactTypeId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ContactConTypes` ContactConType[], nullable
        - `ContactRefContactClasses` ContactRefContactClass[], nullable
          - `ContactRefContactClassId` integer
          - `ContactId` integer
          - `RefContactClassId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `RefContactClass` RefContactClass
            - `RefContactClassId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ContactRefContactClass` ContactRefContactClass[], nullable
        - `Addresses` Address[], nullable
          - `AddressId` integer
          - `AddressType` string, required
          - `OtherAddressType` string, nullable
          - `AccountId` integer, nullable
          - `ContactId` integer, nullable
          - `IsDefault` boolean
          - `InActive` boolean
          - `HasMigratedToV2Address` boolean
          - `ContactPerson` string, nullable: Job Address
          - `Address1` string, required
          - `Address2` string, nullable
          - `City` string, required
          - `State` string, required
          - `County` string, nullable
          - `Country` string, nullable
          - `Zip` string, required
          - `Phone1` string, required
          - `Phone1Type` string, required
          - `Phone2` string, nullable
          - `Phone2Type` string, nullable
          - `Email` string, nullable
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Account` Account (recursive)
          - `Contact` Contact (recursive)
        - `ReasonCode` ReasonCode
          - `ReasonCodeId` integer
          - `Description` string, nullable
          - `Category` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
        - `ContactAddresses` ContactAddress[], nullable
          - `ContactAddressId` integer
          - `ContactId` integer: Foreign key to Contact
          - `AddressV2Id` integer: Foreign key to AddressV2
          - `AddressTypeId` integer: Foreign key to AddressType lookup
          - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
          - `IsPrimary` boolean: Marks this as the primary/default address for the contact
          - `Phone1` string, nullable: Phone number associated with this specific address
          - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
          - `Phone2` string, nullable: Secondary phone number
          - `Phone2Type` string, nullable: Secondary phone type
          - `Email` string, nullable: Email address associated with this specific address
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `AddressV2` AddressV2: Version 2 of Address model - contains ONLY address-related fields. Phone, email, and contact person moved to entity-specific link tables or parent entities. Replaces legacy Address table which mixed address data with contact data.
            - `AddressV2Id` integer
            - `Address1` string, required: Street address line 1
            - `Address2` string, nullable: Street address line 2 (apt, suite, etc.)
            - `City` string, required: City name
            - `State` string, required: State/Province abbreviation or name
            - `County` string, nullable: County name
            - `Country` string, nullable: Country name or code
            - `Zip` string, required: Postal/ZIP code
            - `NormalizedAddress` string, nullable: Normalized address string for duplicate detection (lowercase, trimmed, standardized abbreviations) Computed field - not user-editable
            - `Latitude` number, double, nullable: Latitude coordinate (if geocoded)
            - `Longitude` number, double, nullable: Longitude coordinate (if geocoded)
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `SpecialInstructionId` integer, nullable
            - `SpecialInstructions` string, nullable
            - `AccountAddresses` AccountAddress[], nullable: Navigation properties - entities that reference this address
              - …
            - `ContactAddresses` ContactAddress[], nullable
            - `ReferringEntityAddresses` ReferringEntityAddress[], nullable
              - …
            - `AddressesV2AddressTypeAssignments` AddressesV2AddressTypeAssignments[], nullable: Address type assignments for this address (many-to-many with AddressType)
              - …
            - `SpecialInstruction` Note
              - …
          - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
            - `AddressTypeId` integer
            - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
            - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable: User who created the record
            - `UpdateDate` string, date-time: Date the record was last updated
            - `UpdateUser` string, nullable: User who last updated the record
        - `AccountContacts` AccountContact[], nullable
    - `SpecialInstruction` Note
      - `NoteId` integer
      - `NoteText` string, required
      - `InActive` boolean
      - `CategoryId` integer, nullable
      - `CreateDate` string, date-time
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
      - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
      - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
        - `NoteFollowUpUserId` integer
        - `NoteId` integer, required
        - `UserId` integer, required
        - `CreateDate` string, date-time: Auditing
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Note` Note (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
            - `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
              - …
            - `User` ApplicationUser (recursive)
            - `Position` TeamPosition
              - …
      - `FollowUpUserIds` integer[], nullable
      - `FollowUpUsers` string[], nullable
      - `FollowUpUsersDisplay` string, nullable
      - `JobId` integer, nullable
      - `ProjectId` integer, nullable
      - `OutlookEventId` string, nullable
      - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
      - `AccountId` integer, nullable
      - `ContactId` integer, nullable
      - `AddressV2Id` integer, nullable
      - `ReferringEntityId` integer, nullable
      - `Category` Category
        - `CategoryId` integer
        - `Description` string, nullable
        - `InActive` boolean
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
  - `JobAddressId` integer, nullable
  - `JobAddress` Address
    - `AddressId` integer
    - `AddressType` string, required
    - `OtherAddressType` string, nullable
    - `AccountId` integer, nullable
    - `ContactId` integer, nullable
    - `IsDefault` boolean
    - `InActive` boolean
    - `HasMigratedToV2Address` boolean
    - `ContactPerson` string, nullable: Job Address
    - `Address1` string, required
    - `Address2` string, nullable
    - `City` string, required
    - `State` string, required
    - `County` string, nullable
    - `Country` string, nullable
    - `Zip` string, required
    - `Phone1` string, required
    - `Phone1Type` string, required
    - `Phone2` string, nullable
    - `Phone2Type` string, nullable
    - `Email` string, nullable
    - `CreateDate` string, date-time
    - `CreateUser` string, nullable
    - `UpdateDate` string, date-time
    - `UpdateUser` string, nullable
    - `Account` Account
      - `AccountId` integer
      - `GpCustomerNumber` string, nullable
      - `CompanyName` string, nullable
      - `FullName` string, nullable
      - `DisplayName` string, nullable
      - `FirstName` string, nullable
      - `LastName` string, nullable
      - `CustClass` string, nullable
      - `DefaultAddressId` integer
      - `Address1` string, nullable
      - `Address2` string, nullable
      - `City` string, nullable
      - `State` string, nullable
      - `County` string, nullable
      - `Country` string, nullable
      - `Zip` string, nullable
      - `Phone1` string, nullable
      - `Phone1Type` string, nullable
      - `Phone2` string, nullable
      - `Phone2Type` string, nullable
      - `Email` string, nullable
      - `InActive` boolean
      - `CreateDate` string, date-time
      - `CreateUser` string, nullable
      - `UpdateDate` string, date-time
      - `UpdateUser` string, nullable
      - `Description` string, nullable
      - `IsCommercial` boolean
      - `ExemptFromDuplicate` boolean
      - `SmsEnrolled` boolean
      - `SmsEnrolledDate` string, date-time, nullable
      - `SpecialInstructionId` integer, nullable
      - `SpecialInstructions` string, nullable
      - `Contacts` Contact[], nullable
        - `ContactId` integer
        - `FullName` string, nullable
        - `FirstName` string, required
        - `LastName` string, required
        - `AccountId` integer, nullable
        - `DefaultAddressType` string, nullable
        - `OtherAddressType` string, nullable
        - `Address1` string, nullable
        - `Address2` string, nullable
        - `City` string, nullable
        - `State` string, nullable
        - `County` string, nullable
        - `Country` string, nullable
        - `Zip` string, nullable
        - `Phone1` string, required
        - `Phone1Type` string, nullable
        - `Phone2` string, nullable
        - `Phone2Type` string, nullable
        - `Email` string, nullable
        - `BusDevId` integer, nullable
        - `RefContactClassId` integer, nullable
        - `InActive` boolean
        - `ExemptFromDuplicate` boolean
        - `SmsEnrolled` boolean
        - `SmsEnrolledDate` string, date-time, nullable
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Birthday` string, date-time, nullable
        - `Anniversary` string, date-time, nullable
        - `Married` boolean
        - `Children` boolean
        - `HobbiesAndInterests` string, nullable
        - `ReasonCodeId` integer, nullable
        - `SpecialInstructionId` integer, nullable
        - `SpecialInstructions` string, nullable
        - `isFavorite` boolean
        - `Account` Account (recursive)
        - `SpecialInstruction` Note
          - `NoteId` integer
          - `NoteText` string, required
          - `InActive` boolean
          - `CategoryId` integer, nullable
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `FollowUpDate` string, date-time, nullable: When set, this note is a follow-up scheduled for the given date.
          - `IsFollowUp` boolean: Convenience flag — a note is a follow-up when FollowUpDate has a value.
          - `NoteFollowUpUsers` NoteFollowUpUser[], nullable: Optional users associated with a follow-up note.
            - `NoteFollowUpUserId` integer
            - `NoteId` integer, required
            - `UserId` integer, required
            - `CreateDate` string, date-time: Auditing
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Note` Note (recursive)
            - `User` ApplicationUser
              - …
          - `FollowUpUserIds` integer[], nullable
          - `FollowUpUsers` string[], nullable
          - `FollowUpUsersDisplay` string, nullable
          - `JobId` integer, nullable
          - `ProjectId` integer, nullable
          - `OutlookEventId` string, nullable
          - `SeriesICalUId` string, nullable: When set, note applies to the entire recurring series (shared ICalUId).
          - `AccountId` integer, nullable
          - `ContactId` integer, nullable
          - `AddressV2Id` integer, nullable
          - `ReferringEntityId` integer, nullable
          - `Category` Category
            - `CategoryId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
        - `BusDevUser` 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
            - `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
              - …
            - `User` ApplicationUser (recursive)
            - `Position` TeamPosition
              - …
        - `RefContactClass` RefContactClass
          - `RefContactClassId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `ContactRefContactClass` ContactRefContactClass[], nullable
            - `ContactRefContactClassId` integer
            - `ContactId` integer
            - `RefContactClassId` integer
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Contact` Contact (recursive)
            - `RefContactClass` RefContactClass (recursive)
        - `ContactConTypes` ContactConType[], nullable
          - `ContactConTypeId` integer
          - `ContactId` integer
          - `ContactTypeId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `ContactType` ContactType
            - `ContactTypeId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ContactConTypes` ContactConType[], nullable
        - `ContactRefContactClasses` ContactRefContactClass[], nullable
          - `ContactRefContactClassId` integer
          - `ContactId` integer
          - `RefContactClassId` integer
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `RefContactClass` RefContactClass
            - `RefContactClassId` integer
            - `Description` string, nullable
            - `InActive` boolean
            - `CreateDate` string, date-time
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ContactRefContactClass` ContactRefContactClass[], nullable
        - `Addresses` Address[], nullable
        - `ReasonCode` ReasonCode
          - `ReasonCodeId` integer
          - `Description` string, nullable
          - `Category` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
        - `ContactAddresses` ContactAddress[], nullable
          - `ContactAddressId` integer
          - `ContactId` integer: Foreign key to Contact
          - `AddressV2Id` integer: Foreign key to AddressV2
          - `AddressTypeId` integer: Foreign key to AddressType lookup
          - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
          - `IsPrimary` boolean: Marks this as the primary/default address for the contact
          - `Phone1` string, nullable: Phone number associated with this specific address
          - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
          - `Phone2` string, nullable: Secondary phone number
          - `Phone2Type` string, nullable: Secondary phone type
          - `Email` string, nullable: Email address associated with this specific address
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Contact` Contact (recursive)
          - `AddressV2` AddressV2: Version 2 of Address model - contains ONLY address-related fields. Phone, email, and contact person moved to entity-specific link tables or parent entities. Replaces legacy Address table which mixed address data with contact data.
            - `AddressV2Id` integer
            - `Address1` string, required: Street address line 1
            - `Address2` string, nullable: Street address line 2 (apt, suite, etc.)
            - `City` string, required: City name
            - `State` string, required: State/Province abbreviation or name
            - `County` string, nullable: County name
            - `Country` string, nullable: Country name or code
            - `Zip` string, required: Postal/ZIP code
            - `NormalizedAddress` string, nullable: Normalized address string for duplicate detection (lowercase, trimmed, standardized abbreviations) Computed field - not user-editable
            - `Latitude` number, double, nullable: Latitude coordinate (if geocoded)
            - `Longitude` number, double, nullable: Longitude coordinate (if geocoded)
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `SpecialInstructionId` integer, nullable
            - `SpecialInstructions` string, nullable
            - `AccountAddresses` AccountAddress[], nullable: Navigation properties - entities that reference this address
              - …
            - `ContactAddresses` ContactAddress[], nullable
            - `ReferringEntityAddresses` ReferringEntityAddress[], nullable
              - …
            - `AddressesV2AddressTypeAssignments` AddressesV2AddressTypeAssignments[], nullable: Address type assignments for this address (many-to-many with AddressType)
              - …
            - `SpecialInstruction` Note
              - …
          - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
            - `AddressTypeId` integer
            - `Description` string, nullable: The description of the address type (e.g., "Home", "Office", "Job", "Bill-Primary")
            - `OtherAddressType` string, nullable: Free-text description if the address type is "Other"
            - `InActive` boolean: Soft-delete flag
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable: User who created the record
            - `UpdateDate` string, date-time: Date the record was last updated
            - `UpdateUser` string, nullable: User who last updated the record
        - `AccountContacts` AccountContact[], nullable
          - `AccountContactId` integer
          - `AccountId` integer: Foreign key to Account
          - `ContactId` integer: Foreign key to Contact
          - `IsPrimary` boolean: Marks this contact as the primary contact for the account
          - `InActive` boolean: Soft-delete flag for the assignment
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `Account` Account (recursive)
          - `Contact` Contact (recursive)
      - `Addresses` Address[], nullable
      - `AccountAccountTypes` AccountAccountType[], nullable
        - `AccountAccountTypeId` integer
        - `AccountId` integer
        - `AccountTypeId` integer
        - `CreateDate` string, date-time
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Account` Account (recursive)
        - `AccountType` AccountType
          - `AccountTypeId` integer
          - `Description` string, nullable
          - `InActive` boolean
          - `CreateDate` string, date-time
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `AccountAccountTypes` AccountAccountType[], nullable
      - `AccountAddresses` AccountAddress[], nullable
        - `AccountAddressId` integer
        - `AccountId` integer: Foreign key to Account
        - `AddressV2Id` integer: Foreign key to AddressV2
        - `AddressTypeId` integer: Foreign key to AddressType lookup
        - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
        - `IsPrimary` boolean: Marks this as the primary/default address for the account
        - `IsDefaultBilling` boolean: Marks this as the default billing address for the account
        - `IsDefaultJob` boolean: Marks this as the default job address for the account
        - `ContactPerson` string, nullable: Contact person at this address (job-specific)
        - `Phone1` string, nullable: Phone number associated with this specific address
        - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
        - `Phone2` string, nullable: Secondary phone number
        - `Phone2Type` string, nullable: Secondary phone type
        - `Email` string, nullable: Email address associated with this specific address
        - `InActive` boolean: Soft-delete flag for the assignment
        - `CreateDate` string, date-time: Audit fields
        - `CreateUser` string, nullable
        - `UpdateDate` string, date-time
        - `UpdateUser` string, nullable
        - `Account` Account (recursive)
        - `AddressV2` AddressV2: Version 2 of Address model - contains ONLY address-related fields. Phone, email, and contact person moved to entity-specific link tables or parent entities. Replaces legacy Address table which mixed address data with contact data.
          - `AddressV2Id` integer
          - `Address1` string, required: Street address line 1
          - `Address2` string, nullable: Street address line 2 (apt, suite, etc.)
          - `City` string, required: City name
          - `State` string, required: State/Province abbreviation or name
          - `County` string, nullable: County name
          - `Country` string, nullable: Country name or code
          - `Zip` string, required: Postal/ZIP code
          - `NormalizedAddress` string, nullable: Normalized address string for duplicate detection (lowercase, trimmed, standardized abbreviations) Computed field - not user-editable
          - `Latitude` number, double, nullable: Latitude coordinate (if geocoded)
          - `Longitude` number, double, nullable: Longitude coordinate (if geocoded)
          - `InActive` boolean: Soft-delete flag
          - `CreateDate` string, date-time: Audit fields
          - `CreateUser` string, nullable
          - `UpdateDate` string, date-time
          - `UpdateUser` string, nullable
          - `SpecialInstructionId` integer, nullable
          - `SpecialInstructions` string, nullable
          - `AccountAddresses` AccountAddress[], nullable: Navigation properties - entities that reference this address
          - `ContactAddresses` ContactAddress[], nullable
            - `ContactAddressId` integer
            - `ContactId` integer: Foreign key to Contact
            - `AddressV2Id` integer: Foreign key to AddressV2
            - `AddressTypeId` integer: Foreign key to AddressType lookup
            - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
            - `IsPrimary` boolean: Marks this as the primary/default address for the contact
            - `Phone1` string, nullable: Phone number associated with this specific address
            - `Phone1Type` string, nullable: Phone type (Work, Cell, Fax)
            - `Phone2` string, nullable: Secondary phone number
            - `Phone2Type` string, nullable: Secondary phone type
            - `Email` string, nullable: Email address associated with this specific address
            - `InActive` boolean: Soft-delete flag for the assignment
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `Contact` Contact
              - …
            - `AddressV2` AddressV2 (recursive)
            - `AddressType` AddressType: Lookup table for address type classifications (Home, Office, Job, Bill-Primary, Bill-Secondary, Other, etc.) Replaces hardcoded address type strings in legacy Address table
              - …
          - `ReferringEntityAddresses` ReferringEntityAddress[], nullable
            - `ReferringEntityAddressId` integer
            - `ReferringEntityId` integer: Foreign key to ReferringEntity
            - `AddressId` integer, nullable: Foreign key to legacy Address table (existing data uses this) Nullable for records migrated to V2-only
            - `AddressV2Id` integer, nullable: Foreign key to AddressV2 (new clean address model) Nullable until migrated to V2 system
            - `OtherAddressTypeDescription` string, nullable: Free-text description if AddressType = "Other"
            - `IsPrimary` boolean: Marks whether this address is the primary address for the referring entity
            - `InActive` boolean: Soft-delete flag for the assignment
            - `CreateDate` string, date-time: Audit fields
            - `CreateUser` string, nullable
            - `UpdateDate` string, date-time
            - `UpdateUser` string, nullable
            - `ReferringEntity` ReferringEntity: Unified model for referring entities that combines the functionality of referring Accounts and Contacts Supports both company and individual referral sources Migrated from Account (with AccountType="Referring Account") and Contact (with RefContactClass="Referring Contact")
              - …
            - `Address` Address (recursive)
            - `AddressV2` AddressV2 (recursive)
- … truncated; see the full OpenAPI document linked below

## Response `200`

Success

## Changes

> 17 revisions in range; 1 not diffed.

- **2026-10-14** `91cbb088c4b1`: 4 info
  - added the new optional request property `JobPhotos/items/Project/TypeLabel` (media type: application/json-patch+json)
  - added the new optional request property `JobPhotos/items/Project/TypeLabel` (media type: application/json)
  - added the new optional request property `JobPhotos/items/Project/TypeLabel` (media type: text/json)
  - added the new optional request property `JobPhotos/items/Project/TypeLabel` (media type: application/*+json)

[Operation history](https://skmtc.dev/fireserviceusa/apis/fireservice-usa-p2-api/changes/api/v1/Jobs/RemoveWorkAuthorization/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)
