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

# Partial Update Product



## OpenAPI

````yaml https://api.meetcampfire.com/api/schema?format=json patch /rr/api/v1/product/{id}
openapi: 3.0.3
info:
  title: Campfire Developer APIs
  version: 1.0.0
  description: >
    ## Introduction

    Campfire's developer APIs offer granular access to Campfire's core
    accounting,

    revenue recognition, and financial data features.


    These APIs are designed to be used by developers to build custom
    integrations,

    automate workflows, and perform any other programmatic operations.
servers:
  - url: https://api.meetcampfire.com
    description: Production server
security: []
tags:
  - name: Cash Management
    description: Operations related to accounts, transactions, and other bank-related data.
  - name: Core Accounting
    description: >-
      Operations related to core accounting data, such as the chart of accounts,
      entity management, and the general ledger.
  - name: Revenue Recognition
    description: >-
      Operations related to revenue recognition, contract management, and
      contract data aggregation.
  - name: Accounts Receivable
    description: Operations related to invoicing and the AR subledger
  - name: Accounts Payable
    description: Operations related to billing and the AP subledger.
  - name: Financial Statements
    description: Operations related to financial statement generation and data aggregation.
  - name: Settings
    description: Operations related to system and accounting settings configuration.
paths:
  /rr/api/v1/product/{id}:
    patch:
      tags:
        - Revenue Recognition
        - Accounts Receivable
      summary: Partial Update Product
      operationId: rr_api_v1_product_partial_update
      parameters:
        - in: path
          name: id
          schema:
            type: integer
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedProduct'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedProduct'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedProduct'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: ''
      security:
        - knoxApiToken: []
components:
  schemas:
    PatchedProduct:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        department_name:
          type: string
          readOnly: true
        invoice_account_name:
          type: string
          readOnly: true
          nullable: true
        revenue_account_name:
          type: string
          readOnly: true
          nullable: true
        ar_account_name:
          type: string
          readOnly: true
          nullable: true
        bad_debt_account_name:
          type: string
          readOnly: true
          nullable: true
        invoice_unbilled_account_name:
          type: string
          readOnly: true
          nullable: true
        tax_account_name:
          type: string
          readOnly: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TransactionTag'
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        product_uuid:
          type: string
          format: uuid
          readOnly: true
        display_name:
          type: string
          readOnly: true
        usage_group_count:
          type: integer
          readOnly: true
          default: 0
        usage_groups:
          type: array
          items:
            $ref: '#/components/schemas/ProductUsageGroupSummary'
          readOnly: true
        product_id:
          type: string
          nullable: true
          maxLength: 250
        product_name:
          type: string
          nullable: true
          maxLength: 250
        product_description:
          type: string
          nullable: true
          maxLength: 250
        tag_ids:
          type: array
          items:
            type: integer
            maximum: 9223372036854776000
            minimum: -9223372036854776000
            format: int64
        tag_group_ids:
          type: array
          items:
            type: integer
            maximum: 9223372036854776000
            minimum: -9223372036854776000
            format: int64
        currency:
          type: string
          nullable: true
          maxLength: 3
        price:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        cost:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        exclude_from_mrr:
          type: boolean
        is_taxable:
          type: boolean
        is_renewable:
          type: boolean
        created_at:
          type: string
          format: date-time
          readOnly: true
        stripe_product_id:
          type: string
          nullable: true
          maxLength: 250
        avalara_item_id:
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          format: int64
          nullable: true
        avalara_item_data:
          nullable: true
        avalara_tax_code:
          type: string
          nullable: true
          description: Avalara tax code (e.g., SW052000 for SAAS)
          maxLength: 50
        anrok_item_id:
          type: string
          nullable: true
          maxLength: 250
        sphere_item_id:
          type: string
          nullable: true
          maxLength: 250
        apply_dept_tag_to_invoice_journals:
          type: boolean
          nullable: true
          description: >-
            Apply Department and Tag categorization to all lines on Invoice
            Journals
        customer:
          type: integer
          readOnly: true
        department:
          type: integer
          nullable: true
        invoice_account:
          type: integer
          nullable: true
        revenue_account:
          type: integer
          nullable: true
        ar_account:
          type: integer
          nullable: true
        bad_debt_account:
          type: integer
          nullable: true
        invoice_unbilled_account:
          type: integer
          nullable: true
    Product:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        department_name:
          type: string
          readOnly: true
        invoice_account_name:
          type: string
          readOnly: true
          nullable: true
        revenue_account_name:
          type: string
          readOnly: true
          nullable: true
        ar_account_name:
          type: string
          readOnly: true
          nullable: true
        bad_debt_account_name:
          type: string
          readOnly: true
          nullable: true
        invoice_unbilled_account_name:
          type: string
          readOnly: true
          nullable: true
        tax_account_name:
          type: string
          readOnly: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TransactionTag'
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        product_uuid:
          type: string
          format: uuid
          readOnly: true
        display_name:
          type: string
          readOnly: true
        usage_group_count:
          type: integer
          readOnly: true
          default: 0
        usage_groups:
          type: array
          items:
            $ref: '#/components/schemas/ProductUsageGroupSummary'
          readOnly: true
        product_id:
          type: string
          nullable: true
          maxLength: 250
        product_name:
          type: string
          nullable: true
          maxLength: 250
        product_description:
          type: string
          nullable: true
          maxLength: 250
        tag_ids:
          type: array
          items:
            type: integer
            maximum: 9223372036854776000
            minimum: -9223372036854776000
            format: int64
        tag_group_ids:
          type: array
          items:
            type: integer
            maximum: 9223372036854776000
            minimum: -9223372036854776000
            format: int64
        currency:
          type: string
          nullable: true
          maxLength: 3
        price:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        cost:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        exclude_from_mrr:
          type: boolean
        is_taxable:
          type: boolean
        is_renewable:
          type: boolean
        created_at:
          type: string
          format: date-time
          readOnly: true
        stripe_product_id:
          type: string
          nullable: true
          maxLength: 250
        avalara_item_id:
          type: integer
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          format: int64
          nullable: true
        avalara_item_data:
          nullable: true
        avalara_tax_code:
          type: string
          nullable: true
          description: Avalara tax code (e.g., SW052000 for SAAS)
          maxLength: 50
        anrok_item_id:
          type: string
          nullable: true
          maxLength: 250
        sphere_item_id:
          type: string
          nullable: true
          maxLength: 250
        apply_dept_tag_to_invoice_journals:
          type: boolean
          nullable: true
          description: >-
            Apply Department and Tag categorization to all lines on Invoice
            Journals
        customer:
          type: integer
          readOnly: true
        department:
          type: integer
          nullable: true
        invoice_account:
          type: integer
          nullable: true
        revenue_account:
          type: integer
          nullable: true
        ar_account:
          type: integer
          nullable: true
        bad_debt_account:
          type: integer
          nullable: true
        invoice_unbilled_account:
          type: integer
          nullable: true
      required:
        - ar_account_name
        - bad_debt_account_name
        - created_at
        - customer
        - deleted_at
        - department_name
        - display_name
        - id
        - invoice_account_name
        - invoice_unbilled_account_name
        - is_deleted
        - last_modified_at
        - product_uuid
        - revenue_account_name
        - tags
        - tax_account_name
        - usage_group_count
        - usage_groups
    TransactionTag:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        group_name:
          type: string
          readOnly: true
        parent_name:
          type: string
          readOnly: true
          nullable: true
        parent:
          type: integer
          nullable: true
        is_deleted:
          type: boolean
          readOnly: true
          default: false
        deleted_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        is_active:
          type: boolean
          default: true
        name:
          type: string
          nullable: true
          maxLength: 250
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_modified_at:
          type: string
          format: date-time
          readOnly: true
        customer:
          type: integer
          readOnly: true
        group:
          type: integer
          nullable: true
      required:
        - created_at
        - customer
        - deleted_at
        - group_name
        - id
        - is_deleted
        - last_modified_at
        - name
        - parent_name
    ProductUsageGroupSummary:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          nullable: true
        pricing_model:
          $ref: '#/components/schemas/PricingModelEnum'
        unit_of_measure:
          type: string
          nullable: true
        tier_count:
          type: integer
          readOnly: true
          default: 0
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/ProductUsageTierSummary'
          readOnly: true
      required:
        - id
        - tier_count
        - tiers
    PricingModelEnum:
      enum:
        - unit_based
        - fixed_fee
        - percentage_based
        - graduated_tiered
        - volume_based
      type: string
      description: |-
        * `unit_based` - Unit based pricing
        * `fixed_fee` - Fixed fee pricing
        * `percentage_based` - Percentage based pricing
        * `graduated_tiered` - Graduated tiered pricing
        * `volume_based` - Volume based pricing
    ProductUsageTierSummary:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        pricing_type:
          type: string
        from_quantity:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        to_quantity:
          type: number
          format: double
          maximum: 1000000000000000000
          minimum: -1000000000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        price:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
        percentage:
          type: number
          format: double
          maximum: 100000000000000
          minimum: -100000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
          nullable: true
      required:
        - from_quantity
        - id
        - name
        - percentage
        - price
        - pricing_type
        - to_quantity
  securitySchemes:
    knoxApiToken:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"

````