Wingspan Invoice Management API

Covers endpoints related to invoice creation, retrieval, and management. This includes both member and client invoices, along with specific actions like sending invoices by email and managing invoice templates.

OpenAPI Specification

wingspan-invoice-management-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Wingspan Payments 1099 Operations Invoice Management API
  description: Payments
  termsOfService: https://www.wingspan.app
  contact:
    name: Wingspan API Support
    url: https://www.wingspan.app
    email: support@wingspan.app
  license:
    name: UNLICENSED
    url: https://UNLICENSED
  version: 1.0.0-oas3.1
servers:
- url: https://api.wingspan.app
  description: Wingspan's Payments API in Production
  x-speakeasy-server-id: prod
- url: https://stagingapi.wingspan.app
  description: Wingspan's Payments API in Staging
  x-speakeasy-server-id: staging
security:
- BearerAuth: []
tags:
- name: Invoice Management
  description: Covers endpoints related to invoice creation, retrieval, and management. This includes both member and client invoices, along with specific actions like sending invoices by email and managing invoice templates.
paths:
  /payments/invoice:
    get:
      summary: Retrieve All Member Invoices
      operationId: getMemberInvoices
      x-speakeasy-name-override: get_member
      tags:
      - Invoice Management
      description: Fetch a complete list of invoices associated with members, providing a comprehensive overview of all member-related billing details.
      responses:
        '200':
          description: A list of invoices
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Invoice'
    post:
      summary: Initiate New Invoice for a Member
      operationId: createInvoice
      x-speakeasy-name-override: create
      tags:
      - Invoice Management
      description: Facilitates the creation of a new invoice for a member using the provided invoice details. Useful for adding new billing records.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceCreateRequest'
      responses:
        '200':
          description: An invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
  /payments/invoice/{id}:
    get:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Fetch Invoice by ID
      operationId: getInvoice
      x-speakeasy-name-override: get
      tags:
      - Invoice Management
      description: Retrieve the specifics of an individual invoice associated with a member using its unique ID. Ideal for diving into invoice details.
      responses:
        '200':
          description: An invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
    patch:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Modify Existing Invoice Details
      operationId: updateInvoice
      x-speakeasy-name-override: update
      tags:
      - Invoice Management
      description: Allows updates to the details of an existing member invoice using its unique ID. Useful for making corrections or updates to billing records.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceUpdateRequest'
      responses:
        '200':
          description: An invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
    delete:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Remove Invoice Record by ID
      operationId: deleteInvoice
      x-speakeasy-name-override: delete
      tags:
      - Invoice Management
      description: Enables the deletion of a specific member's invoice using its unique ID, helping in maintaining accurate billing records.
      responses:
        '200':
          description: An invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
  /payments/client/invoice:
    get:
      summary: Retrieve All Invoices Generated by a Client
      operationId: listGeneratedInvoices
      x-speakeasy-name-override: list
      tags:
      - Invoice Management
      description: Fetch a comprehensive list of invoices that have been generated by a client, offering an overview of all client-related billing records.
      responses:
        '200':
          description: A list of Client Created Invoices
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientInvoice'
    post:
      summary: Generate a New Invoice on Behalf of the Client
      operationId: createGeneratedInvoice
      x-speakeasy-name-override: create_generated
      tags:
      - Invoice Management
      description: Enables the creation of a new invoice on behalf of a client using the provided details, facilitating new billing records.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientInvoiceCreateRequest'
      responses:
        '200':
          description: A client created invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoice'
  /payments/client/invoice/{id}:
    get:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Fetch Specific Client-Generated Invoice by ID
      operationId: getGeneratedInvoice
      x-speakeasy-name-override: get_generated
      tags:
      - Invoice Management
      description: Retrieve detailed information of an individual invoice created by a client using its unique ID for in-depth billing analysis.
      responses:
        '200':
          description: A client created invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoice'
    patch:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Modify an Existing Client-Generated Invoice
      operationId: updateGeneratedInvoice
      x-speakeasy-name-override: update_generated
      tags:
      - Invoice Management
      description: Allows for modifications to a client-generated invoice using its unique ID, ensuring billing details remain current and accurate.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientInvoiceUpdateRequest'
      responses:
        '200':
          description: A client created invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoice'
  /payments/client/invoice/{invoice_id}/pay:
    post:
      parameters:
      - in: path
        required: true
        name: invoice_id
        description: Unique identifier of an invoice
        schema:
          type: string
      summary: Execute Payment for a Client-Generated Invoice
      operationId: executeClientInvoicePayment
      x-speakeasy-name-override: execute
      tags:
      - Invoice Management
      description: Process a payment for a specific client-generated invoice using the provided details, ensuring the invoice is marked as settled.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayRequest'
      responses:
        '200':
          description: A client created invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoice'
  /payments/invoice-template:
    get:
      summary: Retrieve all available invoice templates
      operationId: listInvoiceTemplates
      x-speakeasy-name-override: list_templates
      tags:
      - Invoice Management
      description: Fetches a comprehensive list of all invoice templates in the system.
      responses:
        '200':
          description: At list of invoice templates
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InvoiceTemplate'
    post:
      summary: Create a new invoice template
      operationId: createInvoiceTemplate
      x-speakeasy-name-override: create_template
      tags:
      - Invoice Management
      description: Creates a new invoice template based on the provided details.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceTemplateCreateRequest'
      responses:
        '200':
          description: A recurring invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceTemplate'
  /payments/invoice-template/{id}:
    get:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Retrieve a specific invoice template by ID
      operationId: getInvoiceTemplate
      x-speakeasy-name-override: get_template
      tags:
      - Invoice Management
      description: Fetches details of the invoice template corresponding to the provided unique identifier.
      responses:
        '200':
          description: A recurring invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceTemplate'
    patch:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Modify details of an existing invoice template
      operationId: updateInvoiceTemplate
      x-speakeasy-name-override: update_template
      tags:
      - Invoice Management
      description: Updates details of the specified invoice template based on the provided information.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceTemplateUpdateRequest'
      responses:
        '200':
          description: A recurring invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceTemplate'
    delete:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Remove a specific invoice template
      operationId: deleteInvoiceTemplate
      x-speakeasy-name-override: delete_template
      tags:
      - Invoice Management
      description: Deletes the invoice template associated with the provided unique identifier.
      responses:
        '200':
          description: A recurring invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceTemplate'
  /payments/client/invoice-template:
    get:
      summary: Retrieve all client-generated invoice templates
      operationId: listClientInvoiceTemplates
      x-speakeasy-name-override: list_client
      tags:
      - Invoice Management
      description: Fetches a comprehensive list of all invoice templates created by clients in the system.
      responses:
        '200':
          description: A list of Client Created Invoice Template
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientInvoiceTemplate'
    post:
      summary: Create a new client-generated invoice template
      operationId: createClientInvoiceTemplate
      x-speakeasy-name-override: create_client
      tags:
      - Invoice Management
      description: Allows clients to create a new invoice template based on the provided details.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientInvoiceTemplateCreateRequest'
      responses:
        '200':
          description: A client created invoiceTemplate (recurring Invoice)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoiceTemplate'
  /payments/client/invoice-template/{id}:
    get:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Fetch a specific client-generated invoice template by ID
      operationId: getClientInvoiceTemplate
      x-speakeasy-name-override: get_client
      tags:
      - Invoice Management
      description: Provides details of the client-generated invoice template associated with the provided unique identifier.
      responses:
        '200':
          description: A client created invoiceTemplate (recurring Invoice)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoiceTemplate'
    patch:
      parameters:
      - in: path
        required: true
        name: id
        description: Unique identifier
        schema:
          type: string
      summary: Modify a client-generated invoice template
      operationId: updateClientInvoiceTemplate
      x-speakeasy-name-override: update_client
      tags:
      - Invoice Management
      description: Updates the specified client-generated invoice template with the provided modifications.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientInvoiceTemplateUpdateRequest'
      responses:
        '200':
          description: A client created invoiceTemplate (recurring Invoice)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoiceTemplate'
  /payments/invoice/{invoice_id}/generate:
    post:
      parameters:
      - in: path
        required: true
        name: invoice_id
        description: Unique identifier of an invoice
        schema:
          type: string
      summary: Generate a PDF for a specific invoice
      operationId: generateSpecificInvoice
      x-speakeasy-name-override: generate
      tags:
      - Invoice Management
      description: This endpoint allows for the dynamic generation of a PDF document for a given invoice, identified by its unique ID.
      responses:
        '200':
          description: Response from generation of invoice pdf
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicePdfGenerationResponse'
  /payments/invoice/{invoice_id}/send:
    post:
      parameters:
      - in: path
        required: true
        name: invoice_id
        description: Unique identifier of an invoice
        schema:
          type: string
      summary: Send an invoice by email
      operationId: sendInvoiceEmail
      x-speakeasy-name-override: send
      tags:
      - Invoice Management
      description: Use this endpoint to send an invoice by email using its unique ID for identification.
      responses:
        '200':
          description: An invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
  /payments/invoice/{invoice_id}/refund:
    post:
      parameters:
      - in: path
        required: true
        name: invoice_id
        description: Unique identifier of an invoice
        schema:
          type: string
      summary: Refund a deposited invoice
      operationId: refundDepositedInvoice
      x-speakeasy-name-override: refund
      tags:
      - Invoice Management
      description: Use this endpoint to refund a specific amount of a deposited invoice.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceRefundRequest'
      responses:
        '200':
          description: An invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
  /payments/client/invoice/{invoice_id}/fees:
    get:
      parameters:
      - in: path
        required: true
        name: invoice_id
        description: Unique identifier of an invoice
        schema:
          type: string
      summary: Retrieve Fees Associated with a Client's Invoice
      operationId: getInvoiceFees
      x-speakeasy-name-override: get_fees
      tags:
      - Invoice Management
      description: Obtain a detailed breakdown of all the fees associated with a specific client's invoice, identified by its unique ID.
      responses:
        '200':
          description: Fees on Invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceFeeCalculation'
  /payments/invoice/test/create:
    post:
      summary: Generate Test Invoice for a Client
      operationId: generateTestInvoice
      x-speakeasy-name-override: generate_test
      tags:
      - Invoice Management
      description: Use this endpoint to create a test invoice for testing and validation purposes. This invoice will mimic a client's real invoice.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestInvoiceCreate'
      responses:
        '200':
          description: A client created invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvoice'
