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 sourceDescriptions: - name: quickbooksAccounting url: ../openapi/quickbooks-accounting.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