Tabs Contracts API
The Contracts API from Tabs — 17 operation(s) for contracts.
The Contracts API from Tabs — 17 operation(s) for contracts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/tabs-contracts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Tabs External Contracts 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: Contracts
paths:
/v3/contracts:
get:
operationId: IntegratorsApiContractsv3Controller_getContracts
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: 'Supported items for filter: name, externalIds.externalId, externalIds.sourceType, source, status, customerId, createdAt, lastUpdatedAt. Date format for createdAt and lastUpdatedAt: YYYY-MM-DD'
schema:
type: string
responses:
'200':
description: Get all Contracts by filter
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- type: object
properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ContractsV3Dto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
summary: List contracts
tags:
- Contracts
post:
operationId: IntegratorsApiContractsv3Controller_createContract
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateContractV3Dto'
responses:
'201':
description: Created contract
content:
application/json:
schema:
$ref: '#/components/schemas/ContractsV3Dto'
'400':
description: Invalid request body
'500':
description: Internal server error
summary: Create contract
tags:
- Contracts
/v3/contracts/{id}:
get:
operationId: IntegratorsApiContractsv3Controller_getContractById
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: The contract
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/ContractsV3Dto'
'400':
description: Contract is deleted
'404':
description: Contract not found
summary: Get contract by ID
tags:
- Contracts
patch:
operationId: IntegratorsApiContractsv3Controller_updateContract
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateContractV3Dto'
responses:
'200':
description: Contract updated successfully
'404':
description: Contract not found
'500':
description: Internal server error
summary: Update contract
tags:
- Contracts
/v3/contracts/{id}/file:
post:
operationId: IntegratorsApiContractsv3Controller_uploadContractFile
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: shouldProcess
required: false
in: query
description: Whether to trigger contract processing after file upload. Defaults to true.
schema:
type: boolean
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Contract file was replaced successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/ContractsV3Dto'
summary: Upload contract file
tags:
- Contracts
get:
operationId: IntegratorsApiContractsv3Controller_getContractFile
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: PDF file download
content:
application/pdf:
schema:
type: string
format: binary
'500':
description: Internal server error or contract has no file
summary: Download contract file
tags:
- Contracts
/v3/contracts/{id}/obligations:
post:
operationId: IntegratorsApiContractsv3Controller_createObligation
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateObligationDto'
responses:
'201':
description: The obligation
content:
application/json:
schema:
$ref: '#/components/schemas/ObligationDto'
'400':
description: Invalid request body
summary: Create contract obligation
tags:
- Contracts
/v3/contracts/{id}/obligations/{obligationId}:
get:
operationId: IntegratorsApiContractsv3Controller_getObligation
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: obligationId
required: true
in: path
description: Obligation Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: The obligation
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/ObligationDto'
'404':
description: Obligation not found
summary: Get contract obligation by ID
tags:
- Contracts
delete:
operationId: IntegratorsApiContractsv3Controller_deleteObligation
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: obligationId
required: true
in: path
description: Obligation Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: Deleted obligation
'400':
description: Obligation not found
'500':
description: Internal server error
summary: Delete contract obligation
tags:
- Contracts
/v3/contracts/{id}/actions:
post:
operationId: IntegratorsApiContractsv3Controller_contractActions
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
description: 'For Rillet merchants only: Close Date is required when marking contracts as processed.'
content:
application/json:
schema:
$ref: '#/components/schemas/ContractActionDto'
examples:
valid1:
summary: Mark as processed
value:
action: MARK_AS_PROCESSED
valid2:
summary: Mark as deleted
value:
action: MARK_AS_DELETED
responses:
'200':
description: Contract actions executed successfully
'400':
description: Invalid request body
summary: Perform contract action
tags:
- Contracts
/v3/contracts/{id}/obligation/{obligationId}:
patch:
operationId: IntegratorsApiContractsv3Controller_updateObligation
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: obligationId
required: true
in: path
description: Obligation Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateObligationDto'
responses:
'200':
description: Obligation updated successfully
'404':
description: Obligation not found
'500':
description: Internal server error
summary: Update contract obligation
tags:
- Contracts
/v3/contracts/{id}/obligation/{obligationId}/custom-revenue:
post:
operationId: IntegratorsApiContractsv3Controller_upsertCustomRevenue
parameters:
- name: id
required: true
in: path
description: Contract id
schema:
type: string
- name: obligationId
required: true
in: path
description: Obligation id
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CustomRevenue'
responses:
'200':
description: Upsert custom revenue
'400':
description: Bad request body, e.g. invalid timeframe
'404':
description: Contract or obligation not found
'500':
description: Internal server error
summary: Upsert obligation custom revenue
tags:
- Contracts
/v3/contracts/{id}/billing-term-groups:
get:
operationId: IntegratorsApiContractsv3Controller_getBillingTermGroups
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- 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: createdAt, updatedAt\n\n Dates should be in YYYY-MM-DD format\n "
schema:
type: string
responses:
'200':
description: Billing term groups for the contract
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/BillingTermGroupDto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
'400':
description: Invalid contract ID or performance obligation features not enabled for this merchant
'404':
description: Contract not found
'500':
description: Internal Server Error
summary: List contract billing term groups
tags:
- Contracts
/v3/contracts/{id}/billing-term-groups/{groupId}:
delete:
operationId: IntegratorsApiContractsv3Controller_deleteBillingTermGroup
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: groupId
required: true
in: path
description: Billing Term Group Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: Billing term group and associated entities deleted successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
type: object
properties:
message:
type: string
'400':
description: Invalid contract/group ID or performance obligation features not enabled for this merchant
'404':
description: Contract or billing term group not found
'500':
description: Internal Server Error
summary: Delete contract billing term group
tags:
- Contracts
/v3/contracts/{id}/performance-obligations:
get:
operationId: IntegratorsApiContractsv3Controller_getPerformanceObligationsWithRevenue
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: billingTermGroupId
required: false
in: query
description: Optional billing term group ID to filter results
schema:
type: string
- 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: createdAt, updatedAt\n\n Dates should be in YYYY-MM-DD format\n "
schema:
type: string
responses:
'200':
description: Performance obligations with recognized revenue for the contract
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/PerformanceObligationDetailResponseDto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
totalTransactionPrice:
type: number
'400':
description: Performance obligation features not enabled for this merchant
'404':
description: Contract not found
'500':
description: Internal Server Error
summary: List contract performance obligations
tags:
- Contracts
post:
operationId: IntegratorsApiContractsv3Controller_batchSavePobsForContract
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
description: Batch create, update, and delete performance obligations scoped to a billing term group
content:
application/json:
schema:
$ref: '#/components/schemas/BatchSavePobsForContractDto'
responses:
'200':
description: Batch save completed successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
$ref: '#/components/schemas/BatchSavePerformanceObligationsResponseDto'
'400':
description: Validation error or performance obligation features not enabled
'404':
description: Contract not found
'500':
description: Internal Server Error
summary: Bulk save contract performance obligations
tags:
- Contracts
/v3/contracts/{id}/performance-obligations/{pobId}:
patch:
operationId: IntegratorsApiContractsv3Controller_updatePerformanceObligation
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: pobId
required: true
in: path
description: Performance Obligation Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
description: Fields to update on the performance obligation
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePerformanceObligationForContractDto'
responses:
'200':
description: Performance obligation updated successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
$ref: '#/components/schemas/PerformanceObligationDetailResponseDto'
'400':
description: Validation error or performance obligation features not enabled
'404':
description: Contract or performance obligation not found
'500':
description: Internal Server Error
summary: Update contract performance obligation
tags:
- Contracts
/v3/contracts/{id}/billing-terms:
get:
operationId: IntegratorsApiContractsv3Controller_getBillingTerms
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: billingTermGroupId
required: false
in: query
description: Optional billing term group (BTG) ID to filter by
schema:
type: string
- 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
responses:
'200':
description: Billing terms for the contract
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/GetBillingTermItemDto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
'404':
description: Contract not found
'500':
description: Internal Server Error
summary: List contract billing terms
tags:
- Contracts
post:
operationId: IntegratorsApiContractsv3Controller_createBillingTerm
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBillingTermDto'
responses:
'201':
description: Billing term created
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
$ref: '#/components/schemas/BillingTermResponseDto'
'400':
description: Bad Request - validation failed
'404':
description: Contract not found
'500':
description: Internal Server Error
summary: Create contract billing term
tags:
- Contracts
/v3/contracts/{id}/billing-terms/{billingTermId}:
patch:
operationId: IntegratorsApiContractsv3Controller_patchBillingTerm
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: billingTermId
required: true
in: path
description: Billing Term Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchBillingTermDto'
responses:
'200':
description: Billing term updated
'400':
description: Bad Request - validation failed
'404':
description: Contract or billing term not found
'500':
description: Internal Server Error
summary: Update contract billing term
tags:
- Contracts
delete:
operationId: IntegratorsApiContractsv3Controller_deleteBillingTerm
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: billingTermId
required: true
in: path
description: Billing Term Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
responses:
'200':
description: Billing term deleted
'404':
description: Contract or billing term not found
'409':
description: 'Cannot delete: a POB with matching event type exists in the group'
'500':
description: Internal Server Error
summary: Delete contract billing term
tags:
- Contracts
/v3.1/contracts/{id}/obligation/{obligationId}:
patch:
operationId: IntegratorsApiContractsV31Controller_updateObligation
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: obligationId
required: true
in: path
description: Obligation Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateObligationDto'
responses:
'200':
description: Obligation updated successfully
'404':
description: Obligation not found
'500':
description: Internal server error
summary: Update contract obligation
tags:
- Contracts
/v3/contracts/deleted:
get:
operationId: IntegratorsApiContractsv3Controller_getDeletedContracts
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: 'Supported items for filter: name, externalIds.externalId, externalIds.sourceType, source, status, customerId, createdAt, lastUpdatedAt, deletedAt. Date format for createdAt, lastUpdatedAt, and deletedAt: YYYY-MM-DD'
schema:
type: string
responses:
'200':
description: Get all deleted Contracts by filter, sorted by deletedAt desc
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- type: object
properties:
payload:
allOf:
- $ref: '#/components/schemas/PaginatedResponseDTO'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ContractsV3Dto'
limit:
type: number
totalItems:
type: number
currentPage:
type: number
summary: List deleted contracts
tags:
- Contracts
/v3/contracts/{id}/billing-term-groups/{groupId}/event-type:
patch:
operationId: IntegratorsApiContractsv3Controller_changeBillingTermGroupEventType
parameters:
- name: id
required: true
in: path
description: Contract Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
- name: groupId
required: true
in: path
description: Billing Term Group Id
schema:
example: 123e4567-e89b-12d3-a456-426614174000
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeBillingTermGroupEventTypeDto'
responses:
'200':
description: Event type changed for the selected billing terms and performance obligations within the group; any rows not listed in the request are left untouched. The change is applied atomically and is only accepted if the group's event types stay in sync afterward.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/IntegratorsApiResponse'
- properties:
payload:
$ref: '#/components/schemas/ChangeBillingTermGroupEventTypeResponseDto'
'400':
description: Invalid request, or a provided BT/POB does not belong to the group
'404':
description: Contract, billing term group, or target event type not found
'409':
description: Change would break the event-type invariant for the group
'500':
description: Internal Server Error
summary: Change event type for selected billing terms and POBs in a group
tags:
- Contracts
components:
schemas:
UpdateContractV3Dto:
type: object
properties:
name:
type: string
description: Name of the Contract
example: Contract
closeDate:
format: date-time
type: string
description: Close date of the contract
example: '2024-01-01'
externalId:
type: string
description: External ID of the contract
example: 123e4567-e89b-12d3-a456-426614174000
sourceType:
type: string
description: External ID source type
example: NETSUITE
PatchBillingTermDto:
type: object
properties:
name:
type: string
description: Line item name. Required unless `productId` is provided, in which case it is populated from the product's display name.
example: Annual Platform License
description:
type: string
description: Line item description
example: Enterprise platform license
billingStartDate:
type: string
description: Billing start date
example: '2025-01-01'
isRecurring:
type: boolean
description: Is recurring billing
example: true
interval:
type: string
description: Interval unit
example: MONTH
enum:
- NONE
- DAY
- MONTH
- HOUR
- YEAR
- QUARTER
- SEMI_MONTH
- WEEK
intervalFrequency:
type: number
description: Interval frequency
example: 1
duration:
type: number
description: Number of billing periods
example: 0
default: 0
invoiceDateStrategy:
type: string
description: Invoice date strategy
example: FIRST_OF_PERIOD
enum:
- FIRST_OF_PERIOD
- LAST_OF_PERIOD
- ARREARS
- ADVANCED_DUE_START
netPaymentTerms:
type: number
description: Days between invoice issue and due date
example: 30
quantity:
type: number
description: Quantity; set to 0 for UNIT billingType
example: 1
billingType:
type: string
description: Billing type
example: FLAT
enu
# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tabs/refs/heads/main/openapi/tabs-contracts-api-openapi.yml