API code example : A011001
The initial letter 'A' indicates that the API is located in a folder whose name begins with 'A'. Following this, the first two digits '01' specify the API's position in a sequence of folders, suggesting that it is the first folder starting with 'A'. The third digit '1' denotes the API's position within a subsequence of folders inside the initial folder starting with 'A', indicating it is in the first subfolder. Lastly, the final three digits '001' represent the API's sequence number within the subfolder, meaning it is the first API listed there.
A010001 - POST /ask_ai
- ask AI for help
A010002 - GET /ask_ai/[resultId]
- get ai result from faith
A020001 - GET /company/:companyId/accounting_setting
- accounting setting
A020002 - PUT /company/:companyId/accounting_setting
- accounting setting
A030001 - GET /company/:companyId/account
- accounting setting
A030002 - POST /company/:companyId/account
- accounting setting
A030001 - GET /company/:companyId/account/:accountId
- accounting setting
A031002 - PUT /company/:companyId/account/:accountId
- accounting setting
A031003 - DELETE /company/:companyId/account/:accountId
- accounting setting
A022001 - GET /company/:companyId/accounting_setting/opening_balance
- accounting setting
A022002 - PUT /company/:companyId/accounting_setting/opening_balance
- accounting setting
A030001 - POST /job/:jobId/application
- Create an application for a job
A040001 - GET /company/:companyId/assets
- List all assets
A040002 - GET /company/:companyId/assets/:assetId
- Get asset by ID
A040003 - POST /company/:companyId/assets
- Create asset
A040004 - PUT /company/:companyId/assets/:assetId
- Update asset
A040005 - DELETE /company/:companyId/assets/:assetId
- Delete asset
C010001 - GET /company/:companyId/customer_vendor
- customer/vendor setting
C010002 - POST /company/:companyId/customer_vendor
- customer/vendor setting
C011001 - GET /company/:companyId/customer_vendor_setting/:customerVendorId
- customer/vendor setting
C011002 - PUT /company/:companyId/customer_vendor_setting/:customerVendorId
- customer/vendor setting
C011003 - DELETE /company/:companyId/customer_vendor_setting/:customerVendorId
- customer/vendor setting
C030001 - GET /company/certificate
- get all certificate
C030002 - GET /company/certificate/[certificateId] -
get one certificate`
C030003 - POST /company/certificate
- post certificate
C030004 - DELETE /certificate/[certificateId]
- Delete Certificate By id
C040001 - GET /company?userId=
- user normal setting
, company list
C040002 - POST /company
- user normal setting
, company list
C041001 - GET /company/:companyId
- user normal setting
, company list
C041002 - PUT /company/:companyId
- user normal setting
, company list
C041003 - DELETE /company/:companyId
- user normal setting
, company list
C042001 - PUT /company/:companyId/select
- ISFMK00004
Not yet F010001 - POST /company/:companyId/file
- ISFMK00004
, ISFMK00058
, ISFMK00061右邊
Not yet F011001 - GET /company/:companyId/file/:fileId
- ISFMK00058
Not yet F011002 - DELETE /company/:companyId/file/:fileId
- ISFMK00058
J010001 - GET /job
- List all jobs
J010002 - GET /job/:jobId
- Get details of a specific job
L010001 - GET /company/:companyId/ledger
- List ledger details for a specific accounting account range
N020001 - GET /news
- list news
O010001 - GET /company/:companyId/order
O010002 - POST /company/:companyId/order
P010001 - GET /company/:companyId/payment?orderId=
P010002 - POST /company/:companyId/payment
R010001 - POST user/:userId/role
- select role
R010002 - GET user/:userId/role
- list role
R020001 - POST /company/:companyId/report
R020002 - GET /company/:companyId/report
- ISFMK00066
R021001 - GET /company/:companyId/report/:reportId
- ISFMK00066
S010001 - POST /sign-out
[不需驗證登入]
S020001 - GET /session
- ISFMK00001
[不需驗證登入]
T010001 - GET /company/:companyId/trial_balance
- List all trial balance items
U011001 - GET /user/:userId
- user normal setting
U011002 - PUT /user/:userId
- user normal setting
U011003 - DELETE /user/:userId
- user normal setting
U011004 - GET /user/:userId/user_setting
- user normal setting
U011005 - PUT /user/:userId/user_setting
- user normal setting
U011006 - DELETE /user/:userId/user_setting
- user normal setting
U011007 - GET /user/:userId/user_action_log
- user normal setting
U011008 - GET /user/:userId/user_agreement
- login page
V010001 - GET /company/voucher
- Get all voucher
V010002 - GET /company/voucher/[voucherId]
- GET One Voucher
V010003 - POST /company/voucher/readed
- POST check already Read voucher
V010004 - POST /company/voucher
- Post Voucher
V010005 - PUT /company/voucher/[voucherId]
- Put Voucher
V010006 - DELETE /company/voucher/[voucherId]
- Delete Voucher
-------------------- 以下是待確認 api v1 --------------------
------------------ 以上是待確認 api v1 -----------------------------------
description: ask AI for help
name
type
description
required
default
reason
string ('help', 'certificate', 'voucher')
the reason for asking AI, help is for stream chat, certificate is for analysis certificate ad return invoice json, voucher is will return voucher json
true
--
name
type
description
content
string
the content for asking AI
POST / askAi ?reason = help
const body = {
"content" : "what is the meaning of life?"
}
name
type
description
fileId
number
the "fileId" of that certificate (because certificate has not been saved into database yet)
POST / askAi ?reason = certificate
const body = {
"fileId" : 1001
}
name
type
description
certificateId
number
the "certificateId" of certificate, when user click "Please select certificate...", than will be activate
POST / askAi ?reason = voucher
const body = {
"certificateId" : 1001
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
AI / result
response data(AI if use "helper", result if "invoice", "voucher")
name
type
description
reason
string
the reason for asking AI
content
string
the content for asking AI
answer
string
the answer for asking AI
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : {
"reason" : " helper" ,
"content" : " what is the meaning of life?" ,
"answer" : " It os 42"
}
}
name
type
description
reason
string
the reason for asking AI
resultId
string
resultId for pusher sub
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : {
"reason" : " helper" ,
"resultId" : " a1b2c3d4f5g6h7i8j9k0"
}
}
Description: Use this api if ai result is missing
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
default
resultId
string
the resultId of 'certificate', 'voucher'
true
--
name
type
description
required
default
reason
string ('help', 'certificate', 'voucher')
the reason for asking AI, help is for stream chat, certificate is for analysis certificate ad return invoice json, voucher is will return voucher json
true
--
GET /ask_ai/:resultId?reason=certificate
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
certificate | voucher
base on helper type
this may not return all arguments in payload
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : {
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 , // second
"certificateNo" : " AB-12345678" , // to store special number to represent certificate, ex for invoice is invoiceNo
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 , // 5%, -1 for tax free
"taxPrice" : 200 , // how many price to pay taxes
"totalPrice" : 4200 ,
"counterPartyId" : 1 , // use fuzzy search
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : {
"voucherDate" : 1000000 ,
"type" : " payment" , // or transfer or receiving
"note" : " This is a note" ,
"counterPartyId" : 1001 ,
"lineItemsInfo" : {
"sum" : {
"debit" : true ,
"amount" : 1000
},
"lineItems" : [
{
"id" : 1001 ,
"amount" : 1000 ,
"description" : " This is a description" ,
"debit" : true ,
"accountId" : 1001 ,
},
{
"id" : 1002 ,
"amount" : 1001 ,
"description" : " This is a description" ,
"debit" : false ,
"accountId" : 1002 ,
}
]
}
}
}
description: list all customers and vendors
GET / company / :companyId / customer_vendor_setting
name
type
description
required
default
companyId
string
id of the company associated with the customer or vendor
true
--
GET / company / 1000 / customer_vendor_setting
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IPaginatedData<CustomerVendor[]>
response data
name
type
description
data
CustomerVendor[]
The journal data
page
number
The page number
totalPages
number
The total number of pages
totalCount
number
The total number of items
pageSize
number
The number of items per page
hasNextPage
boolean
Indicates if there is a next page
hasPreviousPage
boolean
Indicates if there is a previous page
sort
{sortBy: string, sortOrder: string}[]
The order and field to sort by
name
type
description
id
number
customer's or vendor's id
companyId
number
id of the company associated with the customer or vendor
name
string
customer's or vendor's name
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " List all customers and vendors successfully" ,
"payload" : {
"data" : [
{
"id" : 1 ,
"companyId" : 1 ,
"name" : " Test Customer" ,
"taxId" : " 123456" ,
"type" : " Customer" ,
"note" : " Test Note" ,
"createdAt" : 123456 ,
"updatedAt" : 123456
},
{
"id" : 2 ,
"companyId" : 1 ,
"name" : " Test Vendor" ,
"taxId" : " 123456" ,
"type" : " Vendor" ,
"note" : " Test Note" ,
"createdAt" : 123456 ,
"updatedAt" : 123456
}
],
"page" : 1 ,
"totalPages" : 5 ,
"totalCount" : 23 ,
"pageSize" : 5 ,
"hasNextPage" : true ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " createdAt" ,
"sortOrder" : " desc"
}
]
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: create a customer or vendor
POST / company / :companyId / customer_vendor_setting
name
type
description
required
default
companyId
string
id of the company associated with the customer or vendor
true
--
name
type
description
name
string
customer's or vendor's name
companyId
number
id of the company associated with the customer or vendor
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
POST / company / 1000 / customer_vendor_setting
const body = {
"name" : "cafecaWW" ,
"companyId" : 1000 ,
"country" : "Taiwan" ,
"taxId" : "3464" ,
"type" : "both" ,
"note" : "careful"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
CustomerVendor
response data
name
type
description
id
number
customer's or vendor's id
companyId
number
id of the company associated with the customer or vendor
name
string
customer's or vendor's name
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Create a customer or vendor successfully" ,
"payload" :
{
"id" : 3 ,
"companyId" : 1000 ,
"name" : " cafecaWW" ,
"country" : " Taiwan" ,
"taxId" : " 3464" ,
"type" : " both" ,
"note" : " careful" ,
"createdAt" : 1630000000 ,
"updatedAt" : 1630000000 ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get a customer or vendor by id
GET / company / :companyId / customer_vendor_setting / :customerVendorId
name
type
description
required
default
companyId
string
id of the company associated with the customer or vendor
true
--
customerVendorId
string
id of the customer or vendor
true
--
GET / company / 1000 / customer_vendor_setting / 1
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
CustomerVendor
response data
name
type
description
id
number
customer's or vendor's id
companyId
number
id of the company associated with the customer or vendor
name
string
customer's or vendor's name
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get a customer or vendor successfully" ,
"payload" :
{
"id" : 1 ,
"companyId" : 1000 ,
"name" : " cafeca" ,
"country" : " Taiwan" ,
"taxId" : " 1234" ,
"type" : " customer" ,
"note" : " bad one" ,
"createdAt" : 1630000000 ,
"updatedAt" : 1630000000 ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: update a customer or vendor by id
PUT / company / :companyId / customer_vendor_setting / :customerVendorId
name
type
description
required
default
companyId
string
id of the company associated with the customer or vendor
true
--
customerVendorId
string
id of the customer or vendor
true
--
name
type
description
name
string
customer's or vendor's name
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
PUT / company / 1000 / customer_vendor_setting / 1
const body = {
"name" : "MOon" ,
"country" : "Taiwan" ,
"taxId" : "3464" ,
"type" : "both" ,
"note" : "careful very"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
CustomerVendor
response data
name
type
description
id
number
customer's or vendor's id
companyId
number
id of the company associated with the customer or vendor
name
string
customer's or vendor's name
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Update a customer or vendor successfully" ,
"payload" :
{
"id" : 1 ,
"companyId" : 1000 ,
"name" : " MOon" ,
"country" : " Taiwan" ,
"taxId" : " 3464" ,
"type" : " both" ,
"note" : " careful very" ,
"createdAt" : 1630000001 ,
"updatedAt" : 1630000001 ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: soft delete a customer or vendor by id through update the delete time
DELETE / company / :companyId / customer_vendor_setting / :customerVendorId
name
type
description
required
default
companyId
string
id of the company associated with the customer or vendor
true
--
customerVendorId
string
id of the customer or vendor
true
--
DELETE / company / 1000 / customer_vendor_setting / 1
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
CustomerVendor
response data
name
type
description
id
number
customer's or vendor's id
companyId
number
id of the company associated with the customer or vendor
name
string
customer's or vendor's name
country
string
which country the tax id belongs to
taxId
string
customer's or vendor's tax id
type
string
type of the customer or vendor
note
string
note of the customer or vendor
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Delete a customer or vendor successfully" ,
"payload" :
{
"id" : 1 ,
"companyId" : 1000 ,
"name" : " MOon" ,
"country" : " Taiwan" ,
"taxId" : " 3464" ,
"type" : " both" ,
"note" : " careful very" ,
"createdAt" : 1630000001 ,
"updatedAt" : 1630000001 ,
"deletedAt" : 1630560002 ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
Description: Get all certificate in "Uploaded Certificate"
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
page
number
The page number, default is 1
no
pageSize
number
how many items in one page, default is 10
no
hasBeenUsed
boolean(true/false)
return certificate connect to something if true, return certificate connect to nothing if false, return all if undefined
no
sortBy
string
which column to sort by (ex: "createAt")
no
sortOrder
string ("asc"/"desc")
The order to sort by
no
startDate
integer(timestamp in second)
item include and after startDate
, default is 0
no
endDate
integer(timestamp in second)
item include and before startDate
, default is infinity
no
searchQuery
string
this field is to search name
no
To be continue
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Method not allowed" ,
"payload" : {
"data" : [
{
"id" : 1
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 , // second
"certificateNo" : " AB-12345678" , // to store special number to represent certificate, ex for invoice is invoiceNo
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 , // 5%, -1 for tax free
"taxPrice" : 200 , // how many price to pay taxes
"totalPrice" : 4200 ,
"counterPartyId" : 1 ,
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
"connectToId" : null // this can be interger or null, if null it has not been used on anything, if it has number, it will be
"name" : " invoice001.jpg" ,
"url" : " /api/v2/certificate/1" , // decrypedted
"type" : " invoice" , // what kind f certificate is this
"connectTotype" : " voucher" ,
"mimeTYpe" : " image/jpeg" ,
"size" : " 3.0 MB" ,
"uploadProgress" : 50 , // 50 percent
"aiResultId" : " douhvjax_-1" , // or null?
"aiStatus" : " success" ,
"createAt" : 10000000 , // second
"updateAt" : 10000000 , // second
}
],
"page" : 1 , // current page
"totalPages" : 3 ,
"totalCount" : 30 ,
"pageSize" : 10 ,
"hasNextPage" : true ,
"hasPreviousPage" : true ,
"sort" : [
{
"sortBy" : " createAt" ,
"sortOrder" : " desc"
}
]
}
}
Description: GET one certificate
GET /company/certificate/[certificateId]
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
certificateId
number
The id of certain certificate
Yes
To be continue
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Method not allowed" ,
"payload" : {
"id" : 1 ,
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 , // second
"certificateNo" : " AB-12345678" , // to store special number to represent certificate, ex for invoice is invoiceNo
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 , // 5%, -1 for tax free
"taxPrice" : 200 , // how many price to pay taxes
"totalPrice" : 4200 ,
"counterPartyId" : 1 ,
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
"connectToId" : null , // this can be interger or null, if null it has not been used on anything, if it has number, it will be
"name" : " invoice001.jpg" ,
"url" : " /api/v2/certificate/1" , // decrypedted
"type" : " invoice" , // what kind f certificate is this
"connectTotype" : " voucher" ,
"mimeType" : " image/jpeg" ,
"size" : " 3.0 MB" ,
"uploadProgress" : 50 , // 50 percent
"aiResultId" : " douhvjax_-1" , // or null?
"aiStatus" : " success" ,
"createAt" : 10000000 , // second
"updateAt" : 10000000 , // begin
}
}
Description : You should Post to File first, then get the file id. then post to here and get aichResultId, so that you can go to ask_ai
to get ai data
POST /company/certificate
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
inputOrOutput
string
input
certificateDate
int
certificate happened day in second
certificateNo
string
to store special number to represent certificate, ex for invoice is invoiceNo
currencyAlias
string
currency short name (alias) ex: "TWD"
priceBeforeTax
number
price before tax
taxRatio
number
if 5% please write 5, tax free be -1
taxPrice
number
Need to make sure it is priceBeforeTax
* taxRatio
totalPrice
number
need to be priceBeforeTax + taxPrice
counterPartyId
number
id f counter body
invoiceType
string
triplicate_uniform_invoice
deductible
boolean
can this invoice be deductible?
fileId
number
which file id
{
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 , // second
"certificateNo" : " AB-12345678" , // to store special number to represent certificate, ex for invoice is invoiceNo
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 , // 5%, -1 for tax free
"taxPrice" : 200 , // how many price to pay taxes
"totalPrice" : 4200 ,
"counterPartyId" : 1 ,
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
"fileId" : 1
}
To be continue
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Method not allowed" ,
"payload" : {
"aiResultId" : " douhvjax_-1"
}
}
Description : Delete certificate by id
DELETE /certificate/[certificateId]
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
certificateId
number
certificate id to delete
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Method not allowed" ,
"payload" : {
"id" : 1 ,
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 , // second
"certificateNo" : " AB-12345678" , // to store special number to represent certificate, ex for invoice is invoiceNo
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 , // 5%, -1 for tax free
"taxPrice" : 200 , // how many price to pay taxes
"totalPrice" : 4200 ,
"counterPartyId" : 1 ,
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
"connectToId" : null , // this can be interger or null, if null it has not been used on anything, if it has number, it will be
"name" : " invoice001.jpg" ,
"url" : " /api/v2/certificate/1" , // decrypedted
"type" : " invoice" , // what kind f certificate is this
"connectTotype" : " voucher" ,
"mimeType" : " image/jpeg" ,
"size" : " 3.0 MB" ,
"uploadProgress" : 50 , // 50 percent
"aiResultId" : " douhvjax_-1" , // or null?
"aiStatus" : " success" ,
"createAt" : 10000000 , // second
"updateAt" : 10000000 , // begin
}
}
description: get the normal setting of the user
GET / user / :userId / normal_setting
name
type
description
required
default
userId
string
id of the user
true
--
GET / user / 1 / normal_setting
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IUserSetting
response data
name
type
description
id
number
Primary Key
userId
number
User ID
personalInfo
IUserPersonalInfo
Personal information of the user
notificationSetting
INotificationSetting
Notification settings for the user
createdAt
number
Timestamp when created
updatedAt
number
Timestamp when updated
deletedAt
number
Timestamp when deleted
name
type
description
systemNotification
boolean
Indicates if system notifications are enabled
updateAndSubscriptionNotification
boolean
Indicates if update and subscription notifications are enabled
emailNotification
boolean
Indicates if email notifications are enabled
name
type
description
firstName
string
First name of the user
lastName
string
Last name of the user
country
string
Country of the user
language
string
Preferred language of the user
phone
string
Phone number of the user
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get an user normal setting successfully" ,
"payload" :
{
"id" : 1 ,
"userId" : 1 ,
"personalInfo" : {
"firstName" : " 王" ,
"lastName" : " 大明" ,
"country" : " Taiwan" ,
"language" : " english" ,
"phone" : " +886912345666"
},
"notificationSetting" : {
"systemNotification" : false ,
"updateAndSubscriptionNotification" : false ,
"emailNotification" : true
},
"createdAt" : 1633036800 ,
"updatedAt" : 1636854800 ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: update the normal setting of the user
PUT / user / :userId / normal_setting
name
type
description
required
default
userId
string
id of the user
true
--
name
type
description
name
string
name of the user
email
string
email of the user
phone
string
phone number of the user
country
string
country of the user belongs to
lauguage
string
using language of the user
device
string
using device name of the user
IpAddress
string
IP address of the user
systemNotification
boolean
whether receiving the notification about system
updateAndSubscriptionNotification
boolean
whether receiving the notification about the update and the subscription
emailNotification
boolean
whether sending the notification to email
PUT / user / 1 / normal_setting
const body = {
"name" : "王大明" ,
"phone" : "+886912345666" ,
"systemNotification" : false ,
"updateAndSubscriptionNotification" : false ,
"emailNotification" : true ,
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IUserSetting
response data
name
type
description
id
number
Primary Key
userId
number
User ID
personalInfo
IUserPersonalInfo
Personal information of the user
notificationSetting
INotificationSetting
Notification settings for the user
createdAt
number
Timestamp when created
updatedAt
number
Timestamp when updated
deletedAt
number
Timestamp when deleted
name
type
description
systemNotification
boolean
Indicates if system notifications are enabled
updateAndSubscriptionNotification
boolean
Indicates if update and subscription notifications are enabled
emailNotification
boolean
Indicates if email notifications are enabled
name
type
description
firstName
string
First name of the user
lastName
string
Last name of the user
country
string
Country of the user
language
string
Preferred language of the user
phone
string
Phone number of the user
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get an user normal setting successfully" ,
"payload" :
{
"id" : 1 ,
"userId" : 1 ,
"personalInfo" : {
"firstName" : " 王" ,
"lastName" : " 大明" ,
"country" : " Taiwan" ,
"language" : " english" ,
"phone" : " +886912345666"
},
"notificationSetting" : {
"systemNotification" : false ,
"updateAndSubscriptionNotification" : false ,
"emailNotification" : true
},
"createdAt" : 1633036800 ,
"updatedAt" : 1636854800 ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get the action log of the user
GET / user / :userId / action_log
name
type
description
required
default
userId
string
id of the user
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IPaginatedData<IUserActionLog[]>
response data
name
type
description
data
IUserActionLog[]
The journal data
page
number
The page number
totalPages
number
The total number of pages
totalCount
number
The total number of items
pageSize
number
The number of items per page
hasNextPage
boolean
Indicates if there is a next page
hasPreviousPage
boolean
Indicates if there is a previous page
sort
{sortBy: string, sortOrder: string}[]
The order and field to sort by
name
type
description
id
number
Primary Key
sessionId
string
Session ID of the user
userId
number
User ID
actionType
string
Type of action performed
actionDescription
string
Description of the action
actionTime
number
Timestamp when the action occurred
ipAddress
string
IP address from which the action was performed
userAgent
string
User agent information
apiEndpoint
string
API endpoint accessed
httpMethod
string
HTTP method used (e.g., GET, POST)
requestPayload
Record<string, string>
Payload sent with the request
httpStatusCode
number
HTTP status code returned
statusMessage
string
Status message returned by the server
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get an user action log successfully" ,
"payload" :
{
"data" : [
{
"id" : 1 ,
"sessionId" : " abc123" ,
"userId" : 1 ,
"actionType" : " LOGIN" ,
"actionDescription" : " User logged in" ,
"actionTime" : 165165156 ,
"ipAddress" : " 192.168.1.1" ,
"userAgent" : " Mozilla/5.0" ,
"apiEndpoint" : " /api/login" ,
"httpMethod" : " POST" ,
"requestPayload" : { "username" : " user1" },
"httpStatusCode" : 200 ,
"statusMessage" : " Success"
}
],
"page" : 1 ,
"totalPages" : 5 ,
"totalCount" : 23 ,
"pageSize" : 5 ,
"hasNextPage" : true ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " actionTime" ,
"sortOrder" : " desc"
}
]
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : []
}
description: This API provides the functionality to create an agreement for user.
POST `/user/:userId/agreement`
name
type
description
agreementHash
string
hash of the agreement
{
"agreementHash" : " 0x1234567890"
}
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description of response data
payload
IUser | {}
response data
name
type
description
id
number
unique number of user
name
string
user name
fullName
string
user full name
email
string
user email
phone
string
user phone
imageId
string
user image id
agreementList
string[]
list of agreement hash
createdAt
number
creation timestamp
updatedAt
number
update timestamp
{
"powerby" : " iSunFA v0.1.8+52" ,
"success" : true ,
"code" : " 201ISF0000" ,
"message" : " Created successfully" ,
"payload" : {
"id" : 10000001 ,
"name" : " book" ,
"fullName" : " book" ,
"email" : " [email protected] " ,
"phone" : " 0912345678" ,
"imageId" : " 0x1234567890" ,
"agreementList" : [" 0x1234567890" ],
"createdAt" : 1721635489 ,
"updatedAt" : 1721635489
}
}
失敗的回傳
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 400" ,
"message" : " bad request" ,
"payload" : {}
}
description: create a new company
name
type
description
name
string
name of the company
taxId
string
tax Id of the company
POST / company
const body = {
"name" : "iSunFA" ,
"taxId" : "1234"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
{ name, taxId }
response data
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Create a new company successfully" ,
"payload" :
{
"name" : " iSunFA" ,
"taxId" : " 1234"
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get all companies of the user
name
type
description
required
default
userId
string
id of the user
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IPaginatedData<ICompanyBeta[]>
response data
name
type
description
data
ICompanyBeta[]
The journal data
page
number
The page number
totalPages
number
The total number of pages
totalCount
number
The total number of items
pageSize
number
The number of items per page
hasNextPage
boolean
Indicates if there is a next page
hasPreviousPage
boolean
Indicates if there is a previous page
sort
{sortBy: string, sortOrder: string}[]
The order and field to sort by
name
type
description
id
number
Primary Key
imageId
string
ID of the associated image
name
string
Name of the company
taxId
string
Tax identification number
tag
string
Tag or label associated with the company
startDate
number
Start date of the company (timestamp)
createdAt
number
Timestamp when created
updatedAt
number
Timestamp when updated
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get all companies of the user successfully" ,
"payload" :
{
"data" : [
{
"id" : 1 ,
"imageId" : " abc123" ,
"name" : " iSunFA" ,
"taxId" : " 1234" ,
"tag" : " accounting" ,
"startDate" : 1633036800 ,
"createdAt" : 1633036800 ,
"updatedAt" : 1633036800
}
],
"page" : 1 ,
"totalPages" : 5 ,
"totalCount" : 23 ,
"pageSize" : 5 ,
"hasNextPage" : true ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " startDate" ,
"sortOrder" : " desc"
}
]
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : []
}
description: get a company by id of the company
name
type
description
required
default
companyId
string
id of the company
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
company
response data
name
type
description
id
number
id of the company
imageId
string
ID of the associated image
name
string
name of the company
taxId
string
tax Id of the company
tag
string
tag or label associated with the company
startDate
number
start date of the company
createdAt
number
timestamp when created
updatedAt
number
timestamp when updated
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get a company info of the user successfully" ,
"payload" :
{
"id" : 1 ,
"imageId" : " abc123" ,
"name" : " iSunFA" ,
"taxId" : " 1234" ,
"tag" : " accounting" ,
"startDate" : 1633036800 ,
"createdAt" : 1633036800 ,
"updatedAt" : 1633036800
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: update a company by id of the company
name
type
description
required
default
companyId
string
id of the company
true
--
name
type
description
name
string
name of the company
taxId
string
tax Id of the company
tag
string
tag or label associated with the company
PUT / company / 1
const body = {
"name" : "iSunFAAAA" ,
"taxId" : "12345678" ,
"tag" : "accounting"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
company
response data
name
type
description
id
number
id of the company
imageId
string
ID of the associated image
name
string
name of the company
taxId
string
tax Id of the company
tag
string
tag or label associated with the company
startDate
number
start date of the company
createdAt
number
timestamp when created
updatedAt
number
timestamp when updated
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Update a company info of the user successfully" ,
"payload" :
{
"id" : 1 ,
"imageId" : " abc123" ,
"name" : " iSunFAAAA" ,
"taxId" : " 12345678" ,
"tag" : " accounting" ,
"startDate" : 1633036800 ,
"createdAt" : 1633036800 ,
"updatedAt" : 1633036800
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: delete a company by id of the company
DELETE / company / :companyId
name
type
description
required
default
companyId
string
id of the company
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
company
response data
name
type
description
id
number
id of the company
imageId
string
ID of the associated image
name
string
name of the company
taxId
string
tax Id of the company
tag
string
tag or label associated with the company
startDate
number
start date of the company
createdAt
number
timestamp when created
updatedAt
number
timestamp when updated
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Delete a company info of the user successfully" ,
"payload" :
{
"id" : 1 ,
"imageId" : " abc123" ,
"name" : " iSunFAAAA" ,
"taxId" : " 12345678" ,
"tag" : " accounting" ,
"startDate" : 1633036800 ,
"createdAt" : 1633036800 ,
"updatedAt" : 1633036800
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: This API provides the functionality to select a company.
PUT `/company/:companyId/select`
name
type
description
required
default
companyId
string
specific company number
yes
-
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description of response data
payload
company
response data or {}
name
type
description
id
number
id of the company
imageId
string
ID of the associated image
name
string
name of the company
taxId
string
tax Id of the company
tag
string
tag or label associated with the company
startDate
number
start date of the company
createdAt
number
timestamp when created
updatedAt
number
timestamp when updated
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Select a company successfully" ,
"payload" :
{
"id" : 1 ,
"imageId" : " abc123" ,
"name" : " iSunFAAAA" ,
"taxId" : " 12345678" ,
"tag" : " accounting" ,
"startDate" : 1633036800 ,
"createdAt" : 1633036800 ,
"updatedAt" : 1633036800
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: create a kyc
name
type
description
required
default
userId
string
id of the user
true
--
type
string
type of the kyc
true
--
name
type
description
name
string
bookkeeper's name
birthDate
string
bookkeeper's birthday
email
string
bookkeeper's email
phone
string
bookkeeper's phone number
qualification
boolean
bookkeeper's qualification
certificationNumber
string
bookkeeper's certification number
personalIdType
string
bookkeeper's personal id type
personalIdFileId
string
bookkeeper's personal id
certificationFileId
string
bookkeeper's certification file
POST user / 1 / kyc
const body = {
"type" : "bookkeeper" ,
"name" : "isunfa" ,
"birthDate" : "1990-01-01" ,
"email" : "[email protected] " ,
"phone" : "0912345678" ,
"qualification" : true ,
"certificationNumber" : "1234" ,
"personalIdType" : "id" ,
"personalIdFileId" : 1234 ,
"certificationFileId" : 1234
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
KYC
response data
name
type
description
id
number
kyc's id
userId
number
id of the user associated with the kyc
type
string
type of the kyc
content
string
content of the kyc
status
string
status of the kyc
reviewer
number
name of the reviewer
note
string
note of the kyc
createdAt
number
create time
updatedAt
number
update time
reviewedAt
number
review time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Create a kyc successfully" ,
"payload" :
{
"id" : 1 ,
"userId" : 1 ,
"type" : " bookkeeper" ,
"content" : " isunfa" ,
"status" : " pending" ,
"reviewer" : null ,
"note" : null ,
"createdAt" : 1630000001 ,
"updatedAt" : 1630000001 ,
"reviewedAt" : null ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
GET /company/:companyId/order
name
type
description
required
default
companyId
string
specific id of the company
yes
-
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description the status of the request
payload
Order[]
order list
name
type
description
id
number
Unique identifier for the order
companyId
number
Identifier for the associated company
planId
number
Identifier for the associated plan
status
string
Current status of the order
createdAt
number
Timestamp when the order was created
updatedAt
number
Timestamp when the order was last updated
{
"powerby" : " iSunFA v0.1.4+55" ,
"success" : true ,
"code" : " 200ISF0002" ,
"message" : " list successfully" ,
"payload" : [
{
"id" : 1 ,
"companyId" : 1 ,
"planId" : 1 ,
"status" : " success" ,
"createdAt" : 1630000000 ,
"updatedAt" : 1630000000
}
]
}
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 400" ,
"message" : " bad request" ,
"payload" : {}
}
POST /company/:companyId/order
name
type
description
required
default
companyId
string
specific id of the company
yes
-
name
type
description
required
default
planId
number
specific id of the plan
yes
-
status
string
status of the order
yes
-
{
"planId" : 1 ,
"status" : " active"
}
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description the status of the request
payload
Order
an order
{
"powerby" : " iSunFA v0.1.4+55" ,
"success" : true ,
"code" : " 200ISF0002" ,
"message" : " Create successfully" ,
"payload" : {
"id" : 12345 ,
"companyId" : 678 ,
"planId" : 91011 ,
"status" : " active" ,
"createdAt" : 1627890123 ,
"updatedAt" : 1627891123
}
}
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 400" ,
"message" : " bad request" ,
"payload" : {}
}
GET /company/:companyId/payment?orderId=
name
type
description
required
default
companyId
string
specific id of the company
yes
-
name
type
description
required
default
orderId
string
specific id of the order
yes
-
GET /company/1/payment?orderId=ORDER00001
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description the status of the request
payload
string
redirectUrl
{
"powerby" : " iSunFA v0.1.4+55" ,
"success" : true ,
"code" : " 200ISF0002" ,
"message" : " Get successfully" ,
"payload" : " https://${merchantId}.testing.oen.tw/checkout/subscription/create/${id}"
}
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 400" ,
"message" : " bad request" ,
"payload" : " "
}
POST /company/:companyId/payment
name
type
description
required
default
companyId
string
specific id of the company
yes
-
name
type
description
required
default
token
string
specific id of the token
yes
-
customId
string
json stringify, with orderIdNum, subPlan, subPeriod
yes
-
POST /company/1/payment
{
"token": "2etM3aQSCMWv7OGYQ6gDWtcOJaR",
"customId": "{"orderId":1,"subPlan":"Trail","subPeriod":30}"
}
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description the status of the request
payload
string
payment record status
{
"powerby" : " iSunFA v0.1.4+55" ,
"success" : true ,
"code" : " 200ISF0002" ,
"message" : " Create successfully" ,
"payload" : " success"
}
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 400" ,
"message" : " bad request" ,
"payload" : " "
}
description: create a role for user
name
type
description
required
default
userId
string
id of the user
true
--
name
type
description
roleName
string
role's name
POST user / 1 / role
const body = {
"roleName" : "bookkeeper"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
userRole
response data
name
type
description
id
number
userRole's id
userId
number
id of the user associated with the role
roleId
string
role's id
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Create a role successfully" ,
"payload" :
{
"id" : 1 ,
"userId" : 1 ,
"roleId" : 1 ,
"createdAt" : 1630000001 ,
"updatedAt" : 1630000001 ,
"deletedAt" : null ,
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get all roles of the user
name
type
description
required
default
userId
string
id of the user
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IPaginatedData<IUserRole[]>
response data
name
type
description
data
IUserRole[]
The journal data
page
number
The page number
totalPages
number
The total number of pages
totalCount
number
The total number of items
pageSize
number
The number of items per page
hasNextPage
boolean
Indicates if there is a next page
hasPreviousPage
boolean
Indicates if there is a previous page
sort
{sortBy: string, sortOrder: string}[]
The order and field to sort by
name
type
description
id
number
userRole's id
userId
number
id of the user associated with the role
roleId
string
role's id
roleName
string
role's name
permissionList
string
role's permission
lastLoginAt
number
last login time
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get all roles of the user successfully" ,
"payload" :
{
"data" : [
{
"id" : 1 ,
"userId" : 1 ,
"roleId" : 1 ,
"roleName" : " bookkeeper" ,
"permissionList" : " read,write" ,
"lastLoginAt" : 1630000001 ,
"createdAt" : 1630000001 ,
"updatedAt" : 1630000001 ,
"deletedAt" : null
}
],
"page" : 1 ,
"totalPages" : 5 ,
"totalCount" : 23 ,
"pageSize" : 5 ,
"hasNextPage" : true ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " createdAt" ,
"sortOrder" : " desc"
}
]
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: Create a report based on the given date and financial statement name. Base on
financial statement name, startDate and endDate, this API will find if the report has been
generated or not, if the report has been generated it will return the ID of that report, if not it
will create a new report and return the id of that report. This API will generate the report base
on lastPeriodStartDate and lastPeriodEndDate (which base on startDate minus one year and endDate
minus one year), and will return the ID of the last period report if it has been generated.
POST /company/:companyId/report
name
type
description
require
default
projectId
numeric | undefined
which project this financial report will link to, it will be set as null if: 1. not provided, 2.provide null or undefined 3. provide other non numeric words
false
undefined
type
ReportSheetType
which financial statement you want to create, see description below, it will be BalanceSheet if not provided
false
BalanceSheet
reportLanguage
string
this query is not implemented, it will only add language tag to report name
false
"tw"
from
timestamp in second (millisecond will be transform into second if provided)
start date of the financial report period, it will be set to 0 if choosing BalanceSheet as reportType, this number minus 1 year will be the start date of last period
false
first second of this year
to
timestamp in second (millisecond will be transform into second if provided)
end date of the financial report period, this number minus 1 year will be the start date of last period
false
last second of today
reportType
string
since report_financial and report_analysis might be combined, use "financial" (or not provided) to actually generate financial report, it will be "financial" if not provided
false
"financial"
name
type
description
BALANCE_SHEET
string
it represent "balance_sheet"
INCOME_STATEMENT
string
it represent "comprehensive_income_statement"
CASH_FLOW_STATEMENT
string
it represent "cash_flow_statement"
REPORT_401
string
it represent "report_401"
name
type
description
id
number
the id of the report generated or found
{
"powerby" : " iSunFA v0.1.8+36" ,
"success" : true ,
"code" : " 201ISF0000" ,
"message" : " Created successfully" ,
"payload" : 10000001
}
{
"powerby" : " iSunFA v0.1.8+36" ,
"success" : false ,
"code" : " 400ISF0001" ,
"message" : " Invalid request" ,
"payload" : -1
}
description: get all report of company, it will return all report of company by status,
including financial report and analysis report
GET /company/:companyId/report
const { targetPage, pageSize, sortBy, sortOrder, startDateInSecond, endDateInSecond, searchQuery, status } = req.query;
name
type
description
require
default
targetPage
numeric
which page of date you want to check
false
1
pageSize
numeric
how many items a page need to return
false
10
sortBy
'createdAt' | 'name' | 'type' | 'reportType' | 'status'
which category to be sort by
false
"createdAt"
sortOrder
'desc' | 'asc
is "sortBy" need to be ascent or descent
false
"desc"
startDateInSecond
numeric (timestamp in second)
items "from" after this date will be selected (Balance sheet won't check this)
false
0
endDateInSecond
numeric (timestamp in second)
items "to" before this date will be selected
false
Number.MAX_SAFE_INTEGER
searchQuery
string
keyword use to search name, type, report type
false
undefined
status
'pending' | 'generated' | 'all'
which status of report you want to get
false
'all'
GET /company/:companyId/report?status=pending&targetPage=1&pageSize=10&sortBy=createdAt&sortOrder=desc&startDateInSecond=0&endDateInSecond=1717948800&searchQuery=balance sheet
name
type
description
powerby
string
ISunFa api 1.0.0
success
boolean
true or false
code
string
response code
message
string
description of response data
payload
IPaginatedReport
response data
name
type
description
data
IReport[]
list of report
totalPage
number
total page of item
page
number
current page
name
type
description
id
number
the unique index for the report in the database
companyId
number
the unique index for the company in the database
tokenContract
string
the token contract of the report
tokenId
string
the token id of the report
name
string
the name of the report
from
number
the start date of the report
to
number
the end date of the report
type
ReportType(enum)
the type of the report('financial' / 'analysis')
reportType
ReportSheetType(enum)
the report type of the report('balance_sheet' / 'comprehensive_income_statement' / 'cash_flow_statement' / 'report_401')
status
string
the status of the report
remainingSeconds
number
the remaining seconds of the report
paused
boolean
check if the report is paused
projectId
number | null
the unique index for the project in the database
project
{ id: string, name: string, code: string } | null
the project of the report
reportLink
string
the link of the report
downloadLink
string
the download link of the report
blockChainExplorerLink
string
the blockchain explorer link of the report
evidenceId
string
the evidence id of the report
content
IAccountReadyForFrontend[]
the content of the report
otherInfo
unknown
other information of the report
createdAt
number
the create date of the report
updatedAt
number
the update date of the report
name
type
description
code
string
The unique identifier for the account.
name
string
The name of the account.
curPeriodAmount
number
The amount for the current period.
curPeriodAmountString
string
The amount for the current period as a string.
curPeriodPercentage
number
The percentage for the current period.
prePeriodAmount
number
The amount for the previous period.
prePeriodAmountString
string
The amount for the previous period as a string.
prePeriodPercentage
number
The percentage for the previous period.
indent
number
The indentation level for display purposes.
{
"powerby" : " iSunFA v0.1.8+51" ,
"success" : true ,
"code" : " 201ISF0000" ,
"message" : " Get successfully" ,
"payload" : {
"data" : [
{
"id" : 1 ,
"companyId" : 123 ,
"tokenContract" : " 0x123abc" ,
"tokenId" : " 456def" ,
"name" : " Mock Report" ,
"from" : 1630444800 ,
"to" : 1633046400 ,
"type" : " financial" ,
"reportType" : " balance_sheet" ,
"status" : " completed" ,
"remainingSeconds" : 0 ,
"paused" : false ,
"projectId" : null ,
"project" : null ,
"reportLink" : " https://example.com/report" ,
"downloadLink" : " https://example.com/download" ,
"blockChainExplorerLink" : " https://example.com/explorer" ,
"evidenceId" : " abc123" ,
"content" : [
{
"code" : " 4000" ,
"name" : " 營業收入合計" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
}......
],
"otherInfo" : null ,
"createdAt" : 1633046400 ,
"updatedAt" : 1633046400
},
{
"id" : 2 ,
"companyId" : 123 ,
"tokenContract" : " 0x123abc" ,
"tokenId" : " 456def" ,
"name" : " Mock Report" ,
"from" : 1630444800 ,
"to" : 1633046400 ,
"type" : " financial" ,
"reportType" : " balance_sheet" ,
"status" : " completed" ,
"remainingSeconds" : 0 ,
"paused" : false ,
"projectId" : null ,
"project" : null ,
"reportLink" : " https://example.com/report" ,
"downloadLink" : " https://example.com/download" ,
"blockChainExplorerLink" : " https://example.com/explorer" ,
"evidenceId" : " abc123" ,
"content" : [
{
"code" : " 4000" ,
"name" : " 營業收入合計" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
}......
],
"otherInfo" : null ,
"createdAt" : 1633046400 ,
"updatedAt" : 1633046400
}
],
"page" : 1 ,
"totalPages" : 0 ,
"totalCount" : 0 ,
"pageSize" : 10 ,
"hasNextPage" : false ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " createdAt" ,
"sortOrder" : " desc"
}
]
}
}
Error response
{
"powerby" : " iSunFA v0.1.8+51" ,
"success" : false ,
"code" : " 500ISF0002" ,
"message" : " Database list failed" ,
"payload" : {}
}
description: get Report by id, it will return Balance sheet, Income statement or Cash flow or 401 report
GET /company/:companyId/report/:reportId
name
type
description
required
default
reportId
number
specific id of the report
yes
-
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description
payload
FinancialReport or Report(only for 401 report)
the data
name
type
description
company
{id: number, code: string, name: string}
company related info
preDate
{from: number, to: number }
last period time spam, it will be same date of curDate last year
curDate
{from: number, to: number }
it will be from and to of current date
reportType
ReportSheetType { BALANCE_SHEET = 'balance_sheet', INCOME_STATEMENT = 'comprehensive_income_statement', CASH_FLOW_STATEMENT = 'cash_flow_statement', REPORT_401 = 'report_401',}
Financial Report type
general
FinancialReportItem[]
simplified version of financial report rows
details
FinancialReportItem[]
detail version of financial report rows
otherInfo
BalanceSheetOtherInfo | IncomeStatementOtherInfo | CashFlowStatementOtherInfo
base on your financial report type, it will return different info
name
type
description
code
string
code of accounting
name
string
name of accounting
curPeriodAmount
number
this period amount of money
curPeriodAmountString
string
this period amount of money but in string, it will be brackets if negative
curPeriodPercentage
string
percentage of amount vs total amount of that account category
prePeriodAmount
number
last period amount of money
prePeriodAmount
string
last period amount of money but in string, it will be brackets if negative
prePeriodPercentage
string
percentage of amount vs total amount of that account category
indent
number
what level of this account in account tree
name
type
description
assetLiabilityRatio
{[date: string]: {data: number[], labels: string[]}}
data 和 labels 的順序是 [資產, 負債, 權益],key 則是日期 YYYY-MM-DD
assetMixRatio
{[date: string]: {data: number[], labels: string[]}}
data 和 labels 的順序是 [資產, 負債, 權益],key 則是日期 YYYY-MM-DD
dso
{ curDso: number; preDso: number;}
應收週轉天數:curDso 是本期,preDso 是上期
inventoryTurnoverDays
{ curInventoryTurnoverDays: number; preInventoryTurnoverDays: number; };
存貨週轉天數: curInventoryTurnoverDays 是本期, preInventoryTurnoverDays 是上期
name
type
description
revenueAndExpenseRatio
Check Below
投入費用和成本, 與收入的倍數關係
revenueToRD
Check Below
收入提撥制研發費用比例
name
type
description
revenue
IAccountReadyForFrontend
revenue data of current year income statement
totalCost
IAccountReadyForFrontend
total Cost (not expense) of current year income statement
salesExpense
IAccountReadyForFrontend
sale expense data of current year income statement
administrativeExpense
IAccountReadyForFrontend
admin expense data of current year income statement
ratio
{curRatio: number; preRatio: number;};
ratio of revenue/(cost + expense)
name
type
description
revenue
IAccountReadyForFrontend
revenue data of current year income statement
researchAndDevelopmentExpense
IAccountReadyForFrontend
Research and Development expense of current year income statement
ratio
{curRatio: number; preRatio: number;};
ratio of revenue/(cost + expense)
CashFlowStatementOtherInfo
name
type
description
operatingStabilized
Check Below
營業活動穩定度:A 與 B 呈現穩定比例關係,公司的營業活動穩定
lineChartDataForRatio
{data: number[];labels: string[];}
A 和 b 比例的線圖, labels 依照時間排列
strategyInvest
[year: string]: {data: number[];labels: string[];};
依照年份列出 [不動產、廠房、設備的收支項目, 策略性投資項目, 其他] data 是資料內容,labels 是資料名稱
thirdTitle
string
三:營業活動穩定度 的標題內容
forthTitle
String
四:投資活動 - 「不動產, 廠房及設備」及 「策略性投資」 的標題內容
fourPointOneTitle
String
四之一:202X 年度上圖組成支系項及 ISunFa 認為
ourThoughts
String[] (length is 3)
四之一的 段落內容: outThoughts[0] 是第一段(不動產, 廠房, 設備的收支項目),outThoughts[1] 是第二段(策略性投資項目),outThoughts[2] 是第三段(其他)
freeCash
Check Below
五、年度產生的自由現金圖表資料
name
type
description
beforeTaxIncome
[year: string]: number
5 period (current year ~ current year - 4) of income before tax
amortizationDepreciation
[year: string]: number
5 period (current year ~ current year - 4) of amortization and depreciation
tax
[year: string]: number
5 period (current year ~ current year - 4) of tax expense
operatingIncomeCashFlow
[year: string]: number
5 period (current year ~ current year - 4) of operating income cash flow
ratio
[year: string]: number
5 period (current year ~ current year - 4) of (beforeTaxIncome + amortizationDepreciation + tax) / operatingIncomeCashFlow
freeCash: {
[ year : string ] : {
operatingCashFlow : number ;
ppe: number ;
intangibleAsset: number ;
freeCash: number ;
} ;
} ;
name
type
description
[year]
string
以年份當作 key, 有今年度和去年度資料
operatingCashFlow
number
營業活動產生的現金流量
ppe
number
不動產、廠房及設備的收支項目
intangibleAsset
number
無形資產的收支項目
freeCash
number
自由現金流量
{
"powerby" : " iSunFA v0.1.8+101" ,
"success" : true ,
"code" : " 200ISF0000" ,
"message" : " Success" ,
"payload" : {
"company" : {
"id" : 10000131 ,
"code" : " 123456" ,
"name" : " aaa"
},
"reportType" : " incomeStatement" ,
"preDate" : {
"from" : 1688140800 ,
"to" : 1690732799
},
"curDate" : {
"from" : 1719763200 ,
"to" : 1722355199
},
"details" : [
{
"code" : " " ,
"name" : " 營業收入" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},...
],
"general" : [
{
"code" : " 4000" ,
"name" : " 營業收入合計" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},...
],
"otherInfo" : {
"revenueAndExpenseRatio" : {
"revenue" : {
"code" : " 4000" ,
"name" : " 營業收入合計" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},
"totalCost" : {
"code" : " 5000" ,
"name" : " 營業成本合計" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},
"salesExpense" : {
"code" : " 6100" ,
"name" : " 推銷費用" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},
"administrativeExpense" : {
"code" : " 6200" ,
"name" : " 管理費用" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},
"ratio" : {
"curRatio" : 0 ,
"preRatio" : 0
}
},
"revenueToRD" : {
"revenue" : {
"code" : " 4000" ,
"name" : " 營業收入合計" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},
"researchAndDevelopmentExpense" : {
"code" : " 6300" ,
"name" : " 研究發展費用" ,
"curPeriodAmount" : 0 ,
"curPeriodPercentage" : 0 ,
"curPeriodAmountString" : " 0" ,
"prePeriodAmount" : 0 ,
"prePeriodPercentage" : 0 ,
"prePeriodAmountString" : " 0" ,
"indent" : 0
},
"ratio" : {
"curRatio" : 0 ,
"preRatio" : 0
}
}
}
}
}
description: get the accounting setting of the company
GET / company / :companyId / accounting_setting
name
type
description
required
default
companyId
string
id of the company
true
--
GET / company / 1 / accounting_setting
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IAccountingSetting
response data
name
type
description
id
number
Primary Key
companyId
number
Company ID
companyName
string
Name of the company
taxSettings
ITaxSetting
Tax settings for the company
currency
string
Currency code (e.g., USD, EUR)
lastDayOfFiscalYear
number
Last day of the fiscal year
shortcutList
IShortcut[]
List of shortcuts defined for the company
name
type
description
salesTax
ITaxRate
Sales tax settings
purchaseTax
ITaxRate
Purchase tax settings
returnPeriodicity
string
Frequency of tax return (e.g., monthly)
name
type
description
taxable
boolean
Indicates if the item is taxable
rate
number
Tax rate percentage
name
type
description
action
IAction
The action that this shortcut performs
keyList
string[]
List of keys associated with the shortcut
name
type
description
name
string
Name of the action
description
string
Description of the action
fieldList
IField[]
List of fields associated with the action
name
type
description
name
string
Name of the field
value
string
Value of the field
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get a company accounting setting successfully" ,
"payload" :
{
"id" : 1 ,
"companyId" : 1 ,
"companyName" : " iSunFA" ,
"taxSettings" : {
"salesTax" : {
"taxable" : true ,
"rate" : 7
},
"purchaseTax" : {
"taxable" : true ,
"rate" : 7
},
"returnPeriodicity" : " Month"
},
"currency" : " USD" ,
"lastDayOfFiscalYear" : 30 ,
"shortcutList" : [
{
"action" : {
"name" : " Create Invoice" ,
"description" : " Create a new invoice" ,
"fieldList" : [
{
"name" : " Customer" ,
"value" : " Customer Name"
},
{
"name" : " Amount" ,
"value" : " 1000"
}
]
},
"keyList" : [" Ctrl" , " I" ]
}
]
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: update the accounting setting of the company
PUT / company / :companyId / accounting_setting
name
type
description
required
default
companyId
string
id of the company
true
--
name
type
description
taxSettings
ITaxSetting
Tax settings for the company
currency
string
Currency code (e.g., USD, EUR)
lastDayOfFiscalYear
number
Last day of the fiscal year
shortcutList
IShortcut[]
List of shortcuts defined for the company
name
type
description
salesTax
ITaxRate
Sales tax settings
purchaseTax
ITaxRate
Purchase tax settings
returnPeriodicity
string
Frequency of tax return (e.g., monthly)
name
type
description
taxable
boolean
Indicates if the item is taxable
rate
number
Tax rate percentage
name
type
description
action
IAction
The action that this shortcut performs
keyList
string[]
List of keys associated with the shortcut
name
type
description
name
string
Name of the action
description
string
Description of the action
fieldList
IField[]
List of fields associated with the action
name
type
description
name
string
Name of the field
value
string
Value of the field
PUT / company / 1 / accounting_setting
const body = {
"taxSettings" : {
"salesTax" : {
"taxable" : true ,
"rate" : 7
} ,
"purchaseTax" : {
"taxable" : true ,
"rate" : 7
} ,
"returnPeriodicity" : "Month"
} ,
"currency" : "USD" ,
"lastDayOfFiscalYear" : 30 ,
"shortcutList" : [
{
"action" : {
"name" : "Create Invoice" ,
"description" : "Create a new invoice" ,
"fieldList" : [
{
"name" : "Customer" ,
"value" : "Customer Name"
} ,
{
"name" : "Amount" ,
"value" : "1000"
}
]
} ,
"keyList" : [ "Ctrl" , "I" ]
}
]
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IAccountingSetting
response data
name
type
description
id
number
Primary Key
companyId
number
Company ID
companyName
string
Name of the company
taxSettings
ITaxSetting
Tax settings for the company
currency
string
Currency code (e.g., USD, EUR)
lastDayOfFiscalYear
number
Last day of the fiscal year
shortcutList
IShortcut[]
List of shortcuts defined for the company
name
type
description
salesTax
ITaxRate
Sales tax settings
purchaseTax
ITaxRate
Purchase tax settings
returnPeriodicity
string
Frequency of tax return (e.g., monthly)
name
type
description
taxable
boolean
Indicates if the item is taxable
rate
number
Tax rate percentage
name
type
description
action
IAction
The action that this shortcut performs
keyList
string[]
List of keys associated with the shortcut
name
type
description
name
string
Name of the action
description
string
Description of the action
fieldList
IField[]
List of fields associated with the action
name
type
description
name
string
Name of the field
value
string
Value of the field
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get a company accounting setting successfully" ,
"payload" :
{
"id" : 1 ,
"companyId" : 1 ,
"companyName" : " iSunFA" ,
"taxSettings" : {
"salesTax" : {
"taxable" : true ,
"rate" : 7
},
"purchaseTax" : {
"taxable" : true ,
"rate" : 7
},
"returnPeriodicity" : " Month"
},
"currency" : " USD" ,
"lastDayOfFiscalYear" : 30 ,
"shortcutList" : [
{
"action" : {
"name" : " Create Invoice" ,
"description" : " Create a new invoice" ,
"fieldList" : [
{
"name" : " Customer" ,
"value" : " Customer Name"
},
{
"name" : " Amount" ,
"value" : " 1000"
}
]
},
"keyList" : [" Ctrl" , " I" ]
}
]
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get the accounting accounts of the company
GET / company / :companyId / accounting_setting / account
name
type
description
required
default
companyId
string
id of the company
true
--
GET / company / 1 / accounting_setting / account
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
{ code: string, name: string }[]
response data
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get accounting accounts of the company successfully" ,
"payload" : [
{
"code" : " 1755" ,
"name" : " Royalty assets"
},
{
"code" : " 1780" ,
"name" : " Intangible assets"
},
{
"code" : " 1920" ,
"name" : " Deposit of Margin"
},
{
"code" : " 1990" ,
"name" : " Other non-current assets"
}
]
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
createSubAccountingAccount
description: create a sub accounting account of the company
POST / company / :companyId / accounting_setting / account
name
type
description
required
default
companyId
string
id of the company
true
--
name
type
description
code
string
code of the account
name
string
name of the account
POST / company / 1 / accounting_setting / account
const body = {
"code" : "1755" ,
"name" : "Sub royalty assets"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
subAccount
response data
name
type
description
accountingType
string
type of account, (e.g., Assets)
assetType
string
category type, (e.g., Non-Current Assets)
currentAssetType
string
type of current Asset, (e.g., Consolidated financial assets)
code
string
sub account Code
name
string
sub account name
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Create a sub accounting account of the company successfully" ,
"payload" :
{
"accountingType" : " Assets" ,
"assetType" : " Non-Current Assets" ,
"currentAssetType" : " Consolidated financial assets" ,
"code" : " 1755-01" ,
"name" : " Sub royalty assets"
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get a sub accounting account of the company
GET / company / :companyId / account / :accountId
name
type
description
required
default
companyId
string
id of the company
true
--
accountId
string
id of the account
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
subAccount
response data
name
type
description
accountingType
string
type of account, (e.g., Assets)
assetType
string
category type, (e.g., Non-Current Assets)
currentAssetType
string
type of current Asset, (e.g., Consolidated financial assets)
code
string
sub account Code
name
string
sub account name
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get a sub accounting account of the company successfully" ,
"payload" :
{
"accountingType" : " Assets" ,
"assetType" : " Non-Current Assets" ,
"currentAssetType" : " Consolidated financial assets" ,
"code" : " 1755-01" ,
"name" : " Sub royalty assets"
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
updateSubAccountingAccount
description: update a sub accounting account of the company
PUT / company / :companyId / account / :accountId
name
type
description
required
default
companyId
string
id of the company
true
--
accountId
string
id of the account
true
--
name
type
description
code
string
code of the account
name
string
name of the account
PUT / company / 1 / account / 1
const body = {
"code" : "1755" ,
"name" : "Sub royalty assets"
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
subAccount
response data
name
type
description
accountingType
string
type of account, (e.g., Assets)
assetType
string
category type, (e.g., Non-Current Assets)
currentAssetType
string
type of current Asset, (e.g., Consolidated financial assets)
code
string
sub account Code
name
string
sub account name
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Update a sub accounting account of the company successfully" ,
"payload" :
{
"accountingType" : " Assets" ,
"assetType" : " Non-Current Assets" ,
"currentAssetType" : " Consolidated financial assets" ,
"code" : " 1755-01" ,
"name" : " Sub royalty assets"
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
deleteSubAccountingAccount
description: delete a sub accounting account of the company
DELETE / company / :companyId / account / :accountId
name
type
description
required
default
companyId
string
id of the company
true
--
accountId
string
id of the account
true
--
DELETE / company / 1 / account / 1
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
subAccount
response data
name
type
description
accountingType
string
type of account, (e.g., Assets)
assetType
string
category type, (e.g., Non-Current Assets)
currentAssetType
string
type of current Asset, (e.g., Consolidated financial assets)
code
string
sub account Code
name
string
sub account name
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Delete a sub accounting account of the company successfully" ,
"payload" :
{
"accountingType" : " Assets" ,
"assetType" : " Non-Current Assets" ,
"currentAssetType" : " Consolidated financial assets" ,
"code" : " 1755-01" ,
"name" : " Sub royalty assets"
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: get the opening balance of the company
GET / company / :companyId / accounting_setting / opening_balance
name
type
description
required
default
companyId
string
id of the company
true
--
GET / company / 1 / accounting_setting / opening_balance
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
openingBalance[]
response data
name
type
description
code
string
code of the account
name
string
name of the account
type
string
type of the account, (e.g., Current assets)
beginningDebit
int
beginning debit of the account
openingCredit
int
beginning credit of the account
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get opening balance of the company successfully" ,
"payload" : [
{
"code" : " 151711" ,
"name" : " Consolidated financial assets" ,
"type" : " Current assets" ,
"beginningDebit" : 100 ,
"openingCredit" : 100
},
{
"code" : " 175511" ,
"name" : " Royalty assets" ,
"type" : " Current assets" ,
"beginningDebit" : 100 ,
"openingCredit" : 100
},
{
"code" : " 178911" ,
"name" : " Intangible assets" ,
"type" : " Current assets" ,
"beginningDebit" : 100 ,
"openingCredit" : 100
},
{
"code" : " 192011" ,
"name" : " Deposit of Margin" ,
"type" : " Current assets" ,
"beginningDebit" : 100 ,
"openingCredit" : 100
}
]
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: update the opening balance of the company
PUT / company / :companyId / accounting_setting / opening_balance
name
type
description
required
default
companyId
string
id of the company
true
--
name
type
description
code
string
code of the account
type
string
type of the account, (e.g., Current assets)
beginningDebit
int
beginning debit of the account
openingCredit
int
beginning credit of the account
PUT / company / 1 / accounting_setting / opening_balance
const body = [
{
"code" : "151711" ,
"type" : "Current assets" ,
"beginningDebit" : 200 ,
"openingCredit" : 200
} ,
{
"code" : "175511" ,
"type" : "Non-current assets" ,
"beginningDebit" : 200 ,
"openingCredit" : 200
}
]
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
openingBalance[]
response data
name
type
description
code
string
code of the account
name
string
name of the account
type
string
type of the account, (e.g., Current assets)
beginningDebit
int
beginning debit of the account
openingCredit
int
beginning credit of the account
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Update opening balance of the company successfully" ,
"payload" : [
{
"code" : " 151711" ,
"name" : " Consolidated financial assets" ,
"type" : " Current assets" ,
"beginningDebit" : 200 ,
"openingCredit" : 200
},
{
"code" : " 175511" ,
"name" : " Royalty assets" ,
"type" : " Non-current" ,
"beginningDebit" : 200 ,
"openingCredit" : 200
},
{
"code" : " 178911" ,
"name" : " Intangible assets" ,
"type" : " Current assets" ,
"beginningDebit" : 100 ,
"openingCredit" : 100
},
{
"code" : " 192011" ,
"name" : " Deposit of Margin" ,
"type" : " Current assets" ,
"beginningDebit" : 100 ,
"openingCredit" : 100
}
]
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: List all jobs
name
type
description
required
page
number
The page number
no
pageSize
number
The number of items per page
no
sortBy
string
The field to sort by
no
sortOrder
string
The order to sort by
no
startDate
number
The start date
no
endDate
number
The end date
no
searchQuery
string
The search query
no
isMatched
boolean
Whether the job is matched
no
GET / job ?page = 1 & pageSize = 10 & sortBy = createdAt & sortOrder = desc & startDate = 1630000001 & endDate = 1630000001 & searchQuery = accounting
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IPaginatedData<IJob[]>
response data
name
type
description
data
IJob[]
The job data
page
number
The page number
totalPages
number
The total number of pages
totalCount
number
The total number of items
pageSize
number
The number of items per page
hasNextPage
boolean
Indicates if there is a next page
hasPreviousPage
boolean
Indicates if there is a previous page
sort
{sortBy: string, sortOrder: string}[]
The order and field to sort by
name
type
description
id
number
job ID
companyName
string
company name
companyLogo
string
company logo URL
issueType
string
type of job
publicationDate
number
publication date (timestamp)
estimatedWorkingHours
object
estimated working hours range
deadline
number
deadline (timestamp)
hourlyWage
number
hourly wage
caseDescription
string
case description
targetCandidates
string
target candidates description
remarks
string
remarks
applicationsCount
number
number of applications
isMatched
boolean
whether the job is matched
createdAt
number
creation time (timestamp)
updatedAt
number
last update time (timestamp)
{
"powerby" : "iSunFA v2.0.0+4" ,
"success" : true ,
"code" : "200ISF0000" ,
"message" : "Success" ,
"payload" : {
"data" : [
{
"id" : 2 ,
"companyName" : "B 公司" ,
"companyLogo" : "https://example.com/company-b-logo.png" ,
"issueType" : "稅務" ,
"publicationDate" : 1692499600 ,
"estimatedWorkingHours" : {
"start" : 1693526400 ,
"end" : 1698768000
} ,
"deadline" : 1699920000 ,
"hourlyWage" : 600 ,
"caseDescription" : "協助處理年度稅務申報" ,
"targetCandidates" : "有稅務申報經驗的會計師或記帳士" ,
"remarks" : "需要了解最新的稅務法規" ,
"applicationsCount" : 3 ,
"isMatched" : true ,
"createdAt" : 1692489600 ,
"updatedAt" : 1692489600
} ,
{
"id" : 1 ,
"companyName" : "A 公司" ,
"companyLogo" : "https://example.com/company-a-logo.png" ,
"issueType" : "記帳" ,
"publicationDate" : 1692489600 ,
"estimatedWorkingHours" : {
"start" : 1693008000 ,
"end" : 1695600000
} ,
"deadline" : 1696032000 ,
"hourlyWage" : 500 ,
"caseDescription" : "上傳相關憑證,徵求記帳士開立傳票" ,
"targetCandidates" : "具有3年以上記帳經驗的記帳士" ,
"remarks" : "需要熟悉國際會計準則" ,
"applicationsCount" : 5 ,
"isMatched" : false ,
"createdAt" : 1692489600 ,
"updatedAt" : 1692489600
}
] ,
"page" : 1 ,
"totalPages" : 1 ,
"totalCount" : 2 ,
"pageSize" : 10 ,
"hasNextPage" : false ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : "publicationDate" ,
"sortOrder" : "desc"
}
]
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
description: Get details of a specific job
name
type
description
required
default
jobId
string
ID of the job
true
--
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
Job
response data
name
type
description
id
number
job ID
companyName
string
company name
companyLogo
string
company logo URL
issueType
string
type of job
publicationDate
number
publication date (timestamp)
estimatedWorkingHours
object
estimated working hours range
deadline
number
deadline (timestamp)
hourlyWage
number
hourly wage
caseDescription
string
case description
targetCandidates
string
target candidates description
remarks
string
remarks
applicationsCount
number
number of applications
isMatched
boolean
whether the job is matched
createdAt
number
creation time (timestamp)
updatedAt
number
last update time (timestamp)
Response Example
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : true ,
"code" : "200" ,
"message" : "Successfully retrieved job details" ,
"payload" : {
"id" : 1 ,
"companyName" : "iSunCloud" ,
"companyLogo" : "https://example.com/isuncloud-logo.png" ,
"issueType" : "Accounting" ,
"publicationDate" : 1706227200000 ,
"estimatedWorkingHours" : {
"start" : 1711584000000 ,
"end" : 1743120000000
} ,
"deadline" : 1743120000000 ,
"hourlyWage" : 2500 ,
"caseDescription" : "This is a description of an accounting case." ,
"targetCandidates" : "A bookkeeper with tax experience." ,
"remarks" : "None" ,
"applicationsCount" : 10 ,
"isMatched" : false ,
"createdAt" : 1706227200000 ,
"updatedAt" : 1706227200000
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
description: Create an application for a job
POST / job / :jobId / application
name
type
description
required
default
jobId
string
ID of the job
true
--
name
type
description
content
string
application content
POST / job / 1 / application
const body = {
"content" : "application content" ,
}
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
Application
response data
name
type
description
id
number
application ID
bookkeeperId
number
bookkeeper's ID
jobId
number
job ID
content
string
application content
createdAt
number
creation time
updatedAt
number
last update time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Application created successfully" ,
"payload" :
{
"id" : 1 ,
"bookkeeperId" : 1000 ,
"jobId" : 1 ,
"content" : " application content" ,
"createdAt" : 1630000000 ,
"updatedAt" : 1630000000
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
name
type
description
required
page
number
The page number
no
pageSize
number
The number of items per page
no
type
string
The type of news
no
sortBy
string
The field to sort by
no
sortOrder
string
The order to sort by
no
startDate
number
The start date
no
endDate
number
The end date
no
searchQuery
string
The search query
no
GET news ?page = 1 & pageSize = 10 & type = company & sortBy = createdAt & sortOrder = desc & startDate = 1630000001 & endDate = 1630000001 & searchQuery = apple
name
type
description
powerby
string
the version of the API
success
boolean
true or false
code
string
response code
message
string
a message detailing the result of the request
payload
IPaginatedData<INews[]>
response data
name
type
description
data
INews[]
The journal data
page
number
The page number
totalPages
number
The total number of pages
totalCount
number
The total number of items
pageSize
number
The number of items per page
hasNextPage
boolean
Indicates if there is a next page
hasPreviousPage
boolean
Indicates if there is a previous page
sort
{sortBy: string, sortOrder: string}[]
The order and field to sort by
name
type
description
id
number
news's id
title
string
news's title
content
string
news's content
type
string
news's type
createdAt
number
create time
updatedAt
number
update time
deletedAt
number
delete time
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " List news successfully" ,
"payload" :
{
"data" : [
{
"id" : 1 ,
"title" : " apple" ,
"content" : " apple" ,
"type" : " company" ,
"createdAt" : 1630000001 ,
"updatedAt" : 1630000001 ,
"deletedAt" : null ,
}
],
"page" : 1 ,
"totalPages" : 1 ,
"totalCount" : 1 ,
"pageSize" : 10 ,
"hasNextPage" : false ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " createdAt" ,
"sortOrder" : " desc"
}
]
},
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: This API is used to sign out an user by clearing the FIDO2 cookie.
name
type
description
success
boolean
indicates whether the operation was successful
message
string
provides a message related to the success or failure of the operation.
Successful Response
{
"success" : true ,
"message" : " Successfully signed out"
}
Unsuccessful Response
{
"success" : false ,
"message" : " Failed to sign out"
}
description: This API provides the functionality to get the session information.
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description of response data
payload
{user: User, company: Company}
response data or {}
name
type
description
id
number
id of company
name
string
name of company
code
string
code of company
regional
string
regional of company
kycStatus
boolean
kyc status of company
imageId
string
image id of company
startDate
number
start date of the company
createdAt
number
create timestamp of the company
updatedAt
number
update timestamp of the company
name
type
description
id
number
unique number of user
name
string
user name
fullName
string
user full name
email
string
user email
phone
string
user phone
imageId
string
user image id
agreementList
string[]
list of agreement hash
createdAt
number
creation timestamp
updatedAt
number
update timestamp
{
"powerby" : " iSunFA v0.8.0+5" ,
"success" : true ,
"code" : " 200ISF0002" ,
"message" : " Get successfully" ,
"payload" : {
"user" : {
"id" : 10000003 ,
"name" : " kk" ,
"fullName" : null ,
"email" : null ,
"phone" : null ,
"imageId" : " 552c2dbf-997c-4b13-957e-ea03c45d2ec1.svg" ,
"agreementList" : [" agreement1" , " agreement2" ],
"createdAt" : 1723538422 ,
"updatedAt" : 1723538422
},
"company" : {
"id" : 10000002 ,
"name" : " kk" ,
"code" : " 123" ,
"regional" : " Taiwan" ,
"kycStatus" : false ,
"imageId" : " https://storage.googleapis.com/mermer-offical-km/ISunFa/e8a48a55-2d97-4dc3-89fb-0fd3947cc971.svg" ,
"startDate" : 1723538434 ,
"createdAt" : 1723538434 ,
"updatedAt" : 1723538434 ,
"deletedAt" : null
}
}
}
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 404" ,
"message" : " Resource not found" ,
"payload" : {}
}
Description: List all trial balance items
GET / company / :companyId / trial_balance
Name
Type
Description
Required
Default
companyId
string
Company ID
Yes
--
Name
Type
Description
Required
Default
startDate
number
Start date (timestamp, seconds)
Yes
--
endDate
number
End date (timestamp, seconds)
Yes
--
sortBy
string
Sort by field
No
createAt
sortOrder
string
Sort order
No
desc
page
number
Page number
No
1
pageSize
number
Items per page
No
infinity
GET / company / 1 / trial_balance ?startDate = 1704067200 & endDate = 1706745599 & page = 1 & pageSize = 10 & sortBy = createAt & sortOrder = asc
Name
Type
Description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
object
Trial balance data
Name
Type
Description
currencyAlias
string
Currency of the trial balance
items
IPaginatedData<TrialBalanceItem[]>
Paginated list of trial balance items
total
ITrialBalanceTotal
Total amount
Name
Type
Description
data
TrialBalanceItem[]
Trial balance item list
page
number
Current page number
totalPages
number
Total number of pages
totalCount
number
Total number of trial balance items
pageSize
number
Items per page
hasNextPage
boolean
Whether there is a next page
hasPreviousPage
boolean
Whether there is a previous page
sort
{sortBy: string, sortOrder: string}[]
Sort method
Name
Type
Description
id
number
Account ID
no
string
Account number
accountingTitle
string
Accounting title
beginningCreditAmount
number
Beginning credit balance
beginningDebitAmount
number
Beginning debit balance
midtermCreditAmount
number
Current period credit transactions
midtermDebitAmount
number
Current period debit transactions
endingCreditAmount
number
Ending credit balance
endingDebitAmount
number
Ending debit balance
createAt
number
Creation timestamp, seconds
updateAt
number
Last update timestamp, seconds
deletedAt
number
Deletion timestamp, seconds
subAccounts
TrialBalanceItem[]
List of sub-accounts
Name
Type
Description
beginningCreditAmount
number
Beginning credit balance
beginningDebitAmount
number
Beginning debit balance
midtermCreditAmount
number
Current period credit transactions
midtermDebitAmount
number
Current period debit transactions
endingCreditAmount
number
Ending credit balance
endingDebitAmount
number
Ending debit balance
createAt
number
Creation timestamp, seconds
updateAt
number
Last update timestamp, seconds
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200ISF0000" ,
"message" : " Success" ,
"payload" : {
"currencyAlias" : " TWD" ,
"items" : {
"data" : [
{
"id" : 1 ,
"no" : " 1141" ,
"accountingTitle" : " 應收帳款" ,
"beginningCreditAmount" : 0 ,
"beginningDebitAmount" : 1785000 ,
"midtermCreditAmount" : 0 ,
"midtermDebitAmount" : 1785000 ,
"endingCreditAmount" : 0 ,
"endingDebitAmount" : 1785000 ,
"createAt" : 1704067200 ,
"updateAt" : 1704067200 ,
"subAccounts" : [
{
"id" : 2 ,
"no" : " 114101" ,
"accountingTitle" : " 應收帳款-A公司" ,
"beginningCreditAmount" : 0 ,
"beginningDebitAmount" : 1785000 ,
"midtermCreditAmount" : 0 ,
"midtermDebitAmount" : 1785000 ,
"endingCreditAmount" : 0 ,
"endingDebitAmount" : 1785000 ,
"createAt" : 1704067200 ,
"updateAt" : 1704067200 ,
"subAccounts" : []
}
]
},
{
"id" : 3 ,
"no" : " 1151" ,
"accountingTitle" : " 其他應收款" ,
"beginningCreditAmount" : 0 ,
"beginningDebitAmount" : 500000 ,
"midtermCreditAmount" : 0 ,
"midtermDebitAmount" : 500000 ,
"endingCreditAmount" : 0 ,
"endingDebitAmount" : 500000 ,
"createAt" : 1704067200 ,
"updateAt" : 1704067200 ,
"subAccounts" : []
}
],
"page" : 1 ,
"totalPages" : 1 ,
"totalCount" : 2 ,
"pageSize" : 10 ,
"hasNextPage" : false ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " no" ,
"sortOrder" : " asc"
}
]
},
"total" : {
"beginningCreditAmount" : 0 ,
"beginningDebitAmount" : 2285000 ,
"midtermCreditAmount" : 0 ,
"midtermDebitAmount" : 2285000 ,
"endingCreditAmount" : 0 ,
"endingDebitAmount" : 2285000 ,
"createAt" : 1704067200 ,
"updateAt" : 1704067200
}
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405ISF0000" ,
"message" : " Method not allowed" ,
"payload" : {}
}
Description: List ledger details for a specific accounting account range
GET / company / :companyId / ledger
Name
Type
Description
Required
Default
companyId
string
Company ID
Yes
--
Name
Type
Description
Required
Default
startDate
number
Start date (timestamp, seconds)
Yes
--
endDate
number
End date (timestamp, seconds)
Yes
--
startAccountNo
string
Starting account number
No
--
endAccountNo
string
Ending account number
No
--
labelType
string
Label type (general/detailed/all)
No
general
page
number
Page number
No
1
pageSize
number
Items per page
No
infinity
GET / company / 1 / ledger ?startDate = 1706745600 & endDate = 1707350399 & startAccountNo = 1141 & endAccountNo = 1142 & labelType = general & page = 1 & pageSize = 10
Name
Type
Description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
object
Ledger data
Name
Type
Description
currencyAlias
string
Currency
items
IPaginatedData<LedgerItem[]>
Paginated list of ledger items
total
ILedgerTotal
Information about total debit and credit amount
Name
Type
Description
data
LedgerItem[]
Ledger item list
page
number
Current page number
totalPages
number
Total number of pages
totalCount
number
Total number of ledger items
pageSize
number
Items per page
hasNextPage
boolean
Whether there is a next page
hasPreviousPage
boolean
Whether there is a previous page
sort
{sortBy: string, sortOrder: string}[]
Sort method
Name
Type
Description
id
number
Ledger item ID
voucherDate
number
Voucher date, timestamp, seconds
no
string
Account number
accountingTitle
string
Accounting title
voucherNumber
string
Voucher number
particulars
string
Details
debitAmount
number
Debit amount
creditAmount
number
Credit amount
balance
number
Balance
createAt
number
Creation timestamp, seconds
updateAt
number
Last update timestamp, seconds
Name
Type
Description
totalDebitAmount
number
Total debit amount
totalCreditAmount
number
Total credit amount
createAt
number
Creation timestamp, seconds
updateAt
number
Last update timestamp, seconds
{
"powerby" : " iSunFA v0.8.2+29" ,
"success" : true ,
"code" : " 200ISF0001" ,
"message" : " List successfully" ,
"payload" : {
"currencyAlias" : " TWD" ,
"items" : {
"data" : [
{
"id" : 1 ,
"voucherDate" : 1706745600 ,
"no" : " 1141" ,
"accountingTitle" : " 應收帳款" ,
"voucherNumber" : " ZV2024-001" ,
"particulars" : " 設備採購" ,
"debitAmount" : 300000 ,
"creditAmount" : 0 ,
"balance" : 420000 ,
"createAt" : 1706745600 ,
"updateAt" : 1706745600
},
{
"id" : 2 ,
"voucherDate" : 1706745600 ,
"no" : " 1142" ,
"accountingTitle" : " 應收票據" ,
"voucherNumber" : " ZV2024-002" ,
"particulars" : " 開立發票" ,
"debitAmount" : 500000 ,
"creditAmount" : 0 ,
"balance" : 500000 ,
"createAt" : 1706745600 ,
"updateAt" : 1706745600
}
],
"page" : 1 ,
"totalPages" : 1 ,
"totalCount" : 2 ,
"pageSize" : 10 ,
"hasNextPage" : false ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " voucherDate" ,
"sortOrder" : " asc"
}
]
},
"total" : {
"totalDebitAmount" : 800000 ,
"totalCreditAmount" : 800000 ,
"createAt" : 1706745600 ,
"updateAt" : 1708854635
}
}
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : false ,
"code" : " 405ISF0000" ,
"message" : " Method not allowed" ,
"payload" : {}
}
description: List all assets
GET / company / :companyId / asset
name
type
description
required
default
companyId
string
Company ID
yes
--
name
type
description
required
default
page
number
Page number
no
1
pageSize
number
Items per page
no
10
type
string
Asset type
no
--
status
string
Asset status
no
--
startDate
number
Start of time range (timestamp, seconds)
no
--
endDate
number
End of time range (timestamp, seconds)
no
--
searchQuery
string
Search keyword
no
--
GET / company / 1 / asset ?page = 1 & pageSize = 10 & type = equipment & status = normal & startDate = 1672531200 & endDate = 1704067199 & searchQuery = computer
name
type
description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
IPaginatedData<IAssetItem[]>
Data containing asset list
name
type
description
data
Asset[]
Asset list
page
number
Current page number
totalPages
number
Total number of pages
totalCount
number
Total number of items
pageSize
number
Items per page
hasNextPage
boolean
Whether there is a next page
hasPreviousPage
boolean
Whether there is a previous page
sort
{sortBy: string, sortOrder: string}[]
Sort method
name
type
description
id
number
Asset ID
currencyAlias
string
Currency
acquisitionDate
number
Acquisition date (timestamp, seconds)
assetType
string
Accounting subject
assetNumber
string
Asset number
assetName
string
Asset name
purchasePrice
number
Purchase price
accumulatedDepreciation
number
Accumulated depreciation
residualValue
number
Residual value
remainingLife
number
Remaining useful life (timestamp, seconds)
assetStatus
string
Asset status
createdAt
number
Creation time (timestamp, seconds)
updatedAt
number
Update time (timestamp, seconds)
deletedAt
number
Deletion time (timestamp, seconds)
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200ISF0000" ,
"message" : " Success" ,
"payload" : {
"data" : [
{
"id" : 1 ,
"currencyAlias" : " TWD" ,
"acquisitionDate" : 1632511200 ,
"assetType" : " 123 Machinery" ,
"assetNumber" : " A-000010" ,
"assetName" : " MackBook" ,
"purchasePrice" : 100000 ,
"accumulatedDepreciation" : 5000 ,
"residualValue" : 5000 ,
"remainingLife" : 61580800 ,
"assetStatus" : " normal" ,
"createdAt" : 1632511200 ,
"updatedAt" : 1632511200 ,
"deletedAt" : null
},
// ...
],
"page" : 1 ,
"totalPages" : 10 ,
"totalCount" : 100 ,
"pageSize" : 10 ,
"hasNextPage" : true ,
"hasPreviousPage" : false ,
"sort" : [
{
"sortBy" : " acquisitionDate" ,
"sortOrder" : " desc"
}
]
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
description: Get details of a single asset
GET / company / :companyId / asset / :assetId
name
type
description
required
default
companyId
string
Company ID
yes
--
assetId
string
Asset ID
yes
--
name
type
description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
Asset
Asset details data
name
type
description
id
number
Asset ID
acquisitionDate
number
Acquisition date (timestamp, seconds)
assetType
string
Accounting subject
assetNumber
string
Asset number
assetName
string
Asset name
purchasePrice
number
Purchase price
accumulatedDepreciation
number
Accumulated depreciation
residualValue
number
Residual value
remainingLife
number
Remaining useful life (timestamp, seconds)
assetStatus
string
Asset status
currencyAlias
string
Currency
depreciationStart
number
Depreciation start time, timestamp in seconds
depreciationMethod
string
Depreciation method
usefulLife
number
Useful life (timestamp, seconds)
relatedVouchers
IRelatedVoucher[]
Related vouchers
note
string
Remarks
createdAt
number
Creation time (timestamp, seconds)
updatedAt
number
Update time (timestamp, seconds)
deletedAt
number
Deletion time (timestamp, seconds)
name
type
description
id
number
Voucher ID
number
string
Voucher number
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200ISF0000" ,
"message" : " Successfully retrieved asset details" ,
"payload" : {
"id" : 1 ,
"acquisitionDate" : 1234567890 ,
"assetType" : " Equipment" ,
"assetNumber" : " EQ-001" ,
"assetName" : " Office Computer" ,
"purchasePrice" : 50000 ,
"accumulatedDepreciation" : 10000 ,
"residualValue" : 40000 ,
"remainingLife" : 1560000 ,
"assetStatus" : " normal" ,
"currencyAlias" : " TWD" ,
"depreciationStart" : 1234567890 ,
"depreciationMethod" : " straight-line" ,
"usefulLife" : 6000000 ,
"relatedVouchers" : [
{"id" : 101 , "number" : " V-2023-001" },
{"id" : 102 , "number" : " V-2023-002" }
],
"note" : " Main office computer" ,
"createdAt" : 1234567000 ,
"updatedAt" : 1234568000 ,
"deletedAt" : null
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
description: Create a new asset
POST / company / :companyId / asset
name
type
description
required
default
companyId
string
Company ID
yes
--
name
type
description
required
assetName
string
Name
yes
assetType
string
Accounting subject
yes
assetNumber
string
Property number
yes
acquisitionDate
string
Acquisition time, timestamp in seconds
yes
purchasePrice
number
Purchase price
yes
currencyAlias
string
Currency
yes
amount
number
Amount
yes
depreciationStart
string
Depreciation start time, timestamp in seconds
no
depreciationMethod
string
Depreciation method
no
usefulLife
number
Useful life (timestamp, seconds)
no
note
string
Remarks
no
POST / company / 1 / asset
const body = {
"assetName" : "New Office Laptop" ,
"assetType" : "Equipment" ,
"assetNumber" : "EQ-002" ,
"acquisitionDate" : 1234567890 ,
"purchasePrice" : 30000 ,
"currencyAlias" : "TWD" ,
"amount" : 30000 ,
"depreciationStart" : 1234567890 ,
"depreciationMethod" : "straight-line" ,
"usefulLife" : 36000 ,
"note" : "Laptop for new employee"
}
// example for land, no need for depreciationMethod, depreciationStart, usefulLife
const body = {
"assetName" : "Property Land" ,
"assetType" : "Land" ,
"assetNumber" : "L-001" ,
"acquisitionDate" : 1234567890 ,
"purchasePrice" : 1000000 ,
"currencyAlias" : "TWD" ,
"amount" : 1000000 ,
"note" : "Land for new office"
}
name
type
description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
Asset
Newly created asset data
name
type
description
id
number
Asset ID
acquisitionDate
number
Acquisition date (timestamp, seconds)
assetType
string
Asset type
assetNumber
string
Asset number
assetName
string
Asset name
purchasePrice
number
Purchase price
accumulatedDepreciation
number
Accumulated depreciation
residualValue
number
Residual value
remainingLife
number
Remaining useful life (timestamp, seconds)
assetStatus
string
Asset status
currencyAlias
string
Currency
depreciationStart
number
Depreciation start time, timestamp in seconds
depreciationMethod
string
Depreciation method
usefulLife
number
Useful life (timestamp, seconds)
relatedVouchers
IRelatedVoucher[]
Related vouchers
note
string
Remarks
createdAt
number
Creation time (timestamp, seconds)
updatedAt
number
Update time (timestamp, seconds)
deletedAt
number
Deletion time (timestamp, seconds)
name
type
description
id
number
Voucher ID
number
string
Voucher number
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Asset created successfully" ,
"payload" : {
"id" : 2 ,
"acquisitionDate" : 1234567890 ,
"assetType" : " Equipment" ,
"assetNumber" : " EQ-002" ,
"assetName" : " New Office Laptop" ,
"purchasePrice" : 30000 ,
"accumulatedDepreciation" : 0 ,
"residualValue" : 30000 ,
"remainingLife" : 36000 ,
"assetStatus" : " normal" ,
"currencyAlias" : " TWD" ,
"depreciationStart" : 1234567890 ,
"depreciationMethod" : " straight-line" ,
"usefulLife" : 36000 ,
"relatedVouchers" : [
{"id" : 101 , "number" : " V-2023-001" },
],
"note" : " Laptop for new employee" ,
"createdAt" : 1234567000 ,
"updatedAt" : 1234568000 ,
"deletedAt" : null
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
description: Update asset information
PUT / company / :companyId / asset / :assetId
name
type
description
required
default
companyId
string
Company ID
yes
--
assetId
string
Asset ID
yes
--
name
type
description
required
updatedAt
number
Update time (timestamp, seconds)
yes
assetStatus
string
Asset status
no
note
string
Remarks
no
PUT / company / 1 / asset / 2
const body = {
"updatedAt" : 1234567890 ,
"note" : "Updated: Laptop for marketing team" ,
"assetStatus" : "missing"
}
name
type
description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
Asset
Updated asset data
name
type
description
id
number
Asset ID
acquisitionDate
number
Acquisition date (timestamp, seconds)
assetType
string
Accounting subject
assetNumber
string
Asset number
assetName
string
Asset name
purchasePrice
number
Purchase price
accumulatedDepreciation
number
Accumulated depreciation
residualValue
number
Residual value
remainingLife
number
Remaining useful life (timestamp, seconds)
assetStatus
string
Asset status
currencyAlias
string
Currency
depreciationStart
number
Depreciation start time, timestamp in seconds
depreciationMethod
string
Depreciation method
usefulLife
number
Useful life (timestamp, seconds)
relatedVouchers
IRelatedVoucher[]
Related vouchers
note
string
Remarks
createdAt
number
Creation time (timestamp, seconds)
updatedAt
number
Update time (timestamp, seconds)
deletedAt
number
Deletion time (timestamp, seconds)
name
type
description
id
number
Voucher ID
number
string
Voucher number
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200ISF0000" ,
"message" : " Asset updated successfully" ,
"payload" : {
"id" : 2 ,
"acquisitionDate" : 1234567890 ,
"assetType" : " Equipment" ,
"assetNumber" : " EQ-001" ,
"assetName" : " Office Computer" ,
"purchasePrice" : 50000 ,
"accumulatedDepreciation" : 10000 ,
"residualValue" : 40000 ,
"remainingLife" : 1560000 ,
"assetStatus" : " missing" ,
"currencyAlias" : " TWD" ,
"depreciationStart" : 1234567890 ,
"depreciationMethod" : " straight-line" ,
"usefulLife" : 6000000 ,
"relatedVouchers" : [
{"id" : 101 , "number" : " V-2023-001" },
{"id" : 102 , "number" : " V-2023-002" }
],
"createdAt" : 1234567000 ,
"updatedAt" : 2234568000 ,
"deletedAt" : null ,
"note" : " Updated: Laptop for marketing team" ,
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
description: Soft delete an asset
DELETE / company / :companyId / asset / :assetId
name
type
description
required
default
companyId
string
Company ID
yes
--
assetId
string
Asset ID
yes
--
DELETE / company / 1 / asset / 2
name
type
description
powerby
string
API version
success
boolean
Success status
code
string
Response code
message
string
Response message
payload
Asset
Asset details data
name
type
description
id
number
Asset ID
acquisitionDate
number
Acquisition date (timestamp, seconds)
assetType
string
Accounting subject
assetNumber
string
Asset number
assetName
string
Asset name
purchasePrice
number
Purchase price
accumulatedDepreciation
number
Accumulated depreciation
residualValue
number
Residual value
remainingLife
number
Remaining useful life (timestamp, seconds)
assetStatus
string
Asset status
currencyAlias
string
Currency
depreciationStart
number
Depreciation start time, timestamp in seconds
depreciationMethod
string
Depreciation method
usefulLife
number
Useful life (timestamp, seconds)
relatedVouchers
IRelatedVoucher[]
Related vouchers
note
string
Remarks
createdAt
number
Creation time (timestamp, seconds)
updatedAt
number
Update time (timestamp, seconds)
deletedAt
number
Deletion time (timestamp, seconds)
name
type
description
id
number
Voucher ID
number
string
Voucher number
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200ISF0000" ,
"message" : " Asset deleted successfully" ,
"payload" : {
"id" : 1 ,
"acquisitionDate" : 1234567890 ,
"assetType" : " Equipment" ,
"assetNumber" : " EQ-001" ,
"assetName" : " Office Computer" ,
"purchasePrice" : 50000 ,
"accumulatedDepreciation" : 10000 ,
"residualValue" : 40000 ,
"remainingLife" : 1560000 ,
"assetStatus" : " normal" ,
"currencyAlias" : " TWD" ,
"depreciationStart" : 1234567890 ,
"depreciationMethod" : " straight-line" ,
"usefulLife" : 6000000 ,
"relatedVouchers" : [
{"id" : 101 , "number" : " V-2023-001" },
{"id" : 102 , "number" : " V-2023-002" }
],
"note" : " Main office computer" ,
"createdAt" : 1234567000 ,
"updatedAt" : 1234568000 ,
"deletedAt" : null
}
}
{
"powerby" : "iSunFA v2.0.0+1" ,
"success" : false ,
"code" : "405" ,
"message" : "Method not allowed" ,
"payload" : { }
}
Description: Get all voucher
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
Default
strategy
"upcoming" | "uploaded" | "payment" | "receiving"
implement different types of voucher to get ("ledger" is not in here)
true
-
canBeEdit
boolean | undefined
get voucher that can be edit or not, get all if undefined
no
undefined
page
number
The page number
no
1
pageSize
number
how many items in one page
no
10
type
string (payment | transfer | receiving) | undefined
get what "type" of voucher it is, get all if undefined
no
undefined
sortBy
string | undefined
which column to sort by (ex: "voucherDate", "period", "credit", "debit"), will use sum of line items when sort by "credit" or "debit"
no
undefined
sortOrder
string ("asc"/"desc")
The order to sort by
no
undefined
startDate
integer(timestamp in second)
item include and after startDate
, default is 0
no
endDate
integer(timestamp in second)
item include and before startDate
, default is infinity
no
searchQuery
string
this field is to search name
no
To be continue
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : {
"page" : 1 , // current page
"totalUnRead" : 99 ,
"totalPages" : 3 ,
"totalCount" : 30 ,
"pageSize" : 10 ,
"hasNextPage" : true ,
"hasPreviousPage" : true ,
"sort" : [
{
"sortBy" : " createAt" ,
"sortOrder" : " desc"
}
],
"data" : [
{
"id" : 1001 ,
"eventId" : null ,
"status" : " uploaded" , // "uploaded" or "upcoming"
"canBeEdit" : true , // true or false
"voucherNo" : " 240417-001" ,
"voucherDate" : 1000000 ,
"type" : " payment" , // or transfer or receiving
"note" : " This is a note" ,
"createAt" : 1000000 ,
"updateAt" : 1000000 ,
"deletedAt" : null , // if have Number then it is deleted
"reverseAt" : 1727317 , // if have Number then it is reversed
"certificates" : [
{
"id" : 1 ,
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 ,
"certificateNo" : " AB-12345678" ,
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 ,
"taxPrice" : 200 ,
"totalPrice" : 4200 ,
"counterPartyId" : 1 ,
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
"connectToId" : null ,
"name" : " invoice001.jpg" ,
"url" : " /api/v2/certificate/1" ,
"type" : " invoice" ,
"connectToType" : " voucher" ,
"mimeTYpe" : " image/jpeg" ,
"size" : " 3.0 MB" ,
"uploadProgress" : 50 ,
"aiResultId" : " douhvjax_-1" ,
"aiStatus" : " success" ,
"createAt" : 10000000 ,
"updateAt" : 10000000
}
],
"reverseVoucherIds" : [
// 或是完整的voucher?
{
"id" : 1111 ,
"voucherNo" : " 240817-001"
},
{
"id" : 1112 ,
"voucherNo" : " 240817-002"
}
],
"issuer" : {
// IUser
"id" : 1001 ,
"name" : " Murky" ,
"fullName" : " Tiny Murky" ,
"email" : " [email protected] " ,
"phone" : " 1234567890" ,
"imageId" : " /api/v2/image/1001.jpg" ,
"agreementList" : [" agreement1" , " agreement2" ],
"createdAt" : 1000000 ,
"updatedAt" : 1000000
},
"counterParty" : {
// ICustomerVendor
"id" : 1001 ,
"companyId" : 1001 ,
"name" : " Cool LLC" ,
"taxId" : " 12345678" ,
"type" : " customer" ,
"note" : " This is a note" ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000
},
"payableInfo" : {
// payableInfo 如果存在,那麼receivingInfo就會都是0
"total" : 1000 ,
"alreadyHappened" : 400 ,
"remain" : 600
},
"receivingInfo" : {
"total" : 1000 ,
"alreadyHappened" : 400 ,
"remain" : 600
},
"recurringInfo" : {
"type" : " month" , // or year or week or atOnce
"startDate" : 1000000 ,
"endDate" : 1000100 ,
"daysOfWeek" : [0 , 1 , 2 ], // 這邊是示範,如果type是week, 這個array才有東西, 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday
"daysOfMonth" : [1 , 15 , 30 ], // 這邊是示範,如果type是month, 這個array才有東西
"daysOfYears" : [
{
"month" : 1 ,
"day" : 1
},
{
"month" : 12 ,
"day" : 25
}
] // 這邊是示範,如果type是year, 這個array才有東西
},
"assets" : [
// IAssetItem
{
"id" : 1 ,
"acquisitionDate" : 1632511200 ,
"assetType" : " 123 Machinery" ,
"assetNumber" : " A000010" ,
"assetName" : " MackBook" ,
"purchasePrice" : 100000 ,
"accumulatedDepreciation" : 5000 ,
"residualValue" : 5000 ,
"remainingTimestamp" : 1761580800 ,
"assetStatus" : " normal" //AssetStatus.NORMAL,
}
],
"lineItemsInfo" : {
"sum" : {
"debit" : true ,
"amount" : 1000
},
"lineItems" : [
{
"id" : 1001 ,
"amount" : 1000 ,
"description" : " This is a description" ,
"debit" : true ,
"account" : {
"id" : 1001 ,
"companyId" : 1001 ,
"system" : " IFRS" ,
"type" : " Asset" ,
"debit" : true ,
"liquidity" : true ,
"code" : " 1001" ,
"name" : " Cash" ,
"forUser" : true ,
"parentCode" : " 1000" ,
"rootCode" : " 1000" ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"level" : 1 ,
"deletedAt" : null
},
"voucherId" : 1001 ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"deletedAt" : null
},
{
"id" : 1002 ,
"amount" : 1001 ,
"description" : " This is a description" ,
"debit" : false ,
"account" : {
"id" : 1002 ,
"companyId" : 1001 ,
"system" : " IFRS" ,
"type" : " Asset" ,
"debit" : true ,
"liquidity" : true ,
"code" : " 1002" ,
"name" : " Accounts Receivable" ,
"forUser" : true ,
"parentCode" : " 1000" ,
"rootCode" : " 1000" ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"level" : 1 ,
"deletedAt" : null
},
"voucherId" : 1001 ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"deletedAt" : null
}
]
}
}
],
}
}
GET /company/voucher/[voucherId]
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
voucherId
number
The id of certain voucher
Yes
To be continue
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : {
"id" : 1001 ,
"eventId" : null , // will be null if not recurring, integer if recurring
"hasReaded" : true ,
"status" : " uploaded" , // "uploaded" or "upcoming"
"canBeEdit" : true , // true or false
"voucherNo" : " 240417-001" ,
"voucherDate" : 1000000 ,
"type" : " payment" , // or transfer or receiving
"note" : " This is a note" ,
"createAt" : 1000000 ,
"updateAt" : 1000000 ,
"deletedAt" : null , // if have Number then it is deleted
"reverseAt" : 1727317 , // if have Number then it is reversed
"certificates" : [
{
"id" : 1 ,
"inputOrOutput" : " input" ,
"certificateDate" : 10000001 ,
"certificateNo" : " AB-12345678" ,
"currencyAlias" : " TWD" ,
"priceBeforeTax" : 4000 ,
"taxRatio" : 5 ,
"taxPrice" : 200 ,
"totalPrice" : 4200 ,
"counterPartyId" : 1 ,
"invoiceType" : " triplicate_uniform_invoice" ,
"deductible" : true ,
"connectToId" : null ,
"name" : " invoice001.jpg" ,
"url" : " /api/v2/certificate/1" ,
"type" : " invoice" ,
"connectToType" : " voucher" ,
"mimeTYpe" : " image/jpeg" ,
"size" : " 3.0 MB" ,
"uploadProgress" : 50 ,
"aiResultId" : " douhvjax_-1" ,
"aiStatus" : " success" ,
"createAt" : 10000000 ,
"updateAt" : 10000000
}
],
"reverseVoucherIds" : [
// 或是完整的voucher?
{
"id" : 1111 ,
"voucherNo" : " 240817-001"
},
{
"id" : 1112 ,
"voucherNo" : " 240817-002"
}
],
"issuer" : {
// IUser
"id" : 1001 ,
"name" : " Murky" ,
"fullName" : " Tiny Murky" ,
"email" : " [email protected] " ,
"phone" : " 1234567890" ,
"imageId" : " /api/v2/image/1001.jpg" ,
"agreementList" : [" agreement1" , " agreement2" ],
"createdAt" : 1000000 ,
"updatedAt" : 1000000
},
"counterParty" : {
// ICustomerVendor
"id" : 1001 ,
"companyId" : 1001 ,
"name" : " Cool LLC" ,
"taxId" : " 12345678" ,
"type" : " customer" ,
"note" : " This is a note" ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000
},
"payableInfo" : {
// payableInfo 如果存在,那麼receivingInfo就會都是0
"total" : 1000 ,
"alreadyHappened" : 400 ,
"remain" : 600
},
"receivingInfo" : {
"total" : 1000 ,
"alreadyHappened" : 400 ,
"remain" : 600
},
"recurringInfo" : {
"type" : " month" , // or year or week or atOnce
"startDate" : 1000000 ,
"endDate" : 1000100 ,
"daysOfWeek" : [0 , 1 , 2 ], // 這邊是示範,如果type是week, 這個array才有東西, 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday
"daysOfMonth" : [1 , 15 , 30 ], // 這邊是示範,如果type是month, 這個array才有東西
"daysOfYears" : [
{
"month" : 1 ,
"day" : 1
},
{
"month" : 12 ,
"day" : 25
}
] // 這邊是示範,如果type是year, 這個array才有東西
},
"assets" : [
// IAssetItem
{
"id" : 1 ,
"acquisitionDate" : 1632511200 ,
"assetType" : " 123 Machinery" ,
"assetNumber" : " A000010" ,
"assetName" : " MackBook" ,
"purchasePrice" : 100000 ,
"accumulatedDepreciation" : 5000 ,
"residualValue" : 5000 ,
"remainingTimestamp" : 1761580800 ,
"assetStatus" : " normal" //AssetStatus.NORMAL,
}
],
"lineItemsInfo" : {
"sum" : {
"debit" : true ,
"amount" : 1000
},
"lineItems" : [
{
"id" : 1001 ,
"amount" : 1000 ,
"description" : " This is a description" ,
"debit" : true ,
"account" : {
"id" : 1001 ,
"companyId" : 1001 ,
"system" : " IFRS" ,
"type" : " Asset" ,
"debit" : true ,
"liquidity" : true ,
"code" : " 1001" ,
"name" : " Cash" ,
"forUser" : true ,
"parentCode" : " 1000" ,
"rootCode" : " 1000" ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"level" : 1 ,
"deletedAt" : null
},
"voucherId" : 1001 ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"deletedAt" : null
},
{
"id" : 1002 ,
"amount" : 1001 ,
"description" : " This is a description" ,
"debit" : false ,
"account" : {
"id" : 1002 ,
"companyId" : 1001 ,
"system" : " IFRS" ,
"type" : " Asset" ,
"debit" : true ,
"liquidity" : true ,
"code" : " 1002" ,
"name" : " Accounts Receivable" ,
"forUser" : true ,
"parentCode" : " 1000" ,
"rootCode" : " 1000" ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"level" : 1 ,
"deletedAt" : null
},
"voucherId" : 1001 ,
"createdAt" : 1000000 ,
"updatedAt" : 1000000 ,
"deletedAt" : null
}
]
}
}
}
POST check already Read voucher
Description: when enter list voucher, all voucher on that page will be consider readed
POST /company/voucher/readed
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
voucherIds
Integer[]
the vouchers that want to be updated to read:true
{
"voucherIds" : [
1 ,
2 ,
3
]
}
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : " Success" ,
}
Description:Post one voucher, if posting "recurring" event, it will create all the voucher in upcoming
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
default
required
certificateIds
integer[]
certificate connect to this voucher
[] (empty array)
true(but can be empty array)
voucherDate
integer
voucher occur day in second
-
true
type
"payment" | "receiving" | "transfer"
voucher type
-
true
note
string
note on voucher, can be empty string
-
true
counterPartyId
integer
id of counterPartyId, id should come from ICustomerVendor
-
true
lineItems
lineItem[]
lineItems of voucher, need to make sure tax is same as certificate and credit debit is equal
-
true, empty array is not allowed
recurringInfo
recurringInfo | undefined
if is recurring entry, then add this object, if not please use undefined
undefined
false
assetIds
integer[]
asset to be connect to, empty array if not to connect
-
true
reverseVouchers
reverseVoucher []
empty array if not used
-
lineItems
name
type
description
default
required
accoutId
integer
id of account
-
true
description
string
custom description for user to input
-
true(can be empty string)
debit
boolean
is it credit or debit
-
true
amount
number
how much is this
-
true
recurringInfo
name
type
description
default
required
type
"week", "month", "year"
which type of frequency to be repeat
-
true
startDate
number
start date in second
-
true
endDate
number
end date in second
-
true
daysOfWeek
integer[]
date of week to be repeat, if not repeat by week, use empty array, 0 be sunday
-
true
daysOfMonth
integer[]
day of month to be repeat, if not repeat by month, use empty array
-
true
daysOfYears
{"month": integer, "day": integer}
day of year to be repeat, if not repeat by year, use empty array
-
true
reversedVoucher
name
type
description
default
required
voucherId
integer
which voucher to be reversed
-
true
amount
number
how much is for amount
-
true
{
"certificateIds" : [1001 , 1002 ],
"voucherDate" : 10000000 ,
"type" : " payment" ,
"note" : " this is note" ,
"counterPartyId" : 1001
"lineItems" : [
{"accoutId" : 1001 ,
"description" : " this is for Particulars" ,
"debit" : true ,
"amount" : 1000 },
{"accoutId" : 1002 ,
"description" : " this is for Particulars" ,
"debit" : false ,
"amount" : 1000 },
],
"recurringEntry" : { // undefined if not used
"type" : " month" , // or year or week or atOnce
"startDate" : 1000000 ,
"endDate" : 1000100 ,
"daysOfWeek" : [0 , 1 , 2 ], // 這邊是示範,如果type是week, 這個array才有東西, 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday
"daysOfMonth" : [1 , 15 , 30 ], // 這邊是示範,如果type是month, 這個array才有東西
"daysOfYears" : [
{
"month" : 1 ,
"day" : 1
},
{
"month" : 12 ,
"day" : 25
}
] // 這邊是示範,如果type是year, 這個array才有東西
},
"assetIds" : [1001 ],
"reverseVouchers" : [
{
"voucherId" : 1003 ,
"amount" : 500
}
]
}
it will response id of voucher that created
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : 1003 ,
}
Description: Put voucher
If recurring event is edit, all upcoming event should be edit
PUT /company/voucher/[voucherId]
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
voucherId
number
The id of certain voucher
Yes
It is same as post voucher
it will response id of voucher that put
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : 1003 ,
}
Description: this will create an reverse
DELETE /company/voucher/[voucherId]
Session data will be get from session, so not needed to be provided.
name
type
description
companyId
number
id of company
userId
number
id of user
name
type
description
required
voucherId
number
The id of certain voucher to be delete
Yes
it will response id of voucher that is created in reverse
{
"powerby" : " iSunFA v2.0.0+1" ,
"success" : true ,
"code" : " 200" ,
"message" : " Success" ,
"payload" : 1003 ,
}
description: This API provides the functionality to get an user.
name
type
description
required
default
userId
string
specific user number
yes
-
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description of response data
payload
User or null
response data or null
name
type
description
id
number
unique number of user
name
string
user name
fullName
string
user full name
email
string
user email
phone
string
user phone
imageId
string
user image id
agreementList
string[]
list of agreement hash
createdAt
number
creation timestamp
updatedAt
number
update timestamp
成功的回傳
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : true ,
"code" : " 200" ,
"message" : " Get User sucessfully" ,
"payload" :
{
"id" : 1 ,
"name" : " John" ,
"fullName" : " John Doe" ,
"email" : " [email protected] " ,
"phone" : " 12345678" ,
"imageId" : " 552c2dbf-997c-4b13-957e-ea03c45d2ec1.svg" ,
"agreementList" : [" agreement1" , " agreement2" ],
"createdAt" : 1723538422 ,
"updatedAt" : 1723538422
},
}
失敗的回傳
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 404" ,
"message" : " Resource not found" ,
"payload" : {}
}
description: This API provides the functionality to delete an user.
name
type
description
required
default
userId
string
specific user number
yes
-
name
type
description
powerby
string
iSunFA v0.1.2+50
success
boolean
true or false
code
string
response code
message
string
description of response data
payload
user
name
type
description
id
number
unique number of user
name
string
user name
fullName
string
user full name
email
string
user email
phone
string
user phone
imageId
string
user image id
agreementList
string[]
list of agreement hash
createdAt
number
creation timestamp
updatedAt
number
update timestamp
成功的回傳
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : true ,
"code" : " 200" ,
"message" : " Delete User sucessfully" ,
"payload" :
{
"id" : " 1" ,
"name" : " John" ,
"fullName" : " John Doe" ,
"email" : " [email protected] " ,
"phone" : " 12345678" ,
"imageId" : " 552c2dbf-997c-4b13-957e-ea03c45d2ec1.svg" ,
"agreementList" : [" agreement1" , " agreement2" ],
"createdAt" : 1723538422 ,
"updatedAt" : 1723538422
},
}
失敗的回傳
{
"powerby" : " iSunFA v0.1.2+50" ,
"success" : false ,
"code" : " 404" ,
"message" : " Resource not found" ,
"payload" : {}
}
description: This API provides the functionality to update an user.