Fulcrumpro Reporting API

The Reporting API from Fulcrumpro — 8 operation(s) for reporting.

OpenAPI Specification

fulcrumpro-reporting-api-openapi.yml Raw ↑
openapi: 3.0.4
info:
  title: Fulcrum Public Accounting Code Reporting API
  version: v1
servers:
- url: https://api.fulcrumpro.com
tags:
- name: Reporting
paths:
  /api/reporting/inventory/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready on-hand inventory rows from the inventory reporting view, including per-unit and

        extended valuation (material/labor/machine/OP), lot and location context, and item categorization

        so callers do not need to hand-join inventory to lots, items, and their details. Returns exactly

        one row per (item, lot, location), so summing on-hand quantity or value across the rows does not

        over-count a lot.'
      operationId: ListInventoryReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingInventoryReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingInventoryReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingInventoryReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingInventoryReportFilter'
      responses:
        '200':
          description: A page of inventory report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingInventoryReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingInventoryReportRow'
        '403':
          description: The viewer lacks the View Inventory permission.
      x-c4-required-permissions:
      - ItemsAndInventory-Items-View Inventory
  /api/reporting/invoice/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready invoice-line rows from the invoice reporting view, including line type,

        pricing, tax, and aging detail joined to sales-order and shipment context so callers do not need

        to hand-join invoices to invoice line items, sales orders, and shipments.'
      operationId: ListInvoiceReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingInvoiceReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingInvoiceReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingInvoiceReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingInvoiceReportFilter'
      responses:
        '200':
          description: A page of invoice report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingInvoiceReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingInvoiceReportRow'
        '403':
          description: The viewer lacks the View Invoices permission.
      x-c4-required-permissions:
      - Invoicing-Invoicing-View Invoices
  /api/reporting/job-activity-by-operator/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready per-operator operation rows from the job-activity-by-operator reporting view,

        including setup/labor/machine time and cost, run-by-run quantities, rates, and job/routing context

        so callers do not need to hand-join jobs to items-to-make, operations, timers, and job logs.'
      operationId: ListJobActivityByOperatorReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityByOperatorReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityByOperatorReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityByOperatorReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityByOperatorReportFilter'
      responses:
        '200':
          description: A page of job-activity-by-operator report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityByOperatorReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityByOperatorReportRow'
        '403':
          description: The viewer lacks one of the required permissions (View Job and View Time Management).
      x-c4-required-permissions:
      - Jobs-Jobs-View Job
  /api/reporting/job-activity/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready job-operation rows from the job-activity reporting view, including schedule,

        timer, completion-progress, and routing context so callers do not need to hand-join jobs to

        items-to-make, operations, timers, and scheduling data.'
      operationId: ListJobActivityReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingJobActivityReportFilter'
      responses:
        '200':
          description: A page of job-activity report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityReportRow'
        '403':
          description: The viewer lacks the View Job permission.
      x-c4-required-permissions:
      - Jobs-Jobs-View Job
  /api/reporting/quote/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready quote rows from the quote reporting view, including totals, cost, status, and

        lifecycle dates, so callers do not need to hand-assemble quote-level summary data.'
      operationId: ListQuoteReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingQuoteReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingQuoteReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingQuoteReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingQuoteReportFilter'
      responses:
        '200':
          description: A page of quote report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingQuoteReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingQuoteReportRow'
        '403':
          description: The viewer lacks the View Quote permission.
      x-c4-required-permissions:
      - Orders-Quotes-View Quote
  /api/reporting/sales-order-lines/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready sales-order line rows from the sales-order line-items reporting view,

        including pre-computed cost, invoice, ship, and return columns so callers do not need to

        hand-join sales orders to line items, jobs, invoices, shipments, and returns.'
      operationId: ListSalesOrderLinesReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingSalesOrderLinesReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingSalesOrderLinesReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingSalesOrderLinesReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingSalesOrderLinesReportFilter'
      responses:
        '200':
          description: A page of sales-order line report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingSalesOrderLinesReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingSalesOrderLinesReportRow'
        '403':
          description: The viewer lacks one of the required permissions (View Sales Order, View Customer, View Job, View Invoices, and View Shipments).
      x-c4-required-permissions:
      - Orders-SalesOrders-View Sales Order
  /api/reporting/shipping/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready shipment line rows from the shipping reporting view, including pre-computed

        dollar columns ($ shipped, $ unshipped, total $ ordered, unit price) so callers do not need to

        hand-join shipments to sales-order line items.'
      operationId: ListShippingReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingShippingReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingShippingReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingShippingReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingShippingReportFilter'
      responses:
        '200':
          description: A page of shipping report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingShippingReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingShippingReportRow'
        '403':
          description: The viewer lacks the View Shipments permission.
      x-c4-required-permissions:
      - Shipping-Shipping-View Shipments
  /api/reporting/time-clock/list:
    post:
      tags:
      - Reporting
      summary: 'Lists report-ready time-clock rows from the time-clock reporting view, including clock-in/clock-out

        times, computed shift hours, reason and clock codes, and override-audit context so callers do not

        need to hand-join timer entries to their reason and clock-code tags.'
      operationId: ListTimeClockReport
      parameters:
      - name: Sort.Field
        in: query
        description: Sort field
        schema:
          minLength: 1
          type: string
      - name: Sort.Dir
        in: query
        description: Sort direction
        schema:
          $ref: '#/components/schemas/CommonEnumSortDirectionEnum'
      - name: Skip
        in: query
        description: Number of records to skip.
        schema:
          minimum: 0
          type: integer
          format: int32
      - name: Take
        in: query
        description: Number of records to return (maximum)
        schema:
          maximum: 5000
          minimum: 0
          type: integer
          format: int32
      requestBody:
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/DtoReportingTimeClockReportFilter'
          application/json:
            schema:
              $ref: '#/components/schemas/DtoReportingTimeClockReportFilter'
          text/json:
            schema:
              $ref: '#/components/schemas/DtoReportingTimeClockReportFilter'
          application/*+json:
            schema:
              $ref: '#/components/schemas/DtoReportingTimeClockReportFilter'
      responses:
        '200':
          description: A page of time-clock report rows with the total matching count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingTimeClockReportRow'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/DtoPagedResultDtoDtoReportingTimeClockReportRow'
        '403':
          description: The viewer lacks the View Time Management permission.
      x-c4-required-permissions:
      - Time-Time-View Time Management
components:
  schemas:
    DtoPagedResultDtoDtoReportingInvoiceReportRow:
      required:
      - data
      - hasNextPage
      - hasPreviousPage
      - page
      - pageSize
      - totalCount
      - totalPages
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DtoReportingInvoiceReportRow'
          description: The data
        page:
          type: integer
          description: The 1-indexed page
          format: int32
          readOnly: true
        pageSize:
          type: integer
          description: The page size
          format: int32
          readOnly: true
        totalCount:
          type: integer
          description: The total count of records
          format: int32
        totalPages:
          type: integer
          description: The total pages
          format: int32
          readOnly: true
        hasPreviousPage:
          type: boolean
          description: True if there is a previous page
          readOnly: true
        hasNextPage:
          type: boolean
          description: True if there is a next page
          readOnly: true
      additionalProperties: false
      description: Paged result
    DtoReportingJobActivityByOperatorReportFilter:
      type: object
      properties:
        startedOrCreatedDateFrom:
          type: string
          description: Inclusive lower bound applied to the run's Started or Created Date. Null means no lower bound.
          format: date-time
          nullable: true
        startedOrCreatedDateTo:
          type: string
          description: 'Inclusive upper bound applied to the run''s Started or Created Date (the whole `to` day is

            included). Null means no upper bound.'
          format: date-time
          nullable: true
        employee:
          type: string
          description: Optional exact-match filter on the operator / employee name. Null means no operator filter.
          nullable: true
        department:
          type: string
          description: 'Optional exact-match filter on the department containing the operation''s work center. Null means

            no department filter.'
          nullable: true
      additionalProperties: false
      description: 'Constrained filter for the job-activity-by-operator reporting list endpoint. Every field maps to a

        fixed, server-controlled column; values are always bound as Dapper parameters and never concatenated

        into SQL.'
    DtoReportingJobActivityReportRow:
      type: object
      properties:
        jobName:
          type: string
          description: Job name (typically the user-facing job identifier).
          nullable: true
        item:
          type: string
          description: Item number being produced.
          nullable: true
        itemDescription:
          type: string
          description: Item description.
          nullable: true
        itemRevision:
          type: string
          description: Item revision when revision tracking is enabled.
          nullable: true
        itemTags:
          type: string
          description: Comma-separated descriptive tags from the item.
          nullable: true
        productionDueDate:
          type: string
          description: Job's production due date.
          format: date-time
          nullable: true
        salesOrderNumber:
          type: string
          description: Source sales order number, when the job is SO-driven.
          nullable: true
        customer:
          type: string
          description: Customer name from the sales order.
          nullable: true
        customerPurchaseOrder:
          type: string
          description: Customer's PO number from the sales order.
          nullable: true
        jobPriority:
          type: string
          description: Job priority value (High, Medium, or Low).
          nullable: true
        jobStatus:
          type: string
          description: Job lifecycle status (Approved, Scheduled, In Progress, Complete, etc.).
          nullable: true
        jobScheduledStart:
          type: string
          description: Scheduled start time of the job.
          format: date-time
          nullable: true
        jobScheduledEnd:
          type: string
          description: Scheduled end time of the job.
          format: date-time
          nullable: true
        jobLateStatus:
          type: string
          description: Late classification for the job (Late or On Time).
          nullable: true
        jobPlannedQty:
          type: number
          description: Planned quantity for the job.
          format: double
          nullable: true
        uoM:
          type: string
          description: Unit of measure for the item being produced.
          nullable: true
        department:
          type: string
          description: Department containing the operation's scheduled work center.
          nullable: true
        shift:
          type: string
          description: Shift assigned to the operation.
          nullable: true
        operationName:
          type: string
          description: Operation name within the routing.
          nullable: true
        scheduledEquipment:
          type: string
          description: Equipment scheduled for this operation.
          nullable: true
        operationNumber:
          type: integer
          description: Operation sequence number within the routing.
          format: int32
          nullable: true
        operationStatus:
          type: string
          description: Operation lifecycle status (Ready, Pending, Running, Paused, Complete).
          nullable: true
        setupComplete:
          type: string
          description: '"TRUE" when the setup phase is complete, otherwise "FALSE".'
          nullable: true
        runComplete:
          type: string
          description: '"TRUE" when the run phase is complete, otherwise "FALSE".'
          nullable: true
        estimatedSetupTimeHours:
          type: number
          description: Estimated setup hours for this operation.
          format: double
          nullable: true
        estimatedRunTimeHours:
          type: number
          description: Estimated run hours for this operation.
          format: double
          nullable: true
        estimatedMachineTimeHours:
          type: number
          description: Estimated machine hours for this operation.
          format: double
          nullable: true
        unitsCompletedOnOperation:
          type: number
          description: Quantity completed on this operation so far.
          format: double
          nullable: true
        unitsCompletedOnJob:
          type: number
          description: Quantity completed on the job overall.
          format: double
          nullable: true
        isOutsideProcessing:
          type: string
          description: '"Outside Processing" when this operation is performed by an outside vendor, otherwise empty.'
          nullable: true
        outsideProcessingLeadTime:
          type: integer
          description: Configured lead time for outside-processing operations.
          format: int32
          nullable: true
        isRework:
          type: boolean
          description: True when this operation row represents rework rather than original production.
          nullable: true
        totalOperationTimeHours:
          type: number
          description: Total elapsed operator time on this operation (across all phases).
          format: double
          nullable: true
        totalMachineTimeHours:
          type: number
          description: Total elapsed machine time on this operation.
          format: double
          nullable: true
        operationScheduledStart:
          type: string
          description: Scheduled start time for this operation.
          format: date-time
          nullable: true
        actualStart:
          type: string
          description: Actual start timestamp (from timer data).
          format: date-time
          nullable: true
        lastStoppedOn:
          type: string
          description: Timestamp of the most recent timer stop.
          format: date-time
          nullable: true
        latestUser:
          type: string
          description: Name of the most recent operator to work on the operation.
          nullable: true
        scheduledEnd:
          type: string
          description: Scheduled end time for this operation.
          format: date-time
          nullable: true
      additionalProperties: false
      description: 'One row of the pre-joined job-activity reporting view

        (`rpt.View_ExposedReportingData_JobActivity`): one operation per item-to-make per job, carrying

        schedule, timer, completion-progress, and routing context. Property names are clean identifiers; the

        query aliases each source column (e.g. `[Production Due Date]`) to the matching property so

        Dapper can bind it.'
    DtoPagedResultDtoDtoReportingTimeClockReportRow:
      required:
      - data
      - hasNextPage
      - hasPreviousPage
      - page
      - pageSize
      - totalCount
      - totalPages
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DtoReportingTimeClockReportRow'
          description: The data
        page:
          type: integer
          description: The 1-indexed page
          format: int32
          readOnly: true
        pageSize:
          type: integer
          description: The page size
          format: int32
          readOnly: true
        totalCount:
          type: integer
          description: The total count of records
          format: int32
        totalPages:
          type: integer
          description: The total pages
          format: int32
          readOnly: true
        hasPreviousPage:
          type: boolean
          description: True if there is a previous page
          readOnly: true
        hasNextPage:
          type: boolean
          description: True if there is a next page
          readOnly: true
      additionalProperties: false
      description: Paged result
    DtoReportingSalesOrderLinesReportRow:
      type: object
      properties:
        companyName:
          type: string
          description: Issuing company / tenant company name.
          nullable: true
        associatedQuote:
          type: string
          description: Quote number this SO was converted from, when applicable.
          nullable: true
        salesOrderNumber:
          type: integer
          description: Numeric sales-order identifier.
          format: int32
          nullable: true
        customerPONumber:
          type: string
          description: Customer's PO number recorded on the sales order.
          nullable: true
        salesOrderStatus:
          type: string
          description: SO lifecycle status.
          nullable: true
        completedDate:
          type: string
          description: Date the SO was marked complete.
          format: date-time
          nullable: true
        orderPriority:
          type: string
          description: Order priority value.
          nullable: true
        customerName:
          type: string
          description: Customer display name.
          nullable: true
        customerTier:
          type: string
          description: Customer tier classification.
          nullable: true
        paymentTerms:
          type: string
          description: Payment terms name.
          nullable: true
        city:
          type: string
          description: Customer city.
          nullable: true
        customerStateProvince:
          type: string
          description: Customer state or province.
          nullable: true
        customerContact:
          type: string
          description: Name of the customer contact recorded on the order.
          nullable: true
        customerPhone:
          type: string
          description: Customer contact phone number.
          nullable: true
        customerEmail:
          type: string
          description: Customer contact email address.
          nullable: true
        salesperson:
          type: string
          description: Name of the assigned salesperson.
          nullable: true
        orderedDate:
          type: string
          description: Date the order was placed.
          format: date-time
          nullable: true
        lineItem:
          type: string
          description: Item name on the SO line.
          nullable: true
        lineItemDescription:
          type: string
          description: Item description on the SO line.
          nullable: true
        deliverBy:
          type: string
          description: Customer-requested delivery-by date.
          format: date-time
          nullable: true
        lineItemType:
          type: string
          description: Line classification (part, fee, etc.).
          nullable: true
        blanketOrder:
          type: integer
          description: 1 when the SO line is a blanket order, otherwise 0. (Computed 1/0 flag in the view.)
          format: int32
          nullable: true
        deliveryDueDate:
          type: string
          description: Computed delivery due date for the line.
          format: date-time
          nullable: true
        internalUnitOfMeasure:
          type: string
          description: Internal unit of measure used by Fulcrum.
          nullable: true
        customerPartNumber:
          type: string
          description: Customer's part number for the line.
          nullable: true
        customerPartDescription:
          type: string
          description: Customer's description for the line.
          nullable: true
        customerUnitOfMeasure:
          type: string
          description: Unit of measure used on the customer's PO.
          nullable: true
        accountingCode:
          type: string
          description: Accounting code mapped to the line.
          nullable: true
        accountingClass:
          type: string
          description: Accounting classification for the line's account.
          nullable: true
        itemTags:
          type: string
          description: Comma-separated tags from the line's item.
       

# --- truncated at 32 KB (91 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fulcrumpro/refs/heads/main/openapi/fulcrumpro-reporting-api-openapi.yml