-
isTokenAdmin
- Este método retornará o valor Booliano
true
se o chamador da função for um Token Admin
, caso contrário, retornará false
. Um Token Admin
, Token Auditor
, qualquer Org Admin
ou qualquer Org Auditor
pode chamar essa função em qualquer outro usuário na rede blockchain. Outros usuários só podem chamar esse método em suas próprias contas.
@GetMethod()
@Validator(yup.string(), yup.string())
public async isTokenAdmin(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.isUserTokenAdmin", "TOKEN", { org_id });
return await this.Ctx.Auth.isUserTokenAdmin(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- O método retornará
true
se o chamador for um Token Admin
, caso contrário, retornará false
.
-
addTokenAdmin
- Este método adiciona um usuário como um
Token Admin
do chaincode. Esse método só pode ser chamado por um Token Admin
do chaincode. Como o valor user_id
é armazenado no razão público, não use nenhuma informação de identificação pessoal (PII) para o valor user_id
.
@Validator(yup.string(), yup.string())
public async addTokenAdmin(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.addTokenAdmin", "TOKEN");
await this.Ctx.Model.createEvent(EVENT_NAME.ADD_TOKEN_ADMIN, { org_id, user_id });
return await this.Ctx.Admin.addTokenAdmin(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do usuário que foi adicionado como
Token Admin
do chaincode.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully added Token Admin (Org_Id: CentralBank, User_Id: cb1)"
}
-
removeTokenAdmin
- Este método remove um usuário como um
Token Admin
do chaincode. Esse método só pode ser chamado por um Token Admin
do chaincode.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.removeTokenAdmin", "TOKEN");
await this.Ctx.Model.createEvent(EVENT_NAME.REMOVE_TOKEN_ADMIN, { org_id, user_id });
return await this.Ctx.Admin.removeTokenAdmin(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do usuário que foi removido como um
Token Admin
do chaincode.
- Exemplo de Valor de Retorno:
{"msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: User1)"}
-
addOrgAdmin
- Esse método adiciona um usuário como um
Org Admin
da organização. Esse método só pode ser chamado por um Token Admin
do chaincode ou um Org Admin
da organização especificada. Como o valor user_id
é armazenado no razão público, não use nenhuma informação de identificação pessoal (PII) para o valor user_id
.
@Validator(yup.string(), yup.string())
public async addOrgAdmin(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.addOrgAdmin", "TOKEN", { org_id });
await this.Ctx.Model.createEvent(EVENT_NAME.ADD_ORG_ADMIN, { org_id, user_id });
return await this.Ctx.Admin.addOrgAdmin(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do usuário que foi adicionado como um
Org Admin
da organização.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
-
removeOrgAdmin
- Este método remove um usuário como um
Org Admin
da organização. Esse método só pode ser chamado por uma Token Admin
do chaincode ou por uma Org Admin
da organização especificada.
@Validator(yup.string(), yup.string())
public async removeOrgAdmin(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.removeOrgAdmin", "TOKEN", { org_id });
await this.Ctx.Model.createEvent(EVENT_NAME.REMOVE_ORG_ADMIN, { org_id, user_id });
return await this.Ctx.Admin.removeOrgAdmin(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do usuário que foi removido como um
Org Admin
da organização.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
-
addTokenAuditor
- Este método adiciona um usuário como um
Token Auditor
do chaincode. Esse método só pode ser chamado por um Token Admin
do chaincode. Como o valor user_id
é armazenado no razão público, não use nenhuma informação de identificação pessoal (PII) para o valor user_id
.
@Validator(yup.string(), yup.string())
public async addTokenAuditor(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.addTokenAuditor", "TOKEN");
await this.Ctx.Model.createEvent(EVENT_NAME.ADD_TOKEN_AUDITOR, { org_id, user_id });
return await this.Ctx.Admin.addTokenAuditor(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully added Token Auditor (Org_Id: CentralBank, User_Id: cb_admin_demo)"
}
-
removeTokenAuditor
- Este método remove um usuário como um
Token Auditor
do chaincode. Esse método só pode ser chamado por um Token Admin
do chaincode.
@Validator(yup.string(), yup.string())
public async removeTokenAuditor(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.removeTokenAuditor", "TOKEN");
await this.Ctx.Model.createEvent(EVENT_NAME.REMOVE_TOKEN_AUDITOR, { org_id, user_id });
return await this.Ctx.Admin.removeTokenAuditor(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
}
-
addOrgAuditor
- Este método adiciona um usuário como um
Org Auditor
do chaincode. Esse método só pode ser chamado por uma Token Admin
ou Org Admin
do chaincode. Como o valor user_id
é armazenado no razão público, não use nenhuma informação de identificação pessoal (PII) para o valor user_id
.
@Validator(yup.string(), yup.string())
public async addOrgAuditor(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.addOrgAuditor", "TOKEN", { org_id });
await this.Ctx.Model.createEvent(EVENT_NAME.ADD_ORG_AUDITOR, { org_id, user_id });
return await this.Ctx.Admin.addOrgAuditor(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do usuário que foi adicionado como
Org Auditor
do chaincode.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully added Org Auditor (Org_Id: CentralBank, User_Id: cb_admin_demo)"
}
-
removeOrgAuditor
- Este método remove um usuário como um
Org Auditor
do chaincode. Esse método só pode ser chamado por uma Token Admin
ou Org Admin
do chaincode.
@Validator(yup.string(), yup.string())
public async removeOrgAuditor(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ADMIN.removeOrgAuditor", "TOKEN", { org_id });
await this.Ctx.Model.createEvent(EVENT_NAME.REMOVE_ORG_AUDITOR, { org_id, user_id });
return await this.Ctx.Admin.removeOrgAuditor(org_id, user_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id: string
– O nome de usuário ou ID de e-mail do usuário.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
}
-
createAccount
- Este método cria uma conta para um usuário e token especificados. É necessário criar uma conta para qualquer usuário que tenha tokens a qualquer momento. As contas rastreiam saldos, saldos em retenção e histórico de transações. Um ID de conta é formado pela concatenação do tipo de ativo e do ID do token e, em seguida, pela criação de um hash SHA-256 sobre uma concatenação do ID da organização e do ID do usuário. Esse método só pode ser chamado por uma
Token Admin
ou por uma Org Admin
da organização especificada.
@Validator(yup.string(),yup.string(), yup.string(), yup.object().nullable())
public async createAccount(org_id: string, user_id: string, token_type: string, dailyLimits?: DailyLimits) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id });
await this.Ctx.Model.createEvent(EVENT_NAME.CREATE_ACCOUNT, { org_id, user_id, token_type, dailyLimits });
return await this.Ctx.Account.createAccount(org_id, user_id, token_type, dailyLimits);
}
- Parâmetros:
- Exemplo de Valor de Retorno:
{
"bapAccountVersion": 0,
"assetType": "oaccount",
"account_id": "oaccount~b53cb2c19c92d1d5c8cb9f6e988e7761c34e03e014e6c4b889565fc0abf46c8a",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "",
"token_name": "",
"balance": "028b72742c8aa9a0395c828fe4f0e46226a3e40d4e731d0b994c8028c8b7bd4df6",
"onhold_balance": "028b72742c8aa9a0395c828fe4f0e46226a3e40d4e731d0b994c8028c8b7bd4df6",
"onhold_burn_balance": "028b72742c8aa9a0395c828fe4f0e46226a3e40d4e731d0b994c8028c8b7bd4df6",
}
-
associateTokenToAccount
- Este método associa um token fungível a uma conta. Esse método só pode ser chamado por um
Token Admin
do código de cadeia ou por um Org Admin
da organização relevante.
@Validator(yup.string(), yup.string(), yup.string().optional())
public async associateTokenToAccount(account_id: string, token_id: string, custom_account_id?: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.associateToken", "TOKEN", { account_id });
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.ASSOCIATE_TOKEN_TO_ACCOUNT, { account_id, token_asset }, token_asset);
return await this.Ctx.Account.associateToken(account_id, token_id, custom_account_id);
}
- Parâmetros:
account_id: string
– O ID da conta.
token_id: string
– O ID do token.
custom_account_id: string
– Para o modo confidencial, o ID da conta bancária da conta, um identificador alfanumérico aleatório exclusivo. Por padrão, 14 caracteres.
- Retorna:
- No caso de sucesso, um objeto JSON da conta atualizada. O parâmetro
bapAccountVersion
é definido no objeto de conta para uso interno.
- Exemplo de Valor de Retorno:
{
"bapAccountVersion": 0,
"assetType": "oaccount",
"account_id": "oaccount~b53cb2c19c92d1d5c8cb9f6e988e7761c34e03e014e6c4b889565fc0abf46c8a",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "USD",
"token_name": "cbdc",
"balance": "028b72742c8aa9a0395c828fe4f0e46226a3e40d4e731d0b994c8028c8b7bd4df6",
"onhold_balance": "028b72742c8aa9a0395c828fe4f0e46226a3e40d4e731d0b994c8028c8b7bd4df6",
"onhold_burn_balance": "028b72742c8aa9a0395c828fe4f0e46226a3e40d4e731d0b994c8028c8b7bd4df6",
"application_groups": [
"CENTRAL_BANK_USERS"
]
}
-
getAllAccounts
- Esse método retorna uma lista de todas as contas. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
. Este método usa consultas ricas em SQL do Berkeley DB e só pode ser chamado quando conectado à rede remota do Oracle Blockchain Platform.
@GetMethod()
@Validator()
public async getAllAccounts() {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllAccounts", "TOKEN");
return await this.Ctx.Account.getAllAccounts();
}
- Parâmetros:
- Exemplo de Valor de Retorno:
[
{
"key": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"valueJson": {
"bapAccountVersion": 3,
"assetType": "oaccount",
"account_id": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "token",
"token_name": "cbdc",
"balance": "028a27c752e9b518d156e61da6589e723b179b6d7351dc34ec92bbb27b783ed1dc",
"onhold_balance": "02d53a7eda9484bda7252212714f647b70d32663cfa416f93f488ef6b6bc8fb2eb",
"onhold_burn_balance": "02d53a7eda9484bda7252212714f647b70d32663cfa416f93f488ef6b6bc8fb2eb",
"application_groups": [
"application_groups value"
]
}
},
{
"key": "oaccount~1da238c1491c919b151f777a615fb5779032c34b3ef3adeca6afe591bac10aaf",
"valueJson": {
"bapAccountVersion": 0,
"assetType": "oaccount",
"account_id": "oaccount~1da238c1491c919b151f777a615fb5779032c34b3ef3adeca6afe591bac10aaf",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "token",
"token_name": "cbdc",
"balance": "020da01cd57249c6470b6dd03c2ee4c49de58c71ccc64f2de1203e835967a0846d",
"onhold_balance": "020da01cd57249c6470b6dd03c2ee4c49de58c71ccc64f2de1203e835967a0846d",
"onhold_burn_balance": "020da01cd57249c6470b6dd03c2ee4c49de58c71ccc64f2de1203e835967a0846d",
"application_groups": [
"application_groups value"
]
}
}
]
-
getAllOrgAccounts
- Este método retorna uma lista de todas as contas de token que pertencem a uma organização especificada. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, ou por uma Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string())
public async getAllOrgAccounts(org_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllOrgAccounts", "TOKEN", { org_id });
return await this.Ctx.Account.getAllOrgAccounts(org_id);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) da organização.
- Retorna:
- No caso de sucesso, uma lista de todas as contas da organização especificada.
- Exemplo de Valor de Retorno:
[
{
"key": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"valueJson": {
"bapAccountVersion": 2,
"assetType": "oaccount",
"account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "token",
"token_name": "cbdc",
"balance": "18",
"onhold_balance": "0",
"onhold_burn_balance": "0",
"application_groups": [
"application_groups value"
],
"user_id": "cb",
"custom_account_id": "1234567jh"
}
},
{
"key": "oaccount~5e3b5a3306d7ca3f3e3fe7cc27b6ae547e94dba1c5af58a69a771d7a619b6a66",
"valueJson": {
"bapAccountVersion": 1,
"assetType": "oaccount",
"account_id": "oaccount~5e3b5a3306d7ca3f3e3fe7cc27b6ae547e94dba1c5af58a69a771d7a619b6a66",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "token",
"token_name": "cbdc",
"balance": "22",
"onhold_balance": "0",
"onhold_burn_balance": "0",
"application_groups": [
"application_groups value"
],
"user_id": "cb1",
"custom_account_id": "1234567jh"
}
}
]
-
getAccountsByUser
- Este método retorna uma lista de todos os IDs de conta para um ID organização e ID usuário especificados. Esse método só pode ser chamado pelo
Token Admin
ou Token Auditor
, pelo Org Admin
ou Org Auditor
da organização especificada ou pelo Account Owner
especificado nos parâmetros.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountsByUser(org_id: string, user_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountsByUser", "TOKEN", { org_id, user_id });
return await this.Ctx.Account.getAccountsByUser(org_id, user_id);
}
- Parâmetros:
org_id string
– O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
user_id string
– O nome de usuário ou ID de e-mail do usuário.
- Retorna:
- No caso de sucesso, um array JSON de IDs de conta.
- Exemplo de Valor de Retorno:
[
{
"bapAccountVersion": 2,
"assetType": "oaccount",
"user_id": "cb",
"custom_account_id": "1234567jh",
"account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "token",
"token_name": "cbdc",
"balance": "18",
"onhold_balance": "0",
"onhold_burn_balance": "0",
"application_groups": [
"application_groups value"
]
}
]
-
getUserByAccountId
- Este método retorna detalhes do usuário (
org_id
e user_id
) para uma conta especificada. Esse método pode ser chamado por uma Token Admin
ou Token Auditor
, ou por uma Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string())
public async getUserByAccountId(account_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getUserByAccountId", "TOKEN", { account_id });
return await this.Ctx.Account.getUserByAccountId(account_id);
}
- Parâmetros:
account_id: string
– O ID da conta.
- Retorna:
- Em caso de sucesso, um objeto JSON dos detalhes do usuário (
org_id
, token_id
e user_id
).
- Exemplo de Valor de Retorno:
{
"token_id": "USD",
"org_id": "CentralBank",
"user_id": "cb_admin_demo",
"custom_account_id": "10101234000123"
}
-
getAccount
- Este método retorna detalhes de uma conta especificada. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, uma Org Admin
ou Org Auditor
da organização especificada ou a AccountOwner
da conta.
@GetMethod()
@Validator(yup.string())
public async getAccount(account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccount", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountWithStatus(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Exemplo de Valor de Retorno:
{
"bapAccountVersion": 2,
"assetType": "oaccount",
"user_id": "cb",
"custom_account_id": "1234567jh",
"status": "active",
"account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "token",
"token_name": "cbdc",
"balance": "18",
"onhold_balance": "0",
"onhold_burn_balance": "0",
"application_groups": [
"application_groups value"
]
}
-
getAccountDetailsByCustomAccountId
- Este método retorna detalhes para um ID de conta personalizado especificado. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, ou por uma Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountDetailsByCustomAccountId(custom_account_id: string, org_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountDetailsByCustomAccountId", "TOKEN", { org_id });
return await this.Ctx.Account.getAccountDetailsByCustomAccountId(custom_account_id, org_id);
}
- Parâmetros:
custom_account_id: string
– O ID da conta bancária da conta, um identificador alfanumérico aleatório exclusivo.
org_id: string
– O ID do provedor de serviços de associação (MSP) da organização.
- Exemplo de Valor de Retorno:
[
{
"bapAccountVersion": 0,
"assetType": "oaccount",
"account_id": "oaccount~c44ffac4c46718e9744cb0aae2016d26a87a5bef5e2d1c0d1abc7d8782f0ba61",
"org_id": "CentralBank",
"token_type": "fungible",
"token_id": "USD",
"token_name": "cbdc",
"balance": "0",
"onhold_balance": "0",
"onhold_burn_balance": "0",
"application_groups": [
"SYSTEM_ADMINS"
],
"user_id": "cb_admin_demo",
"custom_account_id": "10101234000123"
}
]
-
getAccountTransactionHistory
- Este método retorna uma matriz de detalhes do histórico de transações da conta para uma conta especificada. Esse método só pode ser chamado pelo
Token Admin
ou Token Auditor
, um Org Admin
ou Org Auditor
da organização especificada ou pelo AccountOwner
da conta.
@GetMethod()
@Validator(yup.string())
public async getAccountTransactionHistory(account_id: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistory", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistory(account_id, account.org_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta.
- Exemplo de Valor de Retorno:
[
{
"transaction_id": "otransaction~4514aa229ebcc4d2fedcaa47c4301615e30c4a9bae45cf0256a5b80d75b3697a",
"transacted_amount": 1000,
"timestamp": "2025-08-25T13:20:50.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "APPROVE_MINT",
"balance": 21000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~1982f73495060e0eef4d78282a91c41e27e8c95572739b0677a1e404a0d20aa9",
"transacted_amount": 200,
"timestamp": "2025-08-25T13:12:43.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 20000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~fedd714cf1509f7517819d7cd4c0921d0b2f5d1ff6a25dcb08ab411defd6b5f3",
"transacted_amount": 2000,
"timestamp": "2025-08-21T05:23:25.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 20000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~f33b47234f3ee0b636962c8c31c01d06523b789ca16b3b342d5080b71268bcc3",
"transacted_amount": 1000,
"timestamp": "2025-08-21T05:23:07.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 20000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~cf934527149bc24f62a8ddeeea7f74a19a0f84d8f161535a771be49d2520d5b3",
"transacted_amount": 10000,
"timestamp": "2025-08-13T06:12:41.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "APPROVE_MINT",
"balance": 20000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~f5c0e11ca61d9adc843658929e6de2a738ad586304f9e020f75bf4aac5e42a2c",
"transacted_amount": 10000,
"timestamp": "2025-08-13T06:12:04.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 10000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~862aa9d9e877d3ea209b87299ab5b12c13ed5ce43d1cf1b934043c1dd02f58f6",
"transacted_amount": 50000,
"timestamp": "2025-08-12T21:04:22.000Z",
"token_id": "USD",
"category": "transfer",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transaction_type": "DEBIT",
"balance": 10000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~8a74c6d87ca74a613aab9db5d40386f8d5b534f9800503af8ca27e8946d7616d",
"transacted_amount": 40000,
"timestamp": "2025-08-12T21:01:27.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REJECT_MINT",
"balance": 60000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~28ac66ba33f7ad0648448964b2b74525c9e3f0c9908c7a0484690b9baa56c2db",
"transacted_amount": 30000,
"timestamp": "2025-08-12T21:01:16.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "APPROVE_MINT",
"balance": 60000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~7e32ad8f365ff59814e112f27602f30ab599fb9c1638784496c66a61a6277c22",
"transacted_amount": 20000,
"timestamp": "2025-08-12T21:01:05.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "APPROVE_MINT",
"balance": 30000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~1477050bb9e55f4f471872b31fce0d2097f5d5e57d89a842070df5e36d7ab0da",
"transacted_amount": 10000,
"timestamp": "2025-08-12T21:01:03.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "APPROVE_MINT",
"balance": 10000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~0e76c6931b7ee134e967e847d9730b867a0fd191d39697d83d36dd15745c02e3",
"transacted_amount": 40000,
"timestamp": "2025-08-12T21:00:20.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 0,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~07bbf9c190694371626da59ded5d87434d26f612891e13bb15bdd28f6086e760",
"transacted_amount": 30000,
"timestamp": "2025-08-12T21:00:01.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 0,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~8721175c6cbbce17b6c4bb6a444e475d07f52352dfd0d990679f342215153513",
"transacted_amount": 20000,
"timestamp": "2025-08-12T20:59:41.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 0,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~dc24c24d43a6525e807a39edcf8c6a2b6ccb81f0d755958f509509687eacee84",
"transacted_amount": 10000,
"timestamp": "2025-08-12T20:59:13.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "REQUEST_MINT",
"balance": 0,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~396e6ca5a11a9609632d0864026409d46a708fb95e3e21b39fa5f3fb78f90872",
"transacted_amount": 0,
"timestamp": "2025-08-12T20:43:20.000Z",
"token_id": "",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transaction_type": "CREATE_ACCOUNT",
"balance": 0,
"onhold_balance": 0
}
]
-
getAccountTransactionHistoryWithFilters
- Este método retorna um array filtrado de detalhes do histórico de transações da conta para um usuário e token especificados. Esse método só pode ser chamado pelo
Token Admin
ou Token Auditor
, um Org Admin
ou Org Auditor
da organização especificada ou pelo AccountOwner
da conta. Esse método só pode ser chamado quando conectado a uma rede remota do Oracle Blockchain Platform.
@GetMethod()
@Validator(yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFilters(account_id: string, filters?: Filters) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id, account.org_id, filters);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta.
filters: string
– Um parâmetro opcional. Se estiver vazio, todos os registros serão retornados. A propriedade PageSize
determina o número de registros a serem retornados. Se PageSize
for 0, o tamanho padrão da página será 20. A propriedade Bookmark
determina o índice inicial dos registros a serem retornados. Para obter mais informações, consulte a documentação do Hyperledger Fabric. As propriedades StartTime
e EndTime
devem ser especificadas no formato RFC-3339.
- Exemplo de Valor de Retorno:
[
{
"transaction_id": "otransaction~ccc2c2e89ab7887af4fdad3dc9918ea057a8aa834a0ed8d0f23271049f084952",
"transacted_amount": 10,
"timestamp": "2025-08-20T23:22:53.000Z",
"token_id": "token",
"category": "category value",
"description": "description value",
"holding_id": "ohold~cbdc~token~hold1",
"to_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"to_org_id": "Org1",
"to_user_id": "cb",
"to_custom_account_id": "1234567jh",
"from_account_id": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"from_org_id": "CentralBank",
"from_user_id": "Not Available",
"from_custom_account_id": "Not Available",
"transacted_account": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"transaction_type": "CREDIT",
"balance": 18,
"onhold_balance": 0,
"transacted_org_id": "CentralBank",
"transacted_user_id": "Not Available",
"transacted_custom_account_id": "Not Available"
},
{
"transaction_id": "otransaction~6523597253e45b3c976aecdc54e2c6316d0a4f88ad5d7f3fff48c69213e4375a",
"transacted_amount": 22,
"timestamp": "2025-08-20T23:21:45.000Z",
"token_id": "token",
"category": "category value",
"description": "description value",
"to_account_id": "oaccount~5e3b5a3306d7ca3f3e3fe7cc27b6ae547e94dba1c5af58a69a771d7a619b6a66",
"to_org_id": "Org1",
"to_user_id": "cb1",
"to_custom_account_id": "1234567jh",
"from_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"from_org_id": "Org1",
"from_user_id": "cb",
"from_custom_account_id": "1234567jh",
"transacted_account": "oaccount~5e3b5a3306d7ca3f3e3fe7cc27b6ae547e94dba1c5af58a69a771d7a619b6a66",
"transaction_type": "DEBIT",
"balance": 8,
"onhold_balance": 0,
"transacted_org_id": "Org1",
"transacted_user_id": "cb1",
"transacted_custom_account_id": "1234567jh"
},
{
"transaction_id": "otransaction~3212811cd7c0ff265434f5921b93621cc5b0e0450b07c52b42ad9d8ce73cf063",
"transacted_amount": 10,
"timestamp": "2025-08-20T23:18:53.000Z",
"token_id": "token",
"category": "category value",
"description": "description value",
"holding_id": "ohold~cbdc~token~hold1",
"to_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"to_org_id": "Org1",
"to_user_id": "cb",
"to_custom_account_id": "1234567jh",
"from_account_id": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"from_org_id": "CentralBank",
"from_user_id": "Not Available",
"from_custom_account_id": "Not Available",
"transacted_account": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"transaction_type": "CREDIT",
"balance": 30,
"onhold_balance": 0,
"transacted_org_id": "CentralBank",
"transacted_user_id": "Not Available",
"transacted_custom_account_id": "Not Available"
},
{
"transaction_id": "otransaction~af2a1b0d56778e4ff5f4dda4e81bbcbf02c0592416ee2f105ff0b764e515fd0a",
"transacted_amount": 10,
"timestamp": "2025-08-20T23:17:29.000Z",
"token_id": "token",
"category": "category value",
"description": "description value",
"holding_id": "ohold~cbdc~token~hold1",
"to_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"to_org_id": "Org1",
"to_user_id": "cb",
"to_custom_account_id": "1234567jh",
"from_account_id": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"from_org_id": "CentralBank",
"from_user_id": "Not Available",
"from_custom_account_id": "Not Available",
"transacted_account": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"transaction_type": "CREDIT",
"balance": 20,
"onhold_balance": 0,
"transacted_org_id": "CentralBank",
"transacted_user_id": "Not Available",
"transacted_custom_account_id": "Not Available"
},
{
"transaction_id": "otransaction~6c0452a58f13db93f1c308d60eab1fde6c911921b350c0bbbe0ce7dab394721d",
"transacted_amount": 10,
"timestamp": "2025-08-20T23:04:53.000Z",
"token_id": "token",
"category": "category value",
"description": "description value",
"holding_id": "ohold~cbdc~token~hold1",
"to_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"to_org_id": "Org1",
"to_user_id": "cb",
"to_custom_account_id": "1234567jh",
"from_account_id": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"from_org_id": "CentralBank",
"from_user_id": "Not Available",
"from_custom_account_id": "Not Available",
"transacted_account": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"transaction_type": "CREDIT",
"balance": 10,
"onhold_balance": 0,
"transacted_org_id": "CentralBank",
"transacted_user_id": "Not Available",
"transacted_custom_account_id": "Not Available"
},
{
"transaction_id": "otransaction~df98e24a3b90661b54b54289b600b13a1051c922db0a4d20e3705a9820ae9c20",
"transacted_amount": 0,
"timestamp": "2025-08-20T22:55:09.000Z",
"category": "",
"description": "",
"from_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"from_org_id": "Org1",
"from_user_id": "cb",
"from_custom_account_id": "1234567jh",
"transacted_account": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"transaction_type": "CREATE_ACCOUNT",
"balance": 0,
"onhold_balance": 0,
"transacted_org_id": "Org1",
"transacted_user_id": "cb",
"transacted_custom_account_id": "1234567jh"
}
]
-
getAccountTransactionHistoryWithFiltersFromRichHistDB
- Este método extrai o histórico de transações do banco de dados de histórico avançado. Esse método só pode ser chamado pelo
Token Admin
ou Token Auditor
, um Org Admin
ou Org Auditor
da organização especificada ou pelo AccountOwner
da conta.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFiltersFromRichHistDB(account_id: string, custom_endpoint: string, bearer_token: string, filters?: Filters) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFiltersFromRichHistDB", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTrxHistoryWithFiltersFromRichHistDB(account_id, account.org_id, custom_endpoint, bearer_token, filters);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta.
custom_endpoint
– O ponto final do serviço RESTful do banco de dados de histórico avançado.
bearer_token
– O token de autorização de acesso para o ponto final do serviço RESTful.
filters: string
– Um parâmetro opcional. Se estiver vazio, todos os registros serão retornados. A propriedade PageSize
determina o número de registros a serem retornados. Se PageSize
for 0, o tamanho padrão da página será 20. A propriedade Bookmark
determina o índice inicial dos registros a serem retornados. Para obter mais informações, consulte a documentação do Hyperledger Fabric. As propriedades StartTime
e EndTime
devem ser especificadas no formato RFC-3339.
- Exemplo de Valor de Retorno:
[
{
"transaction_id": "otransaction~3140569a4ecb3c3f141cc2468fe21276640b7fd79013d951d9104b79072d8f9c",
"transacted_amount": 200,
"timestamp": "2025-08-25T13:16:55.000Z",
"token_id": "USD",
"transacted_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_officer_demo",
"transacted_custom_account_id": "20200222221111",
"to_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"to_org_id": "Org1",
"to_user_id": "fi1_org_officer_demo",
"to_custom_account_id": "20200222221111",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "EXECUTEHOLD",
"category": "transfer",
"balance": 26800,
"onhold_balance": 300
},
{
"transaction_id": "otransaction~2b75b3e8531a651f07c2d048d8546ad70ac49c66f0b82ed7626c1739090842ce",
"transacted_amount": 100,
"timestamp": "2025-08-25T13:16:06.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"to_org_id": "Org1",
"to_user_id": "fi1_org_officer_demo",
"to_custom_account_id": "20200222221111",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~e26f11da",
"category": "transfer",
"balance": 26800,
"onhold_balance": 500
},
{
"transaction_id": "otransaction~9e7bf14cf96c5f90170da9455b1318687785e936192f60b7cbeb1c8bfabc41d2",
"transacted_amount": 100,
"timestamp": "2025-08-21T06:57:19.000Z",
"token_id": "USD",
"transacted_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_retirer_demo",
"transacted_custom_account_id": "10109999006543",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"from_org_id": "CentralBank",
"from_user_id": "cb_retirer_demo",
"from_custom_account_id": "10109999006543",
"transaction_type": "CREDIT",
"category": "transfer",
"balance": 26900,
"onhold_balance": 400
},
{
"transaction_id": "otransaction~b3901b4754920a9c75e36069dc55024ad505e4c127f334eedf65ef6703dc6b86",
"transacted_amount": 200,
"timestamp": "2025-08-21T05:39:25.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"to_org_id": "org2",
"to_user_id": "fi2_org_officer_demo",
"to_custom_account_id": "30300617202404",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~77b75873",
"category": "issuance",
"balance": 26800,
"onhold_balance": 400
},
{
"transaction_id": "otransaction~d55c9dfc9feacb353544b5d8b2ae694162ade3890bcaaf715503fd1d6a73cd1a",
"transacted_amount": 200,
"timestamp": "2025-08-21T05:39:01.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"to_org_id": "Org1",
"to_user_id": "fi1_org_officer_demo",
"to_custom_account_id": "20200222221111",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~81d7c4ac",
"category": "transfer",
"balance": 27000,
"onhold_balance": 200
},
{
"transaction_id": "otransaction~751eaedbe4311edd5d17cae53d283caf397d0cb09f18d57a5e3fe61266875ff9",
"transacted_amount": 200,
"timestamp": "2025-08-13T09:59:22.000Z",
"token_id": "USD",
"transacted_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"transacted_org_id": "org2",
"transacted_user_id": "fi2_org_officer_demo",
"transacted_custom_account_id": "30300617202404",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"from_org_id": "org2",
"from_user_id": "fi2_org_officer_demo",
"from_custom_account_id": "30300617202404",
"transaction_type": "CREDIT",
"category": "transfer",
"balance": 27200,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~70155a8f4e388cc9395dbd03bedaf5a878705f5ad02302c8e9163218a5c3875a",
"transacted_amount": 1000,
"timestamp": "2025-08-13T06:22:56.000Z",
"token_id": "USD",
"transacted_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_officer_demo",
"transacted_custom_account_id": "20200222221111",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"from_org_id": "Org1",
"from_user_id": "fi1_org_officer_demo",
"from_custom_account_id": "20200222221111",
"transaction_type": "CREDIT",
"category": "transfer",
"balance": 27000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~e595f3f0cc03fa5f58a546b8abbfaf155592e492f850581db2b8fed9a529c9e2",
"transacted_amount": 10000,
"timestamp": "2025-08-12T21:09:25.000Z",
"token_id": "USD",
"transacted_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"transacted_org_id": "org2",
"transacted_user_id": "fi2_org_officer_demo",
"transacted_custom_account_id": "30300617202404",
"to_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"to_org_id": "org2",
"to_user_id": "fi2_org_officer_demo",
"to_custom_account_id": "30300617202404",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "EXECUTEHOLD",
"category": "issuance",
"balance": 26000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~da92402859d87ae3069722d8e39cb0da448e9a5f67468233ee9b1fe7a4ebeef8",
"transacted_amount": 10000,
"timestamp": "2025-08-12T21:09:17.000Z",
"token_id": "USD",
"transacted_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_officer_demo",
"transacted_custom_account_id": "20200222221111",
"to_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"to_org_id": "Org1",
"to_user_id": "fi1_org_officer_demo",
"to_custom_account_id": "20200222221111",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "EXECUTEHOLD",
"category": "issuance",
"balance": 26000,
"onhold_balance": 10000
},
{
"transaction_id": "otransaction~6915145aaf09fbf4d96456febddc2aa87b48c08ddd8ff17a6bab5d310f67bb36",
"transacted_amount": 1000,
"timestamp": "2025-08-12T21:07:11.000Z",
"token_id": "USD",
"transacted_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_retirer_demo",
"transacted_custom_account_id": "10109999006543",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"from_org_id": "CentralBank",
"from_user_id": "cb_retirer_demo",
"from_custom_account_id": "10109999006543",
"transaction_type": "CREDIT",
"category": "transfer",
"balance": 26000,
"onhold_balance": 20000
},
{
"transaction_id": "otransaction~244d7172d1dc90a142e1f22204c76614c7eea814b3d61f33016b786f1b347784",
"transacted_amount": 10000,
"timestamp": "2025-08-12T21:05:39.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"to_org_id": "org2",
"to_user_id": "fi2_org_officer_demo",
"to_custom_account_id": "30300617202404",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~ed815e20",
"category": "issuance",
"balance": 25000,
"onhold_balance": 20000
},
{
"transaction_id": "otransaction~c63ec37966264493bde6fa666527b9cca11695c15611c32e89af49a2246f13f6",
"transacted_amount": 10000,
"timestamp": "2025-08-12T21:05:20.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"to_org_id": "Org1",
"to_user_id": "fi1_org_officer_demo",
"to_custom_account_id": "20200222221111",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~12d87129",
"category": "issuance",
"balance": 35000,
"onhold_balance": 10000
},
{
"transaction_id": "otransaction~5112f576c94c2d23c342479bfa37e34612414b3258a64b43cf51b920f4ff5868",
"transacted_amount": 5000,
"timestamp": "2025-08-12T21:05:02.000Z",
"token_id": "USD",
"transacted_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_retirer_demo",
"transacted_custom_account_id": "10109999006543",
"to_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"to_org_id": "CentralBank",
"to_user_id": "cb_retirer_demo",
"to_custom_account_id": "10109999006543",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "DEBIT",
"category": "burn",
"balance": 45000,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~862aa9d9e877d3ea209b87299ab5b12c13ed5ce43d1cf1b934043c1dd02f58f6",
"transacted_amount": 50000,
"timestamp": "2025-08-12T21:04:22.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb__creator_demo",
"transacted_custom_account_id": "10105678004567",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"from_org_id": "CentralBank",
"from_user_id": "cb__creator_demo",
"from_custom_account_id": "10105678004567",
"transaction_type": "CREDIT",
"category": "transfer",
"balance": 50000,
"onhold_balance": 0
}
]
-
getOrgAccountsTransactionHistoryWithFiltersFromRichHistDB
- Este método extrai o histórico de transações do banco de dados de histórico avançado para a organização especificada. Esse método só pode ser chamado pelo
Token Admin
ou Token Auditor
, um Org Admin
ou Org Auditor
da organização especificada ou pelo AccountOwner
da conta.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getOrgAccountsTransactionHistoryWithFiltersFromRichHistDB(org_id: string, custom_endpoint: string, bearer_token: string, filters?: Filters) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOrgAccountsTransactionHistoryWithFiltersFromRichHistDB", "TOKEN", { org_id });
return await this.Ctx.Account.getOrgAccountsTrxHistoryWithFiltersFromRichHistDB(org_id, custom_endpoint, bearer_token, filters);
}
- Parâmetros:
org_id: string
– O ID do provedor de serviços de associação (MSP) da organização.
custom_endpoint
– O ponto final do serviço RESTful do banco de dados de histórico avançado.
bearer_token
– O token de autorização de acesso para o ponto final do serviço RESTful.
filters: string
– Um parâmetro opcional. Se estiver vazio, todos os registros serão retornados. A propriedade PageSize
determina o número de registros a serem retornados. Se PageSize
for 0, o tamanho padrão da página será 20. A propriedade Bookmark
determina o índice inicial dos registros a serem retornados. Para obter mais informações, consulte a documentação do Hyperledger Fabric. As propriedades StartTime
e EndTime
devem ser especificadas no formato RFC-3339.
- Exemplo de Valor de Retorno:
[
{
"transaction_id": "otransaction~4793f3907eefce2f9fca7ef107405b0f116efb3afbf83fa0e61fe763690c8235",
"transacted_amount": 100,
"timestamp": "2025-08-25T13:47:56.000Z",
"token_id": "USD",
"transacted_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_officer_demo",
"transacted_custom_account_id": "20200222221111",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"from_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"from_org_id": "Org1",
"from_user_id": "fi1_org_officer_demo",
"from_custom_account_id": "20200222221111",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~2ac01689",
"category": "issuance"
},
{
"transaction_id": "otransaction~5177f7560d32838242a26ac74f2a90c6ff9b47aae0d0988f28d9b4cf7e27c097",
"transacted_amount": 10,
"timestamp": "2025-08-25T13:22:23.000Z",
"token_id": "USD",
"transacted_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_user1_demo",
"transacted_custom_account_id": "20200198765432",
"to_account": "oaccount~d08ff55a040d5e5dcf406009bab1b3398e06c374356efb1bddbf2f17fc37f949",
"to_org_id": "Org1",
"to_user_id": "fi1_org_user2_demo",
"to_custom_account_id": "20200211112222",
"from_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"from_org_id": "Org1",
"from_user_id": "fi1_org_user1_demo",
"from_custom_account_id": "20200198765432",
"transaction_type": "CREDIT",
"holding_id": "ohold~cbdc~USD~454f4bf6",
"category": "transfer"
},
{
"transaction_id": "otransaction~5177f7560d32838242a26ac74f2a90c6ff9b47aae0d0988f28d9b4cf7e27c097",
"transacted_amount": 10,
"timestamp": "2025-08-25T13:22:23.000Z",
"token_id": "USD",
"transacted_account": "oaccount~d08ff55a040d5e5dcf406009bab1b3398e06c374356efb1bddbf2f17fc37f949",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_user2_demo",
"transacted_custom_account_id": "20200211112222",
"to_account": "oaccount~d08ff55a040d5e5dcf406009bab1b3398e06c374356efb1bddbf2f17fc37f949",
"to_org_id": "Org1",
"to_user_id": "fi1_org_user2_demo",
"to_custom_account_id": "20200211112222",
"from_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"from_org_id": "Org1",
"from_user_id": "fi1_org_user1_demo",
"from_custom_account_id": "20200198765432",
"transaction_type": "EXECUTEHOLD",
"holding_id": "ohold~cbdc~USD~454f4bf6",
"category": "transfer"
},
{
"transaction_id": "otransaction~32137cd7e16c560f4d96d0f8999f6a267c1e95be2f5b11ef0541e574a6cd7275",
"transacted_amount": 200,
"timestamp": "2025-08-25T13:16:55.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"to_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"to_org_id": "Org1",
"to_user_id": "fi1_org_officer_demo",
"to_custom_account_id": "20200222221111",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"transaction_type": "CREDIT",
"category": "transfer"
},
{
"transaction_id": "otransaction~67844e07c06ab4c3d94d8ff36173b9dbcc2f1b9c99f4e7070f1097fd89f3f514",
"transacted_amount": 10,
"timestamp": "2025-08-21T08:49:40.000Z",
"token_id": "USD",
"transacted_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_user1_demo",
"transacted_custom_account_id": "20200198765432",
"to_account": "oaccount~d08ff55a040d5e5dcf406009bab1b3398e06c374356efb1bddbf2f17fc37f949",
"to_org_id": "Org1",
"to_user_id": "fi1_org_user2_demo",
"to_custom_account_id": "20200211112222",
"from_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"from_org_id": "Org1",
"from_user_id": "fi1_org_user1_demo",
"from_custom_account_id": "20200198765432",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~b6e4925b",
"category": "transfer"
},
{
"transaction_id": "otransaction~b7c97d737fb978651c9132276ab677c0bcf795b9db13d0d39cba5243615c7389",
"transacted_amount": 10,
"timestamp": "2025-08-21T08:46:09.000Z",
"token_id": "USD",
"transacted_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_officer_demo",
"transacted_custom_account_id": "20200222221111",
"to_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"to_org_id": "Org1",
"to_user_id": "fi1_org_user1_demo",
"to_custom_account_id": "20200198765432",
"from_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"from_org_id": "Org1",
"from_user_id": "fi1_org_officer_demo",
"from_custom_account_id": "20200222221111",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~4fbbb846",
"category": "transfer"
}
]
-
getAllAccountsTransactionHistoryWithFiltersFromRichHistDB
- Este método extrai o histórico de transações do banco de dados de histórico avançado para todas as organizações. Esse método só pode ser chamado pelo
Token Admin
ou pelo Token Auditor
.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.object().nullable())
public async getAllAccountsTransactionHistoryWithFiltersFromRichHistDB(custom_endpoint: string, bearer_token: string, filters?: Filters) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllAccountsTransactionHistoryWithFiltersFromRichHistDB", "TOKEN");
return await this.Ctx.Account.getAllAccountsTrxHistoryWithFiltersFromRichHistDB(custom_endpoint, bearer_token, filters);
}
- Parâmetros:
custom_endpoint
– O ponto final do serviço RESTful do banco de dados de histórico avançado.
bearer_token
– O token de autorização de acesso para o ponto final do serviço RESTful.
filters: string
– Um parâmetro opcional. Se estiver vazio, todos os registros serão retornados. A propriedade PageSize
determina o número de registros a serem retornados. Se PageSize
for 0, o tamanho padrão da página será 20. A propriedade Bookmark
determina o índice inicial dos registros a serem retornados. Para obter mais informações, consulte a documentação do Hyperledger Fabric. As propriedades StartTime
e EndTime
devem ser especificadas no formato RFC-3339.
- Exemplo de Valor de Retorno:
[
{
"transaction_id": "otransaction~62eb436be7c29fc2ed9cae221e874d9a31b163fa10374e7da09bf5e09a96c3ff",
"transacted_amount": 10000,
"timestamp": "2025-08-25T13:57:58.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"from_org_id": "CentralBank",
"from_user_id": "cb__creator_demo",
"from_custom_account_id": "10105678004567",
"transaction_type": "DEBIT",
"category": "issuance"
},
{
"transaction_id": "otransaction~62eb436be7c29fc2ed9cae221e874d9a31b163fa10374e7da09bf5e09a96c3ff",
"transacted_amount": 10000,
"timestamp": "2025-08-25T13:57:58.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb__creator_demo",
"transacted_custom_account_id": "10105678004567",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"from_org_id": "CentralBank",
"from_user_id": "cb__creator_demo",
"from_custom_account_id": "10105678004567",
"transaction_type": "CREDIT",
"category": "issuance"
},
{
"transaction_id": "otransaction~c628fb7738222ed969295ccc8d21b4be95d96e3aada4f14570f7820a7051b5f7",
"transacted_amount": 200,
"timestamp": "2025-08-25T13:51:18.000Z",
"token_id": "USD",
"transacted_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_issuer_demo",
"transacted_custom_account_id": "10109999001234",
"to_account": "oaccount~3954f54a8bc7acdd0c3d0960104240f60d56c26c8a179430267359cd80ce3709",
"to_org_id": "org2",
"to_user_id": "fi2_org_officer_demo",
"to_custom_account_id": "30300617202404",
"from_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"from_org_id": "CentralBank",
"from_user_id": "cb_issuer_demo",
"from_custom_account_id": "10109999001234",
"transaction_type": "RELEASEHOLD",
"holding_id": "ohold~cbdc~USD~77b75873"
},
{
"transaction_id": "otransaction~af2cc8e43ecb4c5520d90a8d7955b5a47623a29b13eef47e31c16eb48cc0adec",
"transacted_amount": 100,
"timestamp": "2025-08-25T13:50:45.000Z",
"token_id": "USD",
"transacted_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb_retirer_demo",
"transacted_custom_account_id": "10109999006543",
"from_account": "oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98",
"from_org_id": "CentralBank",
"from_user_id": "cb_retirer_demo",
"from_custom_account_id": "10109999006543",
"transaction_type": "REJECT_BURN",
"holding_id": "ohold~cbdc~USD~8d34",
"description": "Burn",
"to_account": ""
},
{
"transaction_id": "otransaction~182b99bb2ed753994a8c638ab9b08c3a4e73ac8159a3173a2a1f56b651d2eeac",
"transacted_amount": 2000,
"timestamp": "2025-08-25T13:50:19.000Z",
"token_id": "USD",
"transacted_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"transacted_org_id": "CentralBank",
"transacted_user_id": "cb__creator_demo",
"transacted_custom_account_id": "10105678004567",
"to_account": "oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41",
"to_org_id": "CentralBank",
"to_user_id": "cb__creator_demo",
"to_custom_account_id": "10105678004567",
"transaction_type": "REJECT_MINT",
"holding_id": "ohold~cbdc~USD~89ce",
"description": "Minting 2000 tokens",
"from_account": ""
},
{
"transaction_id": "otransaction~4793f3907eefce2f9fca7ef107405b0f116efb3afbf83fa0e61fe763690c8235",
"transacted_amount": 100,
"timestamp": "2025-08-25T13:47:56.000Z",
"token_id": "USD",
"transacted_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_officer_demo",
"transacted_custom_account_id": "20200222221111",
"to_account": "oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a",
"to_org_id": "CentralBank",
"to_user_id": "cb_issuer_demo",
"to_custom_account_id": "10109999001234",
"from_account": "oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3",
"from_org_id": "Org1",
"from_user_id": "fi1_org_officer_demo",
"from_custom_account_id": "20200222221111",
"transaction_type": "ONHOLD",
"holding_id": "ohold~cbdc~USD~2ac01689",
"category": "issuance"
},
{
"transaction_id": "otransaction~5177f7560d32838242a26ac74f2a90c6ff9b47aae0d0988f28d9b4cf7e27c097",
"transacted_amount": 10,
"timestamp": "2025-08-25T13:22:23.000Z",
"token_id": "USD",
"transacted_account": "oaccount~d08ff55a040d5e5dcf406009bab1b3398e06c374356efb1bddbf2f17fc37f949",
"transacted_org_id": "Org1",
"transacted_user_id": "fi1_org_user2_demo",
"transacted_custom_account_id": "20200211112222",
"to_account": "oaccount~d08ff55a040d5e5dcf406009bab1b3398e06c374356efb1bddbf2f17fc37f949",
"to_org_id": "Org1",
"to_user_id": "fi1_org_user2_demo",
"to_custom_account_id": "20200211112222",
"from_account": "oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111",
"from_org_id": "Org1",
"from_user_id": "fi1_org_user1_demo",
"from_custom_account_id": "20200198765432",
"transaction_type": "EXECUTEHOLD",
"holding_id": "ohold~cbdc~USD~454f4bf6",
"category": "transfer"
}
]
-
getAccountBalance
- Este método retorna o saldo atual de uma conta especificada. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, uma Org Admin
ou Org Auditor
da organização especificada ou a AccountOwner
da conta.
@GetMethod()
@Validator(yup.string())
public async getAccountBalance(account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountBalance", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountBalance(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de sucesso, uma representação JSON do saldo da conta atual.
- Exemplo de Valor de Retorno:
{
"msg": "Current Balance is: 100",
"user_balance": 100
}
-
deleteHistoricalTransactions
- Este método exclui transações mais antigas do banco de dados de estado. Esse método só pode ser chamado por um
Token Admin
.
@Validator(yup.date())
public async deleteHistoricalTransactions(time_to_expiration: Date) {
await this.Ctx.Auth.checkAuthorization("TRANSACTION.deleteTransactions", "TOKEN");
await this.Ctx.Model.createEvent(EVENT_NAME.DELETE_HISTORICAL_TRANSACTIONS, { time_to_expiration });
return await this.Ctx.Transaction.deleteTransactions(time_to_expiration);
}
- Parâmetros:
time_to_expiration Date
– Um timestamp que indica quando excluir transações. Os ativos de transação anteriores ao horário especificado serão excluídos.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully deleted transaction older than date: Thu Aug 19 2025 11:19:36 GMT+0000 (Coordinated Universal Time).",
"transactions": [
"otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
]
}
-
getTransactionById
- Este método retorna o histórico de um ativo
Transaction
. Este método só pode ser chamado por um Token Admin
ou Token Auditor
, por um Org Admin
ou Org Auditor
da organização especificada ou por um participante da transação (remetente, destinatário ou notário).
@GetMethod()
@Validator(yup.string())
public async getTransactionById(transaction_id: string) {
await this.Ctx.Auth.checkAuthorization("TRANSACTION.getTransactionById", "TOKEN", { transaction_id });
return await this.Ctx.Transaction.getTransactionById(transaction_id);
}
- Parâmetros:
transaction_id string
– O ID do ativo da transação.
- Retorna:
- No caso de sucesso, um array JSON do histórico da transação.
- Exemplo de Valor de Retorno:
{
"transaction_id": "otransaction~6523597253e45b3c976aecdc54e2c6316d0a4f88ad5d7f3fff48c69213e4375a",
"history": [
{
"trxId": "6523597253e45b3c976aecdc54e2c6316d0a4f88ad5d7f3fff48c69213e4375a",
"timeStamp": "2025-08-20T23:21:45.000Z",
"value": {
"assetType": "otransaction",
"transaction_id": "otransaction~6523597253e45b3c976aecdc54e2c6316d0a4f88ad5d7f3fff48c69213e4375a",
"token_id": "token",
"from_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"to_account_id": "oaccount~5e3b5a3306d7ca3f3e3fe7cc27b6ae547e94dba1c5af58a69a771d7a619b6a66",
"transaction_type": "TRANSFER",
"amount": 22,
"timestamp": "2025-08-20T23:21:45.000Z",
"number_of_sub_transactions": 0,
"holding_id": "",
"sub_transaction": "false",
"category": "category value",
"description": "description value"
}
}
],
"sub_transactions": []
}
-
getAccountStatus
- Este método obtém o status atual da conta de token. Esse método pode ser chamado pelo
Token Admin
do chaincode, pelo Org Admin
da organização especificada ou pelo proprietário da conta de token.
@GetMethod()
@Validator(yup.string())
public async getAccountStatus(account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.get", "TOKEN", { account_id });
try {
return await this.Ctx.AccountStatus.getAccountStatus(account_id);
} catch (err) {
return await this.Ctx.AccountStatus.getDefaultAccountStatus(account_id);
}
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de sucesso, uma mensagem que inclui detalhes do status da conta de token.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "active"
}
-
getAccountStatusHistory
- Este método obtém o histórico do status da conta. Esse método pode ser chamado pelo
Token Admin
do chaincode, pelo Org Admin
da organização especificada ou pelo proprietário da conta de token.
@GetMethod()
@Validator(yup.string())
public async getAccountStatusHistory(account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.history", "TOKEN", { account_id });
const status_id = await this.Ctx.AccountStatus.generateAccountStatusId(account_id);
let account_status_history: any;
try {
account_status_history = await this.Ctx.AccountStatus.history(status_id);
} catch (err) {
return [];
}
return account_status_history;
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de êxito, uma mensagem que inclui detalhes do histórico de status da conta.
- Exemplo de Valor de Retorno:
[
{
"trxId": "d5c6d6f601257ba9b6edaf5b7660f00adc13c37d5321b8f7d3a35afab2e93e63",
"timeStamp": "2025-12-02T10:39:14.000Z",
"value": {
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "suspended"
}
},
{
"trxId": "e6c850cfa084dc20ad95fb2bb8165eef3a3bd62a0ac867cccee57c2003125183",
"timeStamp": "2025-12-02T10:37:50.000Z",
"value": {
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "active"
}
}
]
-
activateAccount
- Este método ativa uma conta de token. Esse método só pode ser chamado por um
Token Admin
do chaincode ou um Org Admin
da organização especificada. Não é possível ativar contas excluídas.
@Validator(yup.string())
public async activateAccount(account_id: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.activateAccount", "TOKEN", { org_id: account.org_id });
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.ACTIVATE_ACCOUNT, { account_id }, token_asset);
return await this.Ctx.Account.activateAccount(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de sucesso, uma representação JSON do objeto de status da conta do token especificado.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "active"
}
-
suspendAccount
- Este método suspende uma conta de token. Esse método só pode ser chamado por um
Token Admin
do chaincode ou um Org Admin
da organização especificada. Após a suspensão de uma conta, não será possível concluir nenhuma operação que atualize a conta. Não é possível suspender uma conta excluída.
@Validator(yup.string())
public async suspendAccount(account_id: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.suspendAccount", "TOKEN", { org_id: account.org_id });
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.SUSPEND_ACCOUNT, { account }, token_asset);
return await this.Ctx.Account.suspendAccount(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de sucesso, uma representação JSON do objeto de status da conta do token especificado.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "suspended"
}
-
deleteAccount
- Este método exclui uma conta de token. Esse método só pode ser chamado por um
Token Admin
do chaincode ou um Org Admin
da organização especificada. Depois que uma conta for excluída, você não poderá concluir nenhuma operação que atualize a conta. A conta excluída está em um estado final e não pode ser alterada para nenhum outro estado. Para excluir uma conta, o saldo da conta e o saldo em retenção devem ser zero.
@Validator(yup.string())
public async deleteAccount(account_id: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.deleteAccount", "TOKEN", { org_id: account.org_id });
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.DELETE_ACCOUNT, { account_id }, token_asset);
return await this.Ctx.Account.deleteAccount(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de sucesso, uma representação JSON do objeto de status da conta do token especificado.
- Exemplo de Valor de Retorno:
{
"assetType": "oaccountStatus",
"status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
"account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
"status": "deleted"
}
-
setMaxDailyAmount
- Este método define o valor
max_daily_amount
para uma conta especificada. Esse método só pode ser chamado por um Token Admin
do chaincode ou um Org Admin
da organização especificada.
@Validator(yup.string(), yup.string().optional())
public async setMaxDailyAmount (account_id: string, max_daily_amount?: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization('ACCOUNT.setMaxDailyAmount', 'TOKEN', { org_id: account.org_id });
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.SET_MAX_DAILY_AMOUNT, { account_id, max_daily_amount }, token_asset);
return this.Ctx.Account.setMaxDailyAmount (account_id, max_daily_amount);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
max_daily_amount?: string
– (Opcional) A quantidade máxima de tokens que o usuário pode transferir diariamente. Se não for especificado, o usuário poderá transferir qualquer quantidade de tokens diariamente.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully set max daily amount for account id oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a to 1000000"
}
-
setMaxDailyTransactionCount
- Este método define o valor
max_daily_transactions
para uma conta especificada. Esse método só pode ser chamado por um Token Admin
do chaincode ou um Org Admin
da organização especificada.
@Validator(yup.string(), yup.string().optional())
public async setMaxDailyTransactionCount (account_id: string, max_daily_transactions?: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization('ACCOUNT.setMaxDailyTransactionCount', 'TOKEN', { org_id: account.org_id });
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.SET_MAX_DAILY_TRANSACTION_COUNT, { account_id, max_daily_transactions}, token_asset);
return this.Ctx.Account.setMaxDailyTransactionCount (account_id, max_daily_transactions);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
max_daily_transactions?: string
– (Opcional) O número máximo de transações que o usuário pode concluir diariamente. Se não for especificado, o usuário poderá concluir qualquer número de transações diariamente.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully set max daily transactions for account id oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a to 100000"
}
-
getMaxDailyAmount
- Esse método obtém o valor
max_daily_amount
para uma conta especificada. Esse método só pode ser chamado por um Token Admin
ou Token Auditor
do chaincode ou por um Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string())
public async getMaxDailyAmount (account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization('ACCOUNT.getMaxDailyAmount', 'TOKEN', { account_id });
return this.Ctx.Account.getMaxDailyAmount (account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Exemplo de Valor de Retorno:
{
"max_daily_amount": "10000"
}
-
getMaxDailyTransactionCount
- Esse método obtém o valor
max_daily_transactions
para uma conta especificada. Esse método só pode ser chamado por um Token Admin
ou Token Auditor
do chaincode ou por um Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string())
public async getMaxDailyTransactionCount (account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization('ACCOUNT.getMaxDailyTransactionCount', 'TOKEN', { account_id });
return this.Ctx.Account.getMaxDailyTransactionCount (account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Exemplo de Valor de Retorno:
{
"max_daily_transactions": "100"
}
-
consolidateRunningBalanceInTransactions
- Este método calcula os saldos de conta em execução e salva os valores atualizados nos pares de chave/valor da transação. Geralmente, os administradores do sistema chamam esse método usando um agendador de proxy REST. Esse método só pode ser chamado por uma
Token Admin
ou Org Admin
.
@Validator(yup.string())
public async consolidateRunningBalanceInTransactions() {
await this.Ctx.Auth.checkAuthorization("TRANSACTION.consolidateRunningBalanceInTransactions", "TOKEN");
return this.Ctx.Transaction.consolidateRunningBalanceInTransactions(true);
}
- Exemplo de Valor de Retorno:
{ msg: "Successfully updated account running balance for pending transactions."}
-
processSendersAndReceivers
- Este método calcula e atualiza os saldos da conta de token que são distribuídos nos pares de chave/valor do remetente e do destinatário que foram criados durante transferências interorganizações e, em seguida, exclui os pares de chave/valor do remetente e do destinatário, que não são mais usados. Geralmente, os administradores do sistema chamam esse método usando um agendador de proxy REST. Esse método só pode ser chamado por uma
Token Admin
ou Org Admin
.
@Validator(yup.string())
public async processSendersAndReceivers() {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.processSendersAndReceivers", "TOKEN");
return this.Ctx.Account.processSendersAndReceivers(true);
}
- Exemplo de Valor de Retorno:
{ msg: "Successfully updated balance for accounts from pending receivers."}
-
addRole
- Este método adiciona uma atribuição a um usuário e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por um Org Admin
da organização especificada que também possui a função especificada.
@Validator(yup.string(), yup.string())
public async addRole(account_id: string, role: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Auth.checkAuthorization("TOKEN.addRoleMember", "TOKEN", { token_id: account.token_id, org_id: account.org_id, role });
await this.Ctx.Model.createEvent(EVENT_NAME.ADD_ROLE, { role, account_id }, token_asset);
return await this.Ctx.Token.addRoleMember(role, account_id, token_asset);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
role: string
– O nome da função a ser adicionada ao usuário especificado. Os comportamentos mintable
e burnable
correspondem às propriedades minter_role_name
e burner_role_name
do arquivo de especificação. Da mesma forma, a atribuição notary
corresponde à propriedade notary_role_name
do arquivo de especificação.
- Retorna:
- No caso de êxito, uma mensagem com detalhes da conta.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully added role 'notary' to Account Id: oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8"
}
-
removeRole
- Este método remove uma atribuição de um usuário e token especificados. Esse método só pode ser chamado por um
Token Admin
do chaincode ou por um Org Admin
da organização especificada que também possui a função especificada.
@Validator(yup.string(), yup.string())
public async removeRole(account_id: string, role: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Auth.checkAuthorization("TOKEN.removeRoleMember", "TOKEN", { token_id: account.token_id, org_id: account.org_id, role });
await this.Ctx.Model.createEvent(EVENT_NAME.REMOVE_ROLE, { role, account_id }, token_asset);
return await this.Ctx.Token.removeRoleMember(role, account_id, token_asset);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
role: string
– O nome da atribuição a ser removida do usuário especificado. Os comportamentos mintable
e burnable
correspondem às propriedades minter_role_name
e burner_role_name
do arquivo de especificação. Da mesma forma, a atribuição notary
corresponde à propriedade notary_role_name
do arquivo de especificação.
- Retorna:
- No caso de êxito, uma mensagem com detalhes da conta.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully removed role 'notary' from Account Id: oaccount~2eb5f8a9bc561f8f41a4ea3be9511958cc6684ef14f2337ca396efc301b627d8"
}
-
getAccountsByRole
- Este método retorna uma lista de todos os IDs de conta para uma função e token especificados. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountsByRole(token_id: string, role: string) {
await this.Ctx.Auth.checkAuthorization("ROLE.getAccountsByRole", "TOKEN");
return await this.Ctx.Role.getAccountsByRole(token_id, role);
}
- Parâmetros:
token_id: string
– O ID do token.
role: string
– O nome da função a ser pesquisada.
- Retorna:
- No caso de sucesso, um array JSON de IDs de conta.
- Exemplo de Valor de Retorno:
{
"accounts": [
"oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75"
]
}
-
getOrgAccountsByRole
- Este método retorna uma lista de todos os IDs de conta para uma função, token e organização especificados. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, ou por uma Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getOrgAccountsByRole(token_id: string, role: string, org_id: string) {
await this.Ctx.Auth.checkAuthorization("ROLE.getOrgAccountsByRole", "TOKEN", { org_id });
return await this.Ctx.Role.getOrgAccountsByRole(token_id, role, org_id);
}
- Parâmetros:
token_id: string
– O ID do token.
role: string
– O nome da função a ser pesquisada.
org_id: string
– O ID do provedor de serviços de associação (MSP) da organização.
- Retorna:
- No caso de sucesso, um array JSON de IDs de conta.
- Exemplo de Valor de Retorno:
{
"accounts": [
"oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75"
]
}
-
getUsersByRole
- Este método retorna uma lista de todos os usuários para uma atribuição e um token especificados. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getUsersByRole(token_id: string, role: string) {
await this.Ctx.Auth.checkAuthorization("ROLE.getUsersByRole", "TOKEN");
return await this.Ctx.Role.getUsersByRole(token_id, role);
}
- Parâmetros:
token_id: string
– O ID do token.
role: string
– O nome da função a ser pesquisada.
- Exemplo de Valor de Retorno:
{
"users": [
{
"token_id": "token",
"org_id": "CentralBank"
}
]
}
-
getOrgUsersByRole
- Este método retorna uma lista de todos os usuários para uma função, token e organização especificados. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, ou por uma Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getOrgUsersByRole(token_id: string, role: string, org_id: string) {
await this.Ctx.Auth.checkAuthorization("ROLE.getOrgUsersByRole", "TOKEN", { org_id });
return await this.Ctx.Role.getOrgUsersByRole(token_id, role, org_id);
}
- Parâmetros:
token_id: string
– O ID do token.
role: string
– O nome da função a ser pesquisada.
org_id: string
– O ID do provedor de serviços de associação (MSP) da organização.
- Exemplo de Valor de Retorno:
{
"users": [
{
"token_id": "token",
"org_id": "CentralBank",
"user_id": "cb1",
"custom_account_id": "1234567jh"
}
]
}
-
isInRole
- Este método retorna um valor booliano para indicar se um usuário tem uma função especificada. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, a AccountOwner
da conta ou uma Org Admin
ou Org Auditor
da organização especificada.
@GetMethod()
@Validator(yup.string(), yup.string())
public async isInRole(account_id: string, role: string) {
const account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
const token_asset = await this.getTokenObject(account.token_id);
await this.Ctx.Auth.checkAuthorization("TOKEN.isInRole", "TOKEN", { account_id });
return { result: await this.Ctx.Token.isInRole(role, account_id, token_asset) };
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
role: string
– O nome da função a ser pesquisada.
- Retorna:
- No caso de sucesso, uma string JSON do resultado Booliano.
- Exemplo de Valor de Retorno:
{
"result": "true"
}
-
getTotalMintedTokens
- Este método retorna o número total de tokens cunhados para um token especificado. Esse método só pode ser chamado por uma
Token Admin
, Token Auditor
, Org Admin
ou Org Auditor
.
@GetMethod()
@Validator(yup.string())
public async getTotalMintedTokens(token_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Auth.checkAuthorization("TOKEN.getTotalMintedTokens", "TOKEN");
const totalMintedTokens = await this.Ctx.Token.getTotalMintedTokens(token_asset);
return {
msg: `Total minted token for Token Id: ${token_id} is ${totalMintedTokens} tokens.`,
quantity: totalMintedTokens,
};
}
- Parâmetros:
token_id: string
– O ID do token.
- Retorna:
- No caso de sucesso, uma string JSON indicando o número total de tokens.
- Exemplo de Valor de Retorno:
{
"msg": "Total minted token for Token Id: USD is 910 tokens.",
"quantity": 910
}
-
getNetTokens
- Este método retorna o número líquido total de tokens disponíveis no sistema para um token especificado. O total de tokens líquidos é a quantidade de tokens restantes após os tokens serem gravados. Em forma de equação: tokens líquidos = total de tokens cunhados - total de tokens gravados. Se nenhum token for gravado, o número de tokens líquidos será igual ao total de tokens cunhados. Esse método só pode ser chamado por uma
Token Admin
, Token Auditor
, Org Admin
ou Org Auditor
.
@GetMethod()
@Validator(yup.string())
public async getNetTokens(token_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Auth.checkAuthorization("TOKEN.getNetTokens", "TOKEN");
const netTokens = await this.Ctx.Token.getNetTokens(token_asset);
return {
msg: `Net supply of token for Token Id: ${token_id} is ${netTokens} tokens.`,
quantity: netTokens,
};
}
- Parâmetros:
token_id: string
– O ID do token.
- Retorna:
- No caso de sucesso, uma string JSON indicando o número líquido de tokens.
- Exemplo de Valor de Retorno:
{
"msg": "Net supply of token for Token Id: USD is 878 tokens.",
"quantity": 878
}
-
requestMint
- Este método pode ser chamado por um mineiro para enviar uma solicitação ao notário do mineiro para criar uma quantidade especificada de tokens.
@Validator(
yup.string(),
yup.string(),
yup.number().positive(),
yup.date(),
yup.object().nullable()
)
public async requestMint(
operation_id: string,
notary_account_id: string,
quantity:number,
time_to_expiration: Date,
info_details ?: InfoDetails
) {
const notary_account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(notary_account_id);
const token_asset = await this.getTokenObject(notary_account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.REQUEST_MINT, { operation_id, notary_account_id, quantity, time_to_expiration, info_details }, token_asset);
return await this.Ctx.Hold.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.MINT, info_details);
}
- Parâmetros:
operation_id: string
– O ID de operação exclusivo que representa a solicitação de hortelã.
notary_account_id: string
– O ID de conta exclusivo do notário do mineiro que processará a solicitação.
quantity: number
– A quantidade de tokens para hortelã.
time_to_expiration
– O tempo após o qual a solicitação de cunhagem expira e não é mais válida.
info_details: JSON
– Um objeto que especifica a categoria (category
) e a descrição (description
) da solicitação.
Você especifica o parâmetro info_details
em outro formato se estiver usando o Visual Studio Code versus a CLI ou uma coleção Postman.
Código do Visual Studio: { "category": "category value", "description": "description value" }
CLI / Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"
- Exemplo de Valor de Retorno:
{
"msg": "AccountId oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41 has successfully submitted request to mint 200 tokens"
}
-
approveMint
- Este método pode ser chamado por um notário mineiro para aprovar uma solicitação de cunhagem.
@Validator(yup.string(), yup.string())
public async approveMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.APPROVE_MINT, { token_asset, operation_id }, token_asset);
return await this.Ctx.Hold.executeHold(operation_id, token_asset, HoldOperationType.MINT);
}
- Parâmetros:
token_id: string
– O ID do token para mint.
operation_id: string
– O ID de operação exclusivo que representa a solicitação de hortelã.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully minted 1000 tokens to Account Id: oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41"
}
-
rejectMint
- Este método pode ser chamado por um notário mineiro para rejeitar uma solicitação de cunhagem.
@Validator(yup.string(), yup.string())
public async rejectMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.REJECT_MINT, { token_asset, operation_id }, token_asset);
return await this.Ctx.Hold.releaseHold(operation_id, token_asset, HoldOperationType.MINT);
}
- Parâmetros:
token_id: string
– O ID do token para mint.
operation_id: string
– O ID de operação exclusivo que representa a solicitação de hortelã.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully rejected mint request with Operation Id '89ce' to mint 2000 tokens of token id USD"
}
-
issueTokens
- Este método cunha tokens, que são então de propriedade do chamador do método.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())
public async issueTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.ISSUE_TOKENS, { quantity, token_asset, info_details }, token_asset);
return await this.Ctx.Token.mint(quantity, token_asset, info_details);
}
- Parâmetros:
token_id: string
– O ID do token.
quantity
– O número de tokens a serem hortelã.
info_details: JSON
– Um objeto que especifica a categoria (category
) e a descrição (description
) da solicitação.
Você especifica o parâmetro info_details
em outro formato se estiver usando o Visual Studio Code versus a CLI ou uma coleção Postman.
Código do Visual Studio: { "category": "category value", "description": "description value" }
CLI / Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"
- Exemplo de Valor de Retorno:
{
"msg": "Successfully minted 1000 tokens to Account Id: oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41"
}
-
transferTokens
- Este método transfere tokens do chamador para uma conta especificada.
@Validator(yup.string(), yup.number(), yup.object().nullable())
public async transferTokens(to_account_id: string, quantity: number, info_details ?: InfoDetails) {
if (quantity <= 0) {
throw new Error("The quantity should be a positive number.")
}
const to_account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(to_account_id);
const token_asset = await this.getTokenObject(to_account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.TRANSFER_TOKENS, { to_account_id, quantity, info_details }, token_asset);
let isNotary = await this.Ctx.Token.checkNotary(to_account_id, token_asset);
if(isNotary) {
throw new Error(`To Account Id '${to_account_id}' can not have a notary role!`);
}
return await this.Ctx.Token.transfer(to_account_id, quantity, token_asset, info_details);
}
- Parâmetros:
to_account_id: string
– O ID exclusivo da conta do recebedor (favorecido).
quantity: number
– O número de tokens a serem transferidos.
info_details: JSON
– Um objeto que especifica a categoria (category
) e a descrição (description
) da solicitação.
Você especifica o parâmetro info_details
em outro formato se estiver usando o Visual Studio Code versus a CLI ou uma coleção Postman.
Código do Visual Studio: { "category": "category value", "description": "description value" }
CLI / Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"
- Exemplo de Valor de Retorno:
{
"msg": "Successfully transferred 10000 tokens from account id: oaccount~da6e14466a0ba9b48ebc18fa672addb92dffc371bf953c3229a95b2ff2d9cd41 to account id: oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a."
}
-
getAccountOnHoldBalance
- Este método retorna o saldo atual em retenção para uma conta especificada. Esse método só pode ser chamado por uma
Token Admin
ou Token Auditor
, uma Org Admin
ou Org Auditor
da organização especificada ou a AccountOwner
da conta.
@GetMethod()
@Validator(yup.string())
public async getAccountOnHoldBalance(account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBalance", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountOnHoldBalance(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- No caso de sucesso, uma representação JSON do saldo em retenção atual.
- Exemplo de Valor de Retorno:
{
"msg": "Total Holding Balance is: 0",
"holding_balance": 0
}
-
getOnHoldDetailsWithOperationId
- Este método retorna os detalhes da transação em retenção para um ID e token de operação especificados. Este método pode ser chamado por um
Token Admin
ou Token Auditor
do chaincode, ou por um participante da transação (remetente, destinatário, notário).
@GetMethod()
@Validator(yup.string(), yup.string())
public async getOnHoldDetailsWithOperationId(token_id: string, operation_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldDetailsWithOperationId", "TOKEN", { token_id, operation_id });
return await this.Ctx.Hold.getOnHoldDetailsWithOperationId(token_id, operation_id);
}
- Parâmetros:
token_id: string
– O ID do token.
operation_id: string
– Um ID exclusivo para identificar a operação de retenção. Geralmente, esse ID é passado pelo aplicativo cliente.
- Exemplo de Valor de Retorno:
{
"assetType": "ohold",
"holding_id": "ohold~cbdc~token~hold1",
"operation_id": "hold1",
"token_name": "cbdc",
"from_org_id": "CentralBank",
"operation_type": "transfer",
"status": "approved",
"from_account_id": "oaccount~5abb4155f4b245bb1732321e3174ac81999b03495b5c74f8e1f270bafbadef75",
"to_account_id": "oaccount~22776ada3efff6aaf4c68c204c1f063b139adfa1bca79ed53199117c34036cfc",
"notary_account_id": "oaccount~1da238c1491c919b151f777a615fb5779032c34b3ef3adeca6afe591bac10aaf",
"token_id": "token",
"quantity": "0",
"time_to_expiration": "2029-01-04T00:00:00.000Z",
"category": "category value",
"description": "description value"
}
-
getOnHoldIds
- Este método retorna uma lista de todos os IDs de retenção de uma conta especificada. Esse método pode ser chamado por um
Token Admin
ou Token Auditor
do chaincode, um Org Admin
ou Org Auditor
da organização especificada ou o AccountOwner
da conta.
@GetMethod()
@Validator(yup.string())
public async getOnHoldIds(account_id: string) {
await this.Ctx.Account.getAccountWithTokenIdValidation(account_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldIds", "TOKEN", { account_id });
return await this.Ctx.Account.getOnHoldIds(account_id);
}
- Parâmetros:
account_id: string
– O ID exclusivo da conta de token.
- Retorna:
- Em caso de sucesso, uma lista JSON de IDs de retenção.
- Exemplo de Valor de Retorno:
{
"msg": "Holding Ids are: ",
"holding_ids": ["ohold~cbdc~token~hold1"]
}
-
getOnHoldBalanceWithOperationId
- Este método retorna o saldo em retenção para um ID e token de operação especificados. Este método pode ser chamado por um
Token Admin
ou Token Auditor
do chaincode, ou por um participante da transação (remetente, destinatário, notário).
@GetMethod()
@Validator(yup.string(), yup.string())
public async getOnHoldBalanceWithOperationId(token_id: string, operation_id: string) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldBalanceWithOperationId", "TOKEN", { token_id, operation_id });
return await this.Ctx.Hold.getOnHoldBalanceWithOperationId(token_id, operation_id);
}
- Parâmetros:
token_id: string
– O ID do token.
operation_id: string
– Um ID exclusivo para identificar a operação de retenção. Geralmente, esse ID é passado pelo aplicativo cliente.
- Retorna:
- Em caso de sucesso, uma string JSON indicando o saldo de retenção.
- Exemplo de Valor de Retorno:
{
"msg": "Current Holding Balance of Operation 'hold1' for token 'token' is: 0",
"holding_balance": 0
}
-
holdTokens
- Esse método cria uma retenção em nome do chamador (o proprietário dos tokens) com a conta
to_account_id
. A conta do notário especificada é responsável por concluir ou liberar a retenção. Quando a retenção é criada, o saldo de token especificado do pagador é colocado em retenção. Um saldo retido não pode ser transferido até que a retenção seja concluída ou liberada.
@Validator(
yup.string(),
yup.string(),
yup.string(),
yup.number().positive(),
yup.date(),
yup.object().nullable()
)
public async holdTokens(
operation_id: string,
to_account_id: string,
notary_account_id: string,
quantity: number,
time_to_expiration: Date,
info_details ?: InfoDetails,
) {
const to_account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(to_account_id);
await this.Ctx.Account.getAccountWithTokenIdValidation(notary_account_id);
const token_asset = await this.getTokenObject(to_account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.HOLD_TOKENS, {
operation_id,
to_account_id,
notary_account_id,
quantity,
time_to_expiration,
info_details
}, token_asset);
return await this.Ctx.Hold.hold(operation_id, to_account_id, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.TRANSFER, info_details);
}
- Parâmetros:
operation_id: string
– Um ID exclusivo para identificar a operação de retenção. Geralmente, esse ID é passado pelo aplicativo cliente.
to_account_id: string
– O ID exclusivo da conta do destinatário.
notary_account_id: string
– O ID de conta exclusivo do notário.
quantity: number
– O número de tokens a serem colocados em espera.
time_to_expiration
– O horário em que a retenção expira. Especifique 0 para uma retenção permanente. Caso contrário, use o formato RFC-3339. Por exemplo, 2021-06-02T12:46:06Z.
info_details: JSON
– Um objeto que especifica a categoria (category
) e a descrição (description
) da solicitação.
Você especifica o parâmetro info_details
em outro formato se estiver usando o Visual Studio Code versus a CLI ou uma coleção Postman.
Código do Visual Studio: { "category": "category value", "description": "description value" }
CLI / Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"
- Exemplo de Valor de Retorno:
{
"msg": "AccountId oaccount~76687c724ddbc2d6e6664d9618b2bf1c2a9fe10f84887462447e4caba6aaaff3 is successfully holding 100 tokens"
}
-
executeHoldTokens
- Este método conclui uma retenção em um token. Uma quantidade de tokens mantidos anteriormente por um proprietário de token é transferida para um destinatário. Se o valor
quantity
for menor que o valor de retenção real, o valor restante será disponibilizado novamente para o proprietário original dos tokens. Esse método só pode ser chamado pelo ID AccountOwner
com a atribuição notary
para o ID da operação especificado. A retenção só pode ser concluída pelo notário.
@Validator(yup.string(), yup.string(), yup.number().positive())
public async executeHoldTokens(token_id: string, operation_id: string, quantity: number) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.EXECUTE_HOLD_TOKENS, { token_asset, operation_id, quantity }, token_asset);
return await this.Ctx.Hold.executeHold(operation_id, token_asset, HoldOperationType.TRANSFER, quantity);
}
- Parâmetros:
token_id: string
– O ID do token.
operation_id: string
– Um ID exclusivo para identificar a operação de retenção. Geralmente, esse ID é passado pelo aplicativo cliente.
quantity: number
– O número de tokens em espera a serem transferidos.
- Retorna:
- Com êxito, uma mensagem com o ID da conta do chamador e a quantidade da transação.
- Exemplo de Valor de Retorno:
{
"msg": "Account Id: oaccount~1e31495a0c149b08cb9d02bdcac5e83d88c0f1557d954dda12bb807d7f6fc111 is successfully executed '10' tokens from Operation Id '454f4bf6'."
}
-
releaseHoldTokens
- Este método libera uma retenção de tokens. A transferência não foi concluída e todos os tokens retidos estão disponíveis novamente para o proprietário original. Esse método pode ser chamado pelo ID
AccountOwner
com a função notary
dentro do limite de tempo especificado ou pelo pagador, favorecido ou notário após o limite de tempo especificado.
@Validator(yup.string(), yup.string())
public async releaseHoldTokens(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.RELEASE_HOLD_TOKENS, { token_asset, operation_id }, token_asset);
return await this.Ctx.Hold.releaseHold(operation_id, token_asset, HoldOperationType.TRANSFER);
}
- Parâmetros:
token_id: string
– O ID do token.
operation_id: string
– Um ID exclusivo para identificar a operação de retenção. Geralmente, esse ID é passado pelo aplicativo cliente.
- Retorna:
- Em caso de êxito, uma mensagem indicando que a retenção foi liberada.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully released '200' tokens from Operation Id '77b75873' to Account Id: oaccount~68d67712f500e9dac8c314c19744003a993250271d960e9b0d25267bb18dfe9a."
}
-
requestBurn
- Este método pode ser chamado por um queimador para enviar uma solicitação ao notário do queimador para destruir uma quantidade especificada de tokens.
@Validator(
yup.string(),
yup.string(),
yup.number().positive(),
yup.date(),
yup.object().nullable()
)
public async requestBurn(
operation_id: string,
notary_account_id: string,
quantity:number,
time_to_expiration: Date,
info_details ?: InfoDetails,
) {
const notary_account: FungibleAccount = await this.Ctx.Account.getAccountWithTokenIdValidation(notary_account_id);
const token_asset = await this.getTokenObject(notary_account.token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.REQUEST_BURN, { operation_id, notary_account_id, quantity, time_to_expiration, info_details }, token_asset);
return await this.Ctx.Hold.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.BURN, info_details);
}
- Parâmetros:
operation_id: string
– O ID de operação exclusivo que representa a solicitação de gravação.
notary_account_id: string
– O ID de conta exclusivo do notário do queimador que processará a solicitação.
quantity: number
– A quantidade de tokens a serem gravados.
time_to_expiration
– O tempo após o qual a solicitação de gravação expira e não é mais válida.
info_details: JSON
– Um objeto que especifica a categoria (category
) e a descrição (description
) da solicitação.
Você especifica o parâmetro info_details
em outro formato se estiver usando o Visual Studio Code versus a CLI ou uma coleção Postman.
Código do Visual Studio: { "category": "category value", "description": "description value" }
CLI / Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"
- Exemplo de Valor de Retorno:
{
"msg": "AccountId oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98 has successfully submitted request to burn 100 tokens"
}
-
approveBurn
- Este método pode ser chamado por um notário do queimador para aprovar uma solicitação de gravação.
@Validator(yup.string(), yup.string())
public async approveBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.APPROVE_BURN, { token_asset, operation_id }, token_asset);
return await this.Ctx.Hold.executeHold(operation_id, token_asset, HoldOperationType.BURN);
}
- Parâmetros:
token_id: string
– O ID do token a ser gravado.
operation_id: string
– O ID de operação exclusivo que representa a solicitação de gravação.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully burned 200 tokens from account id: oaccount~cea6080858337b1575d6a76ed0bd07a0eacd8871e3f2f7f793729a0e4b0e8e98"
}
-
rejectBurn
- Este método pode ser chamado por um notário de queimador para rejeitar um pedido de queima.
@Validator(yup.string(), yup.string())
public async rejectBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
await this.Ctx.Model.createEvent(EVENT_NAME.REJECT_BURN, { token_asset, operation_id }, token_asset);
return await this.Ctx.Hold.releaseHold(operation_id, token_asset, HoldOperationType.BURN);
}
- Parâmetros:
token_id: string
– O ID do token a ser gravado.
operation_id: string
– O ID de operação exclusivo que representa a solicitação de gravação.
- Exemplo de Valor de Retorno:
{
"msg": "Successfully rejected burn request with Operation Id '8d34' to burn 100 tokens of token id USD"
}