components:
  schemas:
    InvoiceTemplateCreateRequest:
      type: object
      properties:
        invoiceData:
          $ref: '#/components/schemas/InvoiceDataCreateRequest'
        status:
          type: string
          enum:
          - Active
          - Draft
          - Expired
          - Cancelled
        dueInDays:
          type:
          - number
          - 'null'
        frequency:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Frequency'
        isSchedulingOnly:
          type:
          - boolean
          - 'null'
        labels:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/LabelsDictionary'
        scheduleDates:
          type:
          - array
          - 'null'
          items:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ScheduleDate'
        sendEmails:
          type:
          - boolean
          - 'null'
      required:
      - invoiceData
      - status
    InvoicePayoutDestination:
      type: object
      properties:
        amount:
          type: number
        description:
          type: string
        destinationType:
          type: string
          enum:
          - Account
          - Card
          - InternalAccount
          - PaperCheck
          - WeGift
        payoutMethod:
          type: string
          enum:
          - Standard
          - Instant
          - Expedited
          - Check
          - ECheck
        percentage:
          type: number
        transferId:
          type: string
        brand:
          type:
          - string
          - 'null'
        destinationId:
          type:
          - string
          - 'null'
        last4:
          type:
          - string
          - 'null'
      required:
      - amount
      - description
      - destinationType
      - payoutMethod
      - percentage
      - transferId
    InvoiceRefundDestination:
      type: object
      properties:
        amount:
          type: number
        createdAt:
          type: string
        destinationType:
          type: string
          enum:
          - Account
          - Card
          - InternalAccount
          - PaperCheck
          - WeGift
        events:
          $ref: '#/components/schemas/InvoiceRefundEvents'
        labels:
          $ref: '#/components/schemas/LabelsDictionary'
        refundType:
          type: string
          enum:
          - Account
          - TaxWithholding
          - Wallet
          - Card
        updatedAt:
          type: string
        destinationId:
          type:
          - string
          - 'null'
        stripeTransferId:
          type:
          - string
          - 'null'
        transactionId:
          type:
          - string
          - 'null'
        transferId:
          type:
          - string
          - 'null'
      required:
      - amount
      - createdAt
      - destinationType
      - events
      - labels
      - refundType
      - updatedAt
    MemberClientForm1099Balances:
      type: object
      properties:
        adjustments:
          type: number
        deliveryMethod:
          type: string
          enum:
          - Electronic
          - Mail
        exclusionReason:
          type: string
          enum:
          - BelowThreshold
          - CompanyStructure
          - NonUsEntity
        form1099Generated:
          type: boolean
        paymentProcessingFees:
          type: number
        platformIncome:
          type: number
        status:
          type: string
          enum:
          - Ready
          - NeedsActionInfo
          - NeedsActionDispute
          - Submitted
          - Rejected
          - Accepted
          - Excluded
        type:
          type: string
          enum:
          - NEC
        correction:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Form1099Correction'
        dispute:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/8a9c6cb49482a98cdd603ff09858cdc3e5ef6ad9807c876c4161d925a96694a5'
        events:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Form1099Events'
        taxForm:
          oneOf:
          - type: 'null'
          - type: object
        taxFormId:
          type:
          - string
          - 'null'
      required:
      - adjustments
      - deliveryMethod
      - exclusionReason
      - form1099Generated
      - paymentProcessingFees
      - platformIncome
      - status
      - type
    Frequency:
      type: object
      properties:
        startDate:
          type: string
        daily:
          type:
          - boolean
          - 'null'
        dayInInterval:
          type:
          - number
          - 'null'
        endDate:
          type:
          - string
          - 'null'
        every:
          type:
          - number
          - 'null'
        interval:
          type:
          - string
          - 'null'
          enum:
          - Week
          - Month
          - null
        twicePerMonth:
          type:
          - boolean
          - 'null'
      required:
      - startDate
    InvoiceAppliedDeductions:
      type: object
      properties:
        amount:
          type: number
        deductionId:
          type: string
        name:
          type: string
        transferId:
          type:
          - string
          - 'null'
      required:
      - amount
      - deductionId
      - name
    InvoiceCollaborator:
      type: object
      properties:
        amount:
          type: number
        currency:
          type: string
          enum:
          - USD
          - CAD
        description:
          type: string
        memberClientId:
          type: string
        invoiceId:
          type:
          - string
          - 'null'
      required:
      - amount
      - currency
      - description
      - memberClientId
    InvoiceTemplateUpdateRequest:
      type: object
      properties:
        accountId:
          type:
          - string
          - 'null'
        autoPaymentRequired:
          type:
          - boolean
          - 'null'
        dueInDays:
          type:
          - number
          - 'null'
        frequency:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/FrequencyUpdate'
        invoiceData:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/InvoiceUpdateRequest'
        isSchedulingOnly:
          type:
          - boolean
          - 'null'
        labels:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/LabelsDictionary'
        paymentMethodId:
          type:
          - string
          - 'null'
        scheduleDates:
          type:
          - array
          - 'null'
          items:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ScheduleDateUpdate'
        sendEmails:
          type:
          - boolean
          - 'null'
        status:
          type:
          - string
          - 'null'
          enum:
          - Active
          - Draft
          - Expired
          - Cancelled
          - null
    Fees:
      type: object
      properties:
        lateFee:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Fee'
        processingFee:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Fee'
    Form1099Events:
      type: object
      properties:
        acceptedByCollaboratorAt:
          type:
          - string
          - 'null'
        createdAt:
          type:
          - string
          - 'null'
        postFilingSuggestionMadeAt:
          type:
          - string
          - 'null'
        postFilingSuggestionResolvedAt:
          type:
          - string
          - 'null'
        submittedForCollaboratorReviewAt:
          type:
          - string
          - 'null'
        suggestionMadeAt:
          type:
          - string
          - 'null'
        suggestionResolvedAt:
          type:
          - string
          - 'null'
        updatedAt:
          type:
          - string
          - 'null'
    InvoiceEvents:
      type: object
      properties:
        approvedAt:
          type:
          - string
          - 'null'
        cancelledAt:
          type:
          - string
          - 'null'
        clientDeclinedAt:
          type:
          - string
          - 'null'
        clientResolvedDisputeAt:
          type:
          - string
          - 'null'
        depositedAt:
          type:
          - string
          - 'null'
        depositedToPayoutPlatformAt:
          type:
          - string
          - 'null'
        disputedAt:
          type:
          - string
          - 'null'
        emailMarkedAsSpamAt:
          type:
          - string
          - 'null'
        emailReceivedAt:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        emailUndeliverableAt:
          type:
          - string
          - 'null'
        emailViewedAt:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        estimatedDepositAt:
          type:
          - string
          - 'null'
        instantPayoutAt:
          type:
          - string
          - 'null'
        instantPayoutEligibleAt:
          type:
          - string
          - 'null'
        instantPayoutFailedAt:
          type:
          - string
          - 'null'
        markedPaidAt:
          type:
          - string
          - 'null'
        memberAcceptedAt:
          type:
          - string
          - 'null'
        memberDisputedAt:
          type:
          - string
          - 'null'
        memberResubmittedAt:
          type:
          - string
          - 'null'
        openedAt:
          type:
          - string
          - 'null'
        paidAt:
          type:
          - string
          - 'null'
        payAfterAccountVerified:
          type:
          - string
          - 'null'
        paymentFailedAt:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        paymentInTransitAt:
          type:
          - string
          - 'null'
        paymentRetriedAt:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        payoutFailedAt:
          type:
          - string
          - 'null'
        preApprovedAt:
          type:
          - string
          - 'null'
        refundedAt:
          type:
          - string
          - 'null'
        sentAt:
          type:
          - string
          - 'null'
        sentDue3DaysAgoAt:
          type:
          - string
          - 'null'
        sentDue7DaysAgoAt:
          type:
          - string
          - 'null'
        sentDueIn3DaysAt:
          type:
          - string
          - 'null'
        sentDueTodayAt:
          type:
          - string
          - 'null'
        sentInstantPayoutFailedToMember:
          type:
          - string
          - 'null'
        sentManuallyAt:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        sentPaymentConfirmationToClient:
          type:
          - string
          - 'null'
        sentPaymentConfirmationToMember:
          type:
          - string
          - 'null'
        sentPaymentInTransitReminderAt:
          type:
          - string
          - 'null'
        sentPayoutMightBeDelayedToClient:
          type:
          - string
          - 'null'
        sentRecurringPaymentFailedAt:
          type:
          - string
          - 'null'
    DocumentFiles:
      type: object
      properties:
        client:
          type:
          - string
          - 'null'
        member:
          type:
          - string
          - 'null'
    InvoiceLineItemsCreateRequest:
      type: object
      properties:
        costPerUnit:
          type:
          - number
          - 'null'
        description:
          type:
          - string
          - 'null'
        detail:
          type:
          - string
          - 'null'
        discount:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/facb8048736dba546c4c76242d9f8c7111011a7a7483528f37d80226698a1f2b'
        integration:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/3190685832a4970525ea5b0803efff0b36a0202062e1fd8a0bc187acbe156461'
        labels:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/LabelsDictionary'
        quantity:
          type:
          - number
          - 'null'
        reimbursableExpense:
          type:
          - boolean
          - 'null'
        totalCost:
          type:
          - number
          - 'null'
        unit:
          type:
          - string
          - 'null'
    ClientOptions:
      type: object
      properties:
        comment:
          type:
          - string
          - 'null'
        payDate:
          type:
          - string
          - 'null'
        workflowStatus:
          type:
          - string
          - 'null'
          enum:
          - Pending
          - PreApproved
          - Approved
          - PaymentInitiated
          - Funded
          - Declined
          - null
        workflowSubStatus:
          type:
          - string
          - 'null'
          enum:
          - Submitted
          - null
    ClientInvoiceTemplateCreateRequest:
      type: object
      properties:
        clientEmail:
          type: string
        invoiceData:
          $ref: '#/components/schemas/ClientInvoiceDataCreateRequest'
        memberId:
          type: string
        status:
          type: string
          enum:
          - Active
          - Draft
          - Expired
          - Cancelled
        accountId:
          type:
          - string
          - 'null'
        clientCompany:
          type:
          - string
          - 'null'
        clientEmailCC:
          type:
          - array
          - 'null'
          items:
            type:
            - string
            - 'null'
        clientFirstName:
          type:
          

# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wingspan/refs/heads/main/openapi/wingspan-invoice-management-api-openapi.yml