Tinvio Posting Rules API
Manage the rules that control how approved claims group into journals at conversion.
Manage the rules that control how approved claims group into journals at conversion.
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/tinvio-com:tinvio-com-posting-rules-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: Tinvio Com Posting Rules API
version: '1.0'
contact:
email: build.with@jaz.ai
name: API Support
url: https://jaz.ai
description: 'Operations tagged Posting Rules across 2 of this provider''s published API definitions: tinvio-com-openapi-original.yaml, tinvio-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.getjaz.com
tags:
- description: Manage the rules that control how approved claims group into journals at conversion.
name: Posting Rules
paths:
/api/v1/posting-rules:
get:
description: List all of the organization's posting rules, alphabetical by name.
operationId: list-posting-rules
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: List Posting Rules
tags:
- Posting Rules
post:
description: Create a posting rule. Posting rules control how approved claims group into journals at conversion.
operationId: create-posting-rule
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Create Posting Rule
tags:
- Posting Rules
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePostingRuleRequest'
description: The posting rule to create.
required: true
servers:
- url: https://api.getjaz.com
/api/v1/posting-rules/search:
post:
description: Search posting rules with filters, sort, and pagination.
operationId: search-posting-rule
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PageableResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Search Posting Rules
tags:
- Posting Rules
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPostingRulesRequest'
description: Search filters, sort, and pagination.
required: true
servers:
- url: https://api.getjaz.com
/api/v1/posting-rules/{resourceId}:
delete:
description: Soft-delete a posting rule.
operationId: delete-posting-rule
parameters:
- description: Resource ID of the posting rule.
in: path
name: resourceId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Delete Posting Rule
tags:
- Posting Rules
get:
description: Get a single posting rule by its resource ID.
operationId: get-posting-rule
parameters:
- description: Resource ID of the posting rule.
in: path
name: resourceId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Get Posting Rule
tags:
- Posting Rules
put:
description: Update an existing posting rule.
operationId: update-posting-rule
parameters:
- description: Resource ID of the posting rule.
in: path
name: resourceId
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/BaseResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- ApiKeyAuth: []
summary: Update Posting Rule
tags:
- Posting Rules
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePostingRuleRequest'
description: The posting rule fields to update.
required: true
servers:
- url: https://api.getjaz.com
components:
schemas:
PostingRuleFilter:
properties:
and:
description: Combine with another filter using AND.
type: object
createdAt:
allOf:
- $ref: '#/components/schemas/DateExpression'
description: Filter by creation time.
defaultBankAccountResourceId:
allOf:
- $ref: '#/components/schemas/StringExpression'
description: Filter by default bank account resource ID.
defaultIncludeReimbursementPayout:
allOf:
- $ref: '#/components/schemas/BooleanExpression'
description: Filter by the reimbursement payout default.
innerAxis:
allOf:
- $ref: '#/components/schemas/StringExpression'
description: Filter by inner grouping axis.
isDefault:
allOf:
- $ref: '#/components/schemas/BooleanExpression'
description: Filter by default flag.
name:
allOf:
- $ref: '#/components/schemas/StringExpression'
description: Filter by name.
or:
description: Combine with another filter using OR.
type: object
outerAxis:
allOf:
- $ref: '#/components/schemas/StringExpression'
description: Filter by outer grouping axis.
resourceId:
allOf:
- $ref: '#/components/schemas/StringExpression'
description: Filter by resource ID.
type: object
ErrorResponse:
properties:
error:
allOf:
- $ref: '#/components/schemas/ErrorResponseData'
description: Error details.
type: object
DateExpression:
properties:
between:
description: Match dates between these two dates (exactly two, in YYYY-MM-DD format).
items:
type: string
type: array
eq:
description: Match dates equal to this, in YYYY-MM-DD format.
type: string
gt:
description: Match dates after this, in YYYY-MM-DD format.
type: string
gte:
description: Match dates on or after this, in YYYY-MM-DD format.
type: string
isNotNull:
description: Match records where the date is set. Pass the placeholder date "0001-01-01".
example: '0001-01-01'
type: string
isNull:
description: Match records where the date is not set. Pass the placeholder date "0001-01-01".
example: '0001-01-01'
type: string
lt:
description: Match dates before this, in YYYY-MM-DD format.
type: string
lte:
description: Match dates on or before this, in YYYY-MM-DD format.
type: string
notBetween:
description: Match dates outside these two dates (exactly two, in YYYY-MM-DD format).
items:
type: string
type: array
required:
- between
type: object
UpdatePostingRuleRequest:
properties:
defaultBankAccountResourceId:
description: Default source bank for the reimbursement DCE (UUIDv4). Must be CASH_AND_BANK type; its currency must match the claim + functional currency (server-enforced).
type: string
defaultIncludeReimbursementPayout:
description: Default for whether conversion creates a reimbursement DCE.
type: boolean
innerAxis:
description: Inner line-aggregation axis. Null means no change.
enum:
- RAW
- BY_CT_TP_NC
- BY_CT_TP_NC_EMPLOYEE
- BY_CT_TP_NC_VENDOR
type: string
isDefault:
description: When true, becomes the organization's sole default rule.
type: boolean
journalReferenceTemplate:
description: Optional Handlebars template for the parent journal header reference.
maxLength: 1000
type: string
lineDescriptionTemplate:
description: Handlebars-style line description template ({tokenName}). Null means no change.
maxLength: 1000
type: string
name:
description: Display name (case-insensitive unique per organization). Null means no change.
maxLength: 255
type: string
outerAxis:
description: Outer grouping axis. Null means no change.
enum:
- PER_EMPLOYEE
- PER_VENDOR
- PER_PAIR
- ONE_BATCH
- PER_CLAIM
type: string
resourceId:
description: Resource ID of the posting rule, from the URL path.
type: string
required:
- resourceId
type: object
CreatePostingRuleRequest:
properties:
defaultBankAccountResourceId:
description: 'Default source bank for the reimbursement DCE (UUIDv4). Must be CASH_AND_BANK type;
its currency must match the claim + functional currency (server-enforced).'
type: string
defaultIncludeReimbursementPayout:
description: Default for whether conversion creates a reimbursement DCE.
type: boolean
innerAxis:
description: Inner line-aggregation axis. Required.
enum:
- RAW
- BY_CT_TP_NC
- BY_CT_TP_NC_EMPLOYEE
- BY_CT_TP_NC_VENDOR
type: string
isDefault:
description: When true, becomes the organization's sole default rule.
type: boolean
journalReferenceTemplate:
description: Optional Handlebars template for the parent journal header reference.
maxLength: 1000
type: string
lineDescriptionTemplate:
description: Handlebars-style line description template ({tokenName}). Required (NOT NULL).
example: '{employeeName} - {claimType}'
maxLength: 1000
type: string
name:
description: Display name (case-insensitive unique per organization). Required.
example: Per employee
maxLength: 255
type: string
outerAxis:
description: Outer grouping axis. Required.
enum:
- PER_EMPLOYEE
- PER_VENDOR
- PER_PAIR
- ONE_BATCH
- PER_CLAIM
type: string
required:
- innerAxis
- lineDescriptionTemplate
- name
- outerAxis
type: object
BaseResponse:
properties:
data:
description: The response object.
type: object
BooleanExpression:
properties:
eq:
description: Match values equal to this.
type: boolean
type: object
StringExpression:
properties:
contains:
description: Match values containing this substring.
type: string
endWith:
description: Match values ending with this term (case sensitive).
type: string
eq:
description: Match values equal to this.
type: string
in:
description: Match values equal to any of these.
items:
type: string
maxItems: 100
type: array
isBlank:
description: Match records where the field is null or empty ("true") or neither ("false").
type: string
isNotBlank:
description: Match records where the field is neither null nor empty ("true").
type: string
isNull:
description: Match records where the field is null ("true") or not null ("false").
type: string
likeIn:
description: Match values containing any of these substrings.
items:
type: string
maxItems: 100
type: array
neq:
description: Match values not equal to this.
type: string
notContains:
description: Match values not containing this substring.
type: string
notEndWith:
description: Match values not ending with this term (case sensitive).
type: string
notStartWith:
description: Match values not starting with this term (case sensitive).
type: string
reg:
description: Match values containing any of these terms. This is a substring match, not a regular expression, despite the name.
items:
type: string
maxItems: 100
type: array
startWith:
description: Match values starting with this term (case sensitive).
type: string
required:
- in
- likeIn
- reg
type: object
PageableResponse:
properties:
data:
description: Result rows for the requested page.
totalElements:
description: Total number of records matching the query.
type: integer
totalPages:
description: Total number of pages.
type: integer
type: object
ClaimConfigSortFilter:
properties:
order:
description: Sort direction, ASC or DESC.
enum:
- ASC
- DESC
type: string
sortBy:
description: Fields to sort by, in priority order.
items:
enum:
- resourceId
- name
- isDefault
- createdAt
- updatedAt
type: string
maxItems: 10
type: array
uniqueItems: true
required:
- order
- sortBy
type: object
SearchPostingRulesRequest:
properties:
filter:
allOf:
- $ref: '#/components/schemas/PostingRuleFilter'
description: Filter conditions. Combine with and and or for complex queries.
limit:
default: 100
description: Maximum number of results per page (max 1000).
maximum: 1000
minimum: 1
type: integer
offset:
default: 0
description: Zero-indexed row offset into the result set. Sort is required when offset is set.
maximum: 65536
minimum: 0
type: integer
query:
description: 'Structured search query using Jaz search operators. Parsed automatically into filter fields.
Explicit filter fields override query results on conflict.
Example: "status:unpaid AND $500+".'
maxLength: 1000
type: string
sort:
allOf:
- $ref: '#/components/schemas/ClaimConfigSortFilter'
description: Sort order. Required when offset is set.
type: object
ErrorResponseData:
properties:
error_type:
description: Error category, for example validation_error, invalid_request_body, or internal_server_error.
example: validation_error
type: string
errors:
description: Error messages describing what went wrong.
items:
type: string
type: array
type: object
securitySchemes:
ApiKeyAuth:
description: Organization API key. Pass it in the x-jk-api-key header on every request.
in: header
name: x-jk-api-key
type: apiKey
x-refined-from:
- tinvio-com-openapi-original.yaml
- tinvio-com-openapi.yml