> ## Documentation Index
> Fetch the complete documentation index at: https://docs.portal.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Add an Area to a Proposal

> POST /public/proposals/{ProposalId}/area — Creates a named area (room) in a proposal. Auto-creates a default Draft option. Returns full proposal detail.

Use this endpoint to add a new area (such as a room or zone) to an existing proposal. Area names must be unique within the proposal. When the area is created, the system automatically generates one default option under it with a status of "Draft" — you do not need to create the first option manually. The response returns the complete updated proposal, including the new area and its default option.

<RequestExample>
  ```bash curl theme={null}
  curl -i -X POST \
    'https://api.portal.io/public/proposals/{ProposalId}/area' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -H 'X-MSS-API-APPID: YOUR_APP_ID' \
    -H 'X-MSS-API-USERKEY: YOUR_USER_KEY' \
    -H 'X-MSS-CUSTOM-DATE: Mon, 06 Apr 2026 00:22:19 GMT' \
    -H 'X-MSS-SIGNATURE: BASE64_SIGNATURE' \
    -d 'Name=Living+Room'
  ```

  ```python python theme={null}
  import requests
  from portal_auth import sign_request

  url = "https://api.portal.io/public/proposals/{ProposalId}/area"
  timestamp = "Mon, 06 Apr 2026 00:22:19 GMT"
  content_type = "application/x-www-form-urlencoded"
  signature = sign_request("POST", url, content_type, timestamp, "YOUR_USER_KEY", "YOUR_SECRET_KEY")

  response = requests.post(url, headers={
      "Accept": "application/json",
      "Content-Type": content_type,
      "X-MSS-API-APPID": "YOUR_APP_ID",
      "X-MSS-API-USERKEY": "YOUR_USER_KEY",
      "X-MSS-CUSTOM-DATE": timestamp,
      "X-MSS-SIGNATURE": signature
  }, data={
      "Name": "Living Room"
  })
  print(response.json())
  ```

  ```javascript node.js theme={null}
  const { signRequest } = require('./portalAuth');

  const url = "https://api.portal.io/public/proposals/{ProposalId}/area";
  const timestamp = new Date().toUTCString();
  const contentType = "application/x-www-form-urlencoded";
  const signature = signRequest("POST", url, contentType, timestamp, "YOUR_USER_KEY", "YOUR_SECRET_KEY");

  const response = await fetch(url, {
      method: "POST",
      headers: {
          "Accept": "application/json",
          "Content-Type": contentType,
          "X-MSS-API-APPID": "YOUR_APP_ID",
          "X-MSS-API-USERKEY": "YOUR_USER_KEY",
          "X-MSS-CUSTOM-DATE": timestamp,
          "X-MSS-SIGNATURE": signature
      },
      body: new URLSearchParams({ Name: "Living Room" })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": 123,
    "lastModifiedDate": "2026-04-06T00:22:19Z",
    "areas": [
      {
        "id": 55,
        "name": "Living Room",
        "options": [
          {
            "id": 201,
            "status": "Draft",
            "clientDescription": null,
            "installerDescription": null
          }
        ]
      }
    ]
  }
  ```
</ResponseExample>


## OpenAPI

````yaml POST /public/proposals/{ProposalId}/area
openapi: 3.1.0
info:
  title: Portal.Api
  version: '1.0'
servers:
  - url: http://127.0.0.1:5000
security: []
tags: []
paths:
  /public/proposals/{ProposalId}/area:
    post:
      tags:
        - Proposals
      summary: Add Proposal Area
      description: >-
        Creates a new area (room) within a proposal. The area name must be
        unique within the proposal. The system automatically creates one default
        option in "Draft" status under the new area. The response includes the
        full updated proposal detail, including the new area and its default
        option.
      operationId: AddProposalArea
      parameters:
        - $ref: '#/components/parameters/Accept'
        - name: X-MSS-API-APPID
          in: header
          description: Application Id
          required: true
          schema:
            type: string
        - name: X-MSS-CUSTOM-DATE
          in: header
          description: A date timestamp of the request
          required: true
          schema:
            type: string
        - name: X-MSS-SIGNATURE
          in: header
          description: A signature for the request
          required: true
          schema:
            type: string
        - name: X-MSS-API-USERKEY
          in: header
          description: User API Key
          required: true
          schema:
            type: string
        - name: ProposalId
          in: path
          description: Unique ID of the proposal (not the proposal number).
          required: true
          x-nullable: false
          schema:
            type: integer
            format: int32
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                Name:
                  description: Name of the area to create.
                  type: string
              required:
                - Name
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicProposalDetailResponse'
        '400':
          description: If an area with the same name already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
        '401':
          description: >-
            Not Authorized. Ensure a valid session cookie or HMAC authentication
            headers are provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
        '402':
          description: >-
            The dealer's subscription is inactive or expired. An active
            subscription is required to use this endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
        '403':
          description: You do not have permission for this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
        '404':
          description: Proposal not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
        '409':
          description: Proposal state prevents editing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
      deprecated: false
      x-codeSamples: []
components:
  parameters:
    Accept:
      name: Accept
      in: header
      description: Accept Header
      required: true
      schema:
        type: string
        enum:
          - application/json
  schemas:
    PublicProposalDetailResponse:
      title: PublicProposalDetailResponse
      required:
        - id
        - createdDate
        - lastModifiedDate
        - lastModifiedByUserDate
        - financialSummary
        - number
        - name
        - status
        - dealer
        - lastModifiedUser
      properties:
        id:
          description: >-
            Unique identifier for the proposal. Use this id for subsequent API
            calls that reference the proposal.
          type: integer
          format: int32
        createdDate:
          description: >-
            UTC timestamp when the proposal was initially created. Returned in
            ISO 8601 format.
          type: string
          format: date-time
        clientLastDecisionDate:
          description: >-
            UTC timestamp when the client last accepted or declined the
            proposal. Null if no client decision has been recorded.
          type: string
          format: date-time
        lastCompletedDate:
          description: >-
            UTC timestamp when the proposal last reached a completed state, if
            applicable.
          type: string
          format: date-time
        lastModifiedDate:
          description: >-
            UTC timestamp when the proposal was last modified by any user or
            system process.
          type: string
          format: date-time
        lastModifiedByUserDate:
          description: >-
            UTC timestamp when the proposal was last modified by a human user
            (not an automated system update).
          type: string
          format: date-time
        financialSummary:
          $ref: '#/components/schemas/PublicFinancialSummaryModel'
        changeOrders:
          description: >-
            List of change orders associated with this proposal. Each item
            contains details of scope changes, price adjustments, and approval
            state.
          type: array
          items:
            $ref: '#/components/schemas/PublicChangeOrderModel'
        number:
          description: Proposal number unique within the dealer account.
          type: integer
          format: int32
        name:
          description: Display name of the proposal.
          type: string
        status:
          description: The current status of the resource.
          type: string
          enum:
            - Undefined
            - Draft
            - Submitted
            - ViewedByClient
            - Accepted
            - Declined
            - Delayed
            - Completed
            - EmailFailed
            - Expired
        lastSubmittedDate:
          description: UTC timestamp when the proposal was last submitted to the customer.
          type: string
          format: date-time
        clientLastOpenedDate:
          description: >-
            UTC timestamp when the customer last opened the proposal viewer
            link.
          type: string
          format: date-time
        customer:
          $ref: '#/components/schemas/PublicCustomerModel'
        dealer:
          $ref: '#/components/schemas/PublicDealerModel'
        coverpageImageUrl:
          description: Absolute URL of the proposal cover image, when one is available.
          type: string
        aboutUs:
          description: The about us text for the company profile.
          type: string
        projectDescription:
          description: A description of the project.
          type: string
        areas:
          description: The list of areas.
          type: array
          items:
            $ref: '#/components/schemas/PublicAreaModel'
        profit:
          $ref: '#/components/schemas/PublicProfitModel'
        recurringServices:
          $ref: '#/components/schemas/PublicRecurringServicesModel'
        paymentSchedule:
          $ref: '#/components/schemas/PublicPaymentScheduleModel'
        paymentRequests:
          description: Payment requests already issued for this proposal.
          type: array
          items:
            $ref: '#/components/schemas/PublicPaymentRequestModel'
        projectTerms:
          description: The terms and conditions for the project.
          type: string
        lastModifiedUser:
          $ref: '#/components/schemas/PublicUserModel'
      description: Detailed proposal representation
      type: object
    HttpError:
      title: HttpError
      properties:
        errorCode:
          type: string
        stackTrace:
          type: string
        contentType:
          type: string
        headers:
          $ref: '#/components/schemas/Dictionary_String_String_'
        cookies:
          type: array
          items:
            $ref: '#/components/schemas/Cookie'
        status:
          type: integer
          format: int32
        statusCode:
          type: string
        statusDescription:
          type: string
        response:
          $ref: '#/components/schemas/Object'
        responseFilter:
          $ref: '#/components/schemas/IContentTypeWriter'
        requestContext:
          $ref: '#/components/schemas/IRequest'
        paddingLength:
          type: integer
          format: int32
        resultScope:
          $ref: '#/components/schemas/Func_IDisposable_'
        options:
          $ref: '#/components/schemas/IDictionary_String_String_'
        responseStatus:
          $ref: '#/components/schemas/ResponseStatus'
        targetSite:
          $ref: '#/components/schemas/MethodBase'
        message:
          type: string
        data:
          $ref: '#/components/schemas/IDictionary'
        innerException:
          $ref: '#/components/schemas/Exception'
        helpLink:
          type: string
        source:
          type: string
        hResult:
          type: integer
          format: int32
      description: HttpError
      type: object
    PublicFinancialSummaryModel:
      title: PublicFinancialSummaryModel
      required:
        - partsSubtotal
        - partsTotal
        - laborTotal
        - feeTotal
        - proposalSubtotal
        - salesTax
      properties:
        partsSubtotal:
          description: >-
            Total of all sell prices for parts on proposal, before any
            additional discount
          type: number
          format: double
        partsDiscountType:
          description: Discount type applied to parts when one exists
          type: string
          enum:
            - Percentage
            - Fixed
        partsDiscountPercentage:
          description: Parts discount percentage when one exists
          type: number
          format: double
        partsDiscount:
          description: Additional discount on parts
          type: number
          format: double
        partsDiscountTaxable:
          description: Additional discount on taxable parts
          type: number
          format: double
        partsDiscountTaxExempt:
          description: Additional discount on tax exempt parts
          type: number
          format: double
        partsTotal:
          description: >-
            Total of all sell prices for parts on proposal, after additional
            discount
          type: number
          format: double
        laborTotal:
          description: Total sell price of labor items on the proposal
          type: number
          format: double
        feeTotal:
          description: Total sell price of fee items on the proposal
          type: number
          format: double
        proposalSubtotal:
          description: Sum of parts, labor, and fees before sales tax
          type: number
          format: double
        salesTax:
          $ref: '#/components/schemas/PublicSalesTaxModel'
        proposalTotal:
          description: Total proposal amount
          type: number
          format: double
        currency:
          $ref: '#/components/schemas/PublicCurrencyModel'
      description: Financial totals, discounts, tax, and currency values for the proposal
      type: object
    PublicChangeOrderModel:
      title: PublicChangeOrderModel
      required:
        - id
        - number
        - name
        - status
        - createdDate
        - lastModifiedDate
      properties:
        id:
          description: Unique numeric identifier of the change order
          type: integer
          format: int32
        number:
          description: Change-order number shown to the dealer in the UI
          type: integer
          format: int32
        name:
          description: Display name of the change order
          type: string
        status:
          description: Current change-order status
          type: string
          enum:
            - Undefined
            - Draft
            - Submitted
            - ViewedByClient
            - Accepted
            - Declined
            - Delayed
            - Completed
            - EmailFailed
            - Expired
        total:
          $ref: '#/components/schemas/PublicChangeOrderTotalModel'
        customer:
          $ref: '#/components/schemas/PublicContactModel'
        createdDate:
          description: UTC timestamp when the change order was created
          type: string
          format: date-time
        lastModifiedDate:
          description: >-
            UTC timestamp when the change order was last modified by the system
            or a user
          type: string
          format: date-time
        lastModifiedByUserDate:
          description: >-
            UTC timestamp when the change order was last modified by a user
            action
          type: string
          format: date-time
      description: Change-order summary
      type: object
    PublicCustomerModel:
      title: PublicCustomerModel
      required:
        - id
        - partyType
        - contactType
      properties:
        location:
          $ref: '#/components/schemas/PublicLocationModel'
        id:
          description: Unique numeric identifier of the contact
          type: integer
          format: int32
        partyType:
          description: Contact party type such as Person or Company
          type: string
          enum:
            - Undefined
            - Person
            - Company
        contactType:
          description: Contact category type
          type: string
          enum:
            - Undefined
            - Client
            - Employee
            - Contractor
            - Other
        firstName:
          description: Contact first name
          type: string
        lastName:
          description: Contact last name
          type: string
        companyName:
          description: Company name when the contact represents a company
          type: string
        contactEmail:
          description: Primary contact email address
          type: string
        contactEmailCC:
          description: Additional email addresses copied when a proposal is submitted
          type: string
        contactPhone:
          description: Primary contact phone number
          type: string
      description: Customer contact
      type: object
    PublicDealerModel:
      title: PublicDealerModel
      required:
        - companyName
        - location
      properties:
        companyName:
          description: Dealer company name
          type: string
        location:
          $ref: '#/components/schemas/PublicLocationModel'
        salesperson:
          $ref: '#/components/schemas/PublicSalespersonModel'
        webSiteUrl:
          description: Dealer website URL
          type: string
        companyPhone:
          description: Dealer phone number
          type: string
        companyLogoUrl:
          description: Dealer logo image URL
          type: string
      description: Dealer information
      type: object
    PublicAreaModel:
      title: PublicAreaModel
      required:
        - id
        - name
        - options
      properties:
        id:
          description: Unique numeric identifier of the proposal area
          type: integer
          format: int32
        name:
          description: Area name
          type: string
        options:
          description: Client-selectable options available within the area
          type: array
          items:
            $ref: '#/components/schemas/PublicAreaOptionModel'
      description: Proposal area
      type: object
    PublicProfitModel:
      title: PublicProfitModel
      properties:
        total:
          description: Total profit amount for the proposal
          type: number
          format: double
        percentage:
          description: Total profit margin percentage for the proposal
          type: number
          format: double
        partTotal:
          description: Profit amount contributed by parts
          type: number
          format: double
        partPercentage:
          description: Profit margin percentage for parts
          type: number
          format: double
        laborTotal:
          description: Profit amount contributed by labor
          type: number
          format: double
        laborPercentage:
          description: Profit margin percentage for labor
          type: number
          format: double
        isProfitIncludeCos:
          description: Whether change orders are included in the profit calculation
          type: boolean
      description: Profit summary for the proposal
      type: object
    PublicRecurringServicesModel:
      title: PublicRecurringServicesModel
      required:
        - items
        - totalRecurringService
      properties:
        items:
          description: Recurring service line items included with the proposal.
          type: array
          items:
            $ref: '#/components/schemas/PublicRecurringServiceItemModel'
        totalRecurringService:
          description: >-
            Sum of recurring services on proposal. Not part of the one-time
            proposal total.
          type: number
          format: double
      description: Recurring service summary associated with the proposal.
      type: object
    PublicPaymentScheduleModel:
      title: PublicPaymentScheduleModel
      properties:
        customerDescription:
          description: Customer-facing description shown with the payment schedule.
          type: string
        payments:
          description: List of scheduled payment items for the proposal.
          type: array
          items:
            $ref: '#/components/schemas/PublicPaymentScheduleItemModel'
      description: >-
        Payment schedule configuration for the proposal, including the
        customer-facing description and individual payment milestones.
      type: object
    PublicPaymentRequestModel:
      title: PublicPaymentRequestModel
      required:
        - id
        - status
        - dueDate
      properties:
        id:
          description: Unique numeric identifier of the payment request
          type: integer
          format: int32
        status:
          description: Current payment request status
          type: string
          enum:
            - Undefined
            - Draft
            - Submitted
            - Viewed
            - Paid
            - Declined
            - Refunded
            - Pending
            - RequiresAction
            - Verifying
            - Cancelled
        amount:
          description: Requested payment amount
          type: number
          format: double
        dueDate:
          description: UTC due date for the payment request
          type: string
          format: date-time
        description:
          description: Payment request description
          type: string
        paymentMethod:
          description: Payment method associated with the request when available
          type: string
      description: Payment request
      type: object
    PublicUserModel:
      title: PublicUserModel
      required:
        - firstName
      properties:
        firstName:
          description: User first name
          type: string
        lastName:
          description: User last name
          type: string
      description: User summary returned within proposal detail responses
      type: object
    Dictionary_String_String_:
      title: Dictionary<String,String>
      additionalProperties:
        type: string
      description: Dictionary<String,String>
      type: object
    Cookie:
      title: Cookie
      properties: {}
      description: Cookie
      type: object
    Object:
      properties: {}
      description: Object
      type: object
    IContentTypeWriter:
      title: IContentTypeWriter
      properties: {}
      description: IContentTypeWriter
      type: object
    IRequest:
      title: IRequest
      properties: {}
      description: IRequest
      type: object
    Func_IDisposable_:
      title: Func`1
      properties: {}
      description: Func<IDisposable>
      type: object
    IDictionary_String_String_:
      title: IDictionary<String,String>
      additionalProperties:
        type: string
      description: IDictionary<String,String>
      type: object
    ResponseStatus:
      title: ResponseStatus
      properties:
        errorCode:
          type: string
        message:
          type: string
        stackTrace:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ResponseError'
        meta:
          $ref: '#/components/schemas/Dictionary_String_String_'
      description: ResponseStatus
      type: object
    MethodBase:
      title: MethodBase
      properties: {}
      description: MethodBase
      type: object
    IDictionary:
      title: IDictionary
      properties: {}
      description: IDictionary
      type: object
    Exception:
      title: Exception
      properties: {}
      description: Exception
      type: object
    PublicSalesTaxModel:
      title: PublicSalesTaxModel
      required:
        - taxStatus
      properties:
        taxStatus:
          description: Tax calculation status or reason tax could not be calculated
          type: string
          enum:
            - Undefined
            - Ok
            - NoState
            - OutOfCountry
            - NoClient
            - NoClientAddress
            - IncompleteClientAddress
            - NoCompanyAddress
            - TaxableStateDeclined
        total:
          description: Total sales-tax amount
          type: number
          format: double
        calculation:
          $ref: '#/components/schemas/PublicTaxCalculationModel'
      description: Sales-tax summary
      type: object
    PublicCurrencyModel:
      title: PublicCurrencyModel
      required:
        - code
        - symbol
      properties:
        code:
          description: Currency code, for example USD.
          type: string
        symbol:
          description: Currency symbol used for display, for example $.
          type: string
      description: Currency code and symbol used to display money values.
      type: object
    PublicChangeOrderTotalModel:
      title: PublicChangeOrderTotalModel
      properties:
        changeOrderTotal:
          description: Total change-order amount
          type: number
          format: double
        currency:
          $ref: '#/components/schemas/PublicCurrencyModel'
      description: Change-order total amount and currency
      type: object
    PublicContactModel:
      title: PublicContactModel
      required:
        - id
        - partyType
        - contactType
      properties:
        id:
          description: Unique numeric identifier of the contact
          type: integer
          format: int32
        partyType:
          description: Contact party type such as Person or Company
          type: string
          enum:
            - Undefined
            - Person
            - Company
        contactType:
          description: Contact category type
          type: string
          enum:
            - Undefined
            - Client
            - Employee
            - Contractor
            - Other
        firstName:
          description: Contact first name
          type: string
        lastName:
          description: Contact last name
          type: string
        companyName:
          description: Company name when the contact represents a company
          type: string
        contactEmail:
          description: Primary contact email address
          type: string
        contactEmailCC:
          description: Additional email addresses copied when a proposal is submitted
          type: string
        contactPhone:
          description: Primary contact phone number
          type: string
      description: Contact summary model
      type: object
    PublicLocationModel:
      title: PublicLocationModel
      properties:
        id:
          description: Unique numeric identifier of the location, when available.
          type: integer
          format: int32
        street:
          description: Primary street address line.
          type: string
        suite:
          description: Secondary address line, apartment, or suite.
          type: string
        city:
          description: City or locality.
          type: string
        postalCode:
          description: Postal or ZIP code.
          type: string
        state:
          description: State, province, or region name.
          type: string
        stateAbbrev:
          description: State or province abbreviation when available.
          type: string
        country:
          description: Country name.
          type: string
        phone:
          description: Location phone number when one is associated with this address.
          type: string
      description: Location and address details.
      type: object
    PublicSalespersonModel:
      title: PublicSalespersonModel
      required:
        - email
        - firstName
      properties:
        id:
          description: User ID of the salesperson
          type: integer
          format: int32
        email:
          description: Salesperson email address
          type: string
        firstName:
          description: User first name
          type: string
        lastName:
          description: User last name
          type: string
      description: Salesperson summary
      type: object
    PublicAreaOptionModel:
      title: PublicAreaOptionModel
      required:
        - id
        - status
        - lastModifiedDate
        - total
        - totalRecurringService
      properties:
        id:
          description: Unique numeric identifier of the proposal area option
          type: integer
          format: int32
        status:
          description: Current option status
          type: string
          enum:
            - Draft
            - Accepted
            - Declined
        lastModifiedDate:
          description: UTC timestamp when the option was last modified
          type: string
          format: date-time
        clientDescription:
          description: Client-facing option description
          type: string
        installerDescription:
          description: Installer-facing option description
          type: string
        items:
          description: Items included in the option
          type: array
          items:
            $ref: '#/components/schemas/PublicAreaItemModel'
        total:
          description: Total amount for the option
          type: number
          format: double
        totalRecurringService:
          description: Recurring-service total for the option
          type: number
          format: double
      description: Area option
      type: object
    PublicRecurringServiceItemModel:
      title: PublicRecurringServiceItemModel
      required:
        - name
        - sellPrice
        - quantity
        - totalSell
      properties:
        name:
          description: Recurring service name
          type: string
        sellPrice:
          description: Recurring service sell price
          type: number
          format: double
        quantity:
          description: Recurring service quantity
          type: number
          format: double
        totalSell:
          description: Recurring service total amount
          type: number
          format: double
      description: Recurring service line item
      type: object
    PublicPaymentScheduleItemModel:
      title: PublicPaymentScheduleItemModel
      required:
        - amount
        - due
      properties:
        calculation:
          description: Human-readable calculation label for this payment milestone.
          type: string
        amount:
          description: Amount due for this payment milestone.
          type: number
          format: double
        due:
          $ref: '#/components/schemas/PublicDueModel'
      description: Single payment milestone within the proposal payment schedule.
      type: object
    ResponseError:
      title: ResponseError
      properties:
        errorCode:
          type: string
        fieldName:
          type: string
        message:
          type: string
        meta:
          $ref: '#/components/schemas/Dictionary_String_String_'
      description: ResponseError
      type: object
    PublicTaxCalculationModel:
      title: PublicTaxCalculationModel
      required:
        - method
        - applyTo
        - hasMultipleTaxSupport
        - isTaxJarAvailable
      properties:
        method:
          description: Tax calculation method
          type: string
          enum:
            - ClientLocation
            - CompanyLocation
            - FixedPercentage
            - None
        applyTo:
          description: Proposal components the tax calculation applies to
          type: array
          items:
            type: string
            enum:
              - None
              - Parts
              - Labor
              - Fee
        partsTax:
          description: Primary parts tax rate or amount
          type: number
          format: double
        partsTaxName:
          description: Display name for the primary parts tax
          type: string
        laborTax:
          description: Primary labor tax rate or amount
          type: number
          format: double
        laborTaxName:
          description: Display name for the primary labor tax
          type: string
        hasMultipleTaxSupport:
          description: Whether multiple tax lines are supported
          type: boolean
        partsTax2:
          description: >-
            Secondary parts tax rate or amount when multiple tax support is
            enabled
          type: number
          format: double
        partsTax2Name:
          description: Display name for the secondary parts tax
          type: string
        laborTax2:
          description: >-
            Secondary labor tax rate or amount when multiple tax support is
            enabled
          type: number
          format: double
        laborTax2Name:
          description: Display name for the secondary labor tax
          type: string
        feeTax:
          description: Primary fee tax rate or amount
          type: number
          format: double
        feeTaxName:
          description: Display name for the primary fee tax
          type: string
        feeTax2:
          description: >-
            Secondary fee tax rate or amount when multiple tax support is
            enabled
          type: number
          format: double
        feeTax2Name:
          description: Display name for the secondary fee tax
          type: string
        taxLocation:
          $ref: '#/components/schemas/PublicLocationModel'
        isTaxJarAvailable:
          description: Whether TaxJar is available for this calculation
          type: boolean
        partsTotalTax:
          description: Total tax amount applied to parts
          type: number
          format: double
        laborTotalTax:
          description: Total tax amount applied to labor
          type: number
          format: double
        feeTotalTax:
          description: Total tax amount applied to fees
          type: number
          format: double
      description: Tax calculation details
      type: object
    PublicAreaItemModel:
      title: PublicAreaItemModel
      required:
        - id
        - itemType
        - referencedItemId
        - createdDate
        - quantity
        - total
      properties:
        id:
          description: Unique numeric identifier of the proposal item
          type: integer
          format: int32
        parentId:
          description: >-
            Parent proposal item identifier when this item is nested under
            another item
          type: integer
          format: int32
        itemType:
          description: Item type
          type: string
          enum:
            - Part
            - Labor
            - CustomItem
            - Fee
        referencedItemId:
          description: Identifier of the source catalog, custom, or labor item
          type: integer
          format: int32
        createdDate:
          description: UTC timestamp when the proposal item was created
          type: string
          format: date-time
        lastModifiedDate:
          description: UTC timestamp when the proposal item was last modified
          type: string
          format: date-time
        brand:
          description: Brand name for catalog and custom items
          type: string
        model:
          description: Model value for catalog and custom items
          type: string
        description:
          description: Deprecated legacy description field and use shortDescription instead
          type: string
        name:
          description: Name used for labor items
          type: string
        shortDescription:
          description: Short description shown for the proposal item
          type: string
        clientNote:
          description: Client-facing note for the proposal item
          type: string
        imageUrl:
          description: Image URL when one is available
          type: string
        msrp:
          description: MSRP amount when available
          type: number
          format: double
        sellPrice:
          description: Sell price for the proposal item
          type: number
          format: double
        cost:
          description: Supplier cost for the proposal item
          type: number
          format: double
        costUpdateDate:
          description: UTC timestamp when the supplier cost was last updated
          type: string
          format: date-time
        supplier:
          description: Supplier display name
          type: string
        quantity:
          description: Quantity of the proposal item
          type: number
          format: double
        total:
          $ref: '#/components/schemas/PublicItemTotalModel'
        isTaxExempt:
          description: Whether the proposal item is tax exempt
          type: boolean
        isRecurringService:
          description: Whether the proposal item is a recurring service
          type: boolean
        linkedOrders:
          description: Linked orders created from this proposal item
          type: array
          items:
            $ref: '#/components/schemas/PublicLinkedOrderModel'
      description: Proposal area item
      type: object
    PublicDueModel:
      title: PublicDueModel
      properties:
        date:
          description: UTC due date for the payment item when one is defined
          type: string
          format: date-time
        milestone:
          description: Milestone label used instead of an explicit due date when applicable
          type: string
      description: Due date or milestone marker for a payment schedule item
      type: object
    PublicItemTotalModel:
      title: PublicItemTotalModel
      required:
        - amount
      properties:
        amount:
          description: Total amount for the item
          type: number
          format: double
        currency:
          $ref: '#/components/schemas/PublicCurrencyModel'
        isCombinedPrice:
          description: Whether the item price is combined with nested item prices
          type: boolean
      description: Total amount for a proposal item
      type: object
    PublicLinkedOrderModel:
      title: PublicLinkedOrderModel
      required:
        - orderId
        - orderNumber
        - orderNumberSuffix
        - orderName
        - orderStatus
      properties:
        orderId:
          description: Unique numeric identifier of the order
          type: integer
          format: int32
        orderNumber:
          description: Order number shown to the dealer
          type: integer
          format: int32
        orderNumberSuffix:
          description: Order number suffix used for supplier-specific numbering
          type: string
        supplier:
          description: Supplier display name
          type: string
        supplierRef:
          description: Supplier reference or supplier order number
          type: string
        orderName:
          description: Display name of the order
          type: string
        orderStatus:
          description: Current order status
          type: string
          enum:
            - Draft
            - Submitted
            - ViewedBySupplier
            - Accepted
            - Received
            - EmailFailed
            - Undefined
      description: Order summary linked to a proposal item
      type: object

````