Wingspan Reporting and Analytics API

Includes endpoints for generating various reports and analytics, such as payables reports, collaborators reports, and aging reports.

OpenAPI Specification

wingspan-reporting-and-analytics-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Wingspan Payments 1099 Operations Reporting and Analytics 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: Reporting and Analytics
  description: Includes endpoints for generating various reports and analytics, such as payables reports, collaborators reports, and aging reports.
paths:
  /payments/reports/collaborators:
    get:
      summary: Retrieve detailed information on all collaborators
      operationId: listDetailedInformationCollaborators
      x-speakeasy-name-override: list_detailed_collaborator
      tags:
      - Reporting and Analytics
      description: Fetches comprehensive data on all collaborators, including their activities and current status, as listed in the reports.
      responses:
        '200':
          description: Collaborators list in the report
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CollaboratorsReportResponse'
  /payments/reports/collaborators/payables-summary:
    get:
      summary: Obtain a summarized report of payable amounts for each collaborator
      operationId: getSummarizedReport
      x-speakeasy-name-override: get
      tags:
      - Reporting and Analytics
      description: Gathers and presents a concise summary showcasing the payable amounts due to each collaborator, helping in financial planning and payout strategies.
      responses:
        '200':
          description: Collaborators payouts summary report
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CollaboratorsPayoutsSummaryReportResponse'
  /payments/reports/payroll/{payrollId}:
    get:
      parameters:
      - in: path
        required: true
        name: payrollId
        description: Unique identifier of a invoice with some constraints like invoice type
        schema:
          type: string
      summary: Extract detailed report of payables associated with a particular payroll run
      operationId: getPayrollDetailedReport
      x-speakeasy-name-override: get_payroll_report
      tags:
      - Reporting and Analytics
      description: Offers a deep dive into the payables connected to a specific payroll run, facilitating better management and reconciliation of payroll-related finances.
      responses:
        '200':
          description: Payroll report with line items and payroll summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayrollReportResponse'
  /payments/reports/aging/payables:
    get:
      summary: Retrieve Aging Report for Payables
      operationId: listAgingReportPayables
      x-speakeasy-name-override: list_payable
      tags:
      - Reporting and Analytics
      description: Access a detailed report that showcases the list of payables categorized by age.
      responses:
        '200':
          description: Payables list grouped by age
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayableAgingReportResponse'
  /payments/reports/aging/line-items:
    get:
      summary: Obtain Aging Report for Line Items
      operationId: listAgingReportLineItems
      x-speakeasy-name-override: list_line_item
      tags:
      - Reporting and Analytics
      description: Retrieve a comprehensive report detailing line items that have been open for a set number of days.
      responses:
        '200':
          description: Line items list grouped by age
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LineItemsAgingReportResponse'
components:
  schemas:
    PayrollReportLineItem:
      type: object
      properties:
        costPerUnit:
          type: number
        createdAt:
          type: string
        index:
          type: number
        labels:
          $ref: '#/components/schemas/LabelsDictionary'
        labelsBak2:
          $ref: '#/components/schemas/LabelsDictionary'
        quantity:
          type: number
        reimbursableExpense:
          type: boolean
        totalCost:
          type: number
        unit:
          type: string
        updatedAt:
          type: string
        amount:
          type:
          - number
          - 'null'
        description:
          type:
          - string
          - 'null'
        detail:
          type:
          - string
          - 'null'
        discount:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/facb8048736dba546c4c76242d9f8c7111011a7a7483528f37d80226698a1f2b'
        discountTotal:
          type:
          - number
          - 'null'
        integration:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/InvoiceIntegrations'
      required:
      - costPerUnit
      - createdAt
      - index
      - labels
      - labelsBak2
      - quantity
      - reimbursableExpense
      - totalCost
      - unit
      - updatedAt
    CollaboratorsPayoutsSummaryReportResponse:
      type: object
      properties:
        clientId:
          type: string
        collaboratorGroups:
          type: array
          items:
            $ref: '#/components/schemas/66ad6f986038e3285c36e0faa5c61b52a02882d1460acb116b601a30abfb6c1d'
        createdAt:
          type: string
        inviteEmail:
          type: string
        member:
          $ref: '#/components/schemas/RedactedMember'
        memberClientId:
          type: string
        memberId:
          type: string
        payoutsSummary:
          $ref: '#/components/schemas/CollaboratorPayoutsSummary'
        servicesStatus:
          $ref: '#/components/schemas/b22a2532acff782df851c03041e55a58727ff8e8805b1738c7dcb4dd1dd2505a'
        status:
          type: string
          enum:
          - Active
          - Inactive
          - Pending
        taxStatus:
          type: string
          enum:
          - Complete
          - Failed
          - Pending
          - Incomplete
        updatedAt:
          type: string
        externalId:
          type:
          - string
          - 'null'
        labels:
          oneOf:
          - type: 'null'
          - type: object
        memberEvents:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/CollaboratorEvents'
        taxDocumentStared:
          type:
          - boolean
          - 'null'
      required:
      - clientId
      - collaboratorGroups
      - createdAt
      - inviteEmail
      - member
      - memberClientId
      - memberId
      - payoutsSummary
      - servicesStatus
      - status
      - taxStatus
      - updatedAt
    CompanyLinks:
      type: object
      properties:
        instagramUrl:
          type:
          - string
          - 'null'
        linkedInUrl:
          type:
          - string
          - 'null'
        otherUrl:
          type:
          - string
          - 'null'
        twitterUrl:
          type:
          - string
          - 'null'
        websiteUrl:
          type:
          - string
          - 'null'
    PayableAgingReportResponse:
      type: object
      properties:
        ageGroup:
          type: string
        amount:
          type: number
        createdAt:
          type: string
        currency:
          type: string
        dueDate:
          type: string
        invoiceId:
          type: string
        invoiceNumber:
          type: string
        invoicePdf:
          type: string
        member:
          $ref: '#/components/schemas/RedactedMember'
        memberClientId:
          type: string
        memberId:
          type: string
        receiptPdf:
          type: string
        status:
          type: string
          enum:
          - Draft
          - Open
          - Overdue
          - Cancelled
          - Pending
          - PaymentInTransit
          - Paid
        updatedAt:
          type: string
        approverName:
          type:
          - string
          - 'null'
        labels:
          oneOf:
          - type: 'null'
          - type: object
        memberExternalId:
          type:
          - number
          - 'null'
        notes:
          type:
          - string
          - 'null'
        paidDate:
          type:
          - string
          - 'null'
        payoutDestination:
          type:
          - string
          - 'null'
        projectName:
          type:
          - string
          - 'null'
        purchaseOrderNumber:
          type:
          - string
          - 'null'
        sentDate:
          type:
          - string
          - 'null'
      required:
      - ageGroup
      - amount
      - createdAt
      - currency
      - dueDate
      - invoiceId
      - invoiceNumber
      - invoicePdf
      - member
      - memberClientId
      - memberId
      - receiptPdf
      - status
      - updatedAt
    CollaboratorPayoutsSummary:
      type: object
      properties:
        deductionsCount:
          type: number
        payablesCount:
          type: number
        totalDeducted:
          type: number
        totalPaid:
          type: number
        firstPaidDate:
          type:
          - string
          - 'null'
        lastPaidDate:
          type:
          - string
          - 'null'
      required:
      - deductionsCount
      - payablesCount
      - totalDeducted
      - totalPaid
    LineItemsAgingReportLineItem:
      type: object
      properties:
        costPerUnit:
          type: number
        createdAt:
          type: string
        index:
          type: number
        labels:
          $ref: '#/components/schemas/LabelsDictionary'
        labelsBak2:
          $ref: '#/components/schemas/LabelsDictionary'
        quantity:
          type: number
        reimbursableExpense:
          type: boolean
        totalCost:
          type: number
        unit:
          type: string
        updatedAt:
          type: string
        amount:
          type:
          - number
          - 'null'
        description:
          type:
          - string
          - 'null'
        detail:
          type:
          - string
          - 'null'
        discount:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/facb8048736dba546c4c76242d9f8c7111011a7a7483528f37d80226698a1f2b'
        discountTotal:
          type:
          - number
          - 'null'
        integration:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/InvoiceIntegrations'
      required:
      - costPerUnit
      - createdAt
      - index
      - labels
      - labelsBak2
      - quantity
      - reimbursableExpense
      - totalCost
      - unit
      - updatedAt
    RedactedMember:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/RedactedUser'
        profile:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/23d776fc12e56286a20f36065e4f942c43a28218a62eb2f211116c130deb74eb'
      required:
      - user
    b22a2532acff782df851c03041e55a58727ff8e8805b1738c7dcb4dd1dd2505a:
      type: object
      properties:
        incomeAndExpenses:
          type: boolean
        taxWithholdings:
          type: boolean
      required:
      - incomeAndExpenses
      - taxWithholdings
    CollaboratorsReportResponse:
      type: object
      properties:
        clientId:
          type: string
        collaboratorGroups:
          type: array
          items:
            $ref: '#/components/schemas/66ad6f986038e3285c36e0faa5c61b52a02882d1460acb116b601a30abfb6c1d'
        createdAt:
          type: string
        inviteEmail:
          type: string
        member:
          $ref: '#/components/schemas/RedactedMember'
        memberClientId:
          type: string
        memberId:
          type: string
        servicesStatus:
          $ref: '#/components/schemas/b22a2532acff782df851c03041e55a58727ff8e8805b1738c7dcb4dd1dd2505a'
        status:
          type: string
          enum:
          - Active
          - Inactive
          - Pending
        taxStatus:
          type: string
          enum:
          - Complete
          - Failed
          - Pending
          - Incomplete
        updatedAt:
          type: string
        externalId:
          type:
          - string
          - 'null'
        labels:
          oneOf:
          - type: 'null'
          - type: object
        memberEvents:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/CollaboratorEvents'
        taxDocumentStared:
          type:
          - boolean
          - 'null'
      required:
      - clientId
      - collaboratorGroups
      - createdAt
      - inviteEmail
      - member
      - memberClientId
      - memberId
      - servicesStatus
      - status
      - taxStatus
      - updatedAt
    66ad6f986038e3285c36e0faa5c61b52a02882d1460acb116b601a30abfb6c1d:
      type: object
      properties:
        collaboratorGroupId:
          type: string
        description:
          type: string
        name:
          type: string
      required:
      - collaboratorGroupId
      - description
      - name
    fcbf27c731b13d8b05460d28c0f87d3355c006cefcc1528c739ebdcf7cb45c8c:
      type: object
      properties:
        approvedBy:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/RedactedMember'
        preApprovedBy:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/RedactedMember'
    PayrollReportResponse:
      type: object
      properties:
        invoices:
          type: array
          items:
            $ref: '#/components/schemas/PayrollReportInvoice'
        parentInvoice:
          $ref: '#/components/schemas/42f004011439ceedfeb392c84d36ad40443a5a0446d1efa02369c56e930a1c07'
      required:
      - invoices
      - parentInvoice
    LineItemsAgingReportResponse:
      type: object
      properties:
        ageGroup:
          type: string
        amount:
          type: number
        createdAt:
          type: string
        currency:
          type: string
        dueDate:
          type: string
        invoiceId:
          type: string
        invoiceNumber:
          type: string
        invoicePdf:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/LineItemsAgingReportLineItem'
        member:
          $ref: '#/components/schemas/RedactedMember'
        memberClientId:
          type: string
        memberId:
          type: string
        receiptPdf:
          type: string
        status:
          type: string
          enum:
          - Draft
          - Open
          - Overdue
          - Cancelled
          - Pending
          - PaymentInTransit
          - Paid
        updatedAt:
          type: string
        approverName:
          type:
          - string
          - 'null'
        labels:
          oneOf:
          - type: 'null'
          - type: object
        memberExternalId:
          type:
          - number
          - 'null'
        notes:
          type:
          - string
          - 'null'
        paidDate:
          type:
          - string
          - 'null'
        payoutDestination:
          type:
          - string
          - 'null'
        projectName:
          type:
          - string
          - 'null'
        purchaseOrderNumber:
          type:
          - string
          - 'null'
        sentDate:
          type:
          - string
          - 'null'
      required:
      - ageGroup
      - amount
      - createdAt
      - currency
      - dueDate
      - invoiceId
      - invoiceNumber
      - invoicePdf
      - lineItems
      - member
      - memberClientId
      - memberId
      - receiptPdf
      - status
      - updatedAt
    CompanyPerson:
      type: object
      properties:
        memberId:
          type: string
        ownershipPercentage:
          type:
          - number
          - 'null'
      required:
      - memberId
    Company:
      type: object
      properties:
        banking:
          type:
          - boolean
          - 'null'
        companyOwners:
          type:
          - array
          - 'null'
          items:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/CompanyPerson'
        description:
          type:
          - string
          - 'null'
        disregardedEntityName:
          type:
          - string
          - 'null'
        legalBusinessName:
          type:
          - string
          - 'null'
        links:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/CompanyLinks'
        name:
          type:
          - string
          - 'null'
        stateOfIncorporation:
          type:
          - string
          - 'null'
        structure:
          type:
          - string
          - 'null'
          enum:
          - None
          - SoleProprietorship
          - LlcSingleMember
          - LlcMultiMember
          - CorporationS
          - LLCCorporationS
          - LLCCorporationC
          - LLCPartnership
          - CorporationC
          - Partnership
          - null
        supportEmail:
          type:
          - string
          - 'null'
        taxId:
          type:
          - string
          - 'null'
        website:
          type:
          - string
          - 'null'
        yearOfIncorporation:
          type:
          - string
          - 'null'
    LabelsDictionary:
      type: object
      additionalProperties:
        type: string
    f6f2bd1a2fc7bad4e0d8f22345fc5f6699d096b7797b93575869c544a4fc5cef:
      type: object
      properties:
        firstName:
          type:
          - string
          - 'null'
        lastName:
          type:
          - string
          - 'null'
    CollaboratorEvents:
      type: object
      properties:
        knowYourCustomerVerifiedAt:
          type: string
        payoutMethodFirstAddedAt:
          type: string
        taxDocumentationVerifiedAt:
          type: string
        signedUpAt:
          type:
          - string
          - 'null'
      required:
      - knowYourCustomerVerifiedAt
      - payoutMethodFirstAddedAt
      - taxDocumentationVerifiedAt
    RedactedUser:
      type: object
      properties:
        email:
          type:
          - string
          - 'null'
        phone:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/7996a6815c717c0e93865680b5cd47dec90314e97e4e7282bed7fc2f367bc051'
        profile:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/f6f2bd1a2fc7bad4e0d8f22345fc5f6699d096b7797b93575869c544a4fc5cef'
        settings:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/9e97e63e736df301658ebeeab7f4fe84f3aeaa73800d3e4863801a3eb026df4b'
        status:
          type:
          - string
          - 'null'
          enum:
          - Pending
          - Active
          - Disabled
          - null
        tag:
          type:
          - string
          - 'null'
    23d776fc12e56286a20f36065e4f942c43a28218a62eb2f211116c130deb74eb:
      type: object
      properties:
        address:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Address'
        company:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Company'
        logoUrl:
          type:
          - string
          - 'null'
        ssnLastFour:
          type:
          - string
          - 'null'
    Address:
      type: object
      properties:
        addressLine1:
          type: string
        city:
          type: string
        postalCode:
          type: string
        state:
          type: string
        addressLine2:
          type:
          - string
          - 'null'
      required:
      - addressLine1
      - city
      - postalCode
      - state
    InvoiceIntegrations:
      type: object
      properties:
        quickbooks:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/6d0791223791444911cf73db8aa3782fc7b1c0b614b1873468fbf7182f9f9a11'
    PayrollReportInvoice:
      type: object
      properties:
        amount:
          type: number
        createdAt:
          type: string
        currency:
          type: string
        dueDate:
          type: string
        invoiceId:
          type: string
        invoiceNumber:
          type: string
        invoicePdf:
          type: string
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/PayrollReportLineItem'
        member:
          $ref: '#/components/schemas/RedactedMember'
        memberClientId:
          type: string
        memberId:
          type: string
        receiptPdf:
          type: string
        status:
          type: string
          enum:
          - Draft
          - Open
          - Overdue
          - Cancelled
          - Pending
          - PaymentInTransit
          - Paid
        updatedAt:
          type: string
        approverName:
          type:
          - string
          - 'null'
        eventActors:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/fcbf27c731b13d8b05460d28c0f87d3355c006cefcc1528c739ebdcf7cb45c8c'
        labels:
          oneOf:
          - type: 'null'
          - type: object
        memberExternalId:
          type:
          - number
          - 'null'
        notes:
          type:
          - string
          - 'null'
        paidDate:
          type:
          - string
          - 'null'
        payoutDestination:
          type:
          - string
          - 'null'
        projectName:
          type:
          - string
          - 'null'
        purchaseOrderNumber:
          type:
          - string
          - 'null'
        sentDate:
          type:
          - string
          - 'null'
      required:
      - amount
      - createdAt
      - currency
      - dueDate
      - invoiceId
      - invoiceNumber
      - invoicePdf
      - lineItems
      - member
      - memberClientId
      - memberId
      - receiptPdf
      - status
      - updatedAt
    facb8048736dba546c4c76242d9f8c7111011a7a7483528f37d80226698a1f2b:
      type: object
      properties:
        amount:
          type:
          - number
          - 'null'
        description:
          type:
          - string
          - 'null'
        percentage:
          type:
          - number
          - 'null'
    7996a6815c717c0e93865680b5cd47dec90314e97e4e7282bed7fc2f367bc051:
      type: object
      properties:
        number:
          type:
          - string
          - 'null'
    9e97e63e736df301658ebeeab7f4fe84f3aeaa73800d3e4863801a3eb026df4b:
      type: object
      properties:
        userAccountType:
          type:
          - string
          - 'null'
          enum:
          - member
          - enterprise
          - null
    42f004011439ceedfeb392c84d36ad40443a5a0446d1efa02369c56e930a1c07:
      type: object
      properties:
        createdAt:
          type: string
        dueDate:
          type: string
        invoiceId:
          type: string
        invoiceNumber:
          type: string
        status:
          type: string
          enum:
          - Draft
          - Open
          - Overdue
          - Cancelled
          - Pending
          - PaymentInTransit
          - Paid
        updatedAt:
          type: string
        depositedDate:
          type:
          - string
          - 'null'
        notes:
          type:
          - string
          - 'null'
        paidDate:
          type:
          - string
          - 'null'
      required:
      - createdAt
      - dueDate
      - invoiceId
      - invoiceNumber
      - status
      - updatedAt
    6d0791223791444911cf73db8aa3782fc7b1c0b614b1873468fbf7182f9f9a11:
      type: object
      properties:
        billClassId:
          type:
          - string
          - 'null'
        billCustomerId:
          type:
          - string
          - 'null'
        expenseAccountId:
          type:
          - string
          - 'null'
        invoiceClassId:
          type:
          - string
          - 'null'
        itemId:
          type:
          - string
          - 'null'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
x-readme:
  explorer-enabled: true
  proxy-enabled: true
  samples-enabled: true