openapi: 3.2.0 info: title: Cacheflow Customers API version: 0.0.3 servers: - url: https://api.getcacheflow.com description: 'Production. Calls are tenant-routed: send Host: .api.getcacheflow.com (per github.com/getcacheflow/api-examples SETUP.md). Host no longer resolves as of 2026-08-13.' - url: https://api.sandbox.getcacheflow.com description: Sandbox. Tenant-routed as .api.sandbox.getcacheflow.com. Host no longer resolves as of 2026-08-13. tags: - name: Customers paths: /api/latest/data/customers: get: tags: - Customers summary: List customers operationId: listCustomers parameters: - name: search in: query schema: type: string - name: sort in: query schema: type: string - name: page in: query schema: type: integer format: int32 default: 0 - name: size in: query schema: type: integer format: int32 default: 100 responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Customer' post: tags: - Customers summary: Create a customer operationId: createCustomer requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomerRequest' responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/Customer' /api/latest/data/customers/{id}: get: tags: - Customers summary: Retrieve a customer operationId: getCustomer parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Customer' delete: tags: - Customers summary: Delete a customer operationId: deleteCustomer parameters: - name: id in: path required: true schema: type: string format: uuid responses: '200': description: OK patch: tags: - Customers summary: Update a customer operationId: patchCustomer parameters: - name: id in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomerRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Customer' /api/latest/data/customers/external/{externalId}: get: tags: - Customers summary: Retrieve a customer by external id operationId: getCustomerByExternalId parameters: - name: externalId in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Customer' components: schemas: ExternalSource: required: - sourceId - sourceType type: object properties: sourceType: type: string enum: - manual - close - plaid - stripe - hubspot - salesforce - avalara - quickbooks - profitwell - netsuite - google - warmly - zapier - cacheflow_checkout sourceId: type: string sourceLink: type: string Address: type: object properties: id: type: string format: uuid createdAt: type: string format: date-time readOnly: true createdBy: type: string updatedAt: type: string format: date-time readOnly: true updatedBy: type: string readOnly: true name: type: string type: type: string streetAddress: type: string subAddress: type: string otherAddress: type: string city: type: string region: type: string regionIso: type: string postalCode: type: string country: type: string countryIso: type: string verifiedAt: type: string format: date-time ObjectReference: type: object properties: referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user id: type: string format: uuid uri: type: string name: type: string type: type: string writeOnly: true enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user CustomerRequest: type: object properties: externalId: type: string source: type: string enum: - manual - close - plaid - stripe - hubspot - salesforce - avalara - quickbooks - profitwell - netsuite - google - warmly - zapier - cacheflow_checkout name: type: string contacts: type: array items: $ref: '#/components/schemas/CreateContactRequest' tin: type: string taxUseCode: type: string enum: - A - B - C - D - E - F - G - H - I - J - K - L - M - N - P - Q - R defaultCurrency: type: string billingAddress: $ref: '#/components/schemas/Address' shippingAddress: $ref: '#/components/schemas/Address' billingContact: $ref: '#/components/schemas/CreateContactRequest' billingContactId: type: string format: uuid taxExempt: type: boolean partner: type: boolean externalSources: type: array items: $ref: '#/components/schemas/ExternalSource' referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user Contact: required: - createdAt - customerReference - deleted - email - id - updatedAt type: object properties: id: type: string format: uuid createdAt: type: string format: date-time createdBy: type: string updatedAt: type: string format: date-time updatedBy: type: string sources: type: array items: $ref: '#/components/schemas/ExternalSource' firstName: type: string lastName: type: string email: type: string role: type: string deleted: type: boolean customerReference: $ref: '#/components/schemas/ObjectReference' referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user Customer: required: - createdAt - deleted - id - name - updatedAt type: object properties: id: type: string format: uuid createdAt: type: string format: date-time createdBy: type: string updatedAt: type: string format: date-time updatedBy: type: string sources: type: array items: $ref: '#/components/schemas/ExternalSource' name: type: string tin: type: string defaultCurrency: type: string billingAddress: $ref: '#/components/schemas/Address' shippingAddress: $ref: '#/components/schemas/Address' billingContact: $ref: '#/components/schemas/Contact' deleted: type: boolean taxUseCode: type: string enum: - A - B - C - D - E - F - G - H - I - J - K - L - M - N - P - Q - R partner: type: boolean referenceType: type: string enum: - account - apiwebhook - apitoken - approvalgroup - attachmentconfig - authidentity - billingschedule - companyInfo - connectorSyncEvent - contact - contentTemplate - contract - contractitem - contractitemlevel - currency - customer - docusignaccount - document - documentversion - group - invite - invoice - invoiceConfiguration - organization - orgconfig - orgidentitytoken - payment - paymentMethod - paymentSchedule - paymentTerm - pricebook - pricebookentry - product - productlevel - productusage - proposal - proposalapprovalrule - proposalevent - proposalitem - proposaliteminterval - proposalitemlevel - proposaloption - refund - renewalconfiguration - signature - signingdocument - transfer - transferevent - unit - user taxExempt: type: boolean syncable: type: boolean CreateContactRequest: required: - email - firstName - lastName type: object properties: externalId: type: string source: type: string enum: - manual - close - plaid - stripe - hubspot - salesforce - avalara - quickbooks - profitwell - netsuite - google - warmly - zapier - cacheflow_checkout firstName: type: string lastName: type: string email: type: string role: type: string externalSources: type: array items: $ref: '#/components/schemas/ExternalSource'