Tabs Performance Obligations API

The Performance Obligations API from Tabs — 2 operation(s) for performance obligations.

OpenAPI Specification

tabs-performance-obligations-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Tabs External Billing Terms Performance Obligations API
  description: ''
  version: 1.0.0
  contact: {}
  x-apievangelist:
    generated: '2026-07-21'
    method: searched
    source: https://docs.tabsplatform.com/reference (OpenAPI definitions embedded per-operation in the ReadMe reference pages, merged; index at https://docs.tabsplatform.com/llms.txt)
    source_pages: 93
servers:
- url: https://integrators.prod.api.tabsplatform.com
security:
- custom-header: []
tags:
- name: Performance Obligations
paths:
  /v3/performance-obligations:
    get:
      operationId: IntegratorsApiPerformanceObligationsController_searchPerformanceObligations
      parameters:
      - name: page
        required: true
        in: query
        description: Page Number
        schema:
          default: 1
          type: number
      - name: limit
        required: true
        in: query
        description: Number of items to return
        schema:
          default: 50
          type: number
      - name: filter
        required: false
        in: query
        description: "\n        Supported items for filter: contractId, customerId, serviceStartDate, serviceEndDate, billingTermGroupId, createdAt, updatedAt\n\n        Dates should be in YYYY-MM-DD format\n        "
        schema:
          type: string
      responses:
        '200':
          description: Get all performance obligations by filter
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/IntegratorsApiResponse'
                - properties:
                    payload:
                      allOf:
                      - $ref: '#/components/schemas/PaginatedResponseDTO'
                      - properties:
                          data:
                            type: array
                            items:
                              $ref: '#/components/schemas/GetPerformanceObligationItemDto'
                          limit:
                            type: number
                          totalItems:
                            type: number
                          currentPage:
                            type: number
        '400':
          description: Performance obligation features are not enabled for this merchant
      summary: List performance obligations
      tags:
      - Performance Obligations
  /v3/performance-obligations/{performanceObligationId}/recognized:
    post:
      operationId: IntegratorsApiPerformanceObligationsController_upsertRecognizedRevenue
      parameters:
      - name: performanceObligationId
        required: true
        in: path
        description: The ID of the performance obligation
        schema:
          type: string
      requestBody:
        required: true
        description: Recognized revenue entries to upsert for the performance obligation. Amounts may be positive or negative (e.g. negative values when reallocating discounts).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertRecognizedRevenueDto'
      responses:
        '200':
          description: Returns the revenue schedule ID
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/IntegratorsApiResponse'
                - properties:
                    payload:
                      type: string
                      example: 123e4567-e89b-12d3-a456-426614174000
        '400':
          description: Bad request body, e.g. invalid timeframe
        '404':
          description: Performance obligation not found
        '500':
          description: Internal Server Error
      summary: Upsert recognized revenue
      tags:
      - Performance Obligations
components:
  schemas:
    GetPerformanceObligationItemDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the performance obligation
          example: 123e4567-e89b-12d3-a456-426614174000
        name:
          type: string
          description: Name of the performance obligation
          nullable: true
          example: Annual Subscription
        contractId:
          type: string
          description: ID of the contract this performance obligation belongs to
          example: 123e4567-e89b-12d3-a456-426614174000
        billingTermGroupId:
          type: string
          description: Billing term group ID (foreign key)
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174000
        billingTermGroupName:
          type: string
          description: Billing term group name
          nullable: true
          example: Towing Services
        itemId:
          type: string
          description: ID of the associated integration item
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174000
        itemName:
          type: string
          description: Name of the associated integration item
          nullable: true
          example: Enterprise License
        erpClassId:
          type: string
          description: ID of the ERP class
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174000
        erpClassName:
          type: string
          description: Name of the ERP class
          nullable: true
          example: Software Revenue
        category:
          type: string
          description: Revenue category
          nullable: true
          example: SaaS
        considerationType:
          type: string
          description: Consideration type
          nullable: true
          example: FIXED
        recognitionPattern:
          type: string
          description: Revenue recognition pattern
          nullable: true
          example: STRAIGHT_LINE
        eventTypeId:
          type: string
          description: Event type ID
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174000
        eventTypeName:
          type: string
          description: Event type name
          nullable: true
          example: Tow Completion
        productId:
          type: string
          description: ID of the associated product
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174000
        productName:
          type: string
          description: Name of the associated product
          nullable: true
          example: Enterprise Plan
        serviceStartDate:
          format: date-time
          type: string
          description: Service start date
          example: '2024-01-01'
        serviceEndDate:
          format: date-time
          type: string
          description: Service end date
          example: '2024-12-31'
        transactionPrice:
          type: string
          description: Transaction price as a decimal string
          example: '1000.50'
        recognizedRevenue:
          description: Monthly recognized revenue entries for this performance obligation
          type: array
          items:
            $ref: '#/components/schemas/RecognizedRevenueAtomResponseDto'
        createdAt:
          format: date-time
          type: string
          description: Timestamp when the performance obligation was created
          example: '2024-01-01T00:00:00.000Z'
        updatedAt:
          format: date-time
          type: string
          description: Timestamp when the performance obligation was last updated
          example: '2024-01-01T00:00:00.000Z'
      required:
      - id
      - name
      - contractId
      - billingTermGroupId
      - billingTermGroupName
      - itemId
      - itemName
      - erpClassId
      - erpClassName
      - category
      - considerationType
      - recognitionPattern
      - eventTypeId
      - eventTypeName
      - productId
      - productName
      - serviceStartDate
      - serviceEndDate
      - transactionPrice
      - recognizedRevenue
      - createdAt
      - updatedAt
    UpsertRecognizedRevenueDto:
      type: object
      properties:
        recognizedRevenue:
          description: Array of recognized revenue entries
          type: array
          items:
            $ref: '#/components/schemas/RecognizedRevenueEntryDto'
      required:
      - recognizedRevenue
    RecognizedRevenueEntryDto:
      type: object
      properties:
        timeframe:
          type: string
          description: The timeframe for the revenue (YYYY-MM format)
          example: 2024-01
        total:
          type: number
          description: The total revenue amount
          example: 1000
      required:
      - timeframe
      - total
    IntegratorsApiResponse:
      type: object
      properties:
        payload:
          type: object
          description: Response payload, will be empty when success is false
        success:
          type: boolean
          description: Boolean with true=success, false=failure
        message:
          type: string
          description: Plain-text description of the result
        error:
          description: json element with any error messages or warnings
          allOf:
          - $ref: '#/components/schemas/IntegratorsApiError'
      required:
      - payload
      - success
      - message
      - error
    IntegratorsApiError:
      type: object
      properties:
        code:
          type: number
          description: API response code
        message:
          type: string
          description: API response message
        details:
          type: object
          description: Additional details about the error
      required:
      - code
      - message
    PaginatedResponseDTO:
      type: object
      properties: {}
    RecognizedRevenueAtomResponseDto:
      type: object
      properties:
        timeframe:
          type: string
          description: Month in YYYY-MM format
          example: 2024-01
        total:
          type: string
          description: Recognized revenue amount as a decimal string
          example: '1000.50'
      required:
      - timeframe
      - total
  securitySchemes:
    custom-header:
      type: apiKey
      name: Authorization
      in: header