v1

latestOpenAPI 3.0.32026-07-26362271803.3 KB
Revenue Recognition

Create Contract

Create a new contract.

Evergreen vs standard:
- Standard contract: set is_evergreen=false and provide a fixed contract_end_date.
- Evergreen contract: set is_evergreen=true and leave contract_end_date as null.
  The system manages a rolling effective_end_date, exposes working_end_date for downstream usage,
  and returns evergreen_locked_date for immutable historical boundary rules.

Additional evergreen constraints:
- is_evergreen and auto_renew cannot both be true.
- billing_frequency is required for evergreen behavior.
- skip_evergreen_invoice_generation is creation-time only and cannot be changed on existing contracts.
- skip_evergreen_invoice_generation=true skips only Campfire's auto-generated evergreen invoices.
  Revenue transactions still generate.
post/rr/api/v1/contracts

Request body

idinteger required
entity_namestring required
client_namestring required
client_termsstring required
department_namestring required
parent_department_namestring required
parent_departmentinteger required
tagsstring
total_revenuenumber double required
total_mrrnumber double required
total_deferred_revenuenumber double required
currencystring
entity_currencystring
contract_end_datestring date nullable

Fixed end date for standard contracts. Leave null for evergreen contracts (is_evergreen=true).

is_evergreenboolean

Set true for evergreen contracts (no fixed end date). Evergreen contracts cannot also be auto-renew. Auto-renew is a legacy method to extend contracts.

auto_send_invoicesboolean

When true, generated invoices are automatically sent on their invoice date.

skip_evergreen_invoice_generationboolean

For Evergreen contracts only. Set at contract creation; existing contracts cannot change this setting. False means current behavior. True skips only Campfire's auto-generated evergreen invoices; revenue transactions still generate; existing invoices are not cleaned up.

auto_apply_customer_stripe_config_to_invoicesboolean

Evergreen contracts only. When true, evergreen-generated invoices inherit stripe_connection and use_stripe_auto_bill from the contract customer.

last_modified_atstring date-time required
is_deletedstring required
deleted_atstring required
usage_tiersstring
has_invoicesboolean required
has_journal_entriesboolean required
has_credit_memosboolean required
effective_end_datestring date required

Rolling horizon end date for active evergreen contracts. It will be auto-generated by Campfire backend. Null for standard contracts.

working_end_datestring date required

Canonical end date used by the system. Equals contract_end_date for standard or terminated contracts, and effective_end_date for active evergreen contracts.

evergreen_locked_datestring date nullable required

Inclusive lock date for evergreen contracts based on paid invoices and close books date. Dates on or before this value are immutable. Null for non-evergreen contracts, or when no financial locking events exist.

search_vectorstring nullable required
search_textstring nullable required
billing_frequency'monthly' | 'quarterly' | 'biannual' | 'annual' | 'one_time' | 'custom'
  • monthly - Monthly
  • quarterly - Quarterly
  • biannual - Bi Annualy
  • annual - Annual
  • one_time - One Time
  • custom - Custom
deal_namestring nullable
deal_idstring nullable
consultantstring nullable
closed_datestring date nullable
total_contract_valuenumber double nullable
contract_start_datestring date nullable
exchange_ratenumber double nullable
exchange_rate_booknumber double nullable
crm_linkstring nullable
contract_linkstring nullable
status'ACTIVE' | 'PENDING' | 'COMPLETED' | 'DELETED'
  • ACTIVE - Active
  • PENDING - Pending
  • COMPLETED - Completed
  • DELETED - Deleted
source'SALESFORCE' | 'HUBSPOT' | 'STRIPE' | 'MANUAL'
  • SALESFORCE - Salesforce
  • HUBSPOT - Hubspot
  • STRIPE - Stripe
  • MANUAL - Manual
{"stackTrail":"components:schemas:Contract:properties:source_deal_data","oasType":"schema","type":"unknown","nullable":true}
created_atstring date-time required
auto_renewboolean
auto_renew_durationinteger nullable
auto_renew_invoiceboolean
tag_idsinteger[]
tag_group_idsinteger[]
minimum_monthly_commitment_amountnumber double nullable

Minimum monthly commitment amount (allowance threshold)

minimum_monthly_commitment_quantitynumber double nullable

Minimum monthly commitment quantity (allowance threshold in units)

purchase_order_numberstring nullable
customerinteger required
entityinteger nullable
clientinteger nullable
departmentinteger nullable
journal_entriesinteger[]

Response

idinteger required
entity_namestring required
client_namestring required
client_termsstring required
department_namestring required
parent_department_namestring required
parent_departmentinteger required
tagsstring
total_revenuenumber double required
total_mrrnumber double required
total_deferred_revenuenumber double required
currencystring
entity_currencystring
contract_end_datestring date nullable

Fixed end date for standard contracts. Leave null for evergreen contracts (is_evergreen=true).

is_evergreenboolean

Set true for evergreen contracts (no fixed end date). Evergreen contracts cannot also be auto-renew. Auto-renew is a legacy method to extend contracts.

auto_send_invoicesboolean

When true, generated invoices are automatically sent on their invoice date.

skip_evergreen_invoice_generationboolean

For Evergreen contracts only. Set at contract creation; existing contracts cannot change this setting. False means current behavior. True skips only Campfire's auto-generated evergreen invoices; revenue transactions still generate; existing invoices are not cleaned up.

auto_apply_customer_stripe_config_to_invoicesboolean

Evergreen contracts only. When true, evergreen-generated invoices inherit stripe_connection and use_stripe_auto_bill from the contract customer.

last_modified_atstring date-time required
is_deletedstring required
deleted_atstring required
usage_tiersstring
has_invoicesboolean required
has_journal_entriesboolean required
has_credit_memosboolean required
effective_end_datestring date required

Rolling horizon end date for active evergreen contracts. It will be auto-generated by Campfire backend. Null for standard contracts.

working_end_datestring date required

Canonical end date used by the system. Equals contract_end_date for standard or terminated contracts, and effective_end_date for active evergreen contracts.

evergreen_locked_datestring date nullable required

Inclusive lock date for evergreen contracts based on paid invoices and close books date. Dates on or before this value are immutable. Null for non-evergreen contracts, or when no financial locking events exist.

search_vectorstring nullable required
search_textstring nullable required
billing_frequency'monthly' | 'quarterly' | 'biannual' | 'annual' | 'one_time' | 'custom'
  • monthly - Monthly
  • quarterly - Quarterly
  • biannual - Bi Annualy
  • annual - Annual
  • one_time - One Time
  • custom - Custom
deal_namestring nullable
deal_idstring nullable
consultantstring nullable
closed_datestring date nullable
total_contract_valuenumber double nullable
contract_start_datestring date nullable
exchange_ratenumber double nullable
exchange_rate_booknumber double nullable
crm_linkstring nullable
contract_linkstring nullable
status'ACTIVE' | 'PENDING' | 'COMPLETED' | 'DELETED'
  • ACTIVE - Active
  • PENDING - Pending
  • COMPLETED - Completed
  • DELETED - Deleted
source'SALESFORCE' | 'HUBSPOT' | 'STRIPE' | 'MANUAL'
  • SALESFORCE - Salesforce
  • HUBSPOT - Hubspot
  • STRIPE - Stripe
  • MANUAL - Manual
{"stackTrail":"components:schemas:Contract:properties:source_deal_data","oasType":"schema","type":"unknown","nullable":true}
created_atstring date-time required
auto_renewboolean
auto_renew_durationinteger nullable
auto_renew_invoiceboolean
tag_idsinteger[]
tag_group_idsinteger[]
minimum_monthly_commitment_amountnumber double nullable

Minimum monthly commitment amount (allowance threshold)

minimum_monthly_commitment_quantitynumber double nullable

Minimum monthly commitment quantity (allowance threshold in units)

purchase_order_numberstring nullable
customerinteger required
entityinteger nullable
clientinteger nullable
departmentinteger nullable
journal_entriesinteger[]