{"openapi":"3.1.0","info":{"title":"Tabs API","version":"1.0.0"},"paths":{"/v3/billing-terms":{"get":{"operationId":"billingTerms_IntegratorsApiBillingTermsController_getBillingTerms","summary":"List billing terms","tags":["billingTerms"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  contractId (uuid): eq, neq, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  startDate (datetime): eq, neq, gt, gte, lt, lte\n  endDate (datetime): eq, neq, gt, gte, lt, lte\n  billingTermGroupId (uuid): eq, neq, in, nin, isnull, isnotnull\n  productId (uuid): eq, neq, in, nin, isnull, isnotnull\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=contractId:eq:00000000-0000-0000-0000-000000000001","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Billing Terms by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Billing_Terms_IntegratorsApiBillingTermsController_getBillingTerms_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/categories":{"get":{"operationId":"categories_IntegratorsApiCategoriesController_getCategories","summary":"List categories","tags":["categories"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Categories by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categories_IntegratorsApiCategoriesController_getCategories_Response_200"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"categories_IntegratorsApiCategoriesController_createCategory","summary":"Create category","tags":["categories"],"responses":{"201":{"description":"The Category","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categories_IntegratorsApiCategoriesController_createCategory_Response_201"}}}},"400":{"description":"Category already exists","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCategoryV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/categories/{id}":{"get":{"operationId":"categories_IntegratorsApiCategoriesController_getCategoryById","summary":"Get category by ID","tags":["categories"],"parameters":[{"name":"id","in":"path","description":"Category Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Category","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categories_IntegratorsApiCategoriesController_getCategoryById_Response_200"}}}},"404":{"description":"Category not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"delete":{"operationId":"categories_IntegratorsApiCategoriesController_deleteCategory","summary":"Delete category","tags":["categories"],"parameters":[{"name":"id","in":"path","description":"Category Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The category","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categories_IntegratorsApiCategoriesController_deleteCategory_Response_200"}}}},"404":{"description":"Category not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"Category is in use by active revenue schedules or historical revenue and cannot be deleted","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/classes":{"get":{"operationId":"classesQboOnly_IntegratorsApiClassesController_getClasses","summary":"List classes v3","description":"Class comes from QBO only, and can be populated on an obligation. This does not apply to NS users. Returns `payload` as a bare array; /v3.1/classes returns the same records under `payload.data`.","tags":["classesQboOnly"],"responses":{"200":{"description":"Get QBO Classes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Classes__QBO_only__IntegratorsApiClassesController_getClasses_Response_200"}}}}},"deprecated":true,"security":[{"custom-header":[]}]}},"/v3.1/classes":{"get":{"operationId":"classesQboOnly_IntegratorsApiClassesV31Controller_getClasses","summary":"List classes","description":"Class comes from QBO only, and can be populated on an obligation. This does not apply to NS users","tags":["classesQboOnly"],"parameters":[{"name":"page","in":"query","description":"Page number. Defaults to 1.","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Rows per page. Defaults to 50.","required":false,"schema":{"type":"number","format":"double","default":50}}],"responses":{"200":{"description":"Get QBO Classes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Classes__QBO_only__IntegratorsApiClassesV31Controller_getClasses_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/commitments":{"get":{"operationId":"commitments_IntegratorsApiCommitmentsController_getAllCommitments","summary":"List commitments","tags":["commitments"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":false,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  contractId (uuid): eq, neq, in, nin, isnull, isnotnull\n\nExample: filter=customerId:eq:00000000-0000-0000-0000-000000000001","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all commitments with optional customer and contract filtering","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Commitments_IntegratorsApiCommitmentsController_getAllCommitments_Response_200"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"commitments_IntegratorsApiCommitmentsController_createUsageCommitments","summary":"Create commitments","description":"Creates one or more usage commitments on a contract, synchronously, and returns their IDs.\n\nEach commitment links one or more usage-based billing terms and, optionally, configures prepaid, overage, and true-up billing for the commitment period. Overage pricing (`overageConfigs`) can be a single flat rate or multiple tiers via `overagePricings`; when tiered, `tierPricingType` selects how the tiers are applied — USE_ALL_TIER_PRICES (graduated, the default) charges each tier's rate for the portion of usage within it, while USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into.\n\nFails with a validation error if a billing term is locked down (already invoiced) or otherwise ineligible for commitment linkage, or if the contract does not exist for this manufacturer.","tags":["commitments"],"responses":{"201":{"description":"Usage commitments created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Commitments_IntegratorsApiCommitmentsController_createUsageCommitments_Response_201"}}}},"400":{"description":"Validation error or BT lockdown","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"deprecated":true,"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUsageCommitmentsV3RequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/commitments/{commitmentId}":{"patch":{"operationId":"commitments_IntegratorsApiCommitmentsController_updateUsageCommitment","summary":"Update commitment","description":"Partially updates an existing usage commitment. Only fields present in the request body are changed; omitted fields are left as-is.\n\nSupports changing the commitment value's start/end dates, whether it spans the full contract duration, its billing interval, price priority, and true-up behavior, and adding additional billing term IDs via `billingTermsToAdd`. Does not touch overage configuration — overage pricing is set at commitment creation time only.\n\nFails with a validation error if the commitment does not exist for this manufacturer or is locked (already invoiced) against the requested change.","tags":["commitments"],"parameters":[{"name":"commitmentId","in":"path","description":"Commitment ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Commitment updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiResponse"}}}},"400":{"description":"Validation error or locked","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Commitment not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"deprecated":true,"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsageCommitmentV3RequestDto"}}}},"security":[{"custom-header":[]}]},"get":{"operationId":"commitments_IntegratorsApiCommitmentsController_getCommitmentById","summary":"Get commitment by ID","tags":["commitments"],"parameters":[{"name":"commitmentId","in":"path","description":"Commitment ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get commitment by ID with breakdown by commitment period and overage details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Commitments_IntegratorsApiCommitmentsController_getCommitmentById_Response_200"}}}},"404":{"description":"Commitment not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getContracts","summary":"List contracts","tags":["contracts"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalIds.externalId (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalIds.sourceType (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  source (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  status (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  createdAt (datetime): eq, neq, gt, gte, lt, lte\n  lastUpdatedAt (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Contracts by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getContracts_Response_200"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_createContract","summary":"Create contract","tags":["contracts"],"responses":{"201":{"description":"Created contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_createContract_Response_201"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContractV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/deleted":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getDeletedContracts","summary":"List deleted contracts","tags":["contracts"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalIds.externalId (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalIds.sourceType (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  source (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  status (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  createdAt (datetime): eq, neq, gt, gte, lt, lte\n  lastUpdatedAt (datetime): eq, neq, gt, gte, lt, lte\n  deletedAt (datetime): eq, neq, gt, gte, lt, lte, isnull, isnotnull\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all deleted Contracts by filter, sorted by deletedAt desc","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getDeletedContracts_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getContractById","summary":"Get contract by ID","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getContractById_Response_200"}}}},"400":{"description":"Contract is deleted","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_updateContract","summary":"Update contract","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Contract updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_updateContract_Response_200"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContractV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/file":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getContractFile","summary":"Download contract file","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PDF file download","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"500":{"description":"Internal server error or contract has no file","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_uploadContractFile","summary":"Upload contract file","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"shouldProcess","in":"query","description":"Whether to trigger contract processing after file upload. Defaults to true.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Contract file was replaced successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_uploadContractFile_Response_200"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"security":[{"custom-header":[]}]},"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteContractFile","summary":"Delete contract file","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Contract file deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteContractFile_Response_200"}}}},"400":{"description":"Contract is not BLOCKED","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/obligations":{"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_createObligation","summary":"Create contract obligation","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"The obligation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_createObligation_Response_201"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateObligationDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/obligations/{obligationId}":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getObligation","summary":"Get contract obligation by ID","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"obligationId","in":"path","description":"Obligation Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The obligation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getObligation_Response_200"}}}},"404":{"description":"Obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteObligation","summary":"Delete contract obligation","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"obligationId","in":"path","description":"Obligation Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted obligation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteObligation_Response_200"}}}},"400":{"description":"Obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/actions":{"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_contractActions","summary":"Perform contract action","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Contract actions executed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_contractActions_Response_200"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Contract action to perform. `APPROVE` marks a `PROCESSED` contract as final, meaning no further edits are expected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractActionDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/obligation/{obligationId}":{"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_updateObligation","summary":"Update contract obligation","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"obligationId","in":"path","description":"Obligation Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Obligation updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_updateObligation_Response_200"}}}},"404":{"description":"Obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateObligationDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/obligation/{obligationId}/custom-revenue":{"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_upsertCustomRevenue","summary":"Upsert obligation custom revenue","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract id","required":true,"schema":{"type":"string"}},{"name":"obligationId","in":"path","description":"Obligation id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Upsert custom revenue","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_upsertCustomRevenue_Response_200"}}}},"400":{"description":"Request body is not an array, or an element failed validation, e.g. a missing or empty timeframe","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract or obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomRevenue"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-term-groups":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getBillingTermGroups","summary":"List contract billing term groups","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  createdAt (datetime): eq, neq, gt, gte, lt, lte\n  updatedAt (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=createdAt:gte:2026-01-01","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing term groups for the contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getBillingTermGroups_Response_200"}}}},"400":{"description":"Invalid contract ID or performance obligation features not enabled for this merchant","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-term-groups/{groupId}":{"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteBillingTermGroup","summary":"Delete contract billing term group","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Billing Term Group Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing term group and associated entities deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteBillingTermGroup_Response_200"}}}},"400":{"description":"Invalid contract/group ID or performance obligation features not enabled for this merchant","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract or billing term group not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-term-groups/{groupId}/event-type":{"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_changeBillingTermGroupEventType","summary":"Change event type for selected billing terms and POBs in a group","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Billing Term Group Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Event type changed for the selected billing terms and performance obligations within the group; any rows not listed in the request are left untouched. The change is applied atomically and is only accepted if the group's event types stay in sync afterward.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_changeBillingTermGroupEventType_Response_200"}}}},"400":{"description":"Invalid request, or a provided BT/POB does not belong to the group","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract, billing term group, or target event type not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"Change would break the event-type invariant for the group","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeBillingTermGroupEventTypeDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/performance-obligations":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getPerformanceObligationsWithRevenue","summary":"List contract performance obligations","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"billingTermGroupId","in":"query","description":"Optional billing term group ID to filter results","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  createdAt (datetime): eq, neq, gt, gte, lt, lte\n  updatedAt (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=createdAt:gte:2026-01-01","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Performance obligations with recognized revenue for the contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getPerformanceObligationsWithRevenue_Response_200"}}}},"400":{"description":"Performance obligation features not enabled for this merchant","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_batchSavePobsForContract","summary":"Bulk save contract performance obligations","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Batch save completed successfully. Includes warnings when an update changed fields the request did not set (for example, service dates after switching to Recognize as billed).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_batchSavePobsForContract_Response_200"}}}},"400":{"description":"Validation error or performance obligation features not enabled","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Batch create, update, and delete performance obligations scoped to a billing term group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSavePobsForContractDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/performance-obligations/{pobId}":{"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_updatePerformanceObligation","summary":"Update contract performance obligation","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"pobId","in":"path","description":"Performance Obligation Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Performance obligation updated successfully. Includes warnings when the update changed fields the request did not set (for example, service dates after switching to Recognize as billed).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_updatePerformanceObligation_Response_200"}}}},"400":{"description":"Validation error or performance obligation features not enabled","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract or performance obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Fields to update on the performance obligation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePerformanceObligationForContractDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-terms":{"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getBillingTerms","summary":"List contract billing terms","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"billingTermGroupId","in":"query","description":"Optional billing term group (BTG) ID to filter by","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}}],"responses":{"200":{"description":"Billing terms for the contract","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getBillingTerms_Response_200"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_createBillingTerm","summary":"Create contract billing term","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Billing term created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_createBillingTerm_Response_201"}}}},"400":{"description":"Bad Request - validation failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBillingTermDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-terms/{billingTermId}":{"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteBillingTerm","summary":"Delete contract billing term","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"billingTermId","in":"path","description":"Billing Term Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing term deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteBillingTerm_Response_200"}}}},"404":{"description":"Contract or billing term not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"Cannot delete: other billing terms remain in the group and a POB with matching event type exists","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_patchBillingTerm","summary":"Update contract billing term","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"billingTermId","in":"path","description":"Billing Term Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing term updated; invoice regeneration enqueued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_patchBillingTerm_Response_200"}}}},"400":{"description":"Bad Request - validation failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract or billing term not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchBillingTermDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/commitments/{commitmentId}/schedules":{"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_appendCommitmentSchedule","summary":"Append commitment schedule","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"commitmentId","in":"path","description":"Commitment Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Schedule appended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_appendCommitmentSchedule_Response_201"}}}},"400":{"description":"Contiguity, event-type set, or structural constraint failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Commitment not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendScheduleRequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/commitments/{commitmentId}/steps":{"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_appendCommitmentStep","summary":"Append commitment step","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"commitmentId","in":"path","description":"Commitment Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Step appended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_appendCommitmentStep_Response_201"}}}},"400":{"description":"Schedule does not belong to commitment, or event-type set mismatch","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Commitment not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendUsageCommitmentStepV3RequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-terms/{billingTermId}/seat-amendment":{"post":{"operationId":"contracts_ContractsBillingMicroserviceController_createBillingTermSeatAmendment","summary":"Create billing term seat amendment","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract id","required":true,"schema":{"type":"string"}},{"name":"billingTermId","in":"path","description":"Billing term id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"The seat amendment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_ContractsBillingMicroserviceController_createBillingTermSeatAmendment_Response_201"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Billing term not found for contract","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSeatAmendmentDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/commitments":{"post":{"operationId":"contracts_IntegratorsApiContractsv3Controller_createNestedCommitments","summary":"Create commitments for a contract","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Usage commitments created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_createNestedCommitments_Response_201"}}}},"400":{"description":"Validation error or BT lockdown","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNestedUsageCommitmentsV3RequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-terms/{billingTermId}/seat-amendments/{seatAmendmentId}":{"delete":{"operationId":"contracts_ContractsBillingMicroserviceController_deleteBillingTermSeatAmendment","summary":"Delete billing term seat amendment","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract id","required":true,"schema":{"type":"string"}},{"name":"billingTermId","in":"path","description":"Billing term id","required":true,"schema":{"type":"string"}},{"name":"seatAmendmentId","in":"path","description":"Seat amendment id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Seat amendment deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_ContractsBillingMicroserviceController_deleteBillingTermSeatAmendment_Response_200"}}}},"400":{"description":"Invalid seat amendment ID","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Billing term not found for contract","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/commitments/{commitmentId}/schedules/{scheduleId}":{"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteCommitmentSchedule","summary":"Delete commitment schedule","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"commitmentId","in":"path","description":"Commitment Id","required":true,"schema":{"type":"string"}},{"name":"scheduleId","in":"path","description":"Schedule Id (must be the last non-deleted schedule)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Schedule deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteCommitmentSchedule_Response_200"}}}},"400":{"description":"Schedule is not the last, only schedule, or has invoiced periods","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Schedule not found on commitment","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteScheduleRequestDto"}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_patchCommitmentSchedule","summary":"Update commitment schedule","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"commitmentId","in":"path","description":"Commitment Id","required":true,"schema":{"type":"string"}},{"name":"scheduleId","in":"path","description":"Schedule Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Schedule patched","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_patchCommitmentSchedule_Response_200"}}}},"400":{"description":"Invoice gate, alignment, or structural constraint failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Schedule not found on commitment","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchScheduleRequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/commitments/{commitmentId}/steps/{stepId}":{"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteCommitmentStep","summary":"Delete commitment step","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"commitmentId","in":"path","description":"Commitment Id","required":true,"schema":{"type":"string"}},{"name":"stepId","in":"path","description":"Step Id (must be the last step in its schedule)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Step deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteCommitmentStep_Response_200"}}}},"400":{"description":"Step is not the last step in its schedule","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Step not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_updateCommitmentStep","summary":"Update commitment step","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"commitmentId","in":"path","description":"Commitment Id","required":true,"schema":{"type":"string"}},{"name":"stepId","in":"path","description":"Step Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Step updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_updateCommitmentStep_Response_200"}}}},"400":{"description":"Step does not belong to commitment, or invalid step configuration","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Step not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsageCommitmentStepV3RequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/metadata":{"delete":{"operationId":"contracts_IntegratorsApiContractsv3Controller_deleteContractMetadata","summary":"Delete contract metadata","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The contract's metadata after being cleared","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_deleteContractMetadata_Response_200"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"get":{"operationId":"contracts_IntegratorsApiContractsv3Controller_getContractMetadata","summary":"Get contract metadata","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The contract's metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_getContractMetadata_Response_200"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_updateContractMetadata","summary":"Update contract metadata","description":"Updates a contract's metadata by merging the provided top-level keys with the existing metadata.\n\nProviding a value sets or replaces that key. Providing `null` removes the key. Keys omitted from the request are left unchanged.\n\nThe merge is shallow: if a value is an object, it replaces the existing value for that key rather than merging recursively. Nested `null` values are stored as part of the object and do not remove nested keys.\n\nRemoving a key that does not exist succeeds without changing the metadata. If all keys are removed, the metadata becomes an empty object (`{}`). To clear metadata entirely and set it back to `null`, use `DELETE` on this endpoint.\n\nThe resulting metadata may not exceed 16KB when serialized as UTF-8 JSON. The limit applies after the update is merged, not to the request payload by itself. Requests that would exceed the limit return `400`. Requests that only remove keys are always allowed.\n\nThis endpoint only accesses contracts belonging to the authenticated merchant. Requests for contracts owned by another merchant return `404`.","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The contract's metadata after the merge","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_updateContractMetadata_Response_200"}}}},"400":{"description":"Invalid request body, or the merged metadata would exceed the 16KB limit","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContractMetadataDto"}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-terms/{billingTermId}/seat-amendments":{"get":{"operationId":"contracts_ContractsBillingMicroserviceController_getSeatAmendmentsForBillingTerm","summary":"List billing term seat amendments","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract id","required":true,"schema":{"type":"string"}},{"name":"billingTermId","in":"path","description":"Billing term id","required":true,"schema":{"type":"string"}},{"name":"seatAmendmentId","in":"query","description":"Search for a specific seat amendment by seat amendment id (optional)","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"number","format":"double"}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","format":"double"}}],"responses":{"200":{"description":"Get all seat amendments for a billing term","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_ContractsBillingMicroserviceController_getSeatAmendmentsForBillingTerm_Response_200"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Billing term not found for contract","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{id}/billing-terms/{billingTermId}/terminate":{"patch":{"operationId":"contracts_IntegratorsApiContractsv3Controller_terminateBillingTerm","summary":"Terminate billing term","description":"Terminates a billing term as of the given end date. This is irreversible: once terminated, the billing term can never be edited again (enforced both backend and frontend).","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"billingTermId","in":"path","description":"Billing Term Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing term terminated; invoice regeneration enqueued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsv3Controller_terminateBillingTerm_Response_200"}}}},"400":{"description":"Bad Request - validation failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contract or billing term not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminateBillingTermDto"}}}},"security":[{"custom-header":[]}]}},"/v3.1/contracts/{id}/obligation/{obligationId}":{"patch":{"operationId":"contracts_IntegratorsApiContractsV31Controller_updateObligation","summary":"Update contract obligation","tags":["contracts"],"parameters":[{"name":"id","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}},{"name":"obligationId","in":"path","description":"Obligation Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Obligation updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contracts_IntegratorsApiContractsV31Controller_updateObligation_Response_200"}}}},"404":{"description":"Obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateObligationDto"}}}},"security":[{"custom-header":[]}]}},"/v3/credit-memos/{id}":{"get":{"operationId":"creditMemos_IntegratorsApiCreditMemosController_getCreditMemo","summary":"Get credit memo by ID","tags":["creditMemos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Credit memo retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credit_Memos_IntegratorsApiCreditMemosController_getCreditMemo_Response_200"}}}},"404":{"description":"Credit memo not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error - Failed to get credit memo","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/credit-memos":{"get":{"operationId":"creditMemos_IntegratorsApiCreditMemosController_getCreditMemos","summary":"List credit memos","tags":["creditMemos"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  creditMemoNumber (string): eq\n  customerId (uuid): eq\n  issueDateFrom (datetime): gte\n  issueDateTo (datetime): lte\n  status (string): eq, in (one of: OPEN, PARTIALLY_APPLIED, APPLIED, VOID)\n  syncStatus (string): eq, in (one of: NOT_SYNCED, SYNCING, SYNCED, SYNC_FAILED)\n  lastUpdatedAt (datetime): eq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=creditMemoNumber:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Credit Memos by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credit_Memos_IntegratorsApiCreditMemosController_getCreditMemos_Response_200"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"creditMemos_IntegratorsApiCreditMemosController_createCreditMemo","summary":"Create credit memo","tags":["creditMemos"],"responses":{"201":{"description":"Credit memo created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credit_Memos_IntegratorsApiCreditMemosController_createCreditMemo_Response_201"}}}},"400":{"description":"Bad request - Invalid input data","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error - Failed to create credit memo","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreditMemoRequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/credit-memos/{id}/applications":{"post":{"operationId":"creditMemos_IntegratorsApiCreditMemosController_applyCreditMemo","summary":"Apply credit memo","tags":["creditMemos"],"parameters":[{"name":"id","in":"path","description":"Credit memo ID","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Credit memo application created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credit_Memos_IntegratorsApiCreditMemosController_applyCreditMemo_Response_201"}}}},"400":{"description":"Bad request - Invalid input data","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Not found - Credit memo or invoice not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error - Failed to apply credit memo","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyCreditMemoRequestDto"}}}},"security":[{"custom-header":[]}]}},"/v3/custom-fields":{"get":{"operationId":"customFields_IntegratorsApiCustomFieldsController_getCustomFields","summary":"List custom fields v3","description":"Returns `payload` as a bare array; /v3.1/custom-fields returns the same records under `payload.data`.","tags":["customFields"],"responses":{"200":{"description":"Get all custom fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Custom_Fields_IntegratorsApiCustomFieldsController_getCustomFields_Response_200"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"deprecated":true,"security":[{"custom-header":[]}]}},"/v3.1/custom-fields":{"get":{"operationId":"customFields_IntegratorsApiCustomFieldsV31Controller_getCustomFields","summary":"List custom fields","tags":["customFields"],"parameters":[{"name":"page","in":"query","description":"Page number. Defaults to 1.","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Rows per page. Defaults to 50.","required":false,"schema":{"type":"number","format":"double","default":50}}],"responses":{"200":{"description":"Get all custom fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Custom_Fields_IntegratorsApiCustomFieldsV31Controller_getCustomFields_Response_200"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getCustomerById","summary":"Get customer by ID","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Customer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getCustomerById_Response_200"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"delete":{"operationId":"customers_IntegratorsApiCustomersController_deleteCustomer","summary":"Delete customer","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted customer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_deleteCustomer_Response_200"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getCustomers","summary":"List customers","tags":["customers"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalIds.externalId (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  lastUpdatedAt (datetime): eq, neq, gt, gte, lt, lte\n  customerCustomFields.defaultValue (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Customers by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getCustomers_Response_200"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"customers_IntegratorsApiCustomersController_createCustomer","summary":"Create customer","tags":["customers"],"responses":{"201":{"description":"Customer created in Tabs. When the merchant has an ERP connected, `jobId` is the sync job's ID and `statusEndpoint` points at it. When there's no ERP, `jobId` is null and `statusEndpoint` points at the customer instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_createCustomer_Response_201"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/sub-customers":{"post":{"operationId":"customers_IntegratorsApiCustomersController_createSubCustomer","summary":"Create sub-customer","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Sub-customer created in Tabs. When the merchant has an ERP connected, `jobId` is the sync job's ID and `statusEndpoint` points at it. When there's no ERP, `jobId` is null and `statusEndpoint` points at the customer instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_createSubCustomer_Response_201"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubCustomerDto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getInvoice","summary":"Get customer invoice by ID","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The invoice","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getInvoice_Response_200"}}}},"404":{"description":"Invoice not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/external-ids":{"patch":{"operationId":"customers_IntegratorsApiCustomersController_updateInvoiceExternalIds","summary":"Update invoice external IDs","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated invoice external IDs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateInvoiceExternalIds_Response_200"}}}},"404":{"description":"Invoice not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInvoiceExternalIdsDto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/pdf":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getInvoiceAsPdf","summary":"Download invoice PDF","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Type of the response either pdf or buffer","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"PDF file download","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/actions":{"post":{"operationId":"customers_IntegratorsApiCustomersController_invoiceActions","summary":"Perform invoice action","description":"Performs an action on an invoice. See the request body for the available actions.\n\nSEND emails the customer only the first time. On an invoice already emailed, the customer email is skipped and the response carries \"customerEmailSkipped\": \"ALREADY_EMAILED\"; any requested ERP push still runs. Use SEND_REMINDER_EMAIL to send a payment reminder.\n\nSEND always returns 201 with a job message. MARK_INVOICE_AS_VOID returns 201 with a job message when void runs asynchronously, or 200 with the invoice payload when it still runs synchronously. Poll GET /v3/jobs/:jobId for async job status.","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Synchronous invoice action completed. Returned for MARK_INVOICE_AS_PENDING, MARK_INVOICE_TO_SENT_OFF_TABS, MARK_INVOICE_AS_SCHEDULED, SEND_REMINDER_EMAIL, and MARK_INVOICE_AS_VOID when void still runs synchronously.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_invoiceActions_Response_200"}}}},"400":{"description":"Invalid combination: at least one of sendToErp or sendToCustomer must be true, or sendToErp was requested but the merchant has no ERP integration connected. Also returned when the invoice is VOID or DELETED, fails invoice validation, or cannot be voided.","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Invoice actions for sending an invoice. Validation rules:\n1. At least one of sendToErp or sendToCustomer must be true\n2. sendToErp can be true while sendToCustomer is false (push to ERP only)\n3. sendToCustomer can be true while sendToErp is false (email customer only; useful when no ERP is connected)\n4. If sendToErp is true but the merchant has no ERP integration connected, the request is rejected\n5. the field overrideInvoiceDate is optional","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_invoiceActions_Request"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/payments/{paymentId}":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getPayment","summary":"Get invoice payment by ID","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}},{"name":"paymentId","in":"path","description":"Payment Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The payment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getPayment_Response_200"}}}},"404":{"description":"Payment not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/payments":{"post":{"operationId":"customers_IntegratorsApiCustomersController_createPayment","summary":"Create invoice payment","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created payment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_createPayment_Response_200"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaymentV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/attachments":{"post":{"operationId":"customers_IntegratorsApiCustomersController_uploadAttachmentToInvoice","summary":"Upload invoice attachment","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","description":"Invoice Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"attachment uploaded successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_uploadAttachmentToInvoice_Response_200"}}}},"404":{"description":"Invoice not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/autocharge":{"put":{"operationId":"customers_IntegratorsApiCustomersController_updateCustomerAutoCharge","summary":"Update customer auto-charge","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated customer auto charge","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateCustomerAutoCharge_Response_200"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerAutoChargeV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/cc-fees-exemption":{"put":{"operationId":"customers_IntegratorsApiCustomersController_updateCustomerCCFeesExemption","summary":"Update customer credit card fees exemption","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated customer CC fees exemption","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiResponse"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerCCFeesExemptionV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/custom-field":{"put":{"operationId":"customers_IntegratorsApiCustomersController_updateCustomerCustomField","summary":"Update customer custom fields","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated customer custom field","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateCustomerCustomField_Response_200"}}}},"400":{"description":"Invalid request body structure or UUID format","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer or custom field not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UpdateCustomerCustomFieldV3Dto"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/contacts":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getContacts","summary":"List customer contacts","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  firstName (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  lastName (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  email (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  isPrimaryContact (boolean): eq\n  isCCEmail (boolean): eq\n\nExample: filter=firstName:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Customers by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getContacts_Response_200"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"customers_IntegratorsApiCustomersController_createContacts","summary":"Create customer contacts","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Created contacts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_createContacts_Response_200"}}}},"400":{"description":"Request body is not an array, an element failed validation, an invalid email address was provided, or top level customers cannot be modified","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CreateContactV3Dto"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/address":{"post":{"operationId":"customers_IntegratorsApiCustomersController_createAddress","summary":"Create customer address","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Address created in Tabs. When the merchant has an ERP connected, `jobId` is the sync job's ID and `statusEndpoint` points at it. When there's no ERP, `jobId` is null and `statusEndpoint` points at the customer instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_createAddress_Response_201"}}}},"400":{"description":"Top level customers cannot be modified","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAddressV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/contacts/{contactId}":{"patch":{"operationId":"customers_IntegratorsApiCustomersController_updateContact","summary":"Update customer contact","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateContact_Response_200"}}}},"400":{"description":"Top level customers cannot be modified","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Contact not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/external-ids":{"post":{"operationId":"customers_IntegratorsApiCustomersController_upsertCustomerExternalId","summary":"Upsert customer external ID","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Customer external ID upserted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_upsertCustomerExternalId_Response_200"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertCustomerExternalIdV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/credit-memos":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getCreditMemosByInvoice","summary":"List invoice credit memos","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invoiceId","in":"path","description":"Invoice ID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Credit memos retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getCreditMemosByInvoice_Response_200"}}}},"404":{"description":"Invoice not found for this merchant","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error - Failed to get credit memo by invoice","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/name":{"patch":{"operationId":"customers_IntegratorsApiCustomersController_updateCustomerName","summary":"Update customer names","tags":["customers"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Customer name updated in Tabs. When the merchant has an ERP connected, `jobId` is the sync job's ID and `statusEndpoint` points at it. When there's no ERP, `jobId` is null and `statusEndpoint` points at the customer instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateCustomerName_Response_200"}}}},"400":{"description":"Validation failed, or top level customers cannot be modified","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchCustomerNamesV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/po":{"put":{"operationId":"customers_IntegratorsApiCustomersController_updateInvoicePO","summary":"Update invoice PO number","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invoiceId","in":"path","description":"Invoice ID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Updated PO number","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateInvoicePO_Response_200"}}}},"404":{"description":"Customer not found or invoice not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInvoicePODto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoices/{invoiceId}/memo":{"put":{"operationId":"customers_IntegratorsApiCustomersController_updateInvoiceMemo","summary":"Update invoice memo","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer ID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invoiceId","in":"path","description":"Invoice ID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Updated memo successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateInvoiceMemo_Response_200"}}}},"404":{"description":"Customer not found or invoice not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInvoiceMemoBodyDto"}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/invoice-generation-status":{"get":{"operationId":"customers_IntegratorsApiCustomersController_getInvoiceGenerationStatus","summary":"Get invoice generation status","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Whether invoices are still generating for this customer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_getInvoiceGenerationStatus_Response_200"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/payment-method-link":{"post":{"operationId":"customers_IntegratorsApiCustomersController_sendPaymentMethodLink","summary":"Send payment method link","description":"Emails your customer's primary billing contact a secure link to manage their saved payment methods — view, add, set a default, or remove a card or bank account. This is the same link the \"Send link\" button in your dashboard sends.\n\nThe link is time-limited, and each call sends a fresh one. The response tells you which address it went to and how long it stays valid.","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer ID","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Link sent to the customer's billing contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_sendPaymentMethodLink_Response_202"}}}},"400":{"description":"Customer has no primary billing contact email, or the manage-payment-methods email template is not configured","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/tax-info":{"patch":{"operationId":"customers_IntegratorsApiCustomersController_updateCustomerTaxInfo","summary":"Update customer tax info","tags":["customers"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated customer tax info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customers_IntegratorsApiCustomersController_updateCustomerTaxInfo_Response_200"}}}},"400":{"description":"No tax fields provided or validation failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Customer not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerTaxInfoV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/departments":{"get":{"operationId":"departments_IntegratorsApiDepartmentsController_getDepartments","summary":"List departments v3","description":"Departments synced from the connected ERP. Can be populated on an obligation or billing term. Returns `payload` as a bare array; /v3.1/departments returns the same records under `payload.data`.","tags":["departments"],"responses":{"200":{"description":"Get departments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Departments_IntegratorsApiDepartmentsController_getDepartments_Response_200"}}}}},"deprecated":true,"security":[{"custom-header":[]}]}},"/v3.1/departments":{"get":{"operationId":"departments_IntegratorsApiDepartmentsV31Controller_getDepartments","summary":"List departments","description":"Departments synced from the connected ERP. Can be populated on an obligation or billing term.","tags":["departments"],"parameters":[{"name":"page","in":"query","description":"Page number. Defaults to 1.","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Rows per page. Defaults to 50.","required":false,"schema":{"type":"number","format":"double","default":50}}],"responses":{"200":{"description":"Get departments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Departments_IntegratorsApiDepartmentsV31Controller_getDepartments_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/events/bulk":{"post":{"operationId":"events_IntegratorsApiEventsController_createEvents","summary":"Bulk Create Events v1","tags":["events"],"responses":{"200":{"description":"The Events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedEventsDto"}}}},"400":{"description":"Some events failed validation","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"deprecated":true,"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCreateEventDto"}}}},"security":[{"custom-header":[]}]},"delete":{"operationId":"events_IntegratorsApiEventsController_deleteEventsBulk","summary":"Bulk Delete Events v1","tags":["events"],"responses":{"200":{"description":"All events deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Events_IntegratorsApiEventsController_deleteEventsBulk_Response_200"}}}},"400":{"description":"Bad request - invalid event IDs or other validation errors","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"One or more events not found - no events will be deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiEventsController_deleteEventsBulkRequestNotFoundError"}}}},"500":{"description":"Internal server error - transaction failed","content":{"application/json":{"schema":{"description":"Any type"}}}}},"deprecated":true,"requestBody":{"description":"Array of event IDs to delete","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}},"security":[{"custom-header":[]}]}},"/v3/events":{"get":{"operationId":"events_IntegratorsApiEventsController_getEvents","summary":"Get Events v1","tags":["events"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  eventTypeId (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  differentiator (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  datetime (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=eventTypeId:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Events by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Events_IntegratorsApiEventsController_getEvents_Response_200"}}}}},"deprecated":true,"security":[{"custom-header":[]}]},"post":{"operationId":"events_IntegratorsApiEventsController_createEvent","summary":"Create Event v1","tags":["events"],"responses":{"201":{"description":"The Event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedEventsDto"}}}},"400":{"description":"Event already exists","content":{"application/json":{"schema":{"description":"Any type"}}}}},"deprecated":true,"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventDto"}}}},"security":[{"custom-header":[]}]}},"/v3/events/{id}":{"delete":{"operationId":"events_IntegratorsApiEventsController_deleteEvents","summary":"Delete Event v1","tags":["events"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Events_IntegratorsApiEventsController_deleteEvents_Response_200"}}}}},"deprecated":true,"security":[{"custom-header":[]}]}},"/v3/events/types":{"get":{"operationId":"events_IntegratorsApiEventsController_getEventTypes","summary":"List event types","tags":["events"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Event Types","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Events_IntegratorsApiEventsController_getEventTypes_Response_200"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"events_IntegratorsApiEventsController_createEventType","summary":"Create event type","tags":["events"],"responses":{"200":{"description":"The Event Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeDto"}}}},"400":{"description":"Event Type already exists","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEventTypeDto"}}}},"security":[{"custom-header":[]}]}},"/v3/events/types/{eventTypeId}":{"get":{"operationId":"events_IntegratorsApiEventsController_getEventTypeByEventTypeId","summary":"Get event type by ID","tags":["events"],"parameters":[{"name":"eventTypeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Event Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeDto"}}}},"404":{"description":"Event Type not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"delete":{"operationId":"events_IntegratorsApiEventsController_deleteEventType","summary":"Delete event type","tags":["events"],"parameters":[{"name":"eventTypeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Event Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Events_IntegratorsApiEventsController_deleteEventType_Response_200"}}}},"400":{"description":"Event Type is still in use and cannot be deleted","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Event Type not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"events_IntegratorsApiEventsController_updateEventType","summary":"Update event type","tags":["events"],"parameters":[{"name":"eventTypeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Event Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventTypeDto"}}}},"400":{"description":"Event Type already exists","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Event Type not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEventTypeDto"}}}},"security":[{"custom-header":[]}]}},"/v1/events":{"post":{"operationId":"events_ingestEvent","summary":"Create an event","description":"Creates a new usage event. Requires valid authentication and unique idempotency key.","tags":["events"],"responses":{"200":{"description":"Event created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventCreateResponse"}}}},"400":{"description":"Bad request - Invalid event data or duplicate idempotency key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedResponse"}}}},"422":{"description":"Unprocessable Entity - Validation errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventCreateRequest"}}}},"security":[{"custom-header":[]}]},"get":{"operationId":"events_getEvents","summary":"Get all events","description":"Fetches all usage events, and can be filtered as needed. This endpoint is rate-limited to 600 requests per minute per merchant.","tags":["events"],"parameters":[{"name":"startDate","in":"query","description":"Start date for filtering events (UTC) (format: YYYY-MM-DDTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"endDate","in":"query","description":"End date for filtering events (UTC) (format: YYYY-MM-DDTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"ingestStartDate","in":"query","description":"Start ingest timestamp for filtering events (UTC) (format: YYYY-MM-DDTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"ingestEndDate","in":"query","description":"End ingest timestamp for filtering events (UTC) (format: YYYY-MM-DDTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"customerId","in":"query","description":"Tabs Customer ID to filter events","required":false,"schema":{"type":"string"}},{"name":"eventTypeId","in":"query","description":"Event type ID to filter events","required":false,"schema":{"type":"string"}},{"name":"source","in":"query","description":"Source to filter events","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of events to return (default: 50, max: 1000)","required":false,"schema":{"type":"integer"}},{"name":"cursor","in":"query","description":"Cursor for pagination","required":false,"schema":{"type":"string"}},{"name":"orderDirection","in":"query","description":"Sort direction (asc/desc)","required":false,"schema":{"type":"string"}},{"name":"skipDeletionEvents","in":"query","description":"Include deleted events in the response (default: true)","required":false,"schema":{"type":"boolean","default":true}},{"name":"idempotencyKeys","in":"query","description":"Idempotency key(s) to filter events.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Events retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsQueryResponse"}}}},"400":{"description":"Bad request - Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"}}}},"500":{"description":"Internal server error - Failed to retrieve events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}},"security":[{"custom-header":[]}]}},"/v1/events/{idempotencyKey}":{"delete":{"operationId":"events_deleteEvent","summary":"Delete an event","description":"Deletes a usage event by creating a new deletion event that links back to the original event. Requires valid authentication.","tags":["events"],"parameters":[{"name":"idempotencyKey","in":"path","description":"Event key of the event that should be deleted","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Event deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDeleteResponse"}}}},"400":{"description":"Bad request - Event not found or invalid idempotency key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedResponse"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}},"security":[{"custom-header":[]}]}},"/v1/version":{"get":{"operationId":"events_getVersion","summary":"Get API version information","description":"Returns the current API version, name, and description","tags":["events"],"responses":{"200":{"description":"Version information retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionResponse"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}},"security":[{"custom-header":[]}]}},"/v3/invoices":{"get":{"operationId":"invoices_IntegratorsApiInvoicesController_getInvoices","summary":"List invoices","tags":["invoices"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  total (number): eq, neq, gt, gte, lt, lte, in, nin\n  contractId (uuid): eq, neq, in, nin, isnull, isnotnull\n  obligationId (uuid): eq, neq, in, nin, isnull, isnotnull\n  source (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  status (string): eq, neq, in, nin\n  issueDate (datetime): eq, neq, gt, gte, lt, lte\n  dueDate (datetime): eq, neq, gt, gte, lt, lte\n  lastUpdatedAt (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=customerId:eq:00000000-0000-0000-0000-000000000001","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Invoices by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoices_IntegratorsApiInvoicesController_getInvoices_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/items":{"get":{"operationId":"items_IntegratorsApiItemsController_getItems","summary":"List items","tags":["items"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalId (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  externalIdType (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Items by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Items_IntegratorsApiItemsController_getItems_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/items/{id}":{"get":{"operationId":"items_IntegratorsApiItemsController_getItemById","summary":"Get item by ID","tags":["items"],"parameters":[{"name":"id","in":"path","description":"Item Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The item","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Items_IntegratorsApiItemsController_getItemById_Response_200"}}}},"404":{"description":"Item not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/jobs/{id}":{"get":{"operationId":"jobs_IntegratorsApiJobsControllerV3_getJobStatusById","summary":"Get job by ID","tags":["jobs"],"parameters":[{"name":"id","in":"path","description":"Job Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job Status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jobs_IntegratorsApiJobsControllerV3_getJobStatusById_Response_200"}}}},"404":{"description":"Job not found","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/merchant/info":{"get":{"operationId":"merchant_IntegratorsApiMerchantsControllerV3_getMerchantInfo","summary":"Get merchant info","tags":["merchant"],"responses":{"200":{"description":"Merchant Info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Merchant_IntegratorsApiMerchantsControllerV3_getMerchantInfo_Response_200"}}}},"404":{"description":"Merchant not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiMerchantsControllerV3_getMerchantInfoRequestNotFoundError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorsApiMerchantsControllerV3_getMerchantInfoRequestInternalServerError"}}}}},"security":[{"custom-header":[]}]}},"/v3/merchant/book-close-date":{"get":{"operationId":"merchant_IntegratorsApiMerchantsControllerV3_getBookCloseDate","summary":"Get book close date","tags":["merchant"],"responses":{"200":{"description":"Merchant book close date","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Merchant_IntegratorsApiMerchantsControllerV3_getBookCloseDate_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/obligations":{"get":{"operationId":"obligations_IntegratorsApiObligationsController_getObligations","summary":"List obligations","tags":["obligations"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  contractId (uuid): eq, neq, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  billingTermId (uuid): eq\n  startDate (datetime): eq, neq, gt, gte, lt, lte\n  endDate (datetime): eq, neq, gt, gte, lt, lte\n  serviceStartDate (datetime): eq, neq, gt, gte, lt, lte\n  serviceEndDate (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=contractId:eq:00000000-0000-0000-0000-000000000001","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Obligations by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Obligations_IntegratorsApiObligationsController_getObligations_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/payments":{"get":{"operationId":"payments_IntegratorsApiPaymentsController_getPayments","summary":"List payments v3","description":"Includes the deprecated `stripeId` field; /v3.1/payments returns the same records without it.","tags":["payments"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  receivedAt (datetime): eq, neq, gt, gte, lt, lte\n  status (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  type (string): eq, neq, like, nlike, in, nin, isnull, isnotnull (one of: MANUAL, STRIPE, TABS_PAY, RECONCILIATION, REFUND, CREDIT_MEMO_FROM_ERP)\n  invoiceId (uuid): eq, neq, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=receivedAt:gte:2026-01-01","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Payments by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Payments_IntegratorsApiPaymentsController_getPayments_Response_200"}}}}},"deprecated":true,"security":[{"custom-header":[]}]}},"/v3.1/payments":{"get":{"operationId":"payments_IntegratorsApiPaymentsV31Controller_getPayments","summary":"List payments","tags":["payments"],"parameters":[{"name":"page","in":"query","description":"Page number. Defaults to 1.","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Rows per page. Defaults to 50.","required":false,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  receivedAt (datetime): eq, neq, gt, gte, lt, lte\n  status (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  type (string): eq, neq, like, nlike, in, nin, isnull, isnotnull (one of: MANUAL, STRIPE, TABS_PAY, RECONCILIATION, REFUND, CREDIT_MEMO_FROM_ERP)\n  invoiceId (uuid): eq, neq, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=receivedAt:gte:2026-01-01","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Payments by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Payments_IntegratorsApiPaymentsV31Controller_getPayments_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/performance-obligations":{"get":{"operationId":"performanceObligations_IntegratorsApiPerformanceObligationsController_searchPerformanceObligations","summary":"List performance obligations","tags":["performanceObligations"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  contractId (uuid): eq, neq, in, nin, isnull, isnotnull\n  customerId (uuid): eq, neq, in, nin, isnull, isnotnull\n  serviceStartDate (datetime): eq, neq, gt, gte, lt, lte\n  serviceEndDate (datetime): eq, neq, gt, gte, lt, lte\n  billingTermGroupId (uuid): eq, neq, in, nin, isnull, isnotnull\n  createdAt (datetime): eq, neq, gt, gte, lt, lte\n  updatedAt (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=contractId:eq:00000000-0000-0000-0000-000000000001","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all performance obligations by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Performance_Obligations_IntegratorsApiPerformanceObligationsController_searchPerformanceObligations_Response_200"}}}},"400":{"description":"Performance obligation features are not enabled for this merchant","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/performance-obligations/{performanceObligationId}/recognized":{"post":{"operationId":"performanceObligations_IntegratorsApiPerformanceObligationsController_upsertRecognizedRevenue","summary":"Upsert recognized revenue","tags":["performanceObligations"],"parameters":[{"name":"performanceObligationId","in":"path","description":"The ID of the performance obligation","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the revenue schedule ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Performance_Obligations_IntegratorsApiPerformanceObligationsController_upsertRecognizedRevenue_Response_200"}}}},"400":{"description":"Bad request body, e.g. invalid timeframe","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Performance obligation not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"description":"Recognized revenue entries to upsert for the performance obligation. Amounts may be positive or negative (e.g. negative values when reallocating discounts).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertRecognizedRevenueDto"}}}},"security":[{"custom-header":[]}]}},"/v3/performance-obligations/estimates":{"post":{"operationId":"performanceObligations_IntegratorsApiPerformanceObligationsController_bulkUpdateUsageEstimates","summary":"Bulk update usage estimates","description":"Records the expected total output quantity for usage-based performance obligations, across any number of contracts. Estimates are append-only: each call adds a revision rather than overwriting, and a quantity already in effect comes back as `UNCHANGED`. A revision restates the revenue schedule going forwards, leaving closed periods and the allocated transaction price untouched.","tags":["performanceObligations"],"responses":{"202":{"description":"Accepted. One result per request entry, in request order — `UPDATED`, `UNCHANGED`, or `REJECTED` with a `reason`. Entries are applied independently, so one rejection does not stop the rest.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Performance_Obligations_IntegratorsApiPerformanceObligationsController_bulkUpdateUsageEstimates_Response_202"}}}},"400":{"description":"Empty batch, more than 100 entries, a malformed quantity, or the same performance obligation listed twice.","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateUsageEstimatesDto"}}}},"security":[{"custom-header":[]}]}},"/v3/products/{id}":{"get":{"operationId":"products_IntegratorsApiProductsController_getProduct","summary":"Get a product by ID","tags":["products"],"parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the product information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products_IntegratorsApiProductsController_getProduct_Response_200"}}}},"404":{"description":"Product not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"products_IntegratorsApiProductsController_updateProduct","summary":"Update a product","tags":["products"],"parameters":[{"name":"id","in":"path","description":"Product ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Product updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products_IntegratorsApiProductsController_updateProduct_Response_200"}}}},"400":{"description":"Bad Request - validation failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Product not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProductV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/products":{"get":{"operationId":"products_IntegratorsApiProductsController_listProducts","summary":"List all products for merchant","tags":["products"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":false,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  name (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  status (string): eq\n\nExample: filter=name:eq:value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"List all products","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products_IntegratorsApiProductsController_listProducts_Response_200"}}}},"404":{"description":"Merchant not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"post":{"operationId":"products_IntegratorsApiProductsController_createProduct","summary":"Create a new product","tags":["products"],"responses":{"201":{"description":"Product created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Products_IntegratorsApiProductsController_createProduct_Response_201"}}}},"400":{"description":"Bad Request - validation failed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"Merchant not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProductV3Dto"}}}},"security":[{"custom-header":[]}]}},"/v3/projects":{"get":{"operationId":"projects_IntegratorsApiProjectsController_getProjects","summary":"List projects v3","description":"Projects synced from the connected ERP (e.g. Sage Intacct). Can be populated on an obligation or billing term. A project may be tied to a single customer via customerId, or null for internal projects. Returns `payload` as a bare array; /v3.1/projects returns the same records under `payload.data`.","tags":["projects"],"responses":{"200":{"description":"Get projects","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_IntegratorsApiProjectsController_getProjects_Response_200"}}}}},"deprecated":true,"security":[{"custom-header":[]}]}},"/v3.1/projects":{"get":{"operationId":"projects_IntegratorsApiProjectsV31Controller_getProjects","summary":"List projects","description":"Projects synced from the connected ERP (e.g. Sage Intacct). Can be populated on an obligation or billing term. A project may be tied to a single customer via customerId, or null for internal projects.","tags":["projects"],"parameters":[{"name":"page","in":"query","description":"Page number. Defaults to 1.","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Rows per page. Defaults to 50.","required":false,"schema":{"type":"number","format":"double","default":50}}],"responses":{"200":{"description":"Get projects","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projects_IntegratorsApiProjectsV31Controller_getProjects_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/renewals":{"get":{"operationId":"renewals_IntegratorsApiRenewalsController_getRenewals","summary":"List renewals","tags":["renewals"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":true,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Number of items to return","required":true,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  contractId (uuid): eq, neq, in, nin, isnull, isnotnull\n  type (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  status (string): eq, neq, like, nlike, in, nin, isnull, isnotnull\n  contractEndDate (datetime): eq, neq, gt, gte, lt, lte\n\nDate-only values (YYYY-MM-DD) match the full UTC day.\n\nExample: filter=contractId:eq:00000000-0000-0000-0000-000000000001","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Renewals by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renewals_IntegratorsApiRenewalsController_getRenewals_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/renewals/{id}/cancel":{"post":{"operationId":"renewals_IntegratorsApiRenewalsController_cancelRenewal","summary":"Cancel a renewal","description":"Deletes the draft renewal contract, if any, and sets the renewal to `DECLINED`.","tags":["renewals"],"parameters":[{"name":"id","in":"path","description":"Renewal Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The cancelled renewal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renewals_IntegratorsApiRenewalsController_cancelRenewal_Response_200"}}}},"400":{"description":"The renewal is not `DRAFT`","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such renewal under your merchant account, or renewals are not enabled for your merchant account","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/contracts/{contractId}/renewal":{"post":{"operationId":"renewals_IntegratorsApiContractRenewalController_createRenewal","summary":"Create a renewal for a contract","description":"Creates a `DRAFT` renewal for a processed contract. All terms are optional. A contract can have at most one renewal.","tags":["renewals"],"parameters":[{"name":"contractId","in":"path","description":"Contract Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"The created renewal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renewals_IntegratorsApiContractRenewalController_createRenewal_Response_201"}}}},"400":{"description":"Invalid body, or the contract is not processed","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such contract under your merchant account, or renewals are not enabled for your merchant account","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"The contract already has a renewal. `error.details.renewal` holds the existing renewal.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRenewalDto"}}}},"security":[{"custom-header":[]}]}},"/v3/renewals/{id}/execute":{"post":{"operationId":"renewals_IntegratorsApiRenewalsController_executeRenewal","summary":"Execute a renewal","description":"Starts executing the renewal asynchronously: the excluded billing terms are removed from the draft renewal contract, the draft is marked processed, and the renewal becomes `APPROVED`. Poll `GET /v3/renewals/:id` until the status is `APPROVED`. The renewal must be `DRAFT` and have a draft renewal contract (approve the contract to generate one). Repeat calls start only one workflow; `deduped` is `true` when an execution was already in flight, and this call's payload was not delivered to that execution.","tags":["renewals"],"parameters":[{"name":"id","in":"path","description":"Renewal Id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"The execute workflow was started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renewals_IntegratorsApiRenewalsController_executeRenewal_Response_202"}}}},"400":{"description":"Invalid body, the renewal is not `DRAFT`, or it has no draft contract","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such renewal under your merchant account, or renewals are not enabled for your merchant account","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRenewalDto"}}}},"security":[{"custom-header":[]}]}},"/v3/renewals/{id}":{"get":{"operationId":"renewals_IntegratorsApiRenewalsController_getRenewal","summary":"Get a renewal","tags":["renewals"],"parameters":[{"name":"id","in":"path","description":"Renewal Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The renewal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renewals_IntegratorsApiRenewalsController_getRenewal_Response_200"}}}},"404":{"description":"No such renewal under your merchant account, or renewals are not enabled for your merchant account","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]},"patch":{"operationId":"renewals_IntegratorsApiRenewalsController_updateRenewal","summary":"Update a renewal","description":"Updates the renewal's terms. Omit a field to leave it unchanged, or send `null` to clear it. Only `DRAFT` renewals can be updated. If the renewal has a draft renewal contract, it is regenerated from the updated terms, so `draftContractId` changes — read the draft's billing terms after your last update if you plan to exclude any on execute.","tags":["renewals"],"parameters":[{"name":"id","in":"path","description":"Renewal Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The updated renewal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renewals_IntegratorsApiRenewalsController_updateRenewal_Response_200"}}}},"400":{"description":"Invalid body, or the renewal is not `DRAFT`","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such renewal under your merchant account, or renewals are not enabled for your merchant account","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"The renewal was updated but its draft could not be rebuilt. Approve the contract again to generate a new draft.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRenewalDto"}}}},"security":[{"custom-header":[]}]}},"/v3/reports/cash-forecasting":{"get":{"operationId":"reports_IntegratorsApiReportsController_getReport","summary":"Get cash forecasting report","description":"Retrieves a paginated cash forecasting report showing due and paid amounts per period for each customer","tags":["reports"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Max items per page. Defaults to 50. Values above 500 will be rejected.","required":false,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"\n            Supported items for filter: startMonth, endMonth, currency.\n\n            Months should be in YYYY-MM format. Set startMonth and endMonth to the same value to request a single month.\n\n            By default the forecast is capped to 120 months ahead of the current month; pass endMonth to extend or shorten that horizon.\n\n            Currency should be an ISO 4217 currency code (e.g., USD, INR, EUR).\n            ","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved cash forecasting report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reports_IntegratorsApiReportsController_getReport_Response_200"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/reports/arr":{"get":{"operationId":"reports_IntegratorsApiReportsController_getARR","summary":"Get ARR report","tags":["reports"],"parameters":[{"name":"page","in":"query","description":"Page Number","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Max items per page. Defaults to 50. Values above 500 will be rejected.","required":false,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  startMonth (string): eq, gte\n  endMonth (string): eq, lte\n  customerId (uuid): eq\n  currency (string): eq\n\nExample: filter=startMonth:eq:value\n\nFormat: `startMonth`/`endMonth` must be `YYYY-MM` (e.g. `2026-01`); `currency` must be a valid ISO 4217 code (e.g. `USD`, `EUR`).","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get ARR by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reports_IntegratorsApiReportsController_getARR_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/customers/{id}/notes":{"post":{"operationId":"customerNotes_IntegratorsApiCustomerNotesController_createCustomerNote","summary":"Create a customer note","description":"Creates a note on this customer. The author is the dashboard user who created the API key making the request.","tags":["customerNotes"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"The created note","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer_Notes_IntegratorsApiCustomerNotesController_createCustomerNote_Response_201"}}}},"400":{"description":"Empty note, malformed customer id, or API key has no creator user.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such customer under your merchant account.","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomerNoteV3Dto"}}}},"security":[{"custom-header":[]}]},"get":{"operationId":"customerNotes_IntegratorsApiCustomerNotesController_listCustomerNotes","summary":"List customer notes","description":"Returns non-deleted notes for this customer, newest first. Soft-deleted notes are omitted.","tags":["customerNotes"],"parameters":[{"name":"id","in":"path","description":"Customer Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The customer's notes, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer_Notes_IntegratorsApiCustomerNotesController_listCustomerNotes_Response_200"}}}},"400":{"description":"Malformed customer id.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such customer under your merchant account.","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3/erp-metadata":{"delete":{"operationId":"erpMetadata_IntegratorsApiErpMetadataControllerV3_deleteErpMetadata","summary":"Delete ERP metadata","description":"Removes specific metadata keys from the stored ERP metadata for a batch of entities of one type — customers (`CUSTOMER`), invoices (`INVOICE`), or invoice line items (`INVOICE_LINE_ITEM`). Only the keys you list are removed; other keys for the same entity and `erpSource` are left as-is, and the external id record itself is preserved. Scoped to the authenticated merchant. This clears only the value stored in Tabs — it does NOT blank the field in the ERP, because the sync skips empty/missing values, so a value already synced to the ERP stays put. Idempotent: removing a key that is already absent succeeds. One `entityType` per request.","tags":["erpMetadata"],"responses":{"200":{"description":"Per-item result: `removedKeys` lists the requested keys that were present and removed, and `found` indicates whether a stored metadata record existed for that entity and ERP source.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ERP_Metadata_IntegratorsApiErpMetadataControllerV3_deleteErpMetadata_Response_200"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteErpMetadataDto"}}}},"security":[{"custom-header":[]}]}},"/info":{"get":{"operationId":"health_info","summary":"Application information","description":"Returns basic information about the application including name, version, and description","tags":["health"],"responses":{"200":{"description":"Application information retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InfoResponse"}}}}},"security":[{"custom-header":[]}]}},"/health":{"get":{"operationId":"Health","summary":"Health check","description":"Returns the health status of the application and its dependencies (Valkey/Redis and Kafka)","responses":{"200":{"description":"Health status retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"security":[{"custom-header":[]}]}},"/health/live":{"get":{"operationId":"health_HealthController_live","summary":"Liveness check","tags":["health"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health_HealthController_live_Response_200"}}}}},"security":[{"custom-header":[]}]}},"/v3/integrations/crm/sync":{"post":{"operationId":"integrations_IntegratorsApiIntegrationsController_triggerCrmSync","summary":"Trigger CRM sync","tags":["integrations"],"responses":{"202":{"description":"The CRM sync trigger was accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Integrations_IntegratorsApiIntegrationsController_triggerCrmSync_Response_202"}}}},"400":{"description":"Merchant has no Nango-managed CRM connection","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"custom-header":[]}]}},"/v3.1/revenue":{"get":{"operationId":"revenue_IntegratorsAPIRevenueV31Controller_getRevenues","summary":"List revenue","tags":["revenue"],"parameters":[{"name":"page","in":"query","description":"Page number (default: 1)","required":false,"schema":{"type":"number","format":"double","default":1}},{"name":"limit","in":"query","description":"Flat rows per page (default: 50, maximum: 250)","required":false,"schema":{"type":"number","format":"double","default":50}},{"name":"filter","in":"query","description":"Format: field:rule:value — comma-separated for multiple filters.\n\nFields:\n  startMonth (string): eq, gte\n  endMonth (string): eq, lte\n  customerId (uuid): eq\n  currency (string): eq\n\nExample: filter=startMonth:eq:value\n\nFormat: `startMonth`/`endMonth` must be `YYYY-MM` (e.g. `2026-01`); `currency` must be a valid ISO 4217 code (e.g. `USD`, `EUR`).","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Get all Revenues by filter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revenue_IntegratorsAPIRevenueV31Controller_getRevenues_Response_200"}}}}},"security":[{"custom-header":[]}]}}},"tags":[{"name":"billingTerms"},{"name":"categories"},{"name":"classesQboOnly"},{"name":"commitments"},{"name":"contracts"},{"name":"creditMemos"},{"name":"customFields"},{"name":"customers"},{"name":"departments"},{"name":"events"},{"name":"invoices"},{"name":"items"},{"name":"jobs"},{"name":"merchant"},{"name":"obligations"},{"name":"payments"},{"name":"performanceObligations"},{"name":"products"},{"name":"projects"},{"name":"renewals"},{"name":"reports"},{"name":"customerNotes"},{"name":"erpMetadata"},{"name":"health"},{"name":"integrations"},{"name":"revenue"}],"servers":[{"url":"https://integrators.prod.api.tabsplatform.com","description":"https://integrators.prod.api.tabsplatform.com"},{"url":"https://usage-events.prod.api.tabsplatform.com","description":"https://integrators.prod.api.tabsplatform.com"}],"components":{"schemas":{"V3BillingTermsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3BillingTermsGetResponsesContentApplicationJsonSchemaPayload"},"IntegratorsApiErrorDetails":{"type":"object","properties":{},"description":"Additional details about the error","title":"IntegratorsApiErrorDetails"},"IntegratorsApiError":{"type":"object","properties":{"code":{"type":"number","format":"double","description":"API response code"},"message":{"type":"string","description":"API response message"},"errorCode":{"type":"string","description":"Machine-readable error code"},"details":{"$ref":"#/components/schemas/IntegratorsApiErrorDetails","description":"Additional details about the error"}},"required":["code","message"],"title":"IntegratorsApiError"},"Billing_Terms_IntegratorsApiBillingTermsController_getBillingTerms_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3BillingTermsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Billing Terms_IntegratorsApiBillingTermsController_getBillingTerms_Response_200"},"V3CategoriesGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CategoriesGetResponsesContentApplicationJsonSchemaPayload"},"Categories_IntegratorsApiCategoriesController_getCategories_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CategoriesGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Categories_IntegratorsApiCategoriesController_getCategories_Response_200"},"CreateCategoryV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the Category to create"}},"required":["name"],"title":"CreateCategoryV3Dto"},"CategoriesV3Dto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the Category"},"name":{"type":"string","description":"Name of the Category"}},"required":["id","name"],"title":"CategoriesV3Dto"},"Categories_IntegratorsApiCategoriesController_createCategory_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CategoriesV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Categories_IntegratorsApiCategoriesController_createCategory_Response_201"},"V3CategoriesIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CategoriesIdGetResponsesContentApplicationJsonSchemaPayload"},"Categories_IntegratorsApiCategoriesController_getCategoryById_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CategoriesIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Categories_IntegratorsApiCategoriesController_getCategoryById_Response_200"},"Categories_IntegratorsApiCategoriesController_deleteCategory_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Categories_IntegratorsApiCategoriesController_deleteCategory_Response_200"},"ClassModelDto":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the class model"},"name":{"type":"string","description":"The name of the class model"},"externalId":{"type":"string","description":"The external ID of the class model"}},"required":["id","name","externalId"],"title":"ClassModelDto"},"Classes__QBO_only__IntegratorsApiClassesController_getClasses_Response_200":{"type":"object","properties":{"payload":{"type":"array","items":{"$ref":"#/components/schemas/ClassModelDto"},"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Classes (QBO only)_IntegratorsApiClassesController_getClasses_Response_200"},"V31ClassesGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V31ClassesGetResponsesContentApplicationJsonSchemaPayload"},"Classes__QBO_only__IntegratorsApiClassesV31Controller_getClasses_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V31ClassesGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Classes (QBO only)_IntegratorsApiClassesV31Controller_getClasses_Response_200"},"V3CommitmentsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CommitmentsGetResponsesContentApplicationJsonSchemaPayload"},"Commitments_IntegratorsApiCommitmentsController_getAllCommitments_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CommitmentsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Commitments_IntegratorsApiCommitmentsController_getAllCommitments_Response_200"},"CreateUsageCommitmentV3DtoCommitmentUnitType":{"type":"string","enum":["DOLLARS","UNITS"],"description":"Unit type: DOLLARS or UNITS","title":"CreateUsageCommitmentV3DtoCommitmentUnitType"},"CreateUsageCommitmentV3DtoCommitmentInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Commitment period interval","title":"CreateUsageCommitmentV3DtoCommitmentInterval"},"CreateUsageCommitmentV3DtoPrepaymentScheduleType":{"type":"string","enum":["FULL_UPFRONT","PER_COMMITMENT_PERIOD","SPLIT_ACROSS_BILLING_PERIODS"],"description":"Prepayment schedule type. Takes precedence over prePaidWholeCommitment. Defaults to FULL_UPFRONT when omitted and prepaidEnabled is true.","title":"CreateUsageCommitmentV3DtoPrepaymentScheduleType"},"CreateUsageCommitmentV3DtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority: LOW or HIGH","title":"CreateUsageCommitmentV3DtoPricePriority"},"CreateUsageCommitmentOveragePricingItemV3DtoCurrency":{"type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWG","ZWL"],"description":"ISO 4217 currency code","title":"CreateUsageCommitmentOveragePricingItemV3DtoCurrency"},"CreateUsageCommitmentOveragePricingItemV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Pricing name"},"mantissa":{"type":"string","description":"Mantissa for the price"},"exponent":{"type":"string","description":"Exponent for the price"},"currency":{"$ref":"#/components/schemas/CreateUsageCommitmentOveragePricingItemV3DtoCurrency","description":"ISO 4217 currency code"},"tier":{"type":"number","format":"double","description":"Tier number"},"conditionValue":{"type":"number","format":"double","description":"Condition value for tier"},"isOverage":{"type":"boolean","description":"Whether this pricing is for overage"}},"required":["name"],"title":"CreateUsageCommitmentOveragePricingItemV3Dto"},"CreateUsageCommitmentOverageConfigV3DtoTierPricingType":{"type":"string","enum":["USE_TOP_TIER_PRICE_ONLY","USE_ALL_TIER_PRICES"],"description":"How tiered overage pricing is applied. USE_ALL_TIER_PRICES (graduated) charges each tier's rate for the portion of usage within it; USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into. Defaults to graduated for backwards compatibility. Ignored for flat (single-pricing) overage.","title":"CreateUsageCommitmentOverageConfigV3DtoTierPricingType"},"CreateUsageCommitmentOverageConfigV3Dto":{"type":"object","properties":{"billingTermId":{"type":"string","description":"Billing term ID this overage config applies to"},"overagePrice":{"type":"number","format":"double","description":"Price per unit for overage"},"overageInvoiceLineName":{"type":"string","description":"Display name for overage invoice line item"},"overageIntegrationItemId":{"type":"string","description":"Integration item ID for overage invoice line item"},"overagePricings":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentOveragePricingItemV3Dto"},"description":"Detailed pricing tiers for overage"},"tierPricingType":{"$ref":"#/components/schemas/CreateUsageCommitmentOverageConfigV3DtoTierPricingType","description":"How tiered overage pricing is applied. USE_ALL_TIER_PRICES (graduated) charges each tier's rate for the portion of usage within it; USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into. Defaults to graduated for backwards compatibility. Ignored for flat (single-pricing) overage."}},"required":["billingTermId","overagePrice"],"title":"CreateUsageCommitmentOverageConfigV3Dto"},"CreateUsageCommitmentV3Dto":{"type":"object","properties":{"commitmentValue":{"type":"number","format":"double","description":"The commitment amount value"},"commitmentUnitType":{"$ref":"#/components/schemas/CreateUsageCommitmentV3DtoCommitmentUnitType","description":"Unit type: DOLLARS or UNITS"},"prepaidEnabled":{"type":"boolean","description":"Whether prepaid is enabled"},"prepaidValue":{"type":"number","format":"double","description":"Prepaid amount value (required if prepaidEnabled is true)"},"prepaymentInvoiceLineName":{"type":"string","description":"Name of prepayment invoice line item"},"prepaymentIntegrationItem":{"type":"string","description":"Integration item ID for prepayment"},"revenueRecognitionPattern":{"type":"string","description":"Revenue recognition pattern for the prepaid performance obligations: straight-line, recognize-as-consumed, or recognize-as-billed."},"trueUpName":{"type":"string","description":"Name of true-up invoice line item (for non-prepaid)"},"trueUpIntegrationItem":{"type":"string","description":"Integration item ID for true-up invoice line (non-prepaid)"},"billingTermIds":{"type":"array","items":{"type":"string"},"description":"Billing term IDs to link to this commitment"},"commitmentStartDate":{"type":"string","description":"Commitment start date (YYYY-MM-DD)"},"commitmentEndDate":{"type":"string","description":"Commitment end date, inclusive (YYYY-MM-DD)"},"isFullDuration":{"type":"boolean","description":"Whether commitment lasts the full duration"},"commitmentInterval":{"$ref":"#/components/schemas/CreateUsageCommitmentV3DtoCommitmentInterval","description":"Commitment period interval"},"isSequential":{"type":"boolean","description":"Whether this is a sequential commitment"},"prePaidWholeCommitment":{"type":"boolean","description":"Whether the whole commitment is prepaid upfront (pay-in-full). False means split-payment. Deprecated: use prepaymentScheduleType instead.","deprecated":true},"prepaymentScheduleType":{"$ref":"#/components/schemas/CreateUsageCommitmentV3DtoPrepaymentScheduleType","description":"Prepayment schedule type. Takes precedence over prePaidWholeCommitment. Defaults to FULL_UPFRONT when omitted and prepaidEnabled is true."},"pricePriority":{"$ref":"#/components/schemas/CreateUsageCommitmentV3DtoPricePriority","description":"Price priority: LOW or HIGH"},"overageConfigs":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentOverageConfigV3Dto"},"description":"Overage pricing configuration per billing term"}},"required":["commitmentValue","commitmentUnitType","prepaidEnabled","billingTermIds"],"title":"CreateUsageCommitmentV3Dto"},"CreateUsageCommitmentsV3RequestDto":{"type":"object","properties":{"contractId":{"type":"string","description":"The contract ID"},"commitments":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentV3Dto"},"description":"Array of commitments to create"}},"required":["contractId","commitments"],"title":"CreateUsageCommitmentsV3RequestDto"},"V3CommitmentsPostResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{"success":{"type":"boolean"},"commitmentIds":{"type":"array","items":{"type":"string"}}},"description":"Response payload, will be empty when success is false","title":"V3CommitmentsPostResponsesContentApplicationJsonSchemaPayload"},"Commitments_IntegratorsApiCommitmentsController_createUsageCommitments_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CommitmentsPostResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Commitments_IntegratorsApiCommitmentsController_createUsageCommitments_Response_201"},"UpdateUsageCommitmentV3RequestDtoCommitmentInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Commitment period interval","title":"UpdateUsageCommitmentV3RequestDtoCommitmentInterval"},"UpdateUsageCommitmentV3RequestDtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority when multiple products are selected","title":"UpdateUsageCommitmentV3RequestDtoPricePriority"},"UpdateUsageCommitmentV3RequestDtoTrueUpBehavior":{"type":"string","enum":["DEFAULT","NEVER"],"description":"True-up behavior for the commitment (commitments-v2). DEFAULT trues up unmet commitment; NEVER suppresses it.","title":"UpdateUsageCommitmentV3RequestDtoTrueUpBehavior"},"UpdateUsageCommitmentV3RequestDto":{"type":"object","properties":{"commitmentValue":{"type":"number","format":"double","description":"The commitment amount value"},"commitmentStartDate":{"type":"string","description":"Commitment start date (YYYY-MM-DD)"},"commitmentEndDate":{"type":"string","description":"Commitment end date, inclusive (YYYY-MM-DD)"},"isFullDuration":{"type":"boolean","description":"Whether commitment lasts the full duration"},"commitmentInterval":{"$ref":"#/components/schemas/UpdateUsageCommitmentV3RequestDtoCommitmentInterval","description":"Commitment period interval"},"billingTermsToAdd":{"type":"array","items":{"type":"string"},"description":"Billing term IDs to add to the commitment"},"pricePriority":{"$ref":"#/components/schemas/UpdateUsageCommitmentV3RequestDtoPricePriority","description":"Price priority when multiple products are selected"},"trueUpBehavior":{"$ref":"#/components/schemas/UpdateUsageCommitmentV3RequestDtoTrueUpBehavior","description":"True-up behavior for the commitment (commitments-v2). DEFAULT trues up unmet commitment; NEVER suppresses it."}},"title":"UpdateUsageCommitmentV3RequestDto"},"IntegratorsApiResponsePayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"IntegratorsApiResponsePayload"},"IntegratorsApiResponse":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/IntegratorsApiResponsePayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"IntegratorsApiResponse"},"CommitmentDtoCommitmentUnitType":{"type":"string","enum":["DOLLARS","UNITS"],"description":"Commitment unit type","title":"CommitmentDtoCommitmentUnitType"},"CommitmentDtoCommitmentPeriodInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Commitment period interval","title":"CommitmentDtoCommitmentPeriodInterval"},"CommitmentDtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority for this commitment","title":"CommitmentDtoPricePriority"},"CommitmentDtoPrepaymentScheduleType":{"type":"string","enum":["FULL_UPFRONT","PER_COMMITMENT_PERIOD","SPLIT_ACROSS_BILLING_PERIODS"],"description":"Prepayment schedule type","title":"CommitmentDtoPrepaymentScheduleType"},"MetricsDto":{"type":"object","properties":{"amount":{"type":"string","description":"Amount"},"units":{"type":"string","description":"Units/quantity"}},"required":["amount","units"],"title":"MetricsDto"},"TotalsDto":{"type":"object","properties":{},"title":"TotalsDto"},"PeriodAmountsDto":{"type":"object","properties":{"cumulative":{"type":"string","description":"Cumulative amount"},"remaining":{"type":"string","description":"Remaining amount"},"trueUp":{"type":"string","description":"True-up amount"}},"required":["cumulative","remaining","trueUp"],"title":"PeriodAmountsDto"},"EventTypeOverageDto":{"type":"object","properties":{"eventTypeId":{"type":"string","description":"Event type ID"},"eventTypeName":{"type":"string","description":"Event type name"},"cumulative":{"$ref":"#/components/schemas/MetricsDto","description":"Cumulative metrics for this event type across all periods"},"overages":{"$ref":"#/components/schemas/MetricsDto","description":"Overage metrics for this event type in this specific period"}},"required":["eventTypeId","cumulative","overages"],"title":"EventTypeOverageDto"},"CommitmentPeriodDto":{"type":"object","properties":{"periodId":{"type":"string","description":"Commitment period ID"},"periodDate":{"type":"string","description":"Period start date"},"amounts":{"$ref":"#/components/schemas/PeriodAmountsDto","description":"Amounts for this period"},"eventTypes":{"type":"array","items":{"$ref":"#/components/schemas/EventTypeOverageDto"},"description":"Breakdown of usage by event type"},"finalizedAt":{"type":["string","null"],"description":"Timestamp when the period was finalized; null if not yet finalized"},"lastCalculatedAt":{"type":"string","description":"Last time the period was calculated"},"createdAt":{"type":"string","description":"Created at timestamp"},"updatedAt":{"type":"string","description":"Updated at timestamp"}},"required":["periodId","periodDate","amounts","eventTypes","createdAt","updatedAt"],"title":"CommitmentPeriodDto"},"CommitmentDtoTrueUpBehavior":{"type":"string","enum":["DEFAULT","NEVER"],"description":"True-up behavior for the commitment (commitments-v2)","title":"CommitmentDtoTrueUpBehavior"},"ScheduleDtoCommitmentInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Commitment period interval for this schedule","title":"ScheduleDtoCommitmentInterval"},"ScheduleDtoPrepaymentScheduleType":{"type":"string","enum":["FULL_UPFRONT","PER_COMMITMENT_PERIOD","SPLIT_ACROSS_BILLING_PERIODS"],"description":"Prepayment schedule type for this schedule","title":"ScheduleDtoPrepaymentScheduleType"},"StepDtoCommitmentUnitType":{"type":"string","enum":["DOLLARS","UNITS"],"description":"Commitment unit type","title":"StepDtoCommitmentUnitType"},"StepDtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority","title":"StepDtoPricePriority"},"StepDto":{"type":"object","properties":{"id":{"type":"string","description":"Step ID"},"sequence":{"type":"number","format":"double","description":"Dense step ordinal within the schedule (0..M-1)"},"effectiveCommitmentValue":{"type":"string","description":"Effective commitment value (original + amendments)"},"effectivePrepaidValue":{"type":"string","description":"Effective prepaid value (sum of linked PREPAID pricings)"},"prepaidEnabled":{"type":"boolean","description":"Whether prepaid is enabled for this step"},"commitmentUnitType":{"$ref":"#/components/schemas/StepDtoCommitmentUnitType","description":"Commitment unit type"},"pricePriority":{"$ref":"#/components/schemas/StepDtoPricePriority","description":"Price priority"},"billingTermIds":{"type":"array","items":{"type":"string"},"description":"Billing term IDs linked to this step"},"enteredAt":{"type":"string","description":"When this step enters effect"}},"required":["id","sequence","effectiveCommitmentValue","effectivePrepaidValue","prepaidEnabled","commitmentUnitType","pricePriority","billingTermIds"],"title":"StepDto"},"ScheduleDto":{"type":"object","properties":{"id":{"type":"string","description":"Schedule ID"},"sequence":{"type":"number","format":"double","description":"Dense schedule ordinal within the commitment (0..N-1)"},"startDate":{"type":"string","description":"Schedule start date"},"endDate":{"type":"string","description":"Schedule end date (inclusive — the last day of the schedule)"},"commitmentInterval":{"$ref":"#/components/schemas/ScheduleDtoCommitmentInterval","description":"Commitment period interval for this schedule"},"prepaymentScheduleType":{"$ref":"#/components/schemas/ScheduleDtoPrepaymentScheduleType","description":"Prepayment schedule type for this schedule"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/StepDto"},"description":"Steps within this schedule (dense, ordered)"}},"required":["id","sequence","startDate","endDate","steps"],"title":"ScheduleDto"},"CommitmentDto":{"type":"object","properties":{"id":{"type":"string","description":"Commitment ID"},"contractId":{"type":"string","description":"Contract ID this commitment belongs to"},"customerId":{"type":"string","description":"Customer ID for this commitment's contract"},"prepaidEnabled":{"type":"boolean","description":"Whether prepaid is enabled"},"prepaidValue":{"type":"string","description":"Prepaid value if prepaid is enabled"},"commitmentValue":{"type":"string","description":"Commitment value"},"commitmentUnitType":{"$ref":"#/components/schemas/CommitmentDtoCommitmentUnitType","description":"Commitment unit type"},"commitmentStartDate":{"type":"string","description":"Commitment start date"},"commitmentEndDate":{"type":"string","description":"Commitment end date (inclusive — the last day of the commitment)"},"commitmentPeriodInterval":{"$ref":"#/components/schemas/CommitmentDtoCommitmentPeriodInterval","description":"Commitment period interval"},"commitmentCustomInterval":{"type":"string","description":"Custom interval specification"},"pricePriority":{"$ref":"#/components/schemas/CommitmentDtoPricePriority","description":"Price priority for this commitment"},"prepaymentScheduleType":{"$ref":"#/components/schemas/CommitmentDtoPrepaymentScheduleType","description":"Prepayment schedule type"},"eventTypesIncluded":{"type":"array","items":{"type":"string"},"description":"List of event types included in this commitment"},"currentCumulative":{"$ref":"#/components/schemas/MetricsDto","description":"Current cumulative usage metrics"},"totals":{"$ref":"#/components/schemas/TotalsDto","description":"Total amounts for overages and true-ups"},"periods":{"type":"array","items":{"$ref":"#/components/schemas/CommitmentPeriodDto"},"description":"List of commitment periods with usage data"},"createdAt":{"type":"string","description":"Created at timestamp"},"updatedAt":{"type":"string","description":"Updated at timestamp"},"deletedAt":{"type":"string","description":"Soft delete timestamp (null if not deleted)"},"trueUpBehavior":{"$ref":"#/components/schemas/CommitmentDtoTrueUpBehavior","description":"True-up behavior for the commitment (commitments-v2)"},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleDto"},"description":"Nested schedule/step structure. Present when the commitment has a schedule/step tree. The top-level fields above are sourced from the parent commitment (schedule 0 / step 0) for back-compat."}},"required":["id","contractId","customerId","prepaidEnabled","commitmentValue","commitmentUnitType","eventTypesIncluded","currentCumulative","createdAt","updatedAt"],"title":"CommitmentDto"},"Commitments_IntegratorsApiCommitmentsController_getCommitmentById_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CommitmentDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Commitments_IntegratorsApiCommitmentsController_getCommitmentById_Response_200"},"V3ContractsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getContracts_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getContracts_Response_200"},"ExternalIdSourceType":{"type":"string","enum":["QUICKBOOKS","NETSUITE","SALESFORCE","HUBSPOT","AVALARA","ANROK","STRIPE","RILLET","SAGE_INTACCT","SPHERE","CAMPFIRE"],"title":"ExternalIdSourceType"},"ExternalIdDtoMetadata":{"type":"object","properties":{},"description":"Additional metadata for the external identifier","title":"ExternalIdDtoMetadata"},"ExternalIdDto":{"type":"object","properties":{"externalId":{"type":"string","description":"The external identifier"},"sourceType":{"$ref":"#/components/schemas/ExternalIdSourceType","description":"The source type of the external identifier"},"metadata":{"$ref":"#/components/schemas/ExternalIdDtoMetadata","description":"Additional metadata for the external identifier"},"objectType":{"type":"string","description":"Raw CRM object API name this external id represents, e.g. Opportunity/Deal"},"objectLabel":{"type":"string","description":"Human-readable CRM object label, e.g. Opportunity/Deal"}},"title":"ExternalIdDto"},"CreateContractV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the Contract"},"customerId":{"type":"string","description":"customer identifier(UUID)"},"externalId":{"$ref":"#/components/schemas/ExternalIdDto","description":"External identification details, only used for Netsuite Sales Orders"},"shouldProcess":{"type":"boolean","default":false,"description":"Deprecated: has no effect. Use shouldProcess query param on the file upload endpoint instead.","deprecated":true},"closeDate":{"type":"string","description":"Close date of the contract"}},"required":["name","customerId"],"title":"CreateContractV3Dto"},"ContractsV3DtoSource":{"type":"string","enum":["CRM","EMAIL","UPLOAD","API","ERP","INTERNAL"],"description":"The source of the contract","title":"ContractsV3DtoSource"},"DocumentClassificationType":{"type":"string","enum":["ORDER_FORM","STATEMENT_OF_WORK","AMENDMENT","RENEWAL","PO","MSA","INVOICE","NONE"],"title":"DocumentClassificationType"},"ContractsV3Dto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the contract"},"fileName":{"type":"string","description":"Name of the contract file"},"name":{"type":"string","description":"Display name of the contract"},"status":{"type":"string","description":"Current status of the contract"},"customerId":{"type":"string","description":"Identifier of the customer associated with this contract"},"customerName":{"type":"string","description":"Name of the customer associated with this contract"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the contract was created"},"closeDate":{"type":"string","description":"Close date of the contract"},"lastUpdatedAt":{"type":"string","description":"Timestamp when the contract was last updated"},"deletedAt":{"type":"string","format":"date-time","description":"Timestamp when the contract was deleted. Null for live contracts; populated on the deleted-contracts endpoint."},"externalIds":{"type":"array","items":{"$ref":"#/components/schemas/ExternalIdDto"},"description":"External IDs and external source types of the contract"},"source":{"$ref":"#/components/schemas/ContractsV3DtoSource","description":"The source of the contract"},"jobId":{"type":"string","description":"The workflow job ID for the contract processing"},"documentClassifications":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DocumentClassificationType"},"description":"Stored document classifications of the contract file. Null when no classification data is available; currently only fetching a contract by ID returns classification data."}},"required":["id","fileName","name","status","customerId","documentClassifications"],"title":"ContractsV3Dto"},"Contracts_IntegratorsApiContractsv3Controller_createContract_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ContractsV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_createContract_Response_201"},"V3ContractsDeletedGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsDeletedGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getDeletedContracts_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsDeletedGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getDeletedContracts_Response_200"},"V3ContractsIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getContractById_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getContractById_Response_200"},"UpdateContractV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the Contract"},"closeDate":{"type":"string","format":"date-time","description":"Close date of the contract"},"externalId":{"type":"string","description":"External ID of the contract"},"sourceType":{"type":"string","description":"External ID source type"}},"title":"UpdateContractV3Dto"},"Contracts_IntegratorsApiContractsv3Controller_updateContract_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_updateContract_Response_200"},"V3ContractsIdFilePostResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdFilePostResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_uploadContractFile_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdFilePostResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_uploadContractFile_Response_200"},"CreateBillingScheduleDtoInvoiceDateStrategy":{"type":"string","enum":["FIRST_OF_PERIOD","LAST_OF_PERIOD","ARREARS","ADVANCED_DUE_START","OFFSET_FROM_PERIOD_START","OFFSET_FROM_PERIOD_END"],"description":"Strategy for determining when to send invoices. Either this field OR \n      isArrears must be provided, but not both. FIRST_OF_PERIOD (invoice at start of\n      billing period), LAST_OF_PERIOD (invoice at end of billing period), ARREARS\n      (invoice after service delivery), ADVANCED_DUE_START (invoice date at start of\n      billing period minus netPaymentTerms days, due start of service),\n      OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END (invoice date at period start/end\n      plus invoiceDateOffsetDays).","title":"CreateBillingScheduleDtoInvoiceDateStrategy"},"CreateBillingScheduleDtoInterval":{"type":"string","enum":["NONE","DAY","WEEK","MONTH","SEMI_MONTH","YEAR","HOUR"],"description":"Type of recurring interval.","title":"CreateBillingScheduleDtoInterval"},"CreateBillingScheduleDtoBillingType":{"type":"string","enum":["UNIT","FLAT"],"description":"Billing Type","title":"CreateBillingScheduleDtoBillingType"},"CreateBillingScheduleDtoPricingType":{"type":"string","enum":["SIMPLE","TIERED","VOLUME"],"description":"Single, multiple, or volume-based pricing tiers","title":"CreateBillingScheduleDtoPricingType"},"CreateBillingScheduleDtoInvoiceType":{"type":"string","enum":["INVOICE","BILL"],"description":"INVOICE or BILL for remittance. Use INVOICE for all instances","title":"CreateBillingScheduleDtoInvoiceType"},"PricingTierDtoAmountType":{"type":"string","enum":["PER_ITEM","TOTAL_INVOICE"],"description":"Amount Type","title":"PricingTierDtoAmountType"},"PricingTierDto":{"type":"object","properties":{"tier":{"type":"number","format":"double","description":"Tier Number"},"amount":{"type":"number","format":"double","description":"Amount"},"amountType":{"$ref":"#/components/schemas/PricingTierDtoAmountType","description":"Amount Type"},"tierMinimum":{"type":"number","format":"double","description":"Tier Minimum"}},"required":["tier","amount","amountType","tierMinimum"],"title":"PricingTierDto"},"CreateBillingScheduleDto":{"type":"object","properties":{"description":{"type":"string","description":"Line Item Description"},"startDate":{"type":"string","description":"Billing Start Date"},"duration":{"type":"number","format":"double","default":0,"description":"Billing Duration"},"isArrears":{"type":"boolean","description":"Is Arrears (DEPRECATED: Use invoiceDateStrategy instead). \n      Either this field OR invoiceDateStrategy must be provided, but not both.","deprecated":true},"invoiceDateStrategy":{"$ref":"#/components/schemas/CreateBillingScheduleDtoInvoiceDateStrategy","description":"Strategy for determining when to send invoices. Either this field OR \n      isArrears must be provided, but not both. FIRST_OF_PERIOD (invoice at start of\n      billing period), LAST_OF_PERIOD (invoice at end of billing period), ARREARS\n      (invoice after service delivery), ADVANCED_DUE_START (invoice date at start of\n      billing period minus netPaymentTerms days, due start of service),\n      OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END (invoice date at period start/end\n      plus invoiceDateOffsetDays)."},"invoiceDateOffsetDays":{"type":"number","format":"double","minimum":-365,"maximum":365,"description":"Days to offset the invoice date from the period start (OFFSET_FROM_PERIOD_START) or period end (OFFSET_FROM_PERIOD_END). Required for those strategies and not allowed for FIRST_OF_PERIOD, LAST_OF_PERIOD, ARREARS, or ADVANCED_DUE_START. Integer from -365 to 365."},"isRecurring":{"type":"boolean","description":"Is Recurring"},"includeInArr":{"type":"boolean","description":"Whether this billing term contributes to ARR (Annual Recurring Revenue). Defaults based on billing type and interval when omitted (usage and one-time terms default to false)."},"interval":{"$ref":"#/components/schemas/CreateBillingScheduleDtoInterval","description":"Type of recurring interval."},"intervalFrequency":{"type":"number","format":"double","description":"Frequency of recurring interval to invoice"},"netPaymentTerms":{"type":"number","format":"double","description":"Time between issue and due date"},"quantity":{"type":"number","format":"double","description":"Quantity; set to 0 for UNIT billingType"},"billingType":{"$ref":"#/components/schemas/CreateBillingScheduleDtoBillingType","description":"Billing Type"},"pricingType":{"$ref":"#/components/schemas/CreateBillingScheduleDtoPricingType","description":"Single, multiple, or volume-based pricing tiers"},"eventTypeId":{"type":"string","description":"Usage Event Type Id"},"itemId":{"type":"string","description":"The item in the ERP that the line items will belong to"},"productId":{"type":["string","null"],"description":"Product ID from /v3/products that links this billing term to an entry in the merchant's product catalog. To ensure revenue reporting accuracy, associate the billing term with a product whenever applicable."},"invoiceType":{"$ref":"#/components/schemas/CreateBillingScheduleDtoInvoiceType","description":"INVOICE or BILL for remittance. Use INVOICE for all instances"},"pricing":{"type":"array","items":{"$ref":"#/components/schemas/PricingTierDto"},"description":"Pricing tiers"},"classId":{"type":"string","description":"Class Id"},"departmentId":{"type":"string","description":"Department Id"},"projectId":{"type":"string","description":"Project Id"},"name":{"type":"string","description":"Line item name. Required unless productId is provided, in which case it is populated from the product's display name."}},"required":["startDate","isRecurring","interval","intervalFrequency","netPaymentTerms","quantity","billingType","pricingType","invoiceType","pricing"],"title":"CreateBillingScheduleDto"},"DiscountDtoType":{"type":"string","enum":["PERCENTAGE","FIXED"],"description":"The type of discount","title":"DiscountDtoType"},"DiscountDto":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DiscountDtoType","description":"The type of discount"},"amount":{"type":"string","description":"The discount amount (stored as mantissa in database with exponent 0)"},"note":{"type":"string","description":"Optional note about the discount"}},"title":"DiscountDto"},"SeatBasedObligationConfigDtoDefaultProrationPolicy":{"type":"string","enum":["NONE","DAY","MONTH","YEAR"],"description":"Default proration policy","title":"SeatBasedObligationConfigDtoDefaultProrationPolicy"},"SeatBasedObligationConfigDtoDefaultTrueUpTiming":{"type":"string","enum":["IMMEDIATE","CO_TERM"],"description":"Default true up timing","title":"SeatBasedObligationConfigDtoDefaultTrueUpTiming"},"SeatBasedObligationConfigDto":{"type":"object","properties":{"isMovingMinimum":{"type":"boolean","description":"Whether we need to update minimums on a moving basis"},"minQuantity":{"type":"number","format":"double","description":"Minimum quantity to bill for, regardless of current # of seats"},"defaultProrationPolicy":{"$ref":"#/components/schemas/SeatBasedObligationConfigDtoDefaultProrationPolicy","description":"Default proration policy"},"defaultTrueUpTiming":{"$ref":"#/components/schemas/SeatBasedObligationConfigDtoDefaultTrueUpTiming","description":"Default true up timing"}},"required":["isMovingMinimum","minQuantity","defaultProrationPolicy","defaultTrueUpTiming"],"title":"SeatBasedObligationConfigDto"},"CreateObligationDto":{"type":"object","properties":{"serviceStartDate":{"type":"string","description":"Revenue Start Date"},"serviceEndDate":{"type":"string","description":"Revenue End Date"},"categoryId":{"type":"string","description":"Category Id"},"billingSchedule":{"$ref":"#/components/schemas/CreateBillingScheduleDto","description":"Billing Schedule"},"discount":{"$ref":"#/components/schemas/DiscountDto","description":"Discount configuration. Examples: { type: 'FIXED', amount: '5.00' } for a $5.00 fixed discount, or { type: 'PERCENTAGE', amount: '0.10' } for a 10% percentage discount"},"seatConfig":{"$ref":"#/components/schemas/SeatBasedObligationConfigDto","description":"Seat-based obligation configuration"}},"required":["serviceStartDate","serviceEndDate","billingSchedule"],"title":"CreateObligationDto"},"BillingScheduleDtoInvoiceDateStrategy":{"type":"string","enum":["FIRST_OF_PERIOD","LAST_OF_PERIOD","ARREARS","ADVANCED_DUE_START","OFFSET_FROM_PERIOD_START","OFFSET_FROM_PERIOD_END"],"description":"Strategy for determining when to send invoices. Either this field OR \n      isArrears must be provided, but not both. FIRST_OF_PERIOD (invoice at start of\n      billing period), LAST_OF_PERIOD (invoice at end of billing period), ARREARS\n      (invoice after service delivery), ADVANCED_DUE_START (invoice date at start of\n      billing period minus netPaymentTerms days, due start of service),\n      OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END (invoice date at period start/end\n      plus invoiceDateOffsetDays).","title":"BillingScheduleDtoInvoiceDateStrategy"},"BillingScheduleDtoInterval":{"type":"string","enum":["NONE","DAY","WEEK","MONTH","SEMI_MONTH","YEAR","HOUR"],"description":"Type of recurring interval.","title":"BillingScheduleDtoInterval"},"BillingScheduleDtoBillingType":{"type":"string","enum":["UNIT","FLAT"],"description":"Billing Type","title":"BillingScheduleDtoBillingType"},"BillingScheduleDtoPricingType":{"type":"string","enum":["SIMPLE","TIERED","VOLUME"],"description":"Single, multiple, or volume-based pricing tiers","title":"BillingScheduleDtoPricingType"},"BillingScheduleDtoInvoiceType":{"type":"string","enum":["INVOICE","BILL"],"description":"INVOICE or BILL for remittance. Use INVOICE for all instances","title":"BillingScheduleDtoInvoiceType"},"BillingScheduleDto":{"type":"object","properties":{"id":{"type":"string","description":"Billing Term Id"},"name":{"type":"string","description":"Line Item Name"},"description":{"type":"string","description":"Line Item Description"},"startDate":{"type":"string","description":"Billing Start Date"},"endDate":{"type":"string","description":"Billing End Date"},"duration":{"type":"number","format":"double","default":0,"description":"Billing Duration"},"isArrears":{"type":"boolean","description":"Is Arrears (DEPRECATED: Use invoiceDateStrategy instead). \n      Either this field OR invoiceDateStrategy must be provided, but not both.","deprecated":true},"invoiceDateStrategy":{"$ref":"#/components/schemas/BillingScheduleDtoInvoiceDateStrategy","description":"Strategy for determining when to send invoices. Either this field OR \n      isArrears must be provided, but not both. FIRST_OF_PERIOD (invoice at start of\n      billing period), LAST_OF_PERIOD (invoice at end of billing period), ARREARS\n      (invoice after service delivery), ADVANCED_DUE_START (invoice date at start of\n      billing period minus netPaymentTerms days, due start of service),\n      OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END (invoice date at period start/end\n      plus invoiceDateOffsetDays)."},"invoiceDateOffsetDays":{"type":"number","format":"double","minimum":-365,"maximum":365,"description":"Days to offset the invoice date from the period start (OFFSET_FROM_PERIOD_START) or period end (OFFSET_FROM_PERIOD_END). Required for those strategies and not allowed for FIRST_OF_PERIOD, LAST_OF_PERIOD, ARREARS, or ADVANCED_DUE_START. Integer from -365 to 365."},"isRecurring":{"type":"boolean","description":"Is Recurring"},"includeInArr":{"type":"boolean","description":"Whether this billing term contributes to ARR (Annual Recurring Revenue). Defaults based on billing type and interval when omitted (usage and one-time terms default to false)."},"interval":{"$ref":"#/components/schemas/BillingScheduleDtoInterval","description":"Type of recurring interval."},"intervalFrequency":{"type":"number","format":"double","description":"Frequency of recurring interval to invoice"},"netPaymentTerms":{"type":"number","format":"double","description":"Time between issue and due date"},"quantity":{"type":"number","format":"double","description":"Quantity; set to 0 for UNIT billingType"},"billingType":{"$ref":"#/components/schemas/BillingScheduleDtoBillingType","description":"Billing Type"},"pricingType":{"$ref":"#/components/schemas/BillingScheduleDtoPricingType","description":"Single, multiple, or volume-based pricing tiers"},"eventTypeId":{"type":"string","description":"Usage Event Type Id"},"eventTypeName":{"type":["string","null"],"description":"Usage Event Type name"},"itemId":{"type":"string","description":"The item in the ERP that the line items will belong to"},"productId":{"type":["string","null"],"description":"Product ID from /v3/products that links this billing term to an entry in the merchant's product catalog. To ensure revenue reporting accuracy, associate the billing term with a product whenever applicable."},"invoiceType":{"$ref":"#/components/schemas/BillingScheduleDtoInvoiceType","description":"INVOICE or BILL for remittance. Use INVOICE for all instances"},"pricing":{"type":"array","items":{"$ref":"#/components/schemas/PricingTierDto"},"description":"Pricing tiers"},"classId":{"type":"string","description":"Class Id"},"departmentId":{"type":"string","description":"Department Id"},"projectId":{"type":"string","description":"Project Id"}},"required":["id","name","startDate","endDate","isRecurring","interval","intervalFrequency","netPaymentTerms","quantity","billingType","pricingType","eventTypeName","invoiceType","pricing"],"title":"BillingScheduleDto"},"RecognizedRevenueDto":{"type":"object","properties":{"timeframe":{"type":"string","description":"Timeframe"},"total":{"type":"number","format":"double","description":"Total"},"booksClosed":{"type":"boolean","description":"Books closed"}},"required":["timeframe","total","booksClosed"],"title":"RecognizedRevenueDto"},"RevenueScheduleDto":{"type":"object","properties":{"categoryId":{"type":"string","description":"Category Id"},"recognizedRevenue":{"type":"array","items":{"$ref":"#/components/schemas/RecognizedRevenueDto"},"description":"Recognized Revenue in each month"}},"required":["recognizedRevenue"],"title":"RevenueScheduleDto"},"ObligationDto":{"type":"object","properties":{"id":{"type":"string","description":"Obligation Id"},"contractId":{"type":"string","description":"Contract Id"},"serviceStartDate":{"type":"string","description":"Revenue Start Date"},"serviceEndDate":{"type":"string","description":"Revenue End Date"},"categoryId":{"type":"string","description":"Category Id"},"billingSchedule":{"$ref":"#/components/schemas/BillingScheduleDto","description":"Billing Schedule"},"revenueSchedule":{"$ref":"#/components/schemas/RevenueScheduleDto","description":"Revenue Schedule"},"discount":{"$ref":"#/components/schemas/DiscountDto","description":"Discount configuration. Examples: { type: 'FIXED', amount: '5.00' } for a $5.00 fixed discount, or { type: 'PERCENTAGE', amount: '0.10' } for a 10% percentage discount"},"seatConfig":{"$ref":"#/components/schemas/SeatBasedObligationConfigDto","description":"Seat-based obligation configuration"}},"required":["id","contractId","serviceStartDate","serviceEndDate","billingSchedule","revenueSchedule"],"title":"ObligationDto"},"Contracts_IntegratorsApiContractsv3Controller_createObligation_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ObligationDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_createObligation_Response_201"},"V3ContractsIdObligationsObligationIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdObligationsObligationIdGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getObligation_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdObligationsObligationIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getObligation_Response_200"},"Contracts_IntegratorsApiContractsv3Controller_deleteObligation_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_deleteObligation_Response_200"},"ContractActionDtoAction":{"type":"string","enum":["MARK_AS_PROCESSED","MARK_AS_DELETED","APPROVE"],"description":"The action to perform","title":"ContractActionDtoAction"},"ContractActionDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/ContractActionDtoAction","description":"The action to perform"},"message":{"type":"string","description":"Optional message/reason recorded with the action (e.g. context for the state transition)"}},"required":["action"],"title":"ContractActionDto"},"Contracts_IntegratorsApiContractsv3Controller_contractActions_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_contractActions_Response_200"},"UpdateObligationDtoInvoiceDateStrategy":{"type":"string","enum":["FIRST_OF_PERIOD","LAST_OF_PERIOD","ARREARS","ADVANCED_DUE_START","OFFSET_FROM_PERIOD_START","OFFSET_FROM_PERIOD_END"],"description":"Strategy for determining when to send invoices. FIRST_OF_PERIOD (invoice at start of \n      billing period), LAST_OF_PERIOD (invoice at end of billing period), ARREARS \n      (invoice after service delivery), ADVANCED_DUE_START (invoice date at start of \n      billing period minus netPaymentTerms days, due start of service),\n      OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END (invoice date at period start/end\n      plus invoiceDateOffsetDays).","title":"UpdateObligationDtoInvoiceDateStrategy"},"UpdateObligationDtoBillingFrequencyUnit":{"type":"string","enum":["NONE","DAY","WEEK","MONTH","SEMI_MONTH","YEAR","HOUR"],"description":"Billing Frequency Unit.","title":"UpdateObligationDtoBillingFrequencyUnit"},"UpdateObligationDto":{"type":"object","properties":{"name":{"type":"string","description":"Billing term name"},"description":{"type":"string","description":"Billing term description"},"itemId":{"type":"string","description":"Item Id"},"productId":{"type":["string","null"],"description":"Product ID from /v3/products that links this billing term to an entry in the merchant's product catalog. Omit to leave unchanged, provide a UUID to link, or null to unlink. To ensure revenue reporting accuracy, associate the billing term with a product whenever applicable."},"classId":{"type":"string","description":"Class Id"},"categoryId":{"type":"string","description":"Category Id"},"eventTypeId":{"type":"string","description":"Event Type Id"},"price":{"type":"string","description":"Price"},"invoiceDateStrategy":{"$ref":"#/components/schemas/UpdateObligationDtoInvoiceDateStrategy","description":"Strategy for determining when to send invoices. FIRST_OF_PERIOD (invoice at start of \n      billing period), LAST_OF_PERIOD (invoice at end of billing period), ARREARS \n      (invoice after service delivery), ADVANCED_DUE_START (invoice date at start of \n      billing period minus netPaymentTerms days, due start of service),\n      OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END (invoice date at period start/end\n      plus invoiceDateOffsetDays)."},"invoiceDateOffsetDays":{"type":"number","format":"double","minimum":-365,"maximum":365,"description":"Days to offset the invoice date from the period start (OFFSET_FROM_PERIOD_START) or period end (OFFSET_FROM_PERIOD_END). Required for those strategies and not allowed for FIRST_OF_PERIOD, LAST_OF_PERIOD, ARREARS, or ADVANCED_DUE_START. Integer from -365 to 365."},"netPaymentTerms":{"type":"number","format":"double","description":"Net Payment Terms"},"includeInArr":{"type":"boolean","description":"Whether this billing term contributes to ARR (Annual Recurring Revenue)"},"billingStartDate":{"type":"string","description":"Billing Start Date"},"billingFrequency":{"type":"number","format":"double","description":"Billing Frequency"},"billingFrequencyUnit":{"$ref":"#/components/schemas/UpdateObligationDtoBillingFrequencyUnit","description":"Billing Frequency Unit."},"totalNumberOfInvoices":{"type":"number","format":"double","description":"Total Number of Invoices"},"revenueStartDate":{"type":"string","description":"Revenue Start Date"},"revenueEndDate":{"type":"string","description":"Revenue End Date"},"discount":{"$ref":"#/components/schemas/DiscountDto","description":"Discount configuration. Pass empty object {} to remove existing discount, omit field to leave discount untouched, or provide values to update discount. Examples: { type: 'FIXED', amount: '5.00' } for a $5.00 fixed discount, { type: 'PERCENTAGE', amount: '0.10' } for a 10% percentage discount, or {} to remove discount"},"regenerateInvoices":{"type":"boolean","description":"Regenerate Invoices"}},"title":"UpdateObligationDto"},"Contracts_IntegratorsApiContractsv3Controller_updateObligation_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_updateObligation_Response_200"},"CustomRevenue":{"type":"object","properties":{"timeframe":{"type":"string","description":"Timeframe"},"total":{"type":"number","format":"double","description":"Total"}},"required":["timeframe","total"],"title":"CustomRevenue"},"Contracts_IntegratorsApiContractsv3Controller_upsertCustomRevenue_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_upsertCustomRevenue_Response_200"},"V3ContractsIdBillingTermGroupsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdBillingTermGroupsGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getBillingTermGroups_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdBillingTermGroupsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getBillingTermGroups_Response_200"},"V3ContractsIdBillingTermGroupsGroupIdDeleteResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{"message":{"type":"string"}},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdBillingTermGroupsGroupIdDeleteResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_deleteBillingTermGroup_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdBillingTermGroupsGroupIdDeleteResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_deleteBillingTermGroup_Response_200"},"ChangeBillingTermGroupEventTypeDto":{"type":"object","properties":{"billingTermIds":{"type":"array","items":{"type":"string"},"description":"IDs of the billing terms (within the group) whose event type should be set to toEventTypeId. Pick exactly the rows to change — in a many-to-many group the others are left untouched. May be empty when only performance obligations are being changed."},"performanceObligationIds":{"type":"array","items":{"type":"string"},"description":"IDs of the performance obligations (within the group) whose event type should be set to toEventTypeId. May be empty when only billing terms are being changed."},"toEventTypeId":{"type":"string","format":"uuid","description":"The event type to assign to the selected billing terms and performance obligations. Must belong to the merchant."}},"required":["billingTermIds","performanceObligationIds","toEventTypeId"],"title":"ChangeBillingTermGroupEventTypeDto"},"ChangeBillingTermGroupEventTypeResponseDto":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable summary of what was updated"},"updatedBillingTermIds":{"type":"array","items":{"type":"string"},"description":"IDs of the billing terms whose event type was changed"},"updatedPerformanceObligationIds":{"type":"array","items":{"type":"string"},"description":"IDs of the performance obligations whose event type was changed"}},"required":["message","updatedBillingTermIds","updatedPerformanceObligationIds"],"title":"ChangeBillingTermGroupEventTypeResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_changeBillingTermGroupEventType_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ChangeBillingTermGroupEventTypeResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_changeBillingTermGroupEventType_Response_200"},"V3ContractsIdPerformanceObligationsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdPerformanceObligationsGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getPerformanceObligationsWithRevenue_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdPerformanceObligationsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getPerformanceObligationsWithRevenue_Response_200"},"ContractScopedCreatePobDtoConsiderationType":{"type":"string","enum":["FIXED","VARIABLE"],"description":"The consideration type for the performance obligation","title":"ContractScopedCreatePobDtoConsiderationType"},"ContractScopedCreatePobDtoRecognitionPattern":{"type":"string","enum":["POINT_IN_TIME","INPUT_BASED","OUTPUT_BASED","STRAIGHT_LINE","RECOGNIZE_AS_CONSUMED","RECOGNIZE_AS_BILLED","SEAT_BASED_STRAIGHT_LINE"],"description":"The revenue recognition pattern","title":"ContractScopedCreatePobDtoRecognitionPattern"},"ContractScopedCreatePobDto":{"type":"object","properties":{"name":{"type":["string","null"],"description":"The name of the performance obligation"},"itemId":{"type":["string","null"],"description":"The ID of the associated integration item"},"erpClassId":{"type":["string","null"],"description":"The ID of the ERP class"},"category":{"type":["string","null"],"description":"The revenue category name"},"considerationType":{"oneOf":[{"$ref":"#/components/schemas/ContractScopedCreatePobDtoConsiderationType"},{"type":"null"}],"description":"The consideration type for the performance obligation"},"recognitionPattern":{"oneOf":[{"$ref":"#/components/schemas/ContractScopedCreatePobDtoRecognitionPattern"},{"type":"null"}],"description":"The revenue recognition pattern"},"eventTypeId":{"type":["string","null"],"description":"Event type ID for RECOGNIZE_AS_CONSUMED pattern"},"productId":{"type":["string","null"],"description":"The ID of the product this performance obligation is for"},"serviceStartDate":{"type":"string","description":"Service start date as YYYY-MM-DD string"},"serviceEndDate":{"type":"string","description":"Service end date as YYYY-MM-DD string"},"transactionPrice":{"type":"string","description":"Transaction price as a decimal string"}},"required":["serviceStartDate","serviceEndDate","transactionPrice"],"title":"ContractScopedCreatePobDto"},"ContractScopedUpdatePobDtoConsiderationType":{"type":"string","enum":["FIXED","VARIABLE"],"description":"The consideration type for the performance obligation","title":"ContractScopedUpdatePobDtoConsiderationType"},"ContractScopedUpdatePobDtoRecognitionPattern":{"type":"string","enum":["POINT_IN_TIME","INPUT_BASED","OUTPUT_BASED","STRAIGHT_LINE","RECOGNIZE_AS_CONSUMED","RECOGNIZE_AS_BILLED","SEAT_BASED_STRAIGHT_LINE"],"description":"The revenue recognition pattern","title":"ContractScopedUpdatePobDtoRecognitionPattern"},"ContractScopedUpdatePobDto":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the performance obligation to update"},"name":{"type":["string","null"],"description":"The name of the performance obligation"},"itemId":{"type":["string","null"],"description":"The ID of the associated integration item"},"erpClassId":{"type":["string","null"],"description":"The ID of the ERP class"},"category":{"type":"string","description":"The revenue category name. An empty string clears it."},"considerationType":{"oneOf":[{"$ref":"#/components/schemas/ContractScopedUpdatePobDtoConsiderationType"},{"type":"null"}],"description":"The consideration type for the performance obligation"},"recognitionPattern":{"oneOf":[{"$ref":"#/components/schemas/ContractScopedUpdatePobDtoRecognitionPattern"},{"type":"null"}],"description":"The revenue recognition pattern"},"eventTypeId":{"type":["string","null"],"description":"Event type ID for RECOGNIZE_AS_CONSUMED pattern"},"productId":{"type":["string","null"],"description":"The ID of the product this performance obligation is for"},"serviceStartDate":{"type":"string","description":"Service start date as YYYY-MM-DD string"},"serviceEndDate":{"type":"string","description":"Service end date as YYYY-MM-DD string"},"transactionPrice":{"type":"string","description":"Transaction price as a decimal string"}},"required":["id"],"title":"ContractScopedUpdatePobDto"},"BatchSavePobsForContractDto":{"type":"object","properties":{"billingTermGroupId":{"type":"string","description":"Billing term group ID (BTG) that all operations are scoped to"},"toCreate":{"type":"array","items":{"$ref":"#/components/schemas/ContractScopedCreatePobDto"},"description":"Performance obligations to create within the billing term group"},"toUpdate":{"type":"array","items":{"$ref":"#/components/schemas/ContractScopedUpdatePobDto"},"description":"Performance obligations to update (must belong to the billing term group)"},"toDelete":{"type":"array","items":{"type":"string"},"description":"Performance obligation IDs to delete"}},"required":["billingTermGroupId","toCreate","toUpdate","toDelete"],"title":"BatchSavePobsForContractDto"},"BatchSavePerformanceObligationsResponseDtoErrorsItems":{"type":"object","properties":{},"title":"BatchSavePerformanceObligationsResponseDtoErrorsItems"},"BatchSavePerformanceObligationsResponseDto":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/BatchSavePerformanceObligationsResponseDtoErrorsItems"},"description":"Array of errors if any operations failed"},"warnings":{"type":"array","items":{"type":"string"},"description":"Present when an update changed fields the request did not set. Switching recognition pattern to RECOGNIZE_AS_BILLED recalculates service dates from the linked billing terms."}},"title":"BatchSavePerformanceObligationsResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_batchSavePobsForContract_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/BatchSavePerformanceObligationsResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_batchSavePobsForContract_Response_200"},"UpdatePerformanceObligationForContractDtoConsiderationType":{"type":"string","enum":["FIXED","VARIABLE"],"description":"Consideration type","title":"UpdatePerformanceObligationForContractDtoConsiderationType"},"UpdatePerformanceObligationForContractDtoRecognitionPattern":{"type":"string","enum":["STRAIGHT_LINE","RECOGNIZE_AS_CONSUMED","RECOGNIZE_AS_BILLED"],"description":"Recognition pattern","title":"UpdatePerformanceObligationForContractDtoRecognitionPattern"},"UpdatePerformanceObligationForContractDto":{"type":"object","properties":{"name":{"type":"string","maxLength":2500,"description":"The name of the performance obligation"},"erpClassId":{"type":["string","null"],"description":"The ID of the integration / ERP class (integration class) for this performance obligation"},"itemId":{"type":["string","null"],"description":"The ID of the integration item"},"category":{"type":"string","maxLength":255,"description":"The revenue category name. An empty string clears it."},"serviceStartDate":{"type":"string","description":"Service start date"},"serviceEndDate":{"type":"string","description":"Service end date"},"considerationType":{"$ref":"#/components/schemas/UpdatePerformanceObligationForContractDtoConsiderationType","description":"Consideration type"},"recognitionPattern":{"$ref":"#/components/schemas/UpdatePerformanceObligationForContractDtoRecognitionPattern","description":"Recognition pattern"}},"title":"UpdatePerformanceObligationForContractDto"},"RecognizedRevenueAtomResponseDto":{"type":"object","properties":{"timeframe":{"type":"string","description":"Month in YYYY-MM format"},"total":{"type":"string","description":"Recognized revenue amount as a decimal string"}},"required":["timeframe","total"],"title":"RecognizedRevenueAtomResponseDto"},"PerformanceObligationDetailResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the performance obligation"},"name":{"type":["string","null"],"description":"Name of the performance obligation"},"billingTermGroupId":{"type":["string","null"],"description":"Billing term group ID (foreign key)"},"billingTermGroupName":{"type":["string","null"],"description":"Billing term group name"},"itemId":{"type":["string","null"],"description":"ID of the associated integrationitem"},"itemName":{"type":["string","null"],"description":"Name of the associated integrationitem"},"erpClassId":{"type":["string","null"],"description":"ID of the ERP class"},"erpClassName":{"type":["string","null"],"description":"Name of the ERP class"},"category":{"type":["string","null"],"description":"Revenue category"},"productId":{"type":["string","null"],"description":"ID of the associated product"},"productName":{"type":["string","null"],"description":"Name of the associated product"},"serviceStartDate":{"type":"string","format":"date-time","description":"Service start date"},"serviceEndDate":{"type":"string","format":"date-time","description":"Service end date"},"transactionPrice":{"type":"string","description":"Transaction price as a decimal string"},"billingTermIds":{"type":"array","items":{"type":"string"},"description":"Array of billing term IDs linked to this POB via the BTG"},"considerationType":{"type":["string","null"],"description":"Consideration type"},"recognitionPattern":{"type":["string","null"],"description":"Revenue recognition pattern"},"eventTypeId":{"type":["string","null"],"description":"Event type ID"},"eventTypeName":{"type":["string","null"],"description":"Event type name"},"hasSentInvoice":{"type":"boolean","description":"Whether POB has any invoice sent to ERP (SENT, PAID, PARTIALLY_PAID, DONE)"},"recognizedRevenue":{"type":"array","items":{"$ref":"#/components/schemas/RecognizedRevenueAtomResponseDto"},"description":"Monthly recognized revenue entries for this performance obligation"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the performance obligation was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the performance obligation was last updated"}},"required":["id","name","billingTermGroupId","billingTermGroupName","itemId","itemName","erpClassId","erpClassName","category","productId","productName","serviceStartDate","serviceEndDate","transactionPrice","billingTermIds","considerationType","recognitionPattern","eventTypeId","eventTypeName","hasSentInvoice","recognizedRevenue","createdAt","updatedAt"],"title":"PerformanceObligationDetailResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_updatePerformanceObligation_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/PerformanceObligationDetailResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_updatePerformanceObligation_Response_200"},"V3ContractsIdBillingTermsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdBillingTermsGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getBillingTerms_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdBillingTermsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getBillingTerms_Response_200"},"CreateBillingTermDtoInterval":{"type":"string","enum":["NONE","DAY","WEEK","MONTH","SEMI_MONTH","YEAR","HOUR"],"description":"Interval unit.","title":"CreateBillingTermDtoInterval"},"CreateBillingTermDtoInvoiceDateStrategy":{"type":"string","enum":["FIRST_OF_PERIOD","LAST_OF_PERIOD","ARREARS","ADVANCED_DUE_START","OFFSET_FROM_PERIOD_START","OFFSET_FROM_PERIOD_END"],"description":"Invoice date strategy. OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END require invoiceDateOffsetDays.","title":"CreateBillingTermDtoInvoiceDateStrategy"},"CreateBillingTermDtoBillingType":{"type":"string","enum":["UNIT","FLAT"],"description":"Billing type","title":"CreateBillingTermDtoBillingType"},"CreateBillingTermDtoPricingType":{"type":"string","enum":["SIMPLE","TIERED","VOLUME"],"description":"Pricing type. For TIERED and VOLUME, supply 2+ pricing entries with `tier` indices that are 0-indexed and contiguous (0, 1, 2, …) and `tierMinimum` values starting at 0 and strictly increasing.","title":"CreateBillingTermDtoPricingType"},"CreateBillingTermDto":{"type":"object","properties":{"name":{"type":"string","description":"Line item name. Required unless `productId` is provided, in which case it is populated from the product's display name."},"description":{"type":"string","description":"Line item description"},"billingStartDate":{"type":"string","description":"Billing start date"},"isRecurring":{"type":"boolean","description":"Is recurring billing"},"includeInArr":{"type":"boolean","description":"Whether this billing term contributes to ARR (Annual Recurring Revenue). Defaults based on billing type and interval when omitted (usage and one-time terms default to false)."},"interval":{"$ref":"#/components/schemas/CreateBillingTermDtoInterval","description":"Interval unit."},"intervalFrequency":{"type":"number","format":"double","description":"Interval frequency"},"duration":{"type":"number","format":"double","default":0,"description":"Number of billing periods"},"invoiceDateStrategy":{"$ref":"#/components/schemas/CreateBillingTermDtoInvoiceDateStrategy","description":"Invoice date strategy. OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END require invoiceDateOffsetDays."},"invoiceDateOffsetDays":{"type":"number","format":"double","minimum":-365,"maximum":365,"description":"Days to offset the invoice date from the period start (OFFSET_FROM_PERIOD_START) or period end (OFFSET_FROM_PERIOD_END). Required for those strategies and not allowed for FIRST_OF_PERIOD, LAST_OF_PERIOD, ARREARS, or ADVANCED_DUE_START. Integer from -365 to 365."},"netPaymentTerms":{"type":"number","format":"double","description":"Days between invoice issue and due date"},"quantity":{"type":"number","format":"double","description":"Quantity; set to 0 for UNIT billingType"},"billingType":{"$ref":"#/components/schemas/CreateBillingTermDtoBillingType","description":"Billing type"},"pricingType":{"$ref":"#/components/schemas/CreateBillingTermDtoPricingType","description":"Pricing type. For TIERED and VOLUME, supply 2+ pricing entries with `tier` indices that are 0-indexed and contiguous (0, 1, 2, …) and `tierMinimum` values starting at 0 and strictly increasing."},"eventTypeId":{"type":"string","description":"Usage event type ID"},"itemId":{"type":"string","description":"ERP item ID for the line item"},"productId":{"type":["string","null"],"description":"Product ID from /v3/products. When set, name/description/itemId/classId are populated from the product for any not provided on the billing term. To ensure revenue reporting accuracy, associate the billing term with a product whenever applicable."},"classId":{"type":"string","description":"ERP class ID"},"departmentId":{"type":"string","description":"Department ID"},"projectId":{"type":"string","description":"Project ID"},"pricing":{"type":"array","items":{"$ref":"#/components/schemas/PricingTierDto"},"description":"Pricing tiers. When `isPercent` is true, each `amount` is a percent (10 = 10%)."},"isPercent":{"type":"boolean","default":false,"description":"Charge a percentage of each usage event's value instead of a per-unit price. Valid with usage-based billing terms only, and not with seat-based terms. When true, each `pricing[].amount` is entered as a percent (10 = 10%). GET returns the stored rate as a decimal (0.1 = 10%)."},"discount":{"$ref":"#/components/schemas/DiscountDto","description":"Discount configuration"},"billingTermGroupId":{"type":"string","description":"Billing term group ID. If provided, the BT joins an existing group. If omitted, a new group is created."},"seatConfig":{"$ref":"#/components/schemas/SeatBasedObligationConfigDto","description":"Seat-based billing configuration. When provided, the billing term is created as seat-based and seat changes are managed via the seat-amendment endpoints. "}},"required":["billingStartDate","isRecurring","interval","intervalFrequency","invoiceDateStrategy","netPaymentTerms","quantity","billingType","pricingType","pricing"],"title":"CreateBillingTermDto"},"BillingTermResponseDtoInterval":{"type":"string","enum":["NONE","DAY","WEEK","MONTH","SEMI_MONTH","YEAR","HOUR"],"description":"Interval unit.","title":"BillingTermResponseDtoInterval"},"BillingTermResponseDtoBillingType":{"type":"string","enum":["UNIT","FLAT"],"description":"Billing type","title":"BillingTermResponseDtoBillingType"},"BillingTermResponseDtoPricingType":{"type":"string","enum":["SIMPLE","TIERED","VOLUME"],"description":"Pricing type. For TIERED and VOLUME, supply 2+ pricing entries with `tier` indices that are 0-indexed and contiguous (0, 1, 2, …) and `tierMinimum` values starting at 0 and strictly increasing.","title":"BillingTermResponseDtoPricingType"},"BillingTermResponseDto":{"type":"object","properties":{"description":{"type":"string","description":"Line item description"},"billingStartDate":{"type":"string","description":"Billing start date"},"isRecurring":{"type":"boolean","description":"Is recurring billing"},"includeInArr":{"type":"boolean","description":"Whether this billing term contributes to ARR (Annual Recurring Revenue). Defaults based on billing type and interval when omitted (usage and one-time terms default to false)."},"interval":{"$ref":"#/components/schemas/BillingTermResponseDtoInterval","description":"Interval unit."},"intervalFrequency":{"type":"number","format":"double","description":"Interval frequency"},"duration":{"type":"number","format":"double","default":0,"description":"Number of billing periods"},"netPaymentTerms":{"type":"number","format":"double","description":"Days between invoice issue and due date"},"quantity":{"type":"number","format":"double","description":"Quantity; set to 0 for UNIT billingType"},"billingType":{"$ref":"#/components/schemas/BillingTermResponseDtoBillingType","description":"Billing type"},"pricingType":{"$ref":"#/components/schemas/BillingTermResponseDtoPricingType","description":"Pricing type. For TIERED and VOLUME, supply 2+ pricing entries with `tier` indices that are 0-indexed and contiguous (0, 1, 2, …) and `tierMinimum` values starting at 0 and strictly increasing."},"eventTypeId":{"type":"string","description":"Usage event type ID"},"itemId":{"type":"string","description":"ERP item ID for the line item"},"productId":{"type":["string","null"],"description":"Product ID from /v3/products. When set, name/description/itemId/classId are populated from the product for any not provided on the billing term. To ensure revenue reporting accuracy, associate the billing term with a product whenever applicable."},"classId":{"type":"string","description":"ERP class ID"},"departmentId":{"type":"string","description":"Department ID"},"projectId":{"type":"string","description":"Project ID"},"billingTermGroupId":{"type":"string","description":"Billing term group ID. If provided, the BT joins an existing group. If omitted, a new group is created."},"seatConfig":{"$ref":"#/components/schemas/SeatBasedObligationConfigDto","description":"Seat-based billing configuration. When provided, the billing term is created as seat-based and seat changes are managed via the seat-amendment endpoints. "},"id":{"type":"string","description":"Billing term ID"},"contractId":{"type":"string","description":"Contract ID"},"name":{"type":"string","description":"Billing term name. Populated from the linked product's display name when not set on the billing term."},"billingEndDate":{"type":"string","description":"Billing end date"},"createdAt":{"type":"string","description":"Created at"}},"required":["billingStartDate","isRecurring","interval","intervalFrequency","netPaymentTerms","quantity","billingType","pricingType","id","contractId","name","billingEndDate","createdAt"],"title":"BillingTermResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_createBillingTerm_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/BillingTermResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_createBillingTerm_Response_201"},"Contracts_IntegratorsApiContractsv3Controller_deleteBillingTerm_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_deleteBillingTerm_Response_200"},"PatchBillingTermDtoInterval":{"type":"string","enum":["NONE","DAY","WEEK","MONTH","SEMI_MONTH","YEAR","HOUR"],"description":"Interval unit.","title":"PatchBillingTermDtoInterval"},"PatchBillingTermDtoInvoiceDateStrategy":{"type":"string","enum":["FIRST_OF_PERIOD","LAST_OF_PERIOD","ARREARS","ADVANCED_DUE_START","OFFSET_FROM_PERIOD_START","OFFSET_FROM_PERIOD_END"],"description":"Invoice date strategy. OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END require invoiceDateOffsetDays.","title":"PatchBillingTermDtoInvoiceDateStrategy"},"PatchBillingTermDtoBillingType":{"type":"string","enum":["UNIT","FLAT"],"description":"Billing type","title":"PatchBillingTermDtoBillingType"},"PatchBillingTermDtoPricingType":{"type":"string","enum":["SIMPLE","TIERED","VOLUME"],"description":"Pricing type. For TIERED and VOLUME, supply 2+ pricing entries with `tier` indices that are 0-indexed and contiguous (0, 1, 2, …) and `tierMinimum` values starting at 0 and strictly increasing.","title":"PatchBillingTermDtoPricingType"},"PatchBillingTermDto":{"type":"object","properties":{"name":{"type":"string","description":"Line item name. Required unless `productId` is provided, in which case it is populated from the product's display name."},"description":{"type":"string","description":"Line item description"},"billingStartDate":{"type":"string","description":"Billing start date"},"isRecurring":{"type":"boolean","description":"Is recurring billing"},"includeInArr":{"type":"boolean","description":"Whether this billing term contributes to ARR (Annual Recurring Revenue). Defaults based on billing type and interval when omitted (usage and one-time terms default to false)."},"interval":{"$ref":"#/components/schemas/PatchBillingTermDtoInterval","description":"Interval unit."},"intervalFrequency":{"type":"number","format":"double","description":"Interval frequency"},"duration":{"type":"number","format":"double","default":0,"description":"Number of billing periods"},"invoiceDateStrategy":{"$ref":"#/components/schemas/PatchBillingTermDtoInvoiceDateStrategy","description":"Invoice date strategy. OFFSET_FROM_PERIOD_START / OFFSET_FROM_PERIOD_END require invoiceDateOffsetDays."},"invoiceDateOffsetDays":{"type":"number","format":"double","minimum":-365,"maximum":365,"description":"Days to offset the invoice date from the period start (OFFSET_FROM_PERIOD_START) or period end (OFFSET_FROM_PERIOD_END). Required for those strategies and not allowed for FIRST_OF_PERIOD, LAST_OF_PERIOD, ARREARS, or ADVANCED_DUE_START. Integer from -365 to 365."},"netPaymentTerms":{"type":"number","format":"double","description":"Days between invoice issue and due date"},"quantity":{"type":"number","format":"double","description":"Quantity; set to 0 for UNIT billingType"},"billingType":{"$ref":"#/components/schemas/PatchBillingTermDtoBillingType","description":"Billing type"},"pricingType":{"$ref":"#/components/schemas/PatchBillingTermDtoPricingType","description":"Pricing type. For TIERED and VOLUME, supply 2+ pricing entries with `tier` indices that are 0-indexed and contiguous (0, 1, 2, …) and `tierMinimum` values starting at 0 and strictly increasing."},"itemId":{"type":"string","description":"ERP item ID for the line item"},"productId":{"type":["string","null"],"description":"Product ID from /v3/products. When set, name/description/itemId/classId are populated from the product for any not provided on the billing term. To ensure revenue reporting accuracy, associate the billing term with a product whenever applicable."},"classId":{"type":"string","description":"ERP class ID"},"departmentId":{"type":"string","description":"Department ID"},"projectId":{"type":"string","description":"Project ID"},"pricing":{"type":"array","items":{"$ref":"#/components/schemas/PricingTierDto"},"description":"Pricing tiers. When `isPercent` is true, each `amount` is a percent (10 = 10%)."},"discount":{"$ref":"#/components/schemas/DiscountDto","description":"Discount configuration"}},"title":"PatchBillingTermDto"},"Contracts_IntegratorsApiContractsv3Controller_patchBillingTerm_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_patchBillingTerm_Response_200"},"AppendScheduleRequestDtoCommitmentInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Commitment period interval for the schedule","title":"AppendScheduleRequestDtoCommitmentInterval"},"AppendScheduleRequestDtoPrepaymentScheduleType":{"type":"string","enum":["FULL_UPFRONT","PER_COMMITMENT_PERIOD","SPLIT_ACROSS_BILLING_PERIODS"],"description":"Prepayment schedule type","title":"AppendScheduleRequestDtoPrepaymentScheduleType"},"AppendScheduleStepDtoCommitmentUnitType":{"type":"string","enum":["DOLLARS","UNITS"],"description":"Unit type: DOLLARS or UNITS","title":"AppendScheduleStepDtoCommitmentUnitType"},"AppendScheduleStepDtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority for the step","title":"AppendScheduleStepDtoPricePriority"},"AppendScheduleOveragePricingItemDtoCurrency":{"type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWG","ZWL"],"description":"ISO 4217 currency code","title":"AppendScheduleOveragePricingItemDtoCurrency"},"AppendScheduleOveragePricingItemDto":{"type":"object","properties":{"name":{"type":"string","description":"Pricing name shown on invoice line items"},"mantissa":{"type":"string","description":"Mantissa for the overage price"},"exponent":{"type":"string","description":"Exponent for the overage price"},"currency":{"$ref":"#/components/schemas/AppendScheduleOveragePricingItemDtoCurrency","description":"ISO 4217 currency code"},"tier":{"type":"number","format":"double","description":"Tier number; defaults to 0"},"conditionValue":{"type":"number","format":"double","description":"Numeric tier threshold; the price applies when usage crosses this value. Defaults to 0."}},"title":"AppendScheduleOveragePricingItemDto"},"AppendScheduleOverageBTDto":{"type":"object","properties":{"usageBillingTermId":{"type":"string","description":"Existing base usage BT whose overflow this overage covers"},"overageName":{"type":"string","description":"Display name for the overage BT line item"},"overageItemId":{"type":"string","description":"ERP item ID for the overage BT line item"},"overagePricings":{"type":"array","items":{"$ref":"#/components/schemas/AppendScheduleOveragePricingItemDto"},"description":"Overage pricing tiers applied when usage exceeds the step's commitment. Send a single-entry array for flat overage; multiple entries describe tiered overage."}},"required":["usageBillingTermId"],"title":"AppendScheduleOverageBTDto"},"AppendScheduleContainerConfigDto":{"type":"object","properties":{"prepaidName":{"type":"string","description":"Display name for the prepaid container BT"},"trueUpName":{"type":"string","description":"Display name for the true-up container BT"},"prepaidItemId":{"type":"string","description":"ERP item ID for the prepaid container BT"},"trueUpItemId":{"type":"string","description":"ERP item ID for the true-up container BT"}},"title":"AppendScheduleContainerConfigDto"},"AppendScheduleStepDto":{"type":"object","properties":{"sequence":{"type":"number","format":"double","description":"Step ordinal within the new schedule. Strictly increasing."},"commitmentValue":{"type":"number","format":"double","description":"Commitment amount value for the step"},"commitmentUnitType":{"$ref":"#/components/schemas/AppendScheduleStepDtoCommitmentUnitType","description":"Unit type: DOLLARS or UNITS"},"pricePriority":{"$ref":"#/components/schemas/AppendScheduleStepDtoPricePriority","description":"Price priority for the step"},"prepaidEnabled":{"type":"boolean","description":"Whether prepaid is enabled for the step"},"prepaidValue":{"type":"number","format":"double","description":"Prepaid amount (required when prepaidEnabled=true)"},"billingTermIds":{"type":"array","items":{"type":"string"},"description":"Base usage billing term IDs to link to the step"},"overageBillingTerms":{"type":"array","items":{"$ref":"#/components/schemas/AppendScheduleOverageBTDto"},"description":"Per-base-BT overage config; omit when the step has no overage"},"containerConfig":{"$ref":"#/components/schemas/AppendScheduleContainerConfigDto","description":"Optional naming + ERP item ID overrides for prepaid and true-up container BTs"}},"required":["sequence","commitmentValue","commitmentUnitType","pricePriority","prepaidEnabled","billingTermIds"],"title":"AppendScheduleStepDto"},"AppendScheduleRequestDto":{"type":"object","properties":{"startDate":{"type":"string","description":"Schedule start date (YYYY-MM-DD, inclusive). Must be the day after the previous schedule's endDate on the commitment."},"endDate":{"type":"string","description":"Schedule end date (YYYY-MM-DD, inclusive). The last day the schedule covers."},"commitmentInterval":{"$ref":"#/components/schemas/AppendScheduleRequestDtoCommitmentInterval","description":"Commitment period interval for the schedule"},"prepaymentScheduleType":{"$ref":"#/components/schemas/AppendScheduleRequestDtoPrepaymentScheduleType","description":"Prepayment schedule type"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/AppendScheduleStepDto"}}},"required":["startDate","endDate","steps"],"title":"AppendScheduleRequestDto"},"AppendScheduleResponseDto":{"type":"object","properties":{"scheduleId":{"type":"string","description":"ID of the newly created schedule"},"sequence":{"type":"number","format":"double","description":"Server-assigned sequence number for the new schedule"},"stepIds":{"type":"array","items":{"type":"string"},"description":"IDs of the newly created steps, in the order they were sent"}},"required":["scheduleId","sequence","stepIds"],"title":"AppendScheduleResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_appendCommitmentSchedule_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/AppendScheduleResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_appendCommitmentSchedule_Response_201"},"AppendUsageCommitmentStepV3RequestDtoCommitmentUnitType":{"type":"string","enum":["DOLLARS","UNITS"],"description":"Unit type for the commitment value","title":"AppendUsageCommitmentStepV3RequestDtoCommitmentUnitType"},"AppendUsageCommitmentStepV3RequestDtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority for the step","title":"AppendUsageCommitmentStepV3RequestDtoPricePriority"},"AppendUsageCommitmentStepOveragePricingItemV3DtoCurrency":{"type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWG","ZWL"],"description":"ISO 4217 currency code","title":"AppendUsageCommitmentStepOveragePricingItemV3DtoCurrency"},"AppendUsageCommitmentStepOveragePricingItemV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Pricing name shown on invoice line items"},"mantissa":{"type":"string","description":"Mantissa for the overage price"},"exponent":{"type":"string","description":"Exponent for the overage price"},"currency":{"$ref":"#/components/schemas/AppendUsageCommitmentStepOveragePricingItemV3DtoCurrency","description":"ISO 4217 currency code"},"tier":{"type":"number","format":"double","description":"Tier number (defaults to 0; relevant for tiered overage)"},"conditionValue":{"type":"number","format":"double","description":"Numeric tier threshold; the price applies when usage crosses this value. Defaults to 0. Distinct from conditionOperator."}},"title":"AppendUsageCommitmentStepOveragePricingItemV3Dto"},"AppendUsageCommitmentStepOverageBtv3DtoTierPricingType":{"type":"string","enum":["USE_TOP_TIER_PRICE_ONLY","USE_ALL_TIER_PRICES"],"description":"How tiered overage pricing is applied. USE_ALL_TIER_PRICES (graduated) charges each tier's rate for the portion of usage within it; USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into. Defaults to graduated for backwards compatibility. Ignored for flat (single-pricing) overage.","title":"AppendUsageCommitmentStepOverageBtv3DtoTierPricingType"},"AppendUsageCommitmentStepOverageBTV3Dto":{"type":"object","properties":{"usageBillingTermId":{"type":"string","description":"Existing base usage BT whose overflow this overage covers"},"overageName":{"type":"string","description":"Display name for the overage BT line item"},"overageItemId":{"type":"string","description":"ERP item ID for the overage BT line item"},"overagePricings":{"type":"array","items":{"$ref":"#/components/schemas/AppendUsageCommitmentStepOveragePricingItemV3Dto"},"description":"Overage pricing tiers applied when usage exceeds the step's commitment. Send a single-entry array for flat overage; multiple entries describe tiered overage."},"tierPricingType":{"$ref":"#/components/schemas/AppendUsageCommitmentStepOverageBtv3DtoTierPricingType","description":"How tiered overage pricing is applied. USE_ALL_TIER_PRICES (graduated) charges each tier's rate for the portion of usage within it; USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into. Defaults to graduated for backwards compatibility. Ignored for flat (single-pricing) overage."}},"required":["usageBillingTermId"],"title":"AppendUsageCommitmentStepOverageBTV3Dto"},"AppendUsageCommitmentStepContainerConfigV3Dto":{"type":"object","properties":{"prepaidName":{"type":"string","description":"Display name for the prepaid container BT"},"trueUpName":{"type":"string","description":"Display name for the true-up container BT"},"prepaidItemId":{"type":"string","description":"ERP item ID for the prepaid container BT"},"trueUpItemId":{"type":"string","description":"ERP item ID for the true-up container BT"}},"title":"AppendUsageCommitmentStepContainerConfigV3Dto"},"AppendUsageCommitmentStepV3RequestDto":{"type":"object","properties":{"scheduleId":{"type":"string","description":"Schedule on the parent commitment that the new step is being appended to"},"commitmentValue":{"type":"number","format":"double","description":"Commitment amount value for the new step"},"commitmentUnitType":{"$ref":"#/components/schemas/AppendUsageCommitmentStepV3RequestDtoCommitmentUnitType","description":"Unit type for the commitment value"},"pricePriority":{"$ref":"#/components/schemas/AppendUsageCommitmentStepV3RequestDtoPricePriority","description":"Price priority for the step"},"prepaidEnabled":{"type":"boolean","description":"Whether prepaid is enabled for the new step"},"prepaidValue":{"type":"number","format":"double","description":"Prepaid amount for the new step (when prepaid is enabled)"},"billingTermIds":{"type":"array","items":{"type":"string"},"description":"Base usage billing term IDs to link to the new step"},"overageBillingTerms":{"type":"array","items":{"$ref":"#/components/schemas/AppendUsageCommitmentStepOverageBTV3Dto"},"description":"Per-base-BT overage config; omit if the new step has no overage"},"containerConfig":{"$ref":"#/components/schemas/AppendUsageCommitmentStepContainerConfigV3Dto","description":"Optional naming + ERP item ID overrides for prepaid and true-up container BTs"}},"required":["scheduleId","commitmentValue","commitmentUnitType","pricePriority","prepaidEnabled","billingTermIds"],"title":"AppendUsageCommitmentStepV3RequestDto"},"AppendUsageCommitmentStepV3ResponseDto":{"type":"object","properties":{"stepId":{"type":"string","description":"ID of the newly created step"},"sequence":{"type":"number","format":"double","description":"Server-assigned sequence number for the new step"}},"required":["stepId","sequence"],"title":"AppendUsageCommitmentStepV3ResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_appendCommitmentStep_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/AppendUsageCommitmentStepV3ResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_appendCommitmentStep_Response_201"},"CreateSeatAmendmentDtoProrationPolicy":{"type":"string","enum":["NONE","DAY","MONTH","YEAR"],"description":"Proration policy for the amendment:\n    • NONE: No proration applied - full period charges regardless of timing\n    • DAY: Proration calculated on a daily basis\n    • MONTH: Proration calculated on a monthly basis\n    • YEAR: Proration calculated on a yearly basis","title":"CreateSeatAmendmentDtoProrationPolicy"},"CreateSeatAmendmentDtoTrueUpTiming":{"type":"string","enum":["IMMEDIATE","CO_TERM"],"description":"True-up timing for the amendment:\n    • IMMEDIATE: True-up amounts are applied immediately on the effective date\n    • CO_TERM: True-up amounts are applied at the next invoice date after the effective date","title":"CreateSeatAmendmentDtoTrueUpTiming"},"CreateSeatAmendmentDto":{"type":"object","properties":{"effectiveDate":{"type":"string","format":"date-time","description":"Effective date of the seat amendment"},"newQuantity":{"type":"number","format":"double","description":"New quantity of seats"},"prorationPolicy":{"$ref":"#/components/schemas/CreateSeatAmendmentDtoProrationPolicy","description":"Proration policy for the amendment:\n    • NONE: No proration applied - full period charges regardless of timing\n    • DAY: Proration calculated on a daily basis\n    • MONTH: Proration calculated on a monthly basis\n    • YEAR: Proration calculated on a yearly basis"},"trueUpTiming":{"$ref":"#/components/schemas/CreateSeatAmendmentDtoTrueUpTiming","description":"True-up timing for the amendment:\n    • IMMEDIATE: True-up amounts are applied immediately on the effective date\n    • CO_TERM: True-up amounts are applied at the next invoice date after the effective date"}},"required":["effectiveDate","newQuantity"],"title":"CreateSeatAmendmentDto"},"SeatAmendmentDtoProrationPolicy":{"type":"string","enum":["NONE","DAY","MONTH","YEAR"],"description":"Proration policy for the amendment:\n    • NONE: No proration applied - full period charges regardless of timing\n    • DAY: Proration calculated on a daily basis\n    • MONTH: Proration calculated on a monthly basis\n    • YEAR: Proration calculated on a yearly basis","title":"SeatAmendmentDtoProrationPolicy"},"SeatAmendmentDtoTrueUpTiming":{"type":"string","enum":["IMMEDIATE","CO_TERM"],"description":"True-up timing for the amendment:\n    • IMMEDIATE: True-up amounts are applied immediately on the effective date\n    • CO_TERM: True-up amounts are applied at the next invoice date after the effective date","title":"SeatAmendmentDtoTrueUpTiming"},"SeatAmendmentDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the seat amendment"},"obligationId":{"type":"string","description":"Unique identifier for the obligation this amendment belongs to"},"effectiveDate":{"type":"string","format":"date-time","description":"Effective date of the seat amendment"},"newQuantity":{"type":"number","format":"double","description":"New quantity of seats"},"prorationPolicy":{"$ref":"#/components/schemas/SeatAmendmentDtoProrationPolicy","description":"Proration policy for the amendment:\n    • NONE: No proration applied - full period charges regardless of timing\n    • DAY: Proration calculated on a daily basis\n    • MONTH: Proration calculated on a monthly basis\n    • YEAR: Proration calculated on a yearly basis"},"trueUpTiming":{"$ref":"#/components/schemas/SeatAmendmentDtoTrueUpTiming","description":"True-up timing for the amendment:\n    • IMMEDIATE: True-up amounts are applied immediately on the effective date\n    • CO_TERM: True-up amounts are applied at the next invoice date after the effective date"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"Timestamp when the amendment was last updated"}},"required":["id","obligationId","effectiveDate","newQuantity","lastUpdatedAt"],"title":"SeatAmendmentDto"},"Contracts_ContractsBillingMicroserviceController_createBillingTermSeatAmendment_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/SeatAmendmentDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_ContractsBillingMicroserviceController_createBillingTermSeatAmendment_Response_201"},"CreateUsageCommitmentScheduleV3DtoCommitmentInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"Commitment period interval","title":"CreateUsageCommitmentScheduleV3DtoCommitmentInterval"},"CreateUsageCommitmentScheduleV3DtoPrepaymentScheduleType":{"type":"string","enum":["FULL_UPFRONT","PER_COMMITMENT_PERIOD","SPLIT_ACROSS_BILLING_PERIODS"],"description":"Prepayment schedule type for this schedule","title":"CreateUsageCommitmentScheduleV3DtoPrepaymentScheduleType"},"CreateUsageCommitmentStepV3DtoCommitmentUnitType":{"type":"string","enum":["DOLLARS","UNITS"],"description":"Unit type: DOLLARS or UNITS","title":"CreateUsageCommitmentStepV3DtoCommitmentUnitType"},"CreateUsageCommitmentStepV3DtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"Price priority: LOW or HIGH","title":"CreateUsageCommitmentStepV3DtoPricePriority"},"CreateUsageCommitmentStepOverageBtv3DtoTierPricingType":{"type":"string","enum":["USE_TOP_TIER_PRICE_ONLY","USE_ALL_TIER_PRICES"],"description":"How tiered overage pricing is applied. USE_ALL_TIER_PRICES (graduated) charges each tier's rate for the portion of usage within it; USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into. Defaults to graduated for backwards compatibility. Ignored for flat (single-pricing) overage.","title":"CreateUsageCommitmentStepOverageBtv3DtoTierPricingType"},"CreateUsageCommitmentStepOverageBTV3Dto":{"type":"object","properties":{"usageBillingTermId":{"type":"string","description":"ID of the base usage BT that this overage config applies to. Must appear in the step's billingTermIds."},"overageName":{"type":"string","description":"Display name for the overage invoice line item"},"overageItemId":{"type":"string","description":"Integration item ID for the overage BT"},"overagePricings":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentOveragePricingItemV3Dto"},"description":"Overage pricing tiers. Required when this overage entry is present — omit the whole entry from overageBillingTerms if a BT doesn't need overage. Revenue-ms 400s on empty."},"tierPricingType":{"$ref":"#/components/schemas/CreateUsageCommitmentStepOverageBtv3DtoTierPricingType","description":"How tiered overage pricing is applied. USE_ALL_TIER_PRICES (graduated) charges each tier's rate for the portion of usage within it; USE_TOP_TIER_PRICE_ONLY (volume) charges the single rate of the tier the total usage falls into. Defaults to graduated for backwards compatibility. Ignored for flat (single-pricing) overage."}},"required":["usageBillingTermId","overagePricings"],"title":"CreateUsageCommitmentStepOverageBTV3Dto"},"CreateUsageCommitmentStepV3Dto":{"type":"object","properties":{"sequence":{"type":"number","format":"double","description":"Dense step ordinal within the schedule (0..M-1)"},"commitmentValue":{"type":"number","format":"double","description":"The commitment amount value for this step"},"commitmentUnitType":{"$ref":"#/components/schemas/CreateUsageCommitmentStepV3DtoCommitmentUnitType","description":"Unit type: DOLLARS or UNITS"},"prepaidEnabled":{"type":"boolean","description":"Whether prepaid is enabled for this step"},"prepaidValue":{"type":"number","format":"double","description":"Prepaid amount value (required if prepaidEnabled is true)"},"pricePriority":{"$ref":"#/components/schemas/CreateUsageCommitmentStepV3DtoPricePriority","description":"Price priority: LOW or HIGH"},"billingTermIds":{"type":"array","items":{"type":"string"},"description":"Billing term IDs to link to this step"},"overageBillingTerms":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentStepOverageBTV3Dto"},"description":"Overage config per base BT for this step. Each entry's usageBillingTermId must appear in this step's billingTermIds."}},"required":["sequence","commitmentValue","commitmentUnitType","prepaidEnabled","billingTermIds"],"title":"CreateUsageCommitmentStepV3Dto"},"CreateUsageCommitmentScheduleV3Dto":{"type":"object","properties":{"sequence":{"type":"number","format":"double","description":"Dense schedule ordinal within the commitment (0..N-1)"},"startDate":{"type":"string","description":"Schedule start date (YYYY-MM-DD)"},"endDate":{"type":"string","description":"Schedule end date, inclusive (YYYY-MM-DD)"},"commitmentInterval":{"$ref":"#/components/schemas/CreateUsageCommitmentScheduleV3DtoCommitmentInterval","description":"Commitment period interval"},"prepaymentScheduleType":{"$ref":"#/components/schemas/CreateUsageCommitmentScheduleV3DtoPrepaymentScheduleType","description":"Prepayment schedule type for this schedule"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentStepV3Dto"},"description":"Steps within this schedule (dense, ordered)"}},"required":["sequence","startDate","endDate","steps"],"title":"CreateUsageCommitmentScheduleV3Dto"},"CreateNestedUsageCommitmentV3DtoTrueUpBehavior":{"type":"string","enum":["DEFAULT","NEVER"],"description":"Whether under-consumption is trued up (TRUE_UP) or forgiven (NEVER).","title":"CreateNestedUsageCommitmentV3DtoTrueUpBehavior"},"CreateNestedUsageCommitmentV3Dto":{"type":"object","properties":{"schedules":{"type":"array","items":{"$ref":"#/components/schemas/CreateUsageCommitmentScheduleV3Dto"},"description":"Schedules (each with their steps) for this commitment"},"revenueRecognitionPattern":{"type":"string","description":"Revenue recognition pattern for the prepaid performance obligations: straight-line, recognize-as-consumed, or recognize-as-billed."},"prepaidName":{"type":"string","description":"Display name for the prepaid container BT line item"},"prepaidItemId":{"type":"string","description":"Integration item ID for the prepaid container BT"},"trueUpName":{"type":"string","description":"Display name for the true-up container BT line item"},"trueUpItemId":{"type":"string","description":"Integration item ID for the true-up container BT"},"trueUpBehavior":{"$ref":"#/components/schemas/CreateNestedUsageCommitmentV3DtoTrueUpBehavior","description":"Whether under-consumption is trued up (TRUE_UP) or forgiven (NEVER)."}},"required":["schedules"],"title":"CreateNestedUsageCommitmentV3Dto"},"CreateNestedUsageCommitmentsV3RequestDto":{"type":"object","properties":{"commitments":{"type":"array","items":{"$ref":"#/components/schemas/CreateNestedUsageCommitmentV3Dto"},"description":"Array of nested commitments to create"}},"required":["commitments"],"title":"CreateNestedUsageCommitmentsV3RequestDto"},"Contracts_IntegratorsApiContractsv3Controller_createNestedCommitments_Response_201":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_createNestedCommitments_Response_201"},"Contracts_ContractsBillingMicroserviceController_deleteBillingTermSeatAmendment_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_ContractsBillingMicroserviceController_deleteBillingTermSeatAmendment_Response_200"},"DeleteScheduleRequestDto":{"type":"object","properties":{"cascadeBillingTerms":{"type":"boolean","description":"Required. Container and overage BTs are always torn down on schedule deletion regardless of this flag. When true, base BT endDates are also re-synced (shortened) so they no longer extend through the deleted schedule's date range. When false, base BTs are left untouched and the caller owns realignment."}},"required":["cascadeBillingTerms"],"title":"DeleteScheduleRequestDto"},"V3ContractsIdCommitmentsCommitmentIdSchedulesScheduleIdDeleteResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{"success":{"type":"boolean"}},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdCommitmentsCommitmentIdSchedulesScheduleIdDeleteResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_deleteCommitmentSchedule_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdCommitmentsCommitmentIdSchedulesScheduleIdDeleteResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_deleteCommitmentSchedule_Response_200"},"Contracts_IntegratorsApiContractsv3Controller_deleteCommitmentStep_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_deleteCommitmentStep_Response_200"},"V3ContractsIdFileDeleteResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{"message":{"type":"string"}},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdFileDeleteResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_deleteContractFile_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdFileDeleteResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_deleteContractFile_Response_200"},"V3ContractsIdMetadataDeleteResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdMetadataDeleteResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_deleteContractMetadata_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdMetadataDeleteResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_deleteContractMetadata_Response_200"},"V3ContractsIdMetadataGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdMetadataGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_getContractMetadata_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdMetadataGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_getContractMetadata_Response_200"},"V3ContractsIdBillingTermsBillingTermIdSeatAmendmentsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdBillingTermsBillingTermIdSeatAmendmentsGetResponsesContentApplicationJsonSchemaPayload"},"Contracts_ContractsBillingMicroserviceController_getSeatAmendmentsForBillingTerm_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdBillingTermsBillingTermIdSeatAmendmentsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_ContractsBillingMicroserviceController_getSeatAmendmentsForBillingTerm_Response_200"},"TerminateBillingTermDto":{"type":"object","properties":{"endDate":{"type":"string","description":"Termination end date"}},"required":["endDate"],"title":"TerminateBillingTermDto"},"TerminateBillingTermResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Billing term ID"},"terminatedAt":{"type":"string","description":"Timestamp the billing term was terminated"}},"required":["id","terminatedAt"],"title":"TerminateBillingTermResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_terminateBillingTerm_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/TerminateBillingTermResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_terminateBillingTerm_Response_200"},"StartDateChangeDtoMode":{"type":"string","enum":["extend","shift"],"description":"`extend` mutates only the first schedule's startDate (moves it earlier, or shortens it up to — but not past — the first sent invoice). `shift` translates every schedule (and all commitment periods) by the delta between the current first-schedule startDate and the new startDate; blocked entirely if any invoice has been sent anywhere on the commitment.","title":"StartDateChangeDtoMode"},"StartDateChangeDto":{"type":"object","properties":{"mode":{"$ref":"#/components/schemas/StartDateChangeDtoMode","description":"`extend` mutates only the first schedule's startDate (moves it earlier, or shortens it up to — but not past — the first sent invoice). `shift` translates every schedule (and all commitment periods) by the delta between the current first-schedule startDate and the new startDate; blocked entirely if any invoice has been sent anywhere on the commitment."},"startDate":{"type":"string","description":"New startDate (YYYY-MM-DD, inclusive) for the first schedule."}},"required":["mode","startDate"],"title":"StartDateChangeDto"},"PatchScheduleRequestDtoCommitmentInterval":{"type":"string","enum":["DAILY","WEEKLY","MONTHLY","QUARTERLY","SEMI_ANNUAL","YEARLY"],"description":"New cadence for the schedule's commitment periods. Rejected if any period on this schedule already has a non-voided invoice, or if the schedule is multi-step (invariant #7: multi-step schedules must be full-duration).","title":"PatchScheduleRequestDtoCommitmentInterval"},"PatchScheduleRequestDtoPrepaymentScheduleType":{"type":"string","enum":["FULL_UPFRONT","PER_COMMITMENT_PERIOD","SPLIT_ACROSS_BILLING_PERIODS"],"description":"New prepayment schedule type. Rejected if any period on this schedule already has a non-voided invoice.","title":"PatchScheduleRequestDtoPrepaymentScheduleType"},"PatchScheduleRequestDto":{"type":"object","properties":{"endDate":{"type":"string","description":"New schedule end date (YYYY-MM-DD, inclusive). Only valid on the LAST schedule of the commitment (changes on earlier schedules would break contiguity). Must be ≥ the end of the latest commitment period on this schedule that has a non-voided invoice, and must align with a period boundary of every linked base BT's billing cadence. When composed with `startDateChange` on a single-schedule commitment, this value wins as the final absolute endDate (applied after startDateChange)."},"startDateChange":{"$ref":"#/components/schemas/StartDateChangeDto","description":"Optional start-date mutation. When present, only valid if the URL scheduleId is the FIRST schedule of the commitment (min sequence). `mode: extend` mutates only that schedule's startDate; blocked if it would cross a period that has a non-voided invoice. `mode: shift` translates every schedule and every commitment period by the delta; blocked entirely if any non-voided invoice exists anywhere on the commitment. When `cascadeBillingTerms=false`, both modes must align with linked base BT billing-period boundaries (the BT grid stays put), and the new startDate can't precede a linked BT's own start. When `cascadeBillingTerms=true`, the BT grid re-anchors to the schedule's new start, so the bound against the BT's own start is not enforced — except under `mode: shift`, where alignment against the old anchor is skipped entirely (the BT moves to match an arbitrary shift delta with no constraint on the resulting date); `mode: extend` with cascade=true still requires alignment to the BT's existing cadence grid. With cascade: `extend` moves linked base BTs' startDate + attached POBs' serviceStartDate to match the schedule's new start; `shift` translates every linked base BT and container BT (both edges) and every attached POB (both service edges) by the same calendar delta."},"commitmentInterval":{"$ref":"#/components/schemas/PatchScheduleRequestDtoCommitmentInterval","description":"New cadence for the schedule's commitment periods. Rejected if any period on this schedule already has a non-voided invoice, or if the schedule is multi-step (invariant #7: multi-step schedules must be full-duration)."},"prepaymentScheduleType":{"$ref":"#/components/schemas/PatchScheduleRequestDtoPrepaymentScheduleType","description":"New prepayment schedule type. Rejected if any period on this schedule already has a non-voided invoice."},"cascadeBillingTerms":{"type":"boolean","description":"Required. When true, extend or shorten step-linked base BTs (and their POBs) to match the new schedule endDate, plus resync container BT dates. When false, the schedule mutates alone and the caller is responsible for BT realignment."},"billingTermsToAdd":{"type":"array","items":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","format":"uuid"}}},"description":"Per-step billing term additions. Each element is { [stepId]: btId[] }. All steps must end with the same event-type set (invariant #6). Only base BT links (billingTermCommitmentType=null) can be added here."},"billingTermsToDelete":{"type":"array","items":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string","format":"uuid"}}},"description":"Per-step billing term removals. Each element is { [stepId]: btId[] }. The BT must currently be linked as a base BT on that step."}},"required":["cascadeBillingTerms"],"title":"PatchScheduleRequestDto"},"PatchScheduleResponseDto":{"type":"object","properties":{"scheduleId":{"type":"string","description":"ID of the patched schedule"}},"required":["scheduleId"],"title":"PatchScheduleResponseDto"},"Contracts_IntegratorsApiContractsv3Controller_patchCommitmentSchedule_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/PatchScheduleResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_patchCommitmentSchedule_Response_200"},"UpdateUsageCommitmentStepV3RequestDtoPricePriority":{"type":"string","enum":["LOW","HIGH"],"description":"New price priority for the step","title":"UpdateUsageCommitmentStepV3RequestDtoPricePriority"},"UpdateUsageCommitmentStepV3RequestDto":{"type":"object","properties":{"commitmentValue":{"type":"number","format":"double","description":"New commitment amount value"},"prepaidValue":{"type":"number","format":"double","description":"New prepaid amount"},"prepaidEnabled":{"type":"boolean","description":"Toggle prepaid on or off for the step"},"pricePriority":{"$ref":"#/components/schemas/UpdateUsageCommitmentStepV3RequestDtoPricePriority","description":"New price priority for the step"}},"title":"UpdateUsageCommitmentStepV3RequestDto"},"Contracts_IntegratorsApiContractsv3Controller_updateCommitmentStep_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsv3Controller_updateCommitmentStep_Response_200"},"UpdateContractMetadataDto":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Metadata keys to add, update, or remove. Providing a value sets or replaces the corresponding top-level key. Providing `null` removes the key. Keys omitted from the request are left unchanged. Objects are replaced as a whole rather than merged recursively. The resulting metadata may not exceed 16KB of UTF-8 encoded JSON; the limit is checked against the merged result, not against this payload on its own."}},"required":["metadata"],"title":"UpdateContractMetadataDto"},"V3ContractsIdMetadataPatchResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ContractsIdMetadataPatchResponsesContentApplicationJsonSchemaPayload"},"Contracts_IntegratorsApiContractsv3Controller_updateContractMetadata_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ContractsIdMetadataPatchResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Contracts_IntegratorsApiContractsv3Controller_updateContractMetadata_Response_200"},"Contracts_IntegratorsApiContractsV31Controller_updateObligation_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Contracts_IntegratorsApiContractsV31Controller_updateObligation_Response_200"},"CreditMemoCustomerDto":{"type":"object","properties":{"id":{"type":"string","description":"Customer ID"},"name":{"type":"string","description":"Customer name"},"nameWithPrefix":{"type":"string","description":"Customer name with prefix"}},"required":["id","name"],"title":"CreditMemoCustomerDto"},"CreditMemoItemDto":{"type":"object","properties":{"id":{"type":"string","description":"Item ID"},"name":{"type":"string","description":"Item name"},"externalId":{"type":"string","description":"External ID"}},"required":["id","name"],"title":"CreditMemoItemDto"},"CreditMemoErpClassDto":{"type":"object","properties":{"id":{"type":"string","description":"ERP Class ID"},"name":{"type":"string","description":"ERP Class name"}},"required":["id","name"],"title":"CreditMemoErpClassDto"},"CreditMemoLineItemDto":{"type":"object","properties":{"id":{"type":"string","description":"Line item ID"},"name":{"type":"string","description":"Line item name"},"note":{"type":"string","description":"Line item note"},"quantity":{"type":"number","format":"double","description":"Quantity"},"amount":{"type":"number","format":"double","description":"Amount"},"salesTaxAmount":{"type":"number","format":"double","description":"Sales tax amount"},"item":{"$ref":"#/components/schemas/CreditMemoItemDto","description":"Item details"},"erpClass":{"$ref":"#/components/schemas/CreditMemoErpClassDto","description":"ERP Class details"},"contraRevenueScheduleId":{"type":"string","description":"Contra revenue schedule ID"}},"required":["id","name","quantity","amount","salesTaxAmount","contraRevenueScheduleId"],"title":"CreditMemoLineItemDto"},"CreditMemoApplicationDto":{"type":"object","properties":{"id":{"type":"string","description":"Application ID"},"creditMemoId":{"type":"string","description":"Credit memo ID"},"invoiceId":{"type":"string","description":"Invoice ID"},"amountApplied":{"type":"number","format":"double","description":"Amount applied"},"invoiceNumber":{"type":"string","description":"Invoice number"},"invoicePrefix":{"type":"string","description":"Invoice prefix"},"appliedAt":{"type":"string","format":"date-time","description":"Applied at"}},"required":["id","creditMemoId","invoiceId","amountApplied","invoiceNumber","invoicePrefix","appliedAt"],"title":"CreditMemoApplicationDto"},"CreditMemoExternalIdDto":{"type":"object","properties":{"externalId":{"type":"string","description":"External ID"},"sourceType":{"type":"string","description":"Source type"}},"required":["externalId","sourceType"],"title":"CreditMemoExternalIdDto"},"CreditMemoDto":{"type":"object","properties":{"creditMemoId":{"type":"string","description":"Credit memo ID"},"creditMemoNumber":{"type":"string","description":"Credit memo number"},"creditMemoPrefix":{"type":"string","description":"Credit memo prefix"},"customerId":{"type":"string","description":"Customer ID"},"manufacturerId":{"type":"string","description":"Manufacturer ID"},"issueDate":{"type":"string","format":"date-time","description":"Issue date"},"total":{"type":"number","format":"double","description":"Total amount"},"memo":{"type":"string","description":"Memo"},"reason":{"type":"string","description":"Reason"},"status":{"type":"string","description":"Status"},"creditAmountRemaining":{"type":"number","format":"double","description":"Credit still available to apply. Not derivable from total minus applied amounts, which ignores unapplied and voided applications."},"customer":{"$ref":"#/components/schemas/CreditMemoCustomerDto","description":"Customer information"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CreditMemoLineItemDto"},"description":"Line items"},"applications":{"type":"array","items":{"$ref":"#/components/schemas/CreditMemoApplicationDto"},"description":"Applications"},"externalIds":{"type":"array","items":{"$ref":"#/components/schemas/CreditMemoExternalIdDto"},"description":"External IDs"},"createdAt":{"type":"string","format":"date-time","description":"Created at"},"lastUpdatedAt":{"type":"string","format":"date-time","description":"Last updated at"},"syncStatus":{"type":"string","description":"Sync status"}},"required":["creditMemoId","creditMemoNumber","creditMemoPrefix","customerId","manufacturerId","issueDate","total","status","creditAmountRemaining","customer","items","applications","externalIds","createdAt","lastUpdatedAt","syncStatus"],"title":"CreditMemoDto"},"Credit_Memos_IntegratorsApiCreditMemosController_getCreditMemo_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CreditMemoDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Credit Memos_IntegratorsApiCreditMemosController_getCreditMemo_Response_200"},"V3CreditMemosGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CreditMemosGetResponsesContentApplicationJsonSchemaPayload"},"Credit_Memos_IntegratorsApiCreditMemosController_getCreditMemos_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CreditMemosGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Credit Memos_IntegratorsApiCreditMemosController_getCreditMemos_Response_200"},"CreateCreditMemoItemDto":{"type":"object","properties":{"invoiceLineItemId":{"type":"string","description":"Invoice line item ID"},"quantity":{"type":"number","format":"double","description":"Quantity"},"amount":{"type":"number","format":"double","description":"Amount"},"itemId":{"type":"string","description":"Integration item ID. Optional if invoiceLineItemId is provided."}},"required":["quantity","amount"],"title":"CreateCreditMemoItemDto"},"ApplyOnCreateDto":{"type":"object","properties":{"invoiceId":{"type":"string","description":"Invoice ID to apply credit memo to"}},"title":"ApplyOnCreateDto"},"CreateCreditMemoRequestDto":{"type":"object","properties":{"customerId":{"type":"string","description":"Customer ID"},"issueDate":{"type":"string","description":"Issue date"},"memo":{"type":"string","description":"Memo"},"reason":{"type":"string","description":"Reason"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CreateCreditMemoItemDto"},"description":"Credit memo items"},"applyOnCreate":{"$ref":"#/components/schemas/ApplyOnCreateDto","description":"Apply on create parameters. Do not include if you want to apply the credit memo to an invoice later."}},"required":["customerId","issueDate","reason","items"],"title":"CreateCreditMemoRequestDto"},"Credit_Memos_IntegratorsApiCreditMemosController_createCreditMemo_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CreditMemoDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Credit Memos_IntegratorsApiCreditMemosController_createCreditMemo_Response_201"},"ApplyCreditMemoRequestDto":{"type":"object","properties":{"invoiceId":{"type":"string","description":"Invoice ID"},"amount":{"type":"number","format":"double","description":"Amount to apply. Required for all integrations except Rillet; Rillet does not support partial credit memo applications."}},"required":["invoiceId"],"title":"ApplyCreditMemoRequestDto"},"Credit_Memos_IntegratorsApiCreditMemosController_applyCreditMemo_Response_201":{"type":"object","properties":{},"description":"Empty response body","title":"Credit Memos_IntegratorsApiCreditMemosController_applyCreditMemo_Response_201"},"CustomFieldDto":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the custom field"},"name":{"type":"string","description":"The name of the custom field"},"externalId":{"type":"string","description":"The external ID of the custom field"}},"required":["id","name","externalId"],"title":"CustomFieldDto"},"Custom_Fields_IntegratorsApiCustomFieldsController_getCustomFields_Response_200":{"type":"object","properties":{"payload":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldDto"},"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Custom Fields_IntegratorsApiCustomFieldsController_getCustomFields_Response_200"},"V31CustomFieldsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V31CustomFieldsGetResponsesContentApplicationJsonSchemaPayload"},"Custom_Fields_IntegratorsApiCustomFieldsV31Controller_getCustomFields_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V31CustomFieldsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Custom Fields_IntegratorsApiCustomFieldsV31Controller_getCustomFields_Response_200"},"V3CustomersIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdGetResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_getCustomerById_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getCustomerById_Response_200"},"Customers_IntegratorsApiCustomersController_deleteCustomer_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_deleteCustomer_Response_200"},"V3CustomersGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersGetResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_getCustomers_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getCustomers_Response_200"},"CreateAddressV3Dto":{"type":"object","properties":{"line1":{"type":"string","description":"Primary street address"},"line2":{"type":"string","description":"Secondary address line (apt, suite, etc)"},"postalCode":{"type":"string","description":"Postal/ZIP code"},"city":{"type":"string","description":"City name"},"state":{"type":"string","description":"State/province name"},"country":{"type":"string","description":"Country Code"},"addressee":{"type":"string","description":"Name of recipient/addressee"}},"required":["line1","postalCode","city","state"],"title":"CreateAddressV3Dto"},"CreateCustomerV3DtoDefaultCurrency":{"type":"string","enum":["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWG","ZWL"],"description":"Default currency code for the customer, if omitted will default to USD","title":"CreateCustomerV3DtoDefaultCurrency"},"CreateCustomerErpCustomFieldV3Dto":{"type":"object","properties":{"customFieldKey":{"type":"string","description":"The NetSuite custom field key"},"customFieldValue":{"type":"string","description":"The value to set for the custom field"}},"required":["customFieldKey","customFieldValue"],"title":"CreateCustomerErpCustomFieldV3Dto"},"CreateCustomerTaxInfoV3Dto":{"type":"object","properties":{"vatId":{"type":"string","description":"VAT identifier"},"ein":{"type":"string","description":"EIN identifier"},"isTaxExempt":{"type":"boolean","description":"Whether customer is tax exempt"}},"title":"CreateCustomerTaxInfoV3Dto"},"CreateCustomerV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Preferred company name"},"companyName":{"type":"string","description":"Legal company name"},"primaryBillingContactEmail":{"type":"string","description":"Email of primary billing contact"},"billingAddress":{"$ref":"#/components/schemas/CreateAddressV3Dto","description":"Customer's billing address"},"shippingAddress":{"$ref":"#/components/schemas/CreateAddressV3Dto","description":"Customer's shipping address"},"defaultCurrency":{"$ref":"#/components/schemas/CreateCustomerV3DtoDefaultCurrency","description":"Default currency code for the customer, if omitted will default to USD"},"customFields":{"type":"array","items":{"$ref":"#/components/schemas/CreateCustomerErpCustomFieldV3Dto"},"description":"Custom fields to pass during customer creation (NetSuite only). Each field key should match the internal field id."},"customerTaxInfo":{"$ref":"#/components/schemas/CreateCustomerTaxInfoV3Dto","description":"Customer tax information"}},"required":["name"],"title":"CreateCustomerV3Dto"},"CustomerJobResponseV3Dto":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable status message"},"customerId":{"type":"string","description":"The Tabs customer ID"},"jobId":{"type":["string","null"],"description":"ERP sync workflow ID. Null when the merchant has no ERP connected — there is no job to queue"},"statusEndpoint":{"type":"string","description":"Where to check status: /v3/jobs/{jobId} when an ERP sync was queued, or /v3/customers/{customerId} when it was not"}},"required":["message","customerId","jobId","statusEndpoint"],"title":"CustomerJobResponseV3Dto"},"Customers_IntegratorsApiCustomersController_createCustomer_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CustomerJobResponseV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_createCustomer_Response_201"},"AddressV3Dto":{"type":"object","properties":{"externalId":{"type":"string","description":"External identifier for the address"},"city":{"type":"string","description":"City name"},"state":{"type":"string","description":"State/province name"},"country":{"type":"string","description":"Country Code"},"postalCode":{"type":"string","description":"Postal/ZIP code"},"line1":{"type":"string","description":"Primary street address"},"line2":{"type":"string","description":"Secondary address line (apt, suite, etc)"},"addressee":{"type":"string","description":"Name of recipient/addressee"}},"required":["externalId","city","state","postalCode","line1","line2"],"title":"AddressV3Dto"},"CreateSubCustomerDto":{"type":"object","properties":{"customerName":{"type":"string","description":"Customer Name"},"currency":{"type":"string","description":"Currency"},"useParentContactInfo":{"type":"boolean","description":"Use Parent Customer's Contact Info"},"billingEmail":{"type":"string","description":"Billing Email"},"billingAddress":{"$ref":"#/components/schemas/AddressV3Dto","description":"Billing Address"}},"required":["customerName","currency","useParentContactInfo"],"title":"CreateSubCustomerDto"},"Customers_IntegratorsApiCustomersController_createSubCustomer_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CustomerJobResponseV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_createSubCustomer_Response_201"},"V3CustomersIdInvoicesInvoiceIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdInvoicesInvoiceIdGetResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_getInvoice_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdInvoicesInvoiceIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getInvoice_Response_200"},"InvoiceExternalIdV3Dto":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ExternalIdSourceType","description":"Type of external ID source"},"id":{"type":"string","description":"External identifier value"}},"required":["type","id"],"title":"InvoiceExternalIdV3Dto"},"UpdateInvoiceExternalIdsDto":{"type":"object","properties":{"externalIds":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceExternalIdV3Dto"},"description":"List of external identifiers"}},"required":["externalIds"],"title":"UpdateInvoiceExternalIdsDto"},"Customers_IntegratorsApiCustomersController_updateInvoiceExternalIds_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_updateInvoiceExternalIds_Response_200"},"SendInvoiceDtoAction":{"type":"string","enum":["SEND","MARK_INVOICE_TO_SENT_OFF_TABS","MARK_INVOICE_AS_PENDING","MARK_INVOICE_AS_SCHEDULED","MARK_INVOICE_AS_VOID","SEND_REMINDER_EMAIL"],"description":"Action to perform","title":"SendInvoiceDtoAction"},"SendInvoiceDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SendInvoiceDtoAction","description":"Action to perform"},"sendToErp":{"type":"boolean","description":"Send the invoice to the ERP"},"sendToCustomer":{"type":"boolean","description":"Send the invoice to the customer"},"overrideInvoiceDate":{"type":"boolean","description":"Override and update the invoice issue date to today. The due date will also be recalculated to preserve the original net payment terms. For example, if an invoice has Net 30 terms, the due date will be set to 30 days after today."}},"required":["action","sendToErp","sendToCustomer"],"title":"SendInvoiceDto"},"MarkInvoiceAsPendingDtoAction":{"type":"string","enum":["SEND","MARK_INVOICE_TO_SENT_OFF_TABS","MARK_INVOICE_AS_PENDING","MARK_INVOICE_AS_SCHEDULED","MARK_INVOICE_AS_VOID","SEND_REMINDER_EMAIL"],"description":"Action to perform","title":"MarkInvoiceAsPendingDtoAction"},"MarkInvoiceAsPendingDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/MarkInvoiceAsPendingDtoAction","description":"Action to perform"},"markInvoiceAsPending":{"type":"boolean","description":"Mark the invoice as pending"}},"required":["action","markInvoiceAsPending"],"title":"MarkInvoiceAsPendingDto"},"MarkInvoiceToSentOffTabsDtoAction":{"type":"string","enum":["SEND","MARK_INVOICE_TO_SENT_OFF_TABS","MARK_INVOICE_AS_PENDING","MARK_INVOICE_AS_SCHEDULED","MARK_INVOICE_AS_VOID","SEND_REMINDER_EMAIL"],"description":"Action to perform","title":"MarkInvoiceToSentOffTabsDtoAction"},"MarkInvoiceToSentOffTabsDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/MarkInvoiceToSentOffTabsDtoAction","description":"Action to perform"},"markInvoiceToSentOffTabs":{"type":"boolean","description":"Mark the invoice as sent off Tabs"}},"required":["action","markInvoiceToSentOffTabs"],"title":"MarkInvoiceToSentOffTabsDto"},"MarkInvoiceAsScheduledDtoAction":{"type":"string","enum":["SEND","MARK_INVOICE_TO_SENT_OFF_TABS","MARK_INVOICE_AS_PENDING","MARK_INVOICE_AS_SCHEDULED","MARK_INVOICE_AS_VOID","SEND_REMINDER_EMAIL"],"description":"Action to perform","title":"MarkInvoiceAsScheduledDtoAction"},"MarkInvoiceAsScheduledDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/MarkInvoiceAsScheduledDtoAction","description":"Action to perform"},"markInvoiceAsScheduled":{"type":"boolean","description":"Mark the invoice as scheduled"}},"required":["action","markInvoiceAsScheduled"],"title":"MarkInvoiceAsScheduledDto"},"MarkInvoiceAsVoidDtoAction":{"type":"string","enum":["SEND","MARK_INVOICE_TO_SENT_OFF_TABS","MARK_INVOICE_AS_PENDING","MARK_INVOICE_AS_SCHEDULED","MARK_INVOICE_AS_VOID","SEND_REMINDER_EMAIL"],"description":"Action to perform","title":"MarkInvoiceAsVoidDtoAction"},"MarkInvoiceAsVoidDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/MarkInvoiceAsVoidDtoAction","description":"Action to perform"},"markInvoiceAsVoid":{"type":"boolean","description":"Mark the invoice as void"}},"required":["action","markInvoiceAsVoid"],"title":"MarkInvoiceAsVoidDto"},"SendReminderEmailDtoAction":{"type":"string","enum":["SEND","MARK_INVOICE_TO_SENT_OFF_TABS","MARK_INVOICE_AS_PENDING","MARK_INVOICE_AS_SCHEDULED","MARK_INVOICE_AS_VOID","SEND_REMINDER_EMAIL"],"description":"Action to perform","title":"SendReminderEmailDtoAction"},"SendReminderEmailDto":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SendReminderEmailDtoAction","description":"Action to perform"},"sendReminderEmail":{"type":"boolean","description":"Send the reminder email"}},"required":["action","sendReminderEmail"],"title":"SendReminderEmailDto"},"Customers_IntegratorsApiCustomersController_invoiceActions_Request":{"oneOf":[{"$ref":"#/components/schemas/SendInvoiceDto"},{"$ref":"#/components/schemas/MarkInvoiceAsPendingDto"},{"$ref":"#/components/schemas/MarkInvoiceToSentOffTabsDto"},{"$ref":"#/components/schemas/MarkInvoiceAsScheduledDto"},{"$ref":"#/components/schemas/MarkInvoiceAsVoidDto"},{"$ref":"#/components/schemas/SendReminderEmailDto"}],"title":"Customers_IntegratorsApiCustomersController_invoiceActions_Request"},"V3CustomersIdInvoicesInvoiceIdActionsPostResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdInvoicesInvoiceIdActionsPostResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_invoiceActions_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdInvoicesInvoiceIdActionsPostResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_invoiceActions_Response_200"},"V3CustomersIdInvoicesInvoiceIdPaymentsPaymentIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdInvoicesInvoiceIdPaymentsPaymentIdGetResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_getPayment_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdInvoicesInvoiceIdPaymentsPaymentIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getPayment_Response_200"},"CreatePaymentV3DtoMethod":{"type":"string","enum":["CREDIT_CARD","ACH_DEBIT","ACH_CREDIT","CHECK","LINK"],"description":"Payment method used","title":"CreatePaymentV3DtoMethod"},"CreatePaymentV3Dto":{"type":"object","properties":{"receivedAt":{"type":"string","format":"date-time","description":"Date when payment was received"},"method":{"$ref":"#/components/schemas/CreatePaymentV3DtoMethod","description":"Payment method used"},"reference":{"type":"string","description":"Payment reference number"}},"required":["receivedAt"],"title":"CreatePaymentV3Dto"},"Customers_IntegratorsApiCustomersController_createPayment_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_createPayment_Response_200"},"Customers_IntegratorsApiCustomersController_uploadAttachmentToInvoice_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_uploadAttachmentToInvoice_Response_200"},"UpdateCustomerAutoChargeV3Dto":{"type":"object","properties":{"autocharge":{"type":"boolean","description":"Auto Charge enabled"}},"required":["autocharge"],"title":"UpdateCustomerAutoChargeV3Dto"},"Customers_IntegratorsApiCustomersController_updateCustomerAutoCharge_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_updateCustomerAutoCharge_Response_200"},"UpdateCustomerCCFeesExemptionV3Dto":{"type":"object","properties":{"ccFeesExempt":{"type":"boolean","description":"CC Fees Exemption updated"}},"required":["ccFeesExempt"],"title":"UpdateCustomerCCFeesExemptionV3Dto"},"UpdateCustomerCustomFieldV3Dto":{"type":"object","properties":{"manufacturerCustomFieldId":{"type":"string","description":"Manufacturer custom field ID. Required when `isPurchaseOrder` is not true."},"customFieldValue":{"type":"string","description":"Custom field value. For purchase order entries (`isPurchaseOrder: true`), this is the new PO number. Pass an empty string to unset the PO. Max 48 characters apply to PO values."},"isPurchaseOrder":{"type":"boolean","description":"Set to `true` to update the customer's active purchase order instead of a manufacturer-defined custom field. When `true`, `manufacturerCustomFieldId` is ignored and `customFieldValue` is used as the PO number."}},"required":["customFieldValue"],"title":"UpdateCustomerCustomFieldV3Dto"},"Customers_IntegratorsApiCustomersController_updateCustomerCustomField_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_updateCustomerCustomField_Response_200"},"V3CustomersIdContactsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdContactsGetResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_getContacts_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdContactsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getContacts_Response_200"},"CreateContactV3Dto":{"type":"object","properties":{"firstName":{"type":"string","description":"Contact First Name"},"lastName":{"type":"string","description":"Contact Last Name"},"email":{"type":"string","description":"Contact Email"}},"required":["email"],"title":"CreateContactV3Dto"},"Customers_IntegratorsApiCustomersController_createContacts_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_createContacts_Response_200"},"UpsertAddressV3Dto":{"type":"object","properties":{"line1":{"type":"string","description":"Primary street address"},"line2":{"type":"string","description":"Secondary address line (apt, suite, etc)"},"postalCode":{"type":"string","description":"Postal/ZIP code"},"city":{"type":"string","description":"City name"},"state":{"type":"string","description":"State/province name"},"country":{"type":"string","description":"Country Code"},"addressee":{"type":"string","description":"Name of recipient/addressee"},"isDefaultBilling":{"type":"boolean","description":"Is default billing address"},"isDefaultShipping":{"type":"boolean","description":"Is default shipping address"}},"required":["line1","postalCode","city","state","isDefaultBilling","isDefaultShipping"],"title":"UpsertAddressV3Dto"},"Customers_IntegratorsApiCustomersController_createAddress_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CustomerJobResponseV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_createAddress_Response_201"},"UpdateContactV3Dto":{"type":"object","properties":{"firstName":{"type":"string","description":"Contact First Name"},"lastName":{"type":"string","description":"Contact Last Name"},"email":{"type":"string","description":"Contact Email"},"isPrimaryContact":{"type":"boolean","description":"Is Primary Contact"},"isCCEmail":{"type":"boolean","description":"Is CC Email"}},"title":"UpdateContactV3Dto"},"Customers_IntegratorsApiCustomersController_updateContact_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Customers_IntegratorsApiCustomersController_updateContact_Response_200"},"UpsertCustomerExternalIdV3Dto":{"type":"object","properties":{"externalId":{"type":"string","description":"External identifier value"},"sourceType":{"$ref":"#/components/schemas/ExternalIdSourceType","description":"Type of external ID source"}},"required":["externalId","sourceType"],"title":"UpsertCustomerExternalIdV3Dto"},"Customers_IntegratorsApiCustomersController_upsertCustomerExternalId_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/UpsertCustomerExternalIdV3Dto"}},"title":"Customers_IntegratorsApiCustomersController_upsertCustomerExternalId_Response_200"},"Customers_IntegratorsApiCustomersController_getCreditMemosByInvoice_Response_200":{"type":"object","properties":{"payload":{"type":"array","items":{"$ref":"#/components/schemas/CreditMemoDto"},"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getCreditMemosByInvoice_Response_200"},"PatchCustomerNamesV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Preferred company name"},"companyName":{"type":"string","description":"Legal company name. Sets the value; it cannot be cleared through this endpoint."}},"title":"PatchCustomerNamesV3Dto"},"Customers_IntegratorsApiCustomersController_updateCustomerName_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CustomerJobResponseV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_updateCustomerName_Response_200"},"UpdateInvoicePODto":{"type":"object","properties":{"poNumber":{"type":"string","maxLength":30,"description":"Purchase Order number for the invoice"}},"required":["poNumber"],"title":"UpdateInvoicePODto"},"V3CustomersIdInvoicesInvoiceIdPoPutResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdInvoicesInvoiceIdPoPutResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_updateInvoicePO_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdInvoicesInvoiceIdPoPutResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_updateInvoicePO_Response_200"},"UpdateInvoiceMemoBodyDto":{"type":"object","properties":{"memo":{"type":"string","maxLength":4095,"description":"Memo for the invoice"}},"required":["memo"],"title":"UpdateInvoiceMemoBodyDto"},"V3CustomersIdInvoicesInvoiceIdMemoPutResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdInvoicesInvoiceIdMemoPutResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_updateInvoiceMemo_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdInvoicesInvoiceIdMemoPutResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_updateInvoiceMemo_Response_200"},"InvoiceGenerationStatus":{"type":"string","enum":["GENERATING","READY"],"title":"InvoiceGenerationStatus"},"InvoiceGenerationStatusV3Dto":{"type":"object","properties":{"customerId":{"type":"string","description":"The Tabs customer ID"},"status":{"$ref":"#/components/schemas/InvoiceGenerationStatus","description":"GENERATING: Invoices are currently being generated to reflect billing term changes. READY: Invoices are successfully generated as of `lastSucceededAt`."},"lastSucceededAt":{"type":["string","null"],"description":"Invoices are successfully generated as of this date. It is null if a generation has never completed successfully."}},"required":["customerId","status","lastSucceededAt"],"title":"InvoiceGenerationStatusV3Dto"},"Customers_IntegratorsApiCustomersController_getInvoiceGenerationStatus_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/InvoiceGenerationStatusV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_getInvoiceGenerationStatus_Response_200"},"V3CustomersIdPaymentMethodLinkPostResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3CustomersIdPaymentMethodLinkPostResponsesContentApplicationJsonSchemaPayload"},"Customers_IntegratorsApiCustomersController_sendPaymentMethodLink_Response_202":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3CustomersIdPaymentMethodLinkPostResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_sendPaymentMethodLink_Response_202"},"UpdateCustomerTaxInfoV3Dto":{"type":"object","properties":{"vatId":{"type":"string","description":"VAT identifier"},"ein":{"type":"string","description":"EIN identifier"},"isTaxExempt":{"type":"boolean","description":"Whether customer is tax exempt"}},"title":"UpdateCustomerTaxInfoV3Dto"},"ExternalIdV3Dto":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ExternalIdSourceType","description":"Type of external ID source"},"id":{"type":"string","description":"External identifier value"},"objectType":{"type":"string","description":"Raw CRM object API name this external id represents, e.g. Account/companies"},"objectLabel":{"type":"string","description":"Human-readable CRM object label, e.g. Account/Company"}},"required":["type","id"],"title":"ExternalIdV3Dto"},"CustomerTaxInfoV3Dto":{"type":"object","properties":{"vatId":{"type":"string","description":"VAT identifier"},"ein":{"type":"string","description":"EIN identifier"},"isTaxExempt":{"type":"boolean","description":"Whether customer is tax exempt"}},"required":["isTaxExempt"],"title":"CustomerTaxInfoV3Dto"},"CustomerV3Dto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the customer"},"name":{"type":"string","description":"Preferred company name"},"companyName":{"type":["string","null"],"description":"Legal company name, null when unset"},"parentCustomerId":{"type":"string","description":"Parent Customer Id"},"defaultCurrency":{"type":"string","description":"Default currency code for the customer, if omitted will default to USD"},"primaryBillingContactName":{"type":"string","description":"Name of primary billing contact"},"primaryBillingContactEmail":{"type":"string","description":"Email of primary billing contact"},"secondaryBillingContacts":{"type":"array","items":{"type":"string"},"description":"List of secondary billing contact emails"},"billingAddress":{"$ref":"#/components/schemas/AddressV3Dto","description":"Customer's billing address"},"shippingAddress":{"$ref":"#/components/schemas/AddressV3Dto","description":"Customer's shipping address"},"externalIds":{"type":"array","items":{"$ref":"#/components/schemas/ExternalIdV3Dto"},"description":"List of external identifiers"},"lastUpdatedAt":{"type":"string","description":"Timestamp of last update"},"customFields":{"type":"array","items":{"type":"string"},"description":"Customer's custom fields"},"autoCharge":{"type":"boolean","description":"Whether auto charge is enabled for the customer. If true and customer has a default payment method defined in their billing settings, that payment method will be autocharged"},"dunningDisabled":{"type":"boolean","description":"Whether reminder emails (dunning) are disabled for this customer. When true, no automated payment reminder emails will be sent to this customer. Note: The initial invoice email is still sent even when this is true."},"customerTaxInfo":{"$ref":"#/components/schemas/CustomerTaxInfoV3Dto","description":"Customer tax information"}},"required":["id","name","companyName","parentCustomerId","defaultCurrency","primaryBillingContactName","primaryBillingContactEmail","secondaryBillingContacts","lastUpdatedAt"],"title":"CustomerV3Dto"},"Customers_IntegratorsApiCustomersController_updateCustomerTaxInfo_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CustomerV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customers_IntegratorsApiCustomersController_updateCustomerTaxInfo_Response_200"},"DepartmentModelDto":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the department"},"name":{"type":"string","description":"The name of the department"},"fullName":{"type":"string","description":"The fully qualified name of the department"},"externalId":{"type":"string","description":"The external ID of the department in the source ERP"}},"required":["id","name","fullName","externalId"],"title":"DepartmentModelDto"},"Departments_IntegratorsApiDepartmentsController_getDepartments_Response_200":{"type":"object","properties":{"payload":{"type":"array","items":{"$ref":"#/components/schemas/DepartmentModelDto"},"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Departments_IntegratorsApiDepartmentsController_getDepartments_Response_200"},"V31DepartmentsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V31DepartmentsGetResponsesContentApplicationJsonSchemaPayload"},"Departments_IntegratorsApiDepartmentsV31Controller_getDepartments_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V31DepartmentsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Departments_IntegratorsApiDepartmentsV31Controller_getDepartments_Response_200"},"CreateEventDtoMetadata":{"type":"object","properties":{},"description":"event metadata","title":"CreateEventDtoMetadata"},"CreateEventDto":{"type":"object","properties":{"customerId":{"type":"string","description":"The ID of the customer"},"datetime":{"type":"string","format":"date-time","description":"The date and time of the event"},"eventTypeId":{"type":"string","description":"The type of event"},"value":{"type":"string","description":"The value of the event, usually a number"},"differentiator":{"type":"string","description":"The differentiator of the event"},"metadata":{"$ref":"#/components/schemas/CreateEventDtoMetadata","description":"event metadata"},"invoiceGroup":{"type":"string","description":"The invoice group for split invoicing"}},"required":["customerId","datetime","eventTypeId","value","metadata"],"title":"CreateEventDto"},"BulkCreateEventDto":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/CreateEventDto"}}},"required":["events"],"title":"BulkCreateEventDto"},"CreatedEventsDtoMetadata":{"type":"object","properties":{},"description":"event metadata","title":"CreatedEventsDtoMetadata"},"CreatedEventsDto":{"type":"object","properties":{"customerId":{"type":"string","description":"The ID of the customer"},"datetime":{"type":"string","format":"date-time","description":"The date and time of the event"},"eventTypeId":{"type":"string","description":"The type of event"},"value":{"type":"string","description":"The value of the event, usually a number"},"differentiator":{"type":"string","description":"The differentiator of the event"},"metadata":{"$ref":"#/components/schemas/CreatedEventsDtoMetadata","description":"event metadata"},"invoiceGroup":{"type":"string","description":"The invoice group for split invoicing"},"id":{"type":"string","description":"The id of the event"}},"required":["customerId","datetime","eventTypeId","value","metadata","id"],"title":"CreatedEventsDto"},"Events_IntegratorsApiEventsController_deleteEventsBulk_Response_200":{"type":"object","properties":{"status":{"type":"number","format":"double"}},"title":"Events_IntegratorsApiEventsController_deleteEventsBulk_Response_200"},"IntegratorsApiEventsController_deleteEventsBulkRequestNotFoundError":{"type":"object","properties":{"statusCode":{"type":"number","format":"double"},"message":{"type":"string"}},"title":"IntegratorsApiEventsController_deleteEventsBulkRequestNotFoundError"},"V3EventsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3EventsGetResponsesContentApplicationJsonSchemaPayload"},"Events_IntegratorsApiEventsController_getEvents_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3EventsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Events_IntegratorsApiEventsController_getEvents_Response_200"},"Events_IntegratorsApiEventsController_deleteEvents_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Events_IntegratorsApiEventsController_deleteEvents_Response_200"},"V3EventsTypesGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3EventsTypesGetResponsesContentApplicationJsonSchemaPayload"},"Events_IntegratorsApiEventsController_getEventTypes_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3EventsTypesGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Events_IntegratorsApiEventsController_getEventTypes_Response_200"},"CreateEventTypeDto":{"type":"object","properties":{"name":{"type":"string","description":"The name of the event type"}},"required":["name"],"title":"CreateEventTypeDto"},"EventTypeDto":{"type":"object","properties":{"id":{"type":"string","description":"The id of the event type"},"name":{"type":"string","description":"The name of the event type"}},"required":["id","name"],"title":"EventTypeDto"},"Events_IntegratorsApiEventsController_deleteEventType_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Events_IntegratorsApiEventsController_deleteEventType_Response_200"},"EventCreateRequestMetadata":{"type":"object","properties":{},"description":"Optional metadata in JSON format","title":"EventCreateRequestMetadata"},"EventCreateRequest":{"type":"object","properties":{"customerId":{"type":"string","format":"uuid","description":"Tabs Customer ID - must be a valid UUID v4"},"eventTypeId":{"type":"string","format":"uuid","description":"Type of event being recorded - must be a valid UUID v4"},"datetime":{"type":"string","format":"date-time","description":"Timestamp when the event occurred (UTC) (format: ISO-8601 datetime string)"},"idempotencyKey":{"type":"string","format":"uuid","description":"Unique key to prevent duplicate event processing - must be a valid UUID v4"},"value":{"type":"number","format":"double","description":"Numeric value of the event"},"differentiator":{"type":"string","description":"Optional key to separate events with the same event type and customer into different invoice line items; differentiator will be appended to the description of the new invoice line item"},"invoiceSplitKey":{"type":"string","description":"Optional key to split events into a new invoice; the split key will be appended to the new invoice number"},"metadata":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EventCreateRequestMetadata"},"description":"Optional metadata in JSON format"}},"required":["customerId","eventTypeId","datetime","idempotencyKey","value"],"description":"Event data to be ingested","title":"EventCreateRequest"},"EventResponseMetadata":{"type":"object","properties":{},"description":"Optional metadata in JSON format","title":"EventResponseMetadata"},"EventResponse":{"type":"object","properties":{"customerId":{"type":"string","format":"uuid","description":"Tabs Customer ID - must be a valid UUID v4"},"eventTypeId":{"type":"string","format":"uuid","description":"Type of event being recorded - must be a valid UUID v4"},"datetime":{"type":"string","format":"date-time","description":"Timestamp when the event occurred (UTC) (format: ISO-8601 datetime string)"},"idempotencyKey":{"type":"string","format":"uuid","description":"Unique key to prevent duplicate event processing - must be a valid UUID v4"},"value":{"type":"number","format":"double","description":"Numeric value of the event"},"differentiator":{"type":"string","description":"Optional key to separate events with the same event type and customer into different invoice line items; differentiator will be appended to the description of the new invoice line item"},"invoiceSplitKey":{"type":"string","description":"Optional key to split events into a new invoice; the split key will be appended to the new invoice number"},"parentEventId":{"type":"string","format":"uuid","description":"Parent event ID - the idempotency key of the original event that was deleted (only present in DELETE responses)"},"metadata":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EventResponseMetadata"},"description":"Optional metadata in JSON format"}},"description":"Event response data","title":"EventResponse"},"EventData":{"type":"object","properties":{"events":{"$ref":"#/components/schemas/EventResponse"}},"description":"Event data wrapper","title":"EventData"},"EventCreateResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the operation was successful"},"message":{"type":"string","description":"Human-readable message about the operation result"},"data":{"$ref":"#/components/schemas/EventData"}},"description":"Response for successful event creation","title":"EventCreateResponse"},"ErrorDetail":{"type":"object","properties":{"code":{"type":"integer","description":"Error code"},"message":{"type":"string","description":"Error message"},"details":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Map of field names to array of error messages"}},"description":"Detailed error information","title":"ErrorDetail"},"ValidationErrorResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the operation was successful"},"message":{"type":"string","description":"Human-readable error message"},"error":{"$ref":"#/components/schemas/ErrorDetail"}},"description":"Error response for validation failures","title":"ValidationErrorResponse"},"UnauthorizedResponse":{"type":"object","properties":{"statusCode":{"type":"integer","description":"HTTP status code"},"message":{"type":"string","description":"Error message"},"timestamp":{"type":"string","description":"Timestamp when the error occurred"},"path":{"type":"string","description":"Request path"},"method":{"type":"string","description":"HTTP method"}},"description":"Unauthorized error response","title":"UnauthorizedResponse"},"RateLimitResponse":{"type":"object","properties":{"statusCode":{"type":"integer","description":"HTTP status code"},"message":{"type":"string","description":"Error message"},"timestamp":{"type":"string","description":"Timestamp when the error occurred"},"path":{"type":"string","description":"Request path"},"method":{"type":"string","description":"HTTP method"},"retryAfter":{"type":"integer","description":"Number of seconds to wait before retrying"}},"description":"Rate limit exceeded error response","title":"RateLimitResponse"},"EventDeleteResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the operation was successful"},"message":{"type":"string","description":"Human-readable message about the operation result"},"data":{"$ref":"#/components/schemas/EventData"}},"description":"Response for successful event deletion","title":"EventDeleteResponse"},"EventDtoMetadata":{"type":"object","properties":{},"title":"EventDtoMetadata"},"EventDto":{"type":"object","properties":{"manufacturerId":{"type":"string"},"eventTypeId":{"type":"string"},"metadata":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EventDtoMetadata"}},"value":{"type":"string"},"differentiator":{"type":"string"},"invoiceGroup":{"type":"string"},"idempotencyKey":{"type":"string"},"datetime":{"type":"string"},"customerId":{"type":"string"},"parentEventId":{"type":"string"},"source":{"type":"string"},"deleted":{"type":"boolean","description":"Whether the event is deleted"}},"description":"Event data transfer object","title":"EventDto"},"EventsQueryResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/EventDto"},"description":"List of events"},"count":{"type":"integer","description":"Total count of events"},"nextCursor":{"type":"string","description":"Cursor for the next page of results"},"hasMore":{"type":"boolean","description":"Whether there are more results available"}},"description":"Response containing a list of events with pagination information","title":"EventsQueryResponse"},"VersionResponse":{"type":"object","properties":{"version":{"type":"string","description":"API version"},"api":{"type":"string","description":"API name"},"description":{"type":"string","description":"API description"}},"description":"API version information response","title":"VersionResponse"},"UpdateEventTypeDto":{"type":"object","properties":{"name":{"type":"string","description":"The name of the event type"}},"required":["name"],"title":"UpdateEventTypeDto"},"V3InvoicesGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3InvoicesGetResponsesContentApplicationJsonSchemaPayload"},"Invoices_IntegratorsApiInvoicesController_getInvoices_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3InvoicesGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Invoices_IntegratorsApiInvoicesController_getInvoices_Response_200"},"V3ItemsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ItemsGetResponsesContentApplicationJsonSchemaPayload"},"Items_IntegratorsApiItemsController_getItems_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ItemsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Items_IntegratorsApiItemsController_getItems_Response_200"},"V3ItemsIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ItemsIdGetResponsesContentApplicationJsonSchemaPayload"},"Items_IntegratorsApiItemsController_getItemById_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ItemsIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Items_IntegratorsApiItemsController_getItemById_Response_200"},"V3JobsIdGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3JobsIdGetResponsesContentApplicationJsonSchemaPayload"},"Jobs_IntegratorsApiJobsControllerV3_getJobStatusById_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3JobsIdGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Jobs_IntegratorsApiJobsControllerV3_getJobStatusById_Response_200"},"V3MerchantInfoGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3MerchantInfoGetResponsesContentApplicationJsonSchemaPayload"},"Merchant_IntegratorsApiMerchantsControllerV3_getMerchantInfo_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3MerchantInfoGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Merchant_IntegratorsApiMerchantsControllerV3_getMerchantInfo_Response_200"},"IntegratorsApiMerchantsControllerV3_getMerchantInfoRequestNotFoundError":{"type":"object","properties":{"payload":{"oneOf":[{"$ref":"#/components/schemas/V3MerchantInfoGetResponsesContentApplicationJsonSchemaPayload"},{"type":"null"}],"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"IntegratorsApiMerchantsControllerV3_getMerchantInfoRequestNotFoundError"},"IntegratorsApiMerchantsControllerV3_getMerchantInfoRequestInternalServerError":{"type":"object","properties":{"payload":{"oneOf":[{"$ref":"#/components/schemas/V3MerchantInfoGetResponsesContentApplicationJsonSchemaPayload"},{"type":"null"}],"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"IntegratorsApiMerchantsControllerV3_getMerchantInfoRequestInternalServerError"},"V3MerchantBookCloseDateGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3MerchantBookCloseDateGetResponsesContentApplicationJsonSchemaPayload"},"Merchant_IntegratorsApiMerchantsControllerV3_getBookCloseDate_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3MerchantBookCloseDateGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Merchant_IntegratorsApiMerchantsControllerV3_getBookCloseDate_Response_200"},"V3ObligationsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ObligationsGetResponsesContentApplicationJsonSchemaPayload"},"Obligations_IntegratorsApiObligationsController_getObligations_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ObligationsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Obligations_IntegratorsApiObligationsController_getObligations_Response_200"},"V3PaymentsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3PaymentsGetResponsesContentApplicationJsonSchemaPayload"},"Payments_IntegratorsApiPaymentsController_getPayments_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3PaymentsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Payments_IntegratorsApiPaymentsController_getPayments_Response_200"},"V31PaymentsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V31PaymentsGetResponsesContentApplicationJsonSchemaPayload"},"Payments_IntegratorsApiPaymentsV31Controller_getPayments_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V31PaymentsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Payments_IntegratorsApiPaymentsV31Controller_getPayments_Response_200"},"V3PerformanceObligationsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3PerformanceObligationsGetResponsesContentApplicationJsonSchemaPayload"},"Performance_Obligations_IntegratorsApiPerformanceObligationsController_searchPerformanceObligations_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3PerformanceObligationsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Performance Obligations_IntegratorsApiPerformanceObligationsController_searchPerformanceObligations_Response_200"},"RecognizedRevenueEntryDto":{"type":"object","properties":{"timeframe":{"type":"string","description":"The timeframe for the revenue (YYYY-MM format)"},"total":{"type":"number","format":"double","description":"The total revenue amount"}},"required":["timeframe","total"],"title":"RecognizedRevenueEntryDto"},"UpsertRecognizedRevenueDto":{"type":"object","properties":{"recognizedRevenue":{"type":"array","items":{"$ref":"#/components/schemas/RecognizedRevenueEntryDto"},"description":"Array of recognized revenue entries"}},"required":["recognizedRevenue"],"title":"UpsertRecognizedRevenueDto"},"Performance_Obligations_IntegratorsApiPerformanceObligationsController_upsertRecognizedRevenue_Response_200":{"type":"object","properties":{"payload":{"type":"string","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Performance Obligations_IntegratorsApiPerformanceObligationsController_upsertRecognizedRevenue_Response_200"},"UsageEstimateItemDto":{"type":"object","properties":{"performanceObligationId":{"type":"string","description":"The ID of the performance obligation to record an estimate against"},"estimatedQuantity":{"type":"string","description":"Expected total output quantity over the performance obligation's whole service period. Must be greater than zero."},"rationale":{"type":"string","maxLength":1000,"description":"Optional note explaining the revision, stored alongside it for audit."}},"required":["performanceObligationId","estimatedQuantity"],"title":"UsageEstimateItemDto"},"BulkUpdateUsageEstimatesDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/UsageEstimateItemDto"},"description":"Estimates to record, at most 100 per request. A performance obligation may appear only once."}},"required":["items"],"title":"BulkUpdateUsageEstimatesDto"},"UsageEstimateResultDtoStatus":{"type":"string","enum":["UPDATED","UNCHANGED","REJECTED"],"description":"What happened to this entry","title":"UsageEstimateResultDtoStatus"},"UsageEstimateResultDtoReason":{"type":"string","enum":["NOT_FOUND","NOT_OUTPUT_BASED","INVALID_QUANTITY","ERROR"],"description":"Why the entry did not apply. Only set on REJECTED.","title":"UsageEstimateResultDtoReason"},"UsageEstimateResultDto":{"type":"object","properties":{"performanceObligationId":{"type":"string","description":"The performance obligation this result is for"},"status":{"$ref":"#/components/schemas/UsageEstimateResultDtoStatus","description":"What happened to this entry"},"estimatedQuantity":{"type":["string","null"],"description":"The estimate now in effect. Null when nothing was recorded."},"reason":{"$ref":"#/components/schemas/UsageEstimateResultDtoReason","description":"Why the entry did not apply. Only set on REJECTED."},"message":{"type":"string","description":"Human-readable detail for a rejection. Only set on REJECTED."}},"required":["performanceObligationId","status","estimatedQuantity"],"title":"UsageEstimateResultDto"},"BulkUpdateUsageEstimatesResponseDto":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/UsageEstimateResultDto"},"description":"One result per request entry, in request order."}},"required":["results"],"title":"BulkUpdateUsageEstimatesResponseDto"},"Performance_Obligations_IntegratorsApiPerformanceObligationsController_bulkUpdateUsageEstimates_Response_202":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/BulkUpdateUsageEstimatesResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Performance Obligations_IntegratorsApiPerformanceObligationsController_bulkUpdateUsageEstimates_Response_202"},"ProductV3DtoStatus":{"type":"string","enum":["ACTIVE","INACTIVE"],"description":"Product status (active or inactive)","title":"ProductV3DtoStatus"},"ProductV3DtoArrDefault":{"type":"string","enum":["INCLUDE","EXCLUDE","UNSPECIFIED"],"description":"ARR treatment a new billing term inherits when created against this product","title":"ProductV3DtoArrDefault"},"ProductV3Dto":{"type":"object","properties":{"id":{"type":"string","description":"Product ID"},"manufacturerId":{"type":"string","description":"Merchant ID"},"name":{"type":"string","description":"Internal catalog name of the product"},"displayName":{"type":"string","description":"Customer-facing display name of the product"},"status":{"$ref":"#/components/schemas/ProductV3DtoStatus","description":"Product status (active or inactive)"},"arrDefault":{"$ref":"#/components/schemas/ProductV3DtoArrDefault","description":"ARR treatment a new billing term inherits when created against this product"},"createdAt":{"type":"string","format":"date-time","description":"Product creation date"},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Product last updated date"},"description":{"type":["string","null"],"description":"Product description"},"integrationItemId":{"type":"string","description":"ERP integration item ID"},"integrationItemName":{"type":["string","null"],"description":"ERP integration item name"},"erpClassId":{"type":"string","description":"ERP class ID"},"erpClassName":{"type":["string","null"],"description":"ERP class name"}},"required":["id","manufacturerId","name","displayName","status","arrDefault","createdAt","updatedAt"],"title":"ProductV3Dto"},"Products_IntegratorsApiProductsController_getProduct_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ProductV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Products_IntegratorsApiProductsController_getProduct_Response_200"},"UpdateProductV3DtoStatus":{"type":"string","enum":["ACTIVE","INACTIVE"],"description":"Product status (active or inactive)","title":"UpdateProductV3DtoStatus"},"UpdateProductV3DtoArrDefault":{"type":"string","enum":["INCLUDE","EXCLUDE","UNSPECIFIED"],"description":"ARR treatment a new billing term inherits when created against this product. Omit to leave it unchanged. Applies only to billing terms created after the change.","title":"UpdateProductV3DtoArrDefault"},"UpdateProductV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Internal catalog name of the product"},"displayName":{"type":"string","description":"Customer-facing display name of the product"},"status":{"$ref":"#/components/schemas/UpdateProductV3DtoStatus","description":"Product status (active or inactive)"},"arrDefault":{"$ref":"#/components/schemas/UpdateProductV3DtoArrDefault","description":"ARR treatment a new billing term inherits when created against this product. Omit to leave it unchanged. Applies only to billing terms created after the change."},"description":{"type":"string","description":"Product description"},"integrationItemId":{"type":"string","description":"ERP integration item ID"},"erpClassId":{"type":"string","description":"ERP class ID"}},"title":"UpdateProductV3Dto"},"Products_IntegratorsApiProductsController_updateProduct_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ProductV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Products_IntegratorsApiProductsController_updateProduct_Response_200"},"V3ProductsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ProductsGetResponsesContentApplicationJsonSchemaPayload"},"Products_IntegratorsApiProductsController_listProducts_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ProductsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Products_IntegratorsApiProductsController_listProducts_Response_200"},"CreateProductV3DtoStatus":{"type":"string","enum":["ACTIVE","INACTIVE"],"description":"Product status (active or inactive)","title":"CreateProductV3DtoStatus"},"CreateProductV3DtoArrDefault":{"type":"string","enum":["INCLUDE","EXCLUDE","UNSPECIFIED"],"description":"ARR treatment a new billing term inherits when created against this product. Defaults to UNSPECIFIED (no product-level default) when omitted.","title":"CreateProductV3DtoArrDefault"},"CreateProductV3Dto":{"type":"object","properties":{"name":{"type":"string","description":"Internal catalog name of the product"},"displayName":{"type":"string","description":"Customer-facing display name. If omitted, defaults to `name`."},"status":{"$ref":"#/components/schemas/CreateProductV3DtoStatus","description":"Product status (active or inactive)"},"arrDefault":{"$ref":"#/components/schemas/CreateProductV3DtoArrDefault","description":"ARR treatment a new billing term inherits when created against this product. Defaults to UNSPECIFIED (no product-level default) when omitted."},"description":{"type":"string","description":"Product description"},"integrationItemId":{"type":"string","description":"ERP integration item ID"},"erpClassId":{"type":"string","description":"ERP class ID"}},"required":["name","status"],"title":"CreateProductV3Dto"},"Products_IntegratorsApiProductsController_createProduct_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ProductV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Products_IntegratorsApiProductsController_createProduct_Response_201"},"ProjectModelDto":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the project"},"name":{"type":"string","description":"The name of the project"},"fullName":{"type":"string","description":"The fully qualified name of the project"},"externalId":{"type":"string","description":"The external ID of the project in the source ERP"},"customerId":{"type":["string","null"],"description":"The ID of the Tabs customer this project is tied to, or null for internal/unassigned projects"}},"required":["id","name","fullName","externalId","customerId"],"title":"ProjectModelDto"},"Projects_IntegratorsApiProjectsController_getProjects_Response_200":{"type":"object","properties":{"payload":{"type":"array","items":{"$ref":"#/components/schemas/ProjectModelDto"},"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Projects_IntegratorsApiProjectsController_getProjects_Response_200"},"V31ProjectsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V31ProjectsGetResponsesContentApplicationJsonSchemaPayload"},"Projects_IntegratorsApiProjectsV31Controller_getProjects_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V31ProjectsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Projects_IntegratorsApiProjectsV31Controller_getProjects_Response_200"},"V3RenewalsGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3RenewalsGetResponsesContentApplicationJsonSchemaPayload"},"Renewals_IntegratorsApiRenewalsController_getRenewals_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3RenewalsGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Renewals_IntegratorsApiRenewalsController_getRenewals_Response_200"},"RenewalDtoType":{"type":"string","enum":["MUTUAL","AUTOMATIC","UNILATERAL"],"description":"Renewal Type","title":"RenewalDtoType"},"RenewalDtoStatus":{"type":"string","enum":["DRAFT","APPROVED","DECLINED"],"description":"Renewal Status","title":"RenewalDtoStatus"},"RenewalDtoNoticePeriodUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"description":"Notice Period Units","title":"RenewalDtoNoticePeriodUnits"},"RenewalDtoRenewalLengthUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"description":"Renewal Length Units","title":"RenewalDtoRenewalLengthUnits"},"RenewalDtoPriceIncreaseUnits":{"type":"string","enum":["PERCENT","DOLLAR"],"description":"Price Increase Units","title":"RenewalDtoPriceIncreaseUnits"},"RenewalDtoRecurringPeriodUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"description":"Recurring Period Units","title":"RenewalDtoRecurringPeriodUnits"},"RenewalDto":{"type":"object","properties":{"id":{"type":"string","description":"Renewal Id"},"contractId":{"type":"string","description":"Contract Id"},"type":{"$ref":"#/components/schemas/RenewalDtoType","description":"Renewal Type"},"status":{"$ref":"#/components/schemas/RenewalDtoStatus","description":"Renewal Status"},"noticePeriod":{"type":"number","format":"double","description":"Notice Period"},"noticePeriodUnits":{"$ref":"#/components/schemas/RenewalDtoNoticePeriodUnits","description":"Notice Period Units"},"renewalLength":{"type":"number","format":"double","description":"Renewal Length"},"renewalLengthUnits":{"$ref":"#/components/schemas/RenewalDtoRenewalLengthUnits","description":"Renewal Length Units"},"maxNumberOfRenewals":{"type":"number","format":"double","description":"Max Number of Renewals"},"sameConditions":{"type":"boolean","description":"Same Conditions"},"priceIncrease":{"type":"number","format":"double","description":"Price Increase"},"priceIncreaseUnits":{"$ref":"#/components/schemas/RenewalDtoPriceIncreaseUnits","description":"Price Increase Units"},"recurringPeriod":{"type":"number","format":"double","description":"Recurring Period"},"recurringPeriodUnits":{"$ref":"#/components/schemas/RenewalDtoRecurringPeriodUnits","description":"Recurring Period Units"},"escalatorConditions":{"type":"string","description":"Escalator Conditions"},"renewalCriteria":{"type":"string","description":"Renewal Criteria"},"renewalCriteriaDetails":{"type":"string","description":"Renewal Criteria Details"},"termEndDate":{"type":"string","description":"Term End Date"},"escalatorClauseSummary":{"type":"string","description":"Escalator Clause Summary"},"summary":{"type":"string","description":"Summary"},"quotes":{"type":"string","description":"Quotes"},"draftContractId":{"type":["string","null"],"description":"Id of the draft renewal contract. Null until the contract is approved; after the renewal is executed it points to the new renewal contract."}},"required":["id","contractId","status","draftContractId"],"title":"RenewalDto"},"Renewals_IntegratorsApiRenewalsController_cancelRenewal_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/RenewalDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Renewals_IntegratorsApiRenewalsController_cancelRenewal_Response_200"},"CreateRenewalDtoType":{"type":"string","enum":["MUTUAL","AUTOMATIC","UNILATERAL"],"title":"CreateRenewalDtoType"},"CreateRenewalDtoNoticePeriodUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"title":"CreateRenewalDtoNoticePeriodUnits"},"CreateRenewalDtoRenewalLengthUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"title":"CreateRenewalDtoRenewalLengthUnits"},"CreateRenewalDtoPriceIncreaseUnits":{"type":"string","enum":["PERCENT","DOLLAR"],"title":"CreateRenewalDtoPriceIncreaseUnits"},"CreateRenewalDtoRecurringPeriodUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"title":"CreateRenewalDtoRecurringPeriodUnits"},"CreateRenewalDto":{"type":"object","properties":{"type":{"oneOf":[{"$ref":"#/components/schemas/CreateRenewalDtoType"},{"type":"null"}]},"noticePeriod":{"type":["number","null"],"format":"double"},"noticePeriodUnits":{"oneOf":[{"$ref":"#/components/schemas/CreateRenewalDtoNoticePeriodUnits"},{"type":"null"}]},"renewalLength":{"type":["number","null"],"format":"double"},"renewalLengthUnits":{"oneOf":[{"$ref":"#/components/schemas/CreateRenewalDtoRenewalLengthUnits"},{"type":"null"}]},"maxNumberOfRenewals":{"type":["number","null"],"format":"double","description":"Use -1 for unlimited renewals"},"sameConditions":{"type":["boolean","null"]},"priceIncrease":{"type":["number","null"],"format":"double"},"priceIncreaseUnits":{"oneOf":[{"$ref":"#/components/schemas/CreateRenewalDtoPriceIncreaseUnits"},{"type":"null"}]},"recurringPeriod":{"type":["number","null"],"format":"double"},"recurringPeriodUnits":{"oneOf":[{"$ref":"#/components/schemas/CreateRenewalDtoRecurringPeriodUnits"},{"type":"null"}]},"escalatorConditions":{"type":["string","null"]},"renewalCriteria":{"type":["string","null"]},"renewalCriteriaDetails":{"type":["string","null"]},"termEndDate":{"type":["string","null"]}},"title":"CreateRenewalDto"},"Renewals_IntegratorsApiContractRenewalController_createRenewal_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/RenewalDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Renewals_IntegratorsApiContractRenewalController_createRenewal_Response_201"},"ExecuteRenewalDto":{"type":"object","properties":{"excludedBillingTermIds":{"type":"array","items":{"type":"string"},"description":"Billing term ids on the draft renewal contract to leave out of the renewal. Ids not on the current draft are ignored."}},"title":"ExecuteRenewalDto"},"ExecuteRenewalResponseDto":{"type":"object","properties":{"eventId":{"type":"string","description":"Outbox event id for the execute workflow"},"workflowId":{"type":"string","description":"Workflow id; repeat calls for the same draft return the same one"},"deduped":{"type":"boolean","description":"True when an execution for the same draft was already running; this call's payload was not delivered to that execution."}},"required":["eventId","workflowId","deduped"],"title":"ExecuteRenewalResponseDto"},"Renewals_IntegratorsApiRenewalsController_executeRenewal_Response_202":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/ExecuteRenewalResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Renewals_IntegratorsApiRenewalsController_executeRenewal_Response_202"},"Renewals_IntegratorsApiRenewalsController_getRenewal_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/RenewalDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Renewals_IntegratorsApiRenewalsController_getRenewal_Response_200"},"UpdateRenewalDtoType":{"type":"string","enum":["MUTUAL","AUTOMATIC","UNILATERAL"],"title":"UpdateRenewalDtoType"},"UpdateRenewalDtoNoticePeriodUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"title":"UpdateRenewalDtoNoticePeriodUnits"},"UpdateRenewalDtoRenewalLengthUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"title":"UpdateRenewalDtoRenewalLengthUnits"},"UpdateRenewalDtoPriceIncreaseUnits":{"type":"string","enum":["PERCENT","DOLLAR"],"title":"UpdateRenewalDtoPriceIncreaseUnits"},"UpdateRenewalDtoRecurringPeriodUnits":{"type":"string","enum":["DAY","MONTH","YEAR"],"title":"UpdateRenewalDtoRecurringPeriodUnits"},"UpdateRenewalDto":{"type":"object","properties":{"type":{"oneOf":[{"$ref":"#/components/schemas/UpdateRenewalDtoType"},{"type":"null"}]},"noticePeriod":{"type":["number","null"],"format":"double"},"noticePeriodUnits":{"oneOf":[{"$ref":"#/components/schemas/UpdateRenewalDtoNoticePeriodUnits"},{"type":"null"}]},"renewalLength":{"type":["number","null"],"format":"double"},"renewalLengthUnits":{"oneOf":[{"$ref":"#/components/schemas/UpdateRenewalDtoRenewalLengthUnits"},{"type":"null"}]},"maxNumberOfRenewals":{"type":["number","null"],"format":"double","description":"Use -1 for unlimited renewals"},"sameConditions":{"type":["boolean","null"]},"priceIncrease":{"type":["number","null"],"format":"double"},"priceIncreaseUnits":{"oneOf":[{"$ref":"#/components/schemas/UpdateRenewalDtoPriceIncreaseUnits"},{"type":"null"}]},"recurringPeriod":{"type":["number","null"],"format":"double"},"recurringPeriodUnits":{"oneOf":[{"$ref":"#/components/schemas/UpdateRenewalDtoRecurringPeriodUnits"},{"type":"null"}]},"escalatorConditions":{"type":["string","null"]},"renewalCriteria":{"type":["string","null"]},"renewalCriteriaDetails":{"type":["string","null"]},"termEndDate":{"type":["string","null"]}},"title":"UpdateRenewalDto"},"Renewals_IntegratorsApiRenewalsController_updateRenewal_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/RenewalDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Renewals_IntegratorsApiRenewalsController_updateRenewal_Response_200"},"V3ReportsCashForecastingGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ReportsCashForecastingGetResponsesContentApplicationJsonSchemaPayload"},"Reports_IntegratorsApiReportsController_getReport_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ReportsCashForecastingGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Reports_IntegratorsApiReportsController_getReport_Response_200"},"V3ReportsArrGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V3ReportsArrGetResponsesContentApplicationJsonSchemaPayload"},"Reports_IntegratorsApiReportsController_getARR_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V3ReportsArrGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Reports_IntegratorsApiReportsController_getARR_Response_200"},"CreateCustomerNoteV3DtoNote":{"type":"object","properties":{},"description":"Note text to attach to the customer.","title":"CreateCustomerNoteV3DtoNote"},"CreateCustomerNoteV3Dto":{"type":"object","properties":{"note":{"$ref":"#/components/schemas/CreateCustomerNoteV3DtoNote","description":"Note text to attach to the customer."}},"required":["note"],"title":"CreateCustomerNoteV3Dto"},"CustomerNoteV3DtoId":{"type":"object","properties":{},"description":"Unique identifier of the note","title":"CustomerNoteV3DtoId"},"CustomerNoteV3DtoCustomerId":{"type":"object","properties":{},"description":"Customer this note belongs to","title":"CustomerNoteV3DtoCustomerId"},"CustomerNoteV3DtoNote":{"type":"object","properties":{},"description":"Note text","title":"CustomerNoteV3DtoNote"},"CustomerNoteV3DtoAuthorId":{"type":"object","properties":{},"description":"Tabs user who created the API key that wrote this note","title":"CustomerNoteV3DtoAuthorId"},"CustomerNoteV3DtoCreatedAt":{"type":"object","properties":{},"description":"When the note was created","title":"CustomerNoteV3DtoCreatedAt"},"CustomerNoteV3DtoUpdatedAt":{"type":"object","properties":{},"description":"When the note was last updated","title":"CustomerNoteV3DtoUpdatedAt"},"CustomerNoteV3Dto":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CustomerNoteV3DtoId","description":"Unique identifier of the note"},"customerId":{"$ref":"#/components/schemas/CustomerNoteV3DtoCustomerId","description":"Customer this note belongs to"},"note":{"$ref":"#/components/schemas/CustomerNoteV3DtoNote","description":"Note text"},"authorId":{"$ref":"#/components/schemas/CustomerNoteV3DtoAuthorId","description":"Tabs user who created the API key that wrote this note"},"createdAt":{"$ref":"#/components/schemas/CustomerNoteV3DtoCreatedAt","description":"When the note was created"},"updatedAt":{"$ref":"#/components/schemas/CustomerNoteV3DtoUpdatedAt","description":"When the note was last updated"}},"required":["id","customerId","note","authorId","createdAt","updatedAt"],"title":"CustomerNoteV3Dto"},"Customer_Notes_IntegratorsApiCustomerNotesController_createCustomerNote_Response_201":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/CustomerNoteV3Dto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customer Notes_IntegratorsApiCustomerNotesController_createCustomerNote_Response_201"},"Customer_Notes_IntegratorsApiCustomerNotesController_listCustomerNotes_Response_200":{"type":"object","properties":{"payload":{"type":"array","items":{"$ref":"#/components/schemas/CustomerNoteV3Dto"},"description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Customer Notes_IntegratorsApiCustomerNotesController_listCustomerNotes_Response_200"},"DeleteErpMetadataDtoEntityType":{"type":"string","enum":["CUSTOMER","INVOICE","INVOICE_LINE_ITEM"],"description":"The entity type for every item in this request. One request handles a single entity type.","title":"DeleteErpMetadataDtoEntityType"},"DeleteErpMetadataItemDtoErpSource":{"type":"string","enum":["QUICKBOOKS","ORDERTIME","NETSUITE","SALESFORCE","HUBSPOT","BACKEND","AVALARA","ORUM","ANROK","STRIPE","RILLET","SAGE_INTACCT","SLACK","SPHERE","CAMPFIRE","TABS_PAYMENTS"],"description":"ERP source the metadata is stored under (e.g. NETSUITE). Case-insensitive — `netsuite` and `NETSUITE` both work. Only metadata for this source is touched.","title":"DeleteErpMetadataItemDtoErpSource"},"DeleteErpMetadataItemDto":{"type":"object","properties":{"entityId":{"type":"string","description":"Tabs id of the entity — a customer id when entityType is CUSTOMER, an invoice id when INVOICE, an invoice line item id when INVOICE_LINE_ITEM"},"erpSource":{"$ref":"#/components/schemas/DeleteErpMetadataItemDtoErpSource","description":"ERP source the metadata is stored under (e.g. NETSUITE). Case-insensitive — `netsuite` and `NETSUITE` both work. Only metadata for this source is touched."},"keys":{"type":"array","items":{"type":"string"},"description":"Metadata keys to remove from the entity's stored ERP metadata for this source. Keys not present are ignored. Other keys are left as-is."}},"required":["entityId","erpSource","keys"],"title":"DeleteErpMetadataItemDto"},"DeleteErpMetadataDto":{"type":"object","properties":{"entityType":{"$ref":"#/components/schemas/DeleteErpMetadataDtoEntityType","description":"The entity type for every item in this request. One request handles a single entity type."},"items":{"type":"array","items":{"$ref":"#/components/schemas/DeleteErpMetadataItemDto"},"description":"The entities to remove metadata keys from, all of entityType."}},"required":["entityType","items"],"title":"DeleteErpMetadataDto"},"DeleteErpMetadataResultDtoErpSource":{"type":"string","enum":["QUICKBOOKS","ORDERTIME","NETSUITE","SALESFORCE","HUBSPOT","BACKEND","AVALARA","ORUM","ANROK","STRIPE","RILLET","SAGE_INTACCT","SLACK","SPHERE","CAMPFIRE","TABS_PAYMENTS"],"description":"ERP source the metadata is stored under.","title":"DeleteErpMetadataResultDtoErpSource"},"DeleteErpMetadataResultDto":{"type":"object","properties":{"entityId":{"type":"string","description":"Tabs id of the entity the keys were removed from."},"erpSource":{"$ref":"#/components/schemas/DeleteErpMetadataResultDtoErpSource","description":"ERP source the metadata is stored under."},"removedKeys":{"type":"array","items":{"type":"string"},"description":"Keys actually removed — the subset of requested keys that were present on the stored metadata."},"found":{"type":"boolean","description":"Whether a stored metadata record existed for this entity and ERP source."}},"required":["entityId","erpSource","removedKeys","found"],"title":"DeleteErpMetadataResultDto"},"DeleteErpMetadataResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeleteErpMetadataResultDto"}}},"required":["items"],"title":"DeleteErpMetadataResponseDto"},"ERP_Metadata_IntegratorsApiErpMetadataControllerV3_deleteErpMetadata_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/DeleteErpMetadataResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"ERP Metadata_IntegratorsApiErpMetadataControllerV3_deleteErpMetadata_Response_200"},"InfoResponse":{"type":"object","properties":{"application":{"type":"string","description":"Application name"},"version":{"type":"string","description":"Application version"},"description":{"type":"string","description":"Application description"}},"description":"Application information response","title":"InfoResponse"},"HealthGetResponsesContentApplicationJsonSchemaInfo":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"],"title":"HealthGetResponsesContentApplicationJsonSchemaInfo"},"HealthGetResponsesContentApplicationJsonSchemaError":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"],"title":"HealthGetResponsesContentApplicationJsonSchemaError"},"HealthGetResponsesContentApplicationJsonSchemaDetails":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"],"title":"HealthGetResponsesContentApplicationJsonSchemaDetails"},"Health_HealthController_check_Response_200":{"type":"object","properties":{"status":{"type":"string"},"info":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/HealthGetResponsesContentApplicationJsonSchemaInfo"}},"error":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/HealthGetResponsesContentApplicationJsonSchemaError"}},"details":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/HealthGetResponsesContentApplicationJsonSchemaDetails"}}},"title":"Health_HealthController_check_Response_200"},"HealthController_checkRequestServiceUnavailableError":{"type":"object","properties":{"status":{"type":"string"},"info":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/HealthGetResponsesContentApplicationJsonSchemaInfo"}},"error":{"type":["object","null"],"additionalProperties":{"$ref":"#/components/schemas/HealthGetResponsesContentApplicationJsonSchemaError"}},"details":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/HealthGetResponsesContentApplicationJsonSchemaDetails"}}},"title":"HealthController_checkRequestServiceUnavailableError"},"Health_HealthController_live_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Health_HealthController_live_Response_200"},"HealthResponseStatus":{"type":"string","enum":["ok","partial","down"],"description":"Overall health status","title":"HealthResponseStatus"},"DependencyStatusStatus":{"type":"string","enum":["up","down"],"description":"Status of the dependency","title":"DependencyStatusStatus"},"DependencyStatus":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/DependencyStatusStatus","description":"Status of the dependency"},"error":{"type":"string","description":"Error message if the dependency is down"}},"description":"Status information for a dependency","title":"DependencyStatus"},"HealthResponseError":{"type":"object","properties":{},"description":"Error information (empty if healthy)","title":"HealthResponseError"},"HealthResponse":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/HealthResponseStatus","description":"Overall health status"},"info":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DependencyStatus"},"description":"Health information for each dependency"},"error":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/HealthResponseError"},"description":"Error information (empty if healthy)"},"details":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DependencyStatus"},"description":"Detailed health information for each dependency"}},"description":"Health check response containing status of application and dependencies","title":"HealthResponse"},"TriggerCrmSyncResponseDtoStatus":{"type":"string","enum":["triggered","pooled"],"description":"Outcome of the trigger. `triggered`: a sync started now. `pooled`: a sync was already running, so one follow-up is queued.","title":"TriggerCrmSyncResponseDtoStatus"},"TriggerCrmSyncResponseDto":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/TriggerCrmSyncResponseDtoStatus","description":"Outcome of the trigger. `triggered`: a sync started now. `pooled`: a sync was already running, so one follow-up is queued."}},"required":["status"],"title":"TriggerCrmSyncResponseDto"},"Integrations_IntegratorsApiIntegrationsController_triggerCrmSync_Response_202":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/TriggerCrmSyncResponseDto","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Integrations_IntegratorsApiIntegrationsController_triggerCrmSync_Response_202"},"V31RevenueGetResponsesContentApplicationJsonSchemaPayload":{"type":"object","properties":{},"description":"Response payload, will be empty when success is false","title":"V31RevenueGetResponsesContentApplicationJsonSchemaPayload"},"Revenue_IntegratorsAPIRevenueV31Controller_getRevenues_Response_200":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/V31RevenueGetResponsesContentApplicationJsonSchemaPayload","description":"Response payload, will be empty when success is false"},"success":{"type":"boolean","description":"Boolean with true=success, false=failure"},"message":{"type":"string","description":"Plain-text description of the result"},"error":{"$ref":"#/components/schemas/IntegratorsApiError","description":"json element with any error messages or warnings"}},"required":["payload","success","message"],"title":"Revenue_IntegratorsAPIRevenueV31Controller_getRevenues_Response_200"}},"securitySchemes":{"custom-header":{"type":"apiKey","in":"header","name":"Authorization"}}}}