arazzo: 1.0.1
info:
title: Intuit Create and Void Invoice
summary: Create an invoice and void it, carrying the SyncToken forward.
description: >-
Demonstrates a safe correction path. The workflow creates an Invoice,
captures the Id and SyncToken returned by QuickBooks, and then voids the
invoice by replaying that Id and SyncToken in the void request body together
with the required operation=void query parameter. The invoice remains in the
ledger with a voided status. Every step spells out its request inline so the
flow can be read and executed without opening the underlying OpenAPI
description.
version: 1.0.0
x-realizes-capability-ids:
- BC-200.30
x-capability-derivation:
method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
min_confidence: 0.7
sources:
- capability_id: BC-200.30
capability_name: Accounts Receivable Management
spec: intuit-invoices-api-openapi.yml
confidence: 0.85
model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: invoicesApi
url: ../openapi/intuit-invoices-api-openapi.yml
type: openapi
workflows:
- workflowId: create-and-void-invoice
summary: Create an invoice then void it using its returned SyncToken.
description: >-
Creates an Invoice and voids it, passing the captured Id and SyncToken plus
the operation=void parameter the void endpoint requires.
inputs:
type: object
required:
- accessToken
- customerId
- lineAmount
properties:
accessToken:
type: string
description: OAuth 2.0 bearer access token for the QuickBooks company.
customerId:
type: string
description: Id of the customer to invoice.
lineAmount:
type: number
description: Amount of the single invoice line item.
steps:
- stepId: createInvoice
description: Create the invoice that will be voided.
operationId: createInvoice
parameters:
- name: Authorization
in: header
value: "Bearer $inputs.accessToken"
requestBody:
contentType: application/json
payload:
CustomerRef:
value: $inputs.customerId
Line:
- Amount: $inputs.lineAmount
DetailType: SalesItemLineDetail
Description: Services rendered
successCriteria:
- condition: $statusCode == 200
outputs:
invoiceId: $response.body#/Invoice/Id
syncToken: $response.body#/Invoice/SyncToken
- stepId: voidInvoice
description: Void the invoice using its Id, SyncToken, and the operation parameter.
operationId: voidInvoice
parameters:
- name: invoiceId
in: path
value: $steps.createInvoice.outputs.invoiceId
- name: operation
in: query
value: void
- name: Authorization
in: header
value: "Bearer $inputs.accessToken"
requestBody:
contentType: application/json
payload:
Id: $steps.createInvoice.outputs.invoiceId
SyncToken: $steps.createInvoice.outputs.syncToken
successCriteria:
- condition: $statusCode == 200
outputs:
voidedId: $response.body#/Invoice/Id
privateNote: $response.body#/Invoice/PrivateNote
outputs:
invoiceId: $steps.createInvoice.outputs.invoiceId
voidedId: $steps.voidInvoice.outputs.voidedId
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.