Mekari Jurnal MCP by usefulapi
MCP server for Mekari Jurnal — company accounting, sales, purchases and customer/vendor creation.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"jurnal": {
"url": "https://jurnal.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://jurnal.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (38)
🟢jurnal_get_current_user
The Jurnal user the credential acts as: id, name, email, status, owner flag and roles. GET /public/jurnal/api/v1/users/me.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_companies(page, page_size)
The Jurnal company (or companies) the credential belongs to: id, name, industry, address, tax number, currency settings and feature flags. GET /companies.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_customers(page, page_size, sort_key, sort_order, include_archive)
Customers with display name, addresses, email, phone, tax number and receivable balance. Paged. GET /customers.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_key": {
"description": "Sort field: display_name, billing_address, email, phone, balance_customer.",
"type": "string",
"enum": [
"display_name",
"billing_address",
"email",
"phone",
"balance_customer"
]
},
"sort_order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"include_archive": {
"description": "false = only active (non-archived) records; Jurnal includes archived ones by default.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_customer(id)
One customer by id (from jurnal_list_customers). GET /customers/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Customer id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_vendors(page, page_size, sort_key, sort_order, include_archive)
Vendors (suppliers) with display name, addresses, email, phone, tax number and payable balance. Paged. GET /vendors.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_key": {
"description": "Sort field: display_name, billing_address, email, phone.",
"type": "string",
"enum": [
"display_name",
"billing_address",
"email",
"phone"
]
},
"sort_order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"include_archive": {
"description": "false = only active (non-archived) records; Jurnal includes archived ones by default.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_vendor(id)
One vendor by id (from jurnal_list_vendors). GET /vendors/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Vendor id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_products(page, page_size, sort_key, sort_order, include_archive)
Products and services: code, name, buy and sell prices, stock quantity, category, units, active flag. Paged. GET /products.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_key": {
"description": "Sort field: product_code, name, quantity_inventory, last_avg_price, last_buy_price, buy_price_per_unit, sell_price_per_unit, product_categories_name.",
"type": "string",
"enum": [
"product_code",
"name",
"quantity_inventory",
"last_avg_price",
"last_buy_price",
"buy_price_per_unit",
"sell_price_per_unit",
"product_categories_name"
]
},
"sort_order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"include_archive": {
"description": "false = only active (non-archived) records; Jurnal includes archived ones by default.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_product(id)
One product by id (from jurnal_list_products). GET /products/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Product id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_accounts(include_archive)
The chart of accounts: id, number, name, category, currency and balance. Not paged. Use the ids as account_id in jurnal_get_general_ledger. GET /accounts.
Esquema de entrada
{
"type": "object",
"properties": {
"include_archive": {
"description": "false = only active (non-archived) records; Jurnal includes archived ones by default.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_account(id)
One chart-of-accounts entry by id. GET /accounts/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Account id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_sales_invoices(page, page_size, sort_key, sort_order)
Sales invoices: number, customer, dates, status, total (original_amount) and balance due (remaining). Sort by transaction_date or remaining to find recent or unpaid ones. Paged. GET /sales_invoices.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_key": {
"description": "Sort field: transaction_date, get_number, people_display_name, transaction_status_name, remaining, original_amount, created_at.",
"type": "string",
"enum": [
"transaction_date",
"get_number",
"people_display_name",
"transaction_status_name",
"remaining",
"original_amount",
"created_at"
]
},
"sort_order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_sales_invoice(id)
One sales invoice with its lines, taxes and payments. GET /sales_invoices/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Sales invoice id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_sales_orders(page, page_size)
Sales orders with customer, dates, status and totals. Paged. GET /sales_orders.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_sales_quotes(page, page_size)
Sales quotes (offers) with customer, dates, status and totals. Paged. GET /sales_quotes.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_receive_payments(page, page_size)
Customer payments received against sales invoices. Paged. GET /receive_payments.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_purchase_invoices(page, page_size, sort_key, sort_order, start_date, ...)
Purchase invoices (bills from vendors): number, vendor, dates, status, total and balance due. Paged. GET /purchase_invoices.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_key": {
"description": "Sort field: transaction_date, created_at, transaction_no, people_display_name, due_date, transaction_status_name, remaining, original_amount.",
"type": "string",
"enum": [
"transaction_date",
"created_at",
"transaction_no",
"people_display_name",
"due_date",
"transaction_status_name",
"remaining",
"original_amount"
]
},
"sort_order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"start_date": {
"description": "Only transactions from this date, yyyy-mm-dd. Needs sort_key transaction_no or created_at (Jurnal applies the date range only with those).",
"type": "string"
},
"end_date": {
"description": "Only transactions up to this date, yyyy-mm-dd. Needs sort_key transaction_no or created_at.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_purchase_invoice(id)
One purchase invoice with its lines, taxes and payments. GET /purchase_invoices/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Purchase invoice id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_purchase_orders(page, page_size)
Purchase orders with vendor, dates, status and totals. Paged. GET /purchase_orders.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_purchase_payments(page, page_size)
Payments made to vendors against purchase invoices. Paged. GET /purchase_payments.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_expenses(page, page_size, sort_key, sort_order)
Expenses: number, date, beneficiary, status, total and balance due. Paged. GET /expenses.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"sort_key": {
"description": "Sort field: transaction_date, transaction_no, transaction_status_name, remaining, original_amount.",
"type": "string",
"enum": [
"transaction_date",
"transaction_no",
"transaction_status_name",
"remaining",
"original_amount"
]
},
"sort_order": {
"description": "Sort direction.",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_expense(id)
One expense with its lines. GET /expenses/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Expense id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_journal_entries(page, page_size)
Manual journal entries (general journal). Paged. GET /journal_entries.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_journal_entry(id)
One journal entry with its debit and credit lines. GET /journal_entries/{id}.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Journal entry id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_taxes(page, page_size)
The company's tax rates (PPN, PPh and so on). Paged. GET /taxes.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_tags
Transaction tags. Not paged. GET /tags.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_payment_methods
Payment methods (cash, transfer and so on). Not paged. GET /payment_methods.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_warehouses(page, page_size)
Warehouses (needs a Jurnal plan with inventory). Paged. GET /warehouses.
Esquema de entrada
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (Jurnal's default applies when omitted).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_list_product_categories
Product categories. Not paged. GET /product_categories.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_profit_and_loss(start_date, end_date, compare_type)
Profit and loss (income statement) for a period: revenue, cost of sales, expenses and net profit by account. Dates are yyyy-mm-dd. GET /profit_and_loss.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Start of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"end_date": {
"description": "End of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"compare_type": {
"description": "Period shortcut (day = today). Use custom with start_date and end_date.",
"type": "string",
"enum": [
"custom",
"day",
"week",
"month",
"year",
"yesterday",
"last_week",
"last_month",
"last_year"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_balance_sheet(end_date)
Balance sheet as of end_date (yyyy-mm-dd, default today): assets, liabilities and equity by account. GET /balance_sheet.
Esquema de entrada
{
"type": "object",
"properties": {
"end_date": {
"description": "End of the period, yyyy-mm-dd (default today).",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_trial_balance(start_date, end_date, compare_type)
Trial balance for a period: opening, movement and closing balance of every account. GET /trial_balance.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Start of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"end_date": {
"description": "End of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"compare_type": {
"description": "Period shortcut (day = today). Use custom with start_date and end_date.",
"type": "string",
"enum": [
"custom",
"day",
"week",
"month",
"year",
"yesterday",
"last_week",
"last_month",
"last_year"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_cash_flow(start_date, end_date, compare_type)
Cash flow statement for a period (operating, investing, financing). GET /cash_flow.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Start of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"end_date": {
"description": "End of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"compare_type": {
"description": "Period shortcut (day = today). Use custom with start_date and end_date.",
"type": "string",
"enum": [
"custom",
"day",
"week",
"month",
"year",
"yesterday",
"last_week",
"last_month",
"last_year"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_general_ledger(start_date, end_date, compare_type, account_ids)
General ledger for a period, optionally limited to some accounts (ids from jurnal_list_accounts). GET /general_ledger.
Esquema de entrada
{
"type": "object",
"properties": {
"start_date": {
"description": "Start of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"end_date": {
"description": "End of the period, yyyy-mm-dd (default today).",
"type": "string"
},
"compare_type": {
"description": "Period shortcut (day = today). Use custom with start_date and end_date.",
"type": "string",
"enum": [
"custom",
"day",
"week",
"month",
"year",
"yesterday",
"last_week",
"last_month",
"last_year"
]
},
"account_ids": {
"description": "Only these accounts (ids from jurnal_list_accounts).",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Account id."
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_aged_receivables
Aged receivables: what customers owe, bucketed by how overdue it is. GET /aged_receivables.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_aged_payables
Aged payables: what is owed to vendors, bucketed by how overdue it is. GET /aged_payables.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢jurnal_get_executive_summary
Executive summary: key figures (cash, revenue, profit, receivables, payables) for the company. GET /executive_summary.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡jurnal_create_customer(display_name, first_name, last_name, associate_company, email, ...)
Create a new customer contact in Jurnal. This writes to the user's books (a customer can be archived or deleted later in Jurnal). Only display_name is required. POST /customers.
Esquema de entrada
{
"type": "object",
"properties": {
"display_name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Display name shown in Jurnal (required)."
},
"first_name": {
"type": "string",
"maxLength": 255
},
"last_name": {
"type": "string",
"maxLength": 255
},
"associate_company": {
"description": "Company the contact belongs to.",
"type": "string",
"maxLength": 255
},
"email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"type": "string",
"maxLength": 64
},
"mobile": {
"type": "string",
"maxLength": 64
},
"billing_address": {
"type": "string",
"maxLength": 1000
},
"address": {
"type": "string",
"maxLength": 1000
},
"tax_no": {
"description": "Tax number (NPWP).",
"type": "string",
"maxLength": 64
},
"other_detail": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"display_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡jurnal_create_vendor(display_name, first_name, last_name, associate_company, email, ...)
Create a new vendor (supplier) contact in Jurnal. This writes to the user's books (a vendor can be archived or deleted later in Jurnal). Only display_name is required. POST /vendors.
Esquema de entrada
{
"type": "object",
"properties": {
"display_name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Display name shown in Jurnal (required)."
},
"first_name": {
"type": "string",
"maxLength": 255
},
"last_name": {
"type": "string",
"maxLength": 255
},
"associate_company": {
"description": "Company the contact belongs to.",
"type": "string",
"maxLength": 255
},
"email": {
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"type": "string",
"maxLength": 64
},
"mobile": {
"type": "string",
"maxLength": 64
},
"billing_address": {
"type": "string",
"maxLength": 1000
},
"address": {
"type": "string",
"maxLength": 1000
},
"tax_no": {
"description": "Tax number (NPWP).",
"type": "string",
"maxLength": 64
},
"other_detail": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"display_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia