mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Moved GetAccountActionPlansIndexHealth in engine
This commit is contained in:
committed by
Dan Christian Bogos
parent
5e7860eede
commit
1fc27c2d5b
@@ -19,13 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package v1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/engine"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/ltcache"
|
||||
)
|
||||
|
||||
type AttrGetFilterIndexes struct {
|
||||
@@ -594,8 +592,8 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
return nil
|
||||
}
|
||||
|
||||
func (apierSv1 *APIerSv1) GetAccountActionPlansIndexHealth(args *IndexHealthArgs, reply *IndexHealthReply) error {
|
||||
rp, err := getAccountActionPlanIndexHealth(apierSv1.DataManager, args.ObjectCacheLimit, args.IndexCacheLimit,
|
||||
func (apierSv1 *APIerSv1) GetAccountActionPlansIndexHealth(args *engine.IndexHealthArgs, reply *engine.IndexHealthReply) error {
|
||||
rp, err := engine.GetAccountActionPlanIndexHealth(apierSv1.DataManager, args.ObjectCacheLimit, args.IndexCacheLimit,
|
||||
args.ObjectCacheTTL, args.IndexCacheTTL,
|
||||
args.ObjectCacheStaticTTL, args.IndexCacheStaticTTL)
|
||||
if err != nil {
|
||||
@@ -604,126 +602,3 @@ func (apierSv1 *APIerSv1) GetAccountActionPlansIndexHealth(args *IndexHealthArgs
|
||||
*reply = *rp
|
||||
return nil
|
||||
}
|
||||
|
||||
type IndexHealthArgs struct {
|
||||
IndexCacheLimit int
|
||||
IndexCacheTTL time.Duration
|
||||
IndexCacheStaticTTL bool
|
||||
|
||||
ObjectCacheLimit int
|
||||
ObjectCacheTTL time.Duration
|
||||
ObjectCacheStaticTTL bool
|
||||
}
|
||||
type IndexHealthReply struct {
|
||||
MissingObjects []string // list of object that are referenced in indexes but are not found in the dataDB
|
||||
MissingIndexes map[string][]string // list of missing indexes for each object (the map has the key as the objectID and a list of indexes)
|
||||
BrokenReferences map[string][]string // list of broken references (the map has the key as the objectID and a list of indexes)
|
||||
}
|
||||
|
||||
// add cache in args API
|
||||
func getAccountActionPlanIndexHealth(dm *engine.DataManager, objLimit, indexLimit int, objTTL, indexTTL time.Duration, objStaticTTL, indexStaticTTL bool) (rply *IndexHealthReply, err error) {
|
||||
// posible errors
|
||||
missingAP := utils.StringSet{} // the index are present but the action plans are not //missing actionplans
|
||||
brokenRef := map[string][]string{} // the actionPlans match the index but they are missing the account // broken reference
|
||||
missingIndex := map[string][]string{} // the indexes are not present but the action plans points to that account // misingAccounts
|
||||
|
||||
// local cache
|
||||
indexesCache := ltcache.NewCache(objLimit, objTTL, objStaticTTL, nil)
|
||||
objectsCache := ltcache.NewCache(indexLimit, indexTTL, indexStaticTTL, nil)
|
||||
|
||||
getCachedIndex := func(acntID string) (apIDs []string, err error) {
|
||||
if x, ok := indexesCache.Get(acntID); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
return x.([]string), nil
|
||||
}
|
||||
if apIDs, err = dm.GetAccountActionPlans(acntID, true, false, utils.NonTransactional); err != nil { // read from cache but do not write if not there
|
||||
if err == utils.ErrNotFound {
|
||||
indexesCache.Set(acntID, nil, nil)
|
||||
}
|
||||
return
|
||||
}
|
||||
indexesCache.Set(acntID, apIDs, nil)
|
||||
return
|
||||
}
|
||||
|
||||
getCachedObject := func(apID string) (obj *engine.ActionPlan, err error) {
|
||||
if x, ok := objectsCache.Get(apID); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
return x.(*engine.ActionPlan), nil
|
||||
}
|
||||
if obj, err = dm.GetActionPlan(apID, true, false, utils.NonTransactional); err != nil { // read from cache but do not write if not there
|
||||
if err == utils.ErrNotFound {
|
||||
objectsCache.Set(apID, nil, nil)
|
||||
}
|
||||
return
|
||||
}
|
||||
objectsCache.Set(apID, obj, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var acntIDs []string // start with the indexes and check the references
|
||||
if acntIDs, err = dm.DataDB().GetKeysForPrefix(utils.AccountActionPlansPrefix); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying keys for accountActionPlans", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, acntID := range acntIDs {
|
||||
acntID = strings.TrimPrefix(acntID, utils.AccountActionPlansPrefix) //
|
||||
var apIDs []string
|
||||
if apIDs, err = getCachedIndex(acntID); err != nil { // read from cache but do not write if not there
|
||||
err = fmt.Errorf("error <%s> querying the accountActionPlan: <%v>", err.Error(), acntID)
|
||||
return
|
||||
}
|
||||
for _, apID := range apIDs {
|
||||
var ap *engine.ActionPlan
|
||||
if ap, err = getCachedObject(apID); err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
err = fmt.Errorf("error <%s> querying the actionPlan: <%v>", err.Error(), apID)
|
||||
return
|
||||
}
|
||||
missingAP.Add(apID) // not found
|
||||
continue
|
||||
|
||||
}
|
||||
if !ap.AccountIDs.HasKey(acntID) { // the action plan exists but doesn't point towards the account we have index
|
||||
brokenRef[apID] = append(brokenRef[apID], acntID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var apIDs []string // we have all the indexes in cache now do a reverse check
|
||||
if apIDs, err = dm.DataDB().GetKeysForPrefix(utils.ActionPlanPrefix); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying keys for actionPlans", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, apID := range apIDs {
|
||||
apID = strings.TrimPrefix(apID, utils.ActionPlanPrefix) //
|
||||
var ap *engine.ActionPlan
|
||||
if ap, err = getCachedObject(apID); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying the actionPlan: <%v>", err.Error(), apID)
|
||||
return
|
||||
}
|
||||
for acntID := range ap.AccountIDs {
|
||||
var ids []string
|
||||
if ids, err = getCachedIndex(acntID); err != nil { // read from cache but do not write if not there
|
||||
err = fmt.Errorf("error <%s> querying the accountActionPlan: <%v>", err.Error(), acntID)
|
||||
return
|
||||
}
|
||||
if !utils.IsSliceMember(ids, apID) { // the index doesn't exits for this actionPlan
|
||||
missingIndex[apID] = append(missingIndex[apID], acntID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rply = &IndexHealthReply{
|
||||
MissingObjects: missingAP.AsSlice(),
|
||||
MissingIndexes: missingIndex,
|
||||
BrokenReferences: brokenRef,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
131
apier/v1/filter_indexes_health_it_test.go
Normal file
131
apier/v1/filter_indexes_health_it_test.go
Normal file
@@ -0,0 +1,131 @@
|
||||
// +build integration
|
||||
|
||||
/*
|
||||
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
|
||||
Copyright (C) ITsysCOM GmbH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FIdxTNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
package v1
|
||||
|
||||
import (
|
||||
"net/rpc"
|
||||
"path"
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/engine"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
var (
|
||||
tFIdxHRpc *rpc.Client
|
||||
|
||||
sTestsFilterIndexesSHealth = []func(t *testing.T){
|
||||
testV1FIdxHLoadConfig,
|
||||
testV1FIdxHdxInitDataDb,
|
||||
testV1FIdxHResetStorDb,
|
||||
testV1FIdxHStartEngine,
|
||||
testV1FIdxHRpcConn,
|
||||
testV1FIdxHLoadFromFolder,
|
||||
testV1FIdxHAccountActionPlansHealth,
|
||||
|
||||
testV1FIdxHStopEngine,
|
||||
}
|
||||
)
|
||||
|
||||
// Test start here
|
||||
func TestFIdxHealthIT(t *testing.T) {
|
||||
switch *dbType {
|
||||
case utils.MetaInternal:
|
||||
tSv1ConfDIR = "tutinternal"
|
||||
case utils.MetaMySQL:
|
||||
tSv1ConfDIR = "tutmysql"
|
||||
case utils.MetaMongo:
|
||||
tSv1ConfDIR = "tutmongo"
|
||||
case utils.MetaPostgres:
|
||||
t.SkipNow()
|
||||
default:
|
||||
t.Fatal("Unknown Database type")
|
||||
}
|
||||
for _, stest := range sTestsFilterIndexesSHealth {
|
||||
t.Run(tSv1ConfDIR, stest)
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHLoadConfig(t *testing.T) {
|
||||
tSv1CfgPath = path.Join(*dataDir, "conf", "samples", tSv1ConfDIR)
|
||||
var err error
|
||||
if tSv1Cfg, err = config.NewCGRConfigFromPath(tSv1CfgPath); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHdxInitDataDb(t *testing.T) {
|
||||
if err := engine.InitDataDb(tSv1Cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Wipe out the cdr database
|
||||
func testV1FIdxHResetStorDb(t *testing.T) {
|
||||
if err := engine.InitStorDb(tSv1Cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHStartEngine(t *testing.T) {
|
||||
if _, err := engine.StopStartEngine(tSv1CfgPath, *waitRater); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHRpcConn(t *testing.T) {
|
||||
var err error
|
||||
tFIdxHRpc, err = newRPCClient(tSv1Cfg.ListenCfg()) // We connect over JSON so we can also troubleshoot if needed
|
||||
if err != nil {
|
||||
t.Fatal("Could not connect to rater: ", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHLoadFromFolder(t *testing.T) {
|
||||
var reply string
|
||||
attrs := &utils.AttrLoadTpFromFolder{FolderPath: path.Join(*dataDir, "tariffplans", "tutorial")}
|
||||
if err := tFIdxHRpc.Call(utils.APIerSv1LoadTariffPlanFromFolder, attrs, &reply); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
}
|
||||
|
||||
func testV1FIdxHAccountActionPlansHealth(t *testing.T) {
|
||||
var reply engine.IndexHealthReply
|
||||
if err := tFIdxHRpc.Call(utils.APIerSv1GetAccountActionPlansIndexHealth, engine.IndexHealthArgs{
|
||||
IndexCacheLimit: -1,
|
||||
ObjectCacheLimit: -1,
|
||||
}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
exp := engine.IndexHealthReply{}
|
||||
if !reflect.DeepEqual(exp, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(reply))
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHStopEngine(t *testing.T) {
|
||||
if err := engine.KillEngine(100); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -21,10 +21,12 @@ package engine
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/guardian"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/ltcache"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -818,3 +820,133 @@ func IsDynamicDPPath(path string) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type IndexHealthArgs struct {
|
||||
IndexCacheLimit int
|
||||
IndexCacheTTL time.Duration
|
||||
IndexCacheStaticTTL bool
|
||||
|
||||
ObjectCacheLimit int
|
||||
ObjectCacheTTL time.Duration
|
||||
ObjectCacheStaticTTL bool
|
||||
}
|
||||
|
||||
type IndexHealthReply struct {
|
||||
MissingObjects []string // list of object that are referenced in indexes but are not found in the dataDB
|
||||
MissingIndexes map[string][]string // list of missing indexes for each object (the map has the key as the objectID and a list of indexes)
|
||||
BrokenReferences map[string][]string // list of broken references (the map has the key as the objectID and a list of indexes)
|
||||
}
|
||||
|
||||
// add cache in args API
|
||||
func GetAccountActionPlanIndexHealth(dm *DataManager, objLimit, indexLimit int, objTTL, indexTTL time.Duration, objStaticTTL, indexStaticTTL bool) (rply *IndexHealthReply, err error) {
|
||||
// posible errors
|
||||
missingAP := utils.StringSet{} // the index are present but the action plans are not //missing actionplans
|
||||
brokenRef := map[string][]string{} // the actionPlans match the index but they are missing the account // broken reference
|
||||
missingIndex := map[string][]string{} // the indexes are not present but the action plans points to that account // misingAccounts
|
||||
|
||||
// local cache
|
||||
indexesCache := ltcache.NewCache(objLimit, objTTL, objStaticTTL, nil)
|
||||
objectsCache := ltcache.NewCache(indexLimit, indexTTL, indexStaticTTL, nil)
|
||||
|
||||
getCachedIndex := func(acntID string) (apIDs []string, err error) {
|
||||
if x, ok := indexesCache.Get(acntID); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
return x.([]string), nil
|
||||
}
|
||||
if apIDs, err = dm.GetAccountActionPlans(acntID, true, false, utils.NonTransactional); err != nil { // read from cache but do not write if not there
|
||||
if err == utils.ErrNotFound {
|
||||
indexesCache.Set(acntID, nil, nil)
|
||||
}
|
||||
return
|
||||
}
|
||||
indexesCache.Set(acntID, apIDs, nil)
|
||||
return
|
||||
}
|
||||
|
||||
getCachedObject := func(apID string) (obj *ActionPlan, err error) {
|
||||
if x, ok := objectsCache.Get(apID); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
return x.(*ActionPlan), nil
|
||||
}
|
||||
if obj, err = dm.GetActionPlan(apID, true, false, utils.NonTransactional); err != nil { // read from cache but do not write if not there
|
||||
if err == utils.ErrNotFound {
|
||||
objectsCache.Set(apID, nil, nil)
|
||||
}
|
||||
return
|
||||
}
|
||||
objectsCache.Set(apID, obj, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var acntIDs []string // start with the indexes and check the references
|
||||
if acntIDs, err = dm.DataDB().GetKeysForPrefix(utils.AccountActionPlansPrefix); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying keys for accountActionPlans", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, acntID := range acntIDs {
|
||||
acntID = strings.TrimPrefix(acntID, utils.AccountActionPlansPrefix) //
|
||||
var apIDs []string
|
||||
if apIDs, err = getCachedIndex(acntID); err != nil { // read from cache but do not write if not there
|
||||
err = fmt.Errorf("error <%s> querying the accountActionPlan: <%v>", err.Error(), acntID)
|
||||
return
|
||||
}
|
||||
for _, apID := range apIDs {
|
||||
var ap *ActionPlan
|
||||
if ap, err = getCachedObject(apID); err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
err = fmt.Errorf("error <%s> querying the actionPlan: <%v>", err.Error(), apID)
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
missingAP.Add(apID) // not found
|
||||
continue
|
||||
|
||||
}
|
||||
if !ap.AccountIDs.HasKey(acntID) { // the action plan exists but doesn't point towards the account we have index
|
||||
brokenRef[apID] = append(brokenRef[apID], acntID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var apIDs []string // we have all the indexes in cache now do a reverse check
|
||||
if apIDs, err = dm.DataDB().GetKeysForPrefix(utils.ActionPlanPrefix); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying keys for actionPlans", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, apID := range apIDs {
|
||||
apID = strings.TrimPrefix(apID, utils.ActionPlanPrefix) //
|
||||
var ap *ActionPlan
|
||||
if ap, err = getCachedObject(apID); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying the actionPlan: <%v>", err.Error(), apID)
|
||||
return
|
||||
}
|
||||
for acntID := range ap.AccountIDs {
|
||||
var ids []string
|
||||
if ids, err = getCachedIndex(acntID); err != nil { // read from cache but do not write if not there
|
||||
if err != utils.ErrNotFound {
|
||||
err = fmt.Errorf("error <%s> querying the accountActionPlan: <%v>", err.Error(), acntID)
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
brokenRef[apID] = append(brokenRef[apID], acntID)
|
||||
continue
|
||||
}
|
||||
if !utils.IsSliceMember(ids, apID) { // the index doesn't exits for this actionPlan
|
||||
missingIndex[apID] = append(missingIndex[apID], acntID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rply = &IndexHealthReply{
|
||||
MissingObjects: missingAP.AsSlice(),
|
||||
MissingIndexes: missingIndex,
|
||||
BrokenReferences: brokenRef,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
45
engine/z_libindex_health_test.go
Normal file
45
engine/z_libindex_health_test.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
|
||||
Copyright (C) ITsysCOM GmbH
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package engine
|
||||
|
||||
/*
|
||||
func TestHealthAccountAction(t *testing.T) {
|
||||
Cache.Clear(nil)
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
db := NewInternalDB(nil, nil, true)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
|
||||
if err := dm.SetAccountActionPlans("1001", []string{"AP1", "AP2"}, true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetActionPlan("AP2", &ActionPlan{
|
||||
Id: "AP2",
|
||||
AccountIDs: utils.NewStringMap("1002"),
|
||||
ActionTimings: []*ActionTiming{{}},
|
||||
}, true, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if rply, err := GetAccountActionPlanIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
t.Error(utils.ToJSON(rply))
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
335
utils/consts.go
335
utils/consts.go
@@ -1269,173 +1269,174 @@ const (
|
||||
|
||||
// APIerSv1 APIs
|
||||
const (
|
||||
ApierV1 = "ApierV1"
|
||||
ApierV2 = "ApierV2"
|
||||
APIerSv1 = "APIerSv1"
|
||||
APIerSv1ComputeFilterIndexes = "APIerSv1.ComputeFilterIndexes"
|
||||
APIerSv1ComputeFilterIndexIDs = "APIerSv1.ComputeFilterIndexIDs"
|
||||
APIerSv1Ping = "APIerSv1.Ping"
|
||||
APIerSv1SetDispatcherProfile = "APIerSv1.SetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfile = "APIerSv1.GetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfileIDs = "APIerSv1.GetDispatcherProfileIDs"
|
||||
APIerSv1RemoveDispatcherProfile = "APIerSv1.RemoveDispatcherProfile"
|
||||
APIerSv1SetBalances = "APIerSv1.SetBalances"
|
||||
APIerSv1SetDispatcherHost = "APIerSv1.SetDispatcherHost"
|
||||
APIerSv1GetDispatcherHost = "APIerSv1.GetDispatcherHost"
|
||||
APIerSv1GetDispatcherHostIDs = "APIerSv1.GetDispatcherHostIDs"
|
||||
APIerSv1RemoveDispatcherHost = "APIerSv1.RemoveDispatcherHost"
|
||||
APIerSv1GetEventCost = "APIerSv1.GetEventCost"
|
||||
APIerSv1LoadTariffPlanFromFolder = "APIerSv1.LoadTariffPlanFromFolder"
|
||||
APIerSv1ExportToFolder = "APIerSv1.ExportToFolder"
|
||||
APIerSv1GetCost = "APIerSv1.GetCost"
|
||||
APIerSv1SetBalance = "APIerSv1.SetBalance"
|
||||
APIerSv1GetFilter = "APIerSv1.GetFilter"
|
||||
APIerSv1GetFilterIndexes = "APIerSv1.GetFilterIndexes"
|
||||
APIerSv1RemoveFilterIndexes = "APIerSv1.RemoveFilterIndexes"
|
||||
APIerSv1RemoveFilter = "APIerSv1.RemoveFilter"
|
||||
APIerSv1SetFilter = "APIerSv1.SetFilter"
|
||||
APIerSv1GetFilterIDs = "APIerSv1.GetFilterIDs"
|
||||
APIerSv1GetRatingProfile = "APIerSv1.GetRatingProfile"
|
||||
APIerSv1RemoveRatingProfile = "APIerSv1.RemoveRatingProfile"
|
||||
APIerSv1SetRatingProfile = "APIerSv1.SetRatingProfile"
|
||||
APIerSv1GetRatingProfileIDs = "APIerSv1.GetRatingProfileIDs"
|
||||
APIerSv1SetDataDBVersions = "APIerSv1.SetDataDBVersions"
|
||||
APIerSv1SetStorDBVersions = "APIerSv1.SetStorDBVersions"
|
||||
APIerSv1GetAccountActionPlan = "APIerSv1.GetAccountActionPlan"
|
||||
APIerSv1ComputeActionPlanIndexes = "APIerSv1.ComputeActionPlanIndexes"
|
||||
APIerSv1GetActions = "APIerSv1.GetActions"
|
||||
APIerSv1GetActionPlan = "APIerSv1.GetActionPlan"
|
||||
APIerSv1GetActionPlanIDs = "APIerSv1.GetActionPlanIDs"
|
||||
APIerSv1GetRatingPlanIDs = "APIerSv1.GetRatingPlanIDs"
|
||||
APIerSv1GetRatingPlan = "APIerSv1.GetRatingPlan"
|
||||
APIerSv1RemoveRatingPlan = "APIerSv1.RemoveRatingPlan"
|
||||
APIerSv1GetDestination = "APIerSv1.GetDestination"
|
||||
APIerSv1RemoveDestination = "APIerSv1.RemoveDestination"
|
||||
APIerSv1GetReverseDestination = "APIerSv1.GetReverseDestination"
|
||||
APIerSv1AddBalance = "APIerSv1.AddBalance"
|
||||
APIerSv1DebitBalance = "APIerSv1.DebitBalance"
|
||||
APIerSv1SetAccount = "APIerSv1.SetAccount"
|
||||
APIerSv1GetAccountsCount = "APIerSv1.GetAccountsCount"
|
||||
APIerSv1GetDataDBVersions = "APIerSv1.GetDataDBVersions"
|
||||
APIerSv1GetStorDBVersions = "APIerSv1.GetStorDBVersions"
|
||||
APIerSv1GetCDRs = "APIerSv1.GetCDRs"
|
||||
APIerSv1GetTPAccountActions = "APIerSv1.GetTPAccountActions"
|
||||
APIerSv1SetTPAccountActions = "APIerSv1.SetTPAccountActions"
|
||||
APIerSv1GetTPAccountActionsByLoadId = "APIerSv1.GetTPAccountActionsByLoadId"
|
||||
APIerSv1GetTPAccountActionLoadIds = "APIerSv1.GetTPAccountActionLoadIds"
|
||||
APIerSv1GetTPAccountActionIds = "APIerSv1.GetTPAccountActionIds"
|
||||
APIerSv1RemoveTPAccountActions = "APIerSv1.RemoveTPAccountActions"
|
||||
APIerSv1GetTPActionPlan = "APIerSv1.GetTPActionPlan"
|
||||
APIerSv1SetTPActionPlan = "APIerSv1.SetTPActionPlan"
|
||||
APIerSv1GetTPActionPlanIds = "APIerSv1.GetTPActionPlanIds"
|
||||
APIerSv1SetTPActionTriggers = "APIerSv1.SetTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggers = "APIerSv1.GetTPActionTriggers"
|
||||
APIerSv1RemoveTPActionTriggers = "APIerSv1.RemoveTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggerIds = "APIerSv1.GetTPActionTriggerIds"
|
||||
APIerSv1GetTPActions = "APIerSv1.GetTPActions"
|
||||
APIerSv1RemoveTPActionPlan = "APIerSv1.RemoveTPActionPlan"
|
||||
APIerSv1GetTPAttributeProfile = "APIerSv1.GetTPAttributeProfile"
|
||||
APIerSv1SetTPAttributeProfile = "APIerSv1.SetTPAttributeProfile"
|
||||
APIerSv1GetTPAttributeProfileIds = "APIerSv1.GetTPAttributeProfileIds"
|
||||
APIerSv1RemoveTPAttributeProfile = "APIerSv1.RemoveTPAttributeProfile"
|
||||
APIerSv1GetTPCharger = "APIerSv1.GetTPCharger"
|
||||
APIerSv1SetTPCharger = "APIerSv1.SetTPCharger"
|
||||
APIerSv1RemoveTPCharger = "APIerSv1.RemoveTPCharger"
|
||||
APIerSv1GetTPChargerIDs = "APIerSv1.GetTPChargerIDs"
|
||||
APIerSv1SetTPFilterProfile = "APIerSv1.SetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfile = "APIerSv1.GetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfileIds = "APIerSv1.GetTPFilterProfileIds"
|
||||
APIerSv1RemoveTPFilterProfile = "APIerSv1.RemoveTPFilterProfile"
|
||||
APIerSv1GetTPDestination = "APIerSv1.GetTPDestination"
|
||||
APIerSv1SetTPDestination = "APIerSv1.SetTPDestination"
|
||||
APIerSv1GetTPDestinationIDs = "APIerSv1.GetTPDestinationIDs"
|
||||
APIerSv1RemoveTPDestination = "APIerSv1.RemoveTPDestination"
|
||||
APIerSv1GetTPResource = "APIerSv1.GetTPResource"
|
||||
APIerSv1SetTPResource = "APIerSv1.SetTPResource"
|
||||
APIerSv1RemoveTPResource = "APIerSv1.RemoveTPResource"
|
||||
APIerSv1SetTPRate = "APIerSv1.SetTPRate"
|
||||
APIerSv1GetTPRate = "APIerSv1.GetTPRate"
|
||||
APIerSv1RemoveTPRate = "APIerSv1.RemoveTPRate"
|
||||
APIerSv1GetTPRateIds = "APIerSv1.GetTPRateIds"
|
||||
APIerSv1SetTPThreshold = "APIerSv1.SetTPThreshold"
|
||||
APIerSv1GetTPThreshold = "APIerSv1.GetTPThreshold"
|
||||
APIerSv1GetTPThresholdIDs = "APIerSv1.GetTPThresholdIDs"
|
||||
APIerSv1RemoveTPThreshold = "APIerSv1.RemoveTPThreshold"
|
||||
APIerSv1SetTPStat = "APIerSv1.SetTPStat"
|
||||
APIerSv1GetTPStat = "APIerSv1.GetTPStat"
|
||||
APIerSv1RemoveTPStat = "APIerSv1.RemoveTPStat"
|
||||
APIerSv1GetTPDestinationRate = "APIerSv1.GetTPDestinationRate"
|
||||
APIerSv1SetTPRouteProfile = "APIerSv1.SetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfile = "APIerSv1.GetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfileIDs = "APIerSv1.GetTPRouteProfileIDs"
|
||||
APIerSv1RemoveTPRouteProfile = "APIerSv1.RemoveTPRouteProfile"
|
||||
APIerSv1GetTPDispatcherProfile = "APIerSv1.GetTPDispatcherProfile"
|
||||
APIerSv1SetTPDispatcherProfile = "APIerSv1.SetTPDispatcherProfile"
|
||||
APIerSv1RemoveTPDispatcherProfile = "APIerSv1.RemoveTPDispatcherProfile"
|
||||
APIerSv1GetTPDispatcherProfileIDs = "APIerSv1.GetTPDispatcherProfileIDs"
|
||||
APIerSv1GetTPSharedGroups = "APIerSv1.GetTPSharedGroups"
|
||||
APIerSv1SetTPSharedGroups = "APIerSv1.SetTPSharedGroups"
|
||||
APIerSv1GetTPSharedGroupIds = "APIerSv1.GetTPSharedGroupIds"
|
||||
APIerSv1RemoveTPSharedGroups = "APIerSv1.RemoveTPSharedGroups"
|
||||
APIerSv1ExportCDRs = "APIerSv1.ExportCDRs"
|
||||
APIerSv1GetTPRatingPlan = "APIerSv1.GetTPRatingPlan"
|
||||
APIerSv1SetTPRatingPlan = "APIerSv1.SetTPRatingPlan"
|
||||
APIerSv1GetTPRatingPlanIds = "APIerSv1.GetTPRatingPlanIds"
|
||||
APIerSv1RemoveTPRatingPlan = "APIerSv1.RemoveTPRatingPlan"
|
||||
APIerSv1SetTPActions = "APIerSv1.SetTPActions"
|
||||
APIerSv1GetTPActionIds = "APIerSv1.GetTPActionIds"
|
||||
APIerSv1RemoveTPActions = "APIerSv1.RemoveTPActions"
|
||||
APIerSv1SetActionPlan = "APIerSv1.SetActionPlan"
|
||||
APIerSv1ExecuteAction = "APIerSv1.ExecuteAction"
|
||||
APIerSv1SetTPRatingProfile = "APIerSv1.SetTPRatingProfile"
|
||||
APIerSv1GetTPRatingProfile = "APIerSv1.GetTPRatingProfile"
|
||||
APIerSv1RemoveTPRatingProfile = "APIerSv1.RemoveTPRatingProfile"
|
||||
APIerSv1SetTPDestinationRate = "APIerSv1.SetTPDestinationRate"
|
||||
APIerSv1GetTPRatingProfileLoadIds = "APIerSv1.GetTPRatingProfileLoadIds"
|
||||
APIerSv1GetTPRatingProfilesByLoadID = "APIerSv1.GetTPRatingProfilesByLoadID"
|
||||
APIerSv1GetTPRatingProfileIds = "APIerSv1.GetTPRatingProfileIds"
|
||||
APIerSv1GetTPDestinationRateIds = "APIerSv1.GetTPDestinationRateIds"
|
||||
APIerSv1RemoveTPDestinationRate = "APIerSv1.RemoveTPDestinationRate"
|
||||
APIerSv1ImportTariffPlanFromFolder = "APIerSv1.ImportTariffPlanFromFolder"
|
||||
APIerSv1ExportTPToFolder = "APIerSv1.ExportTPToFolder"
|
||||
APIerSv1LoadRatingPlan = "APIerSv1.LoadRatingPlan"
|
||||
APIerSv1LoadRatingProfile = "APIerSv1.LoadRatingProfile"
|
||||
APIerSv1LoadAccountActions = "APIerSv1.LoadAccountActions"
|
||||
APIerSv1SetActions = "APIerSv1.SetActions"
|
||||
APIerSv1AddTriggeredAction = "APIerSv1.AddTriggeredAction"
|
||||
APIerSv1GetAccountActionTriggers = "APIerSv1.GetAccountActionTriggers"
|
||||
APIerSv1AddAccountActionTriggers = "APIerSv1.AddAccountActionTriggers"
|
||||
APIerSv1ResetAccountActionTriggers = "APIerSv1.ResetAccountActionTriggers"
|
||||
APIerSv1SetAccountActionTriggers = "APIerSv1.SetAccountActionTriggers"
|
||||
APIerSv1RemoveAccountActionTriggers = "APIerSv1.RemoveAccountActionTriggers"
|
||||
APIerSv1GetScheduledActions = "APIerSv1.GetScheduledActions"
|
||||
APIerSv1RemoveActionTiming = "APIerSv1.RemoveActionTiming"
|
||||
APIerSv1ComputeReverseDestinations = "APIerSv1.ComputeReverseDestinations"
|
||||
APIerSv1ComputeAccountActionPlans = "APIerSv1.ComputeAccountActionPlans"
|
||||
APIerSv1SetDestination = "APIerSv1.SetDestination"
|
||||
APIerSv1GetDataCost = "APIerSv1.GetDataCost"
|
||||
APIerSv1ReplayFailedPosts = "APIerSv1.ReplayFailedPosts"
|
||||
APIerSv1RemoveAccount = "APIerSv1.RemoveAccount"
|
||||
APIerSv1DebitUsage = "APIerSv1.DebitUsage"
|
||||
APIerSv1GetCacheStats = "APIerSv1.GetCacheStats"
|
||||
APIerSv1ReloadCache = "APIerSv1.ReloadCache"
|
||||
APIerSv1GetActionTriggers = "APIerSv1.GetActionTriggers"
|
||||
APIerSv1SetActionTrigger = "APIerSv1.SetActionTrigger"
|
||||
APIerSv1RemoveActionPlan = "APIerSv1.RemoveActionPlan"
|
||||
APIerSv1RemoveActions = "APIerSv1.RemoveActions"
|
||||
APIerSv1RemoveBalances = "APIerSv1.RemoveBalances"
|
||||
APIerSv1GetLoadHistory = "APIerSv1.GetLoadHistory"
|
||||
APIerSv1GetLoadIDs = "APIerSv1.GetLoadIDs"
|
||||
APIerSv1GetLoadTimes = "APIerSv1.GetLoadTimes"
|
||||
APIerSv1ExecuteScheduledActions = "APIerSv1.ExecuteScheduledActions"
|
||||
APIerSv1GetSharedGroup = "APIerSv1.GetSharedGroup"
|
||||
APIerSv1RemoveActionTrigger = "APIerSv1.RemoveActionTrigger"
|
||||
APIerSv1GetAccount = "APIerSv1.GetAccount"
|
||||
APIerSv1GetAttributeProfileCount = "APIerSv1.GetAttributeProfileCount"
|
||||
APIerSv1GetMaxUsage = "APIerSv1.GetMaxUsage"
|
||||
APIerSv1GetTiming = "APIerSv1.GetTiming"
|
||||
APIerSv1SetTiming = "APIerSv1.SetTiming"
|
||||
APIerSv1RemoveTiming = "APIerSv1.RemoveTiming"
|
||||
ApierV1 = "ApierV1"
|
||||
ApierV2 = "ApierV2"
|
||||
APIerSv1 = "APIerSv1"
|
||||
APIerSv1ComputeFilterIndexes = "APIerSv1.ComputeFilterIndexes"
|
||||
APIerSv1ComputeFilterIndexIDs = "APIerSv1.ComputeFilterIndexIDs"
|
||||
APIerSv1GetAccountActionPlansIndexHealth = "APIerSv1.GetAccountActionPlansIndexHealth"
|
||||
APIerSv1Ping = "APIerSv1.Ping"
|
||||
APIerSv1SetDispatcherProfile = "APIerSv1.SetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfile = "APIerSv1.GetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfileIDs = "APIerSv1.GetDispatcherProfileIDs"
|
||||
APIerSv1RemoveDispatcherProfile = "APIerSv1.RemoveDispatcherProfile"
|
||||
APIerSv1SetBalances = "APIerSv1.SetBalances"
|
||||
APIerSv1SetDispatcherHost = "APIerSv1.SetDispatcherHost"
|
||||
APIerSv1GetDispatcherHost = "APIerSv1.GetDispatcherHost"
|
||||
APIerSv1GetDispatcherHostIDs = "APIerSv1.GetDispatcherHostIDs"
|
||||
APIerSv1RemoveDispatcherHost = "APIerSv1.RemoveDispatcherHost"
|
||||
APIerSv1GetEventCost = "APIerSv1.GetEventCost"
|
||||
APIerSv1LoadTariffPlanFromFolder = "APIerSv1.LoadTariffPlanFromFolder"
|
||||
APIerSv1ExportToFolder = "APIerSv1.ExportToFolder"
|
||||
APIerSv1GetCost = "APIerSv1.GetCost"
|
||||
APIerSv1SetBalance = "APIerSv1.SetBalance"
|
||||
APIerSv1GetFilter = "APIerSv1.GetFilter"
|
||||
APIerSv1GetFilterIndexes = "APIerSv1.GetFilterIndexes"
|
||||
APIerSv1RemoveFilterIndexes = "APIerSv1.RemoveFilterIndexes"
|
||||
APIerSv1RemoveFilter = "APIerSv1.RemoveFilter"
|
||||
APIerSv1SetFilter = "APIerSv1.SetFilter"
|
||||
APIerSv1GetFilterIDs = "APIerSv1.GetFilterIDs"
|
||||
APIerSv1GetRatingProfile = "APIerSv1.GetRatingProfile"
|
||||
APIerSv1RemoveRatingProfile = "APIerSv1.RemoveRatingProfile"
|
||||
APIerSv1SetRatingProfile = "APIerSv1.SetRatingProfile"
|
||||
APIerSv1GetRatingProfileIDs = "APIerSv1.GetRatingProfileIDs"
|
||||
APIerSv1SetDataDBVersions = "APIerSv1.SetDataDBVersions"
|
||||
APIerSv1SetStorDBVersions = "APIerSv1.SetStorDBVersions"
|
||||
APIerSv1GetAccountActionPlan = "APIerSv1.GetAccountActionPlan"
|
||||
APIerSv1ComputeActionPlanIndexes = "APIerSv1.ComputeActionPlanIndexes"
|
||||
APIerSv1GetActions = "APIerSv1.GetActions"
|
||||
APIerSv1GetActionPlan = "APIerSv1.GetActionPlan"
|
||||
APIerSv1GetActionPlanIDs = "APIerSv1.GetActionPlanIDs"
|
||||
APIerSv1GetRatingPlanIDs = "APIerSv1.GetRatingPlanIDs"
|
||||
APIerSv1GetRatingPlan = "APIerSv1.GetRatingPlan"
|
||||
APIerSv1RemoveRatingPlan = "APIerSv1.RemoveRatingPlan"
|
||||
APIerSv1GetDestination = "APIerSv1.GetDestination"
|
||||
APIerSv1RemoveDestination = "APIerSv1.RemoveDestination"
|
||||
APIerSv1GetReverseDestination = "APIerSv1.GetReverseDestination"
|
||||
APIerSv1AddBalance = "APIerSv1.AddBalance"
|
||||
APIerSv1DebitBalance = "APIerSv1.DebitBalance"
|
||||
APIerSv1SetAccount = "APIerSv1.SetAccount"
|
||||
APIerSv1GetAccountsCount = "APIerSv1.GetAccountsCount"
|
||||
APIerSv1GetDataDBVersions = "APIerSv1.GetDataDBVersions"
|
||||
APIerSv1GetStorDBVersions = "APIerSv1.GetStorDBVersions"
|
||||
APIerSv1GetCDRs = "APIerSv1.GetCDRs"
|
||||
APIerSv1GetTPAccountActions = "APIerSv1.GetTPAccountActions"
|
||||
APIerSv1SetTPAccountActions = "APIerSv1.SetTPAccountActions"
|
||||
APIerSv1GetTPAccountActionsByLoadId = "APIerSv1.GetTPAccountActionsByLoadId"
|
||||
APIerSv1GetTPAccountActionLoadIds = "APIerSv1.GetTPAccountActionLoadIds"
|
||||
APIerSv1GetTPAccountActionIds = "APIerSv1.GetTPAccountActionIds"
|
||||
APIerSv1RemoveTPAccountActions = "APIerSv1.RemoveTPAccountActions"
|
||||
APIerSv1GetTPActionPlan = "APIerSv1.GetTPActionPlan"
|
||||
APIerSv1SetTPActionPlan = "APIerSv1.SetTPActionPlan"
|
||||
APIerSv1GetTPActionPlanIds = "APIerSv1.GetTPActionPlanIds"
|
||||
APIerSv1SetTPActionTriggers = "APIerSv1.SetTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggers = "APIerSv1.GetTPActionTriggers"
|
||||
APIerSv1RemoveTPActionTriggers = "APIerSv1.RemoveTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggerIds = "APIerSv1.GetTPActionTriggerIds"
|
||||
APIerSv1GetTPActions = "APIerSv1.GetTPActions"
|
||||
APIerSv1RemoveTPActionPlan = "APIerSv1.RemoveTPActionPlan"
|
||||
APIerSv1GetTPAttributeProfile = "APIerSv1.GetTPAttributeProfile"
|
||||
APIerSv1SetTPAttributeProfile = "APIerSv1.SetTPAttributeProfile"
|
||||
APIerSv1GetTPAttributeProfileIds = "APIerSv1.GetTPAttributeProfileIds"
|
||||
APIerSv1RemoveTPAttributeProfile = "APIerSv1.RemoveTPAttributeProfile"
|
||||
APIerSv1GetTPCharger = "APIerSv1.GetTPCharger"
|
||||
APIerSv1SetTPCharger = "APIerSv1.SetTPCharger"
|
||||
APIerSv1RemoveTPCharger = "APIerSv1.RemoveTPCharger"
|
||||
APIerSv1GetTPChargerIDs = "APIerSv1.GetTPChargerIDs"
|
||||
APIerSv1SetTPFilterProfile = "APIerSv1.SetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfile = "APIerSv1.GetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfileIds = "APIerSv1.GetTPFilterProfileIds"
|
||||
APIerSv1RemoveTPFilterProfile = "APIerSv1.RemoveTPFilterProfile"
|
||||
APIerSv1GetTPDestination = "APIerSv1.GetTPDestination"
|
||||
APIerSv1SetTPDestination = "APIerSv1.SetTPDestination"
|
||||
APIerSv1GetTPDestinationIDs = "APIerSv1.GetTPDestinationIDs"
|
||||
APIerSv1RemoveTPDestination = "APIerSv1.RemoveTPDestination"
|
||||
APIerSv1GetTPResource = "APIerSv1.GetTPResource"
|
||||
APIerSv1SetTPResource = "APIerSv1.SetTPResource"
|
||||
APIerSv1RemoveTPResource = "APIerSv1.RemoveTPResource"
|
||||
APIerSv1SetTPRate = "APIerSv1.SetTPRate"
|
||||
APIerSv1GetTPRate = "APIerSv1.GetTPRate"
|
||||
APIerSv1RemoveTPRate = "APIerSv1.RemoveTPRate"
|
||||
APIerSv1GetTPRateIds = "APIerSv1.GetTPRateIds"
|
||||
APIerSv1SetTPThreshold = "APIerSv1.SetTPThreshold"
|
||||
APIerSv1GetTPThreshold = "APIerSv1.GetTPThreshold"
|
||||
APIerSv1GetTPThresholdIDs = "APIerSv1.GetTPThresholdIDs"
|
||||
APIerSv1RemoveTPThreshold = "APIerSv1.RemoveTPThreshold"
|
||||
APIerSv1SetTPStat = "APIerSv1.SetTPStat"
|
||||
APIerSv1GetTPStat = "APIerSv1.GetTPStat"
|
||||
APIerSv1RemoveTPStat = "APIerSv1.RemoveTPStat"
|
||||
APIerSv1GetTPDestinationRate = "APIerSv1.GetTPDestinationRate"
|
||||
APIerSv1SetTPRouteProfile = "APIerSv1.SetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfile = "APIerSv1.GetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfileIDs = "APIerSv1.GetTPRouteProfileIDs"
|
||||
APIerSv1RemoveTPRouteProfile = "APIerSv1.RemoveTPRouteProfile"
|
||||
APIerSv1GetTPDispatcherProfile = "APIerSv1.GetTPDispatcherProfile"
|
||||
APIerSv1SetTPDispatcherProfile = "APIerSv1.SetTPDispatcherProfile"
|
||||
APIerSv1RemoveTPDispatcherProfile = "APIerSv1.RemoveTPDispatcherProfile"
|
||||
APIerSv1GetTPDispatcherProfileIDs = "APIerSv1.GetTPDispatcherProfileIDs"
|
||||
APIerSv1GetTPSharedGroups = "APIerSv1.GetTPSharedGroups"
|
||||
APIerSv1SetTPSharedGroups = "APIerSv1.SetTPSharedGroups"
|
||||
APIerSv1GetTPSharedGroupIds = "APIerSv1.GetTPSharedGroupIds"
|
||||
APIerSv1RemoveTPSharedGroups = "APIerSv1.RemoveTPSharedGroups"
|
||||
APIerSv1ExportCDRs = "APIerSv1.ExportCDRs"
|
||||
APIerSv1GetTPRatingPlan = "APIerSv1.GetTPRatingPlan"
|
||||
APIerSv1SetTPRatingPlan = "APIerSv1.SetTPRatingPlan"
|
||||
APIerSv1GetTPRatingPlanIds = "APIerSv1.GetTPRatingPlanIds"
|
||||
APIerSv1RemoveTPRatingPlan = "APIerSv1.RemoveTPRatingPlan"
|
||||
APIerSv1SetTPActions = "APIerSv1.SetTPActions"
|
||||
APIerSv1GetTPActionIds = "APIerSv1.GetTPActionIds"
|
||||
APIerSv1RemoveTPActions = "APIerSv1.RemoveTPActions"
|
||||
APIerSv1SetActionPlan = "APIerSv1.SetActionPlan"
|
||||
APIerSv1ExecuteAction = "APIerSv1.ExecuteAction"
|
||||
APIerSv1SetTPRatingProfile = "APIerSv1.SetTPRatingProfile"
|
||||
APIerSv1GetTPRatingProfile = "APIerSv1.GetTPRatingProfile"
|
||||
APIerSv1RemoveTPRatingProfile = "APIerSv1.RemoveTPRatingProfile"
|
||||
APIerSv1SetTPDestinationRate = "APIerSv1.SetTPDestinationRate"
|
||||
APIerSv1GetTPRatingProfileLoadIds = "APIerSv1.GetTPRatingProfileLoadIds"
|
||||
APIerSv1GetTPRatingProfilesByLoadID = "APIerSv1.GetTPRatingProfilesByLoadID"
|
||||
APIerSv1GetTPRatingProfileIds = "APIerSv1.GetTPRatingProfileIds"
|
||||
APIerSv1GetTPDestinationRateIds = "APIerSv1.GetTPDestinationRateIds"
|
||||
APIerSv1RemoveTPDestinationRate = "APIerSv1.RemoveTPDestinationRate"
|
||||
APIerSv1ImportTariffPlanFromFolder = "APIerSv1.ImportTariffPlanFromFolder"
|
||||
APIerSv1ExportTPToFolder = "APIerSv1.ExportTPToFolder"
|
||||
APIerSv1LoadRatingPlan = "APIerSv1.LoadRatingPlan"
|
||||
APIerSv1LoadRatingProfile = "APIerSv1.LoadRatingProfile"
|
||||
APIerSv1LoadAccountActions = "APIerSv1.LoadAccountActions"
|
||||
APIerSv1SetActions = "APIerSv1.SetActions"
|
||||
APIerSv1AddTriggeredAction = "APIerSv1.AddTriggeredAction"
|
||||
APIerSv1GetAccountActionTriggers = "APIerSv1.GetAccountActionTriggers"
|
||||
APIerSv1AddAccountActionTriggers = "APIerSv1.AddAccountActionTriggers"
|
||||
APIerSv1ResetAccountActionTriggers = "APIerSv1.ResetAccountActionTriggers"
|
||||
APIerSv1SetAccountActionTriggers = "APIerSv1.SetAccountActionTriggers"
|
||||
APIerSv1RemoveAccountActionTriggers = "APIerSv1.RemoveAccountActionTriggers"
|
||||
APIerSv1GetScheduledActions = "APIerSv1.GetScheduledActions"
|
||||
APIerSv1RemoveActionTiming = "APIerSv1.RemoveActionTiming"
|
||||
APIerSv1ComputeReverseDestinations = "APIerSv1.ComputeReverseDestinations"
|
||||
APIerSv1ComputeAccountActionPlans = "APIerSv1.ComputeAccountActionPlans"
|
||||
APIerSv1SetDestination = "APIerSv1.SetDestination"
|
||||
APIerSv1GetDataCost = "APIerSv1.GetDataCost"
|
||||
APIerSv1ReplayFailedPosts = "APIerSv1.ReplayFailedPosts"
|
||||
APIerSv1RemoveAccount = "APIerSv1.RemoveAccount"
|
||||
APIerSv1DebitUsage = "APIerSv1.DebitUsage"
|
||||
APIerSv1GetCacheStats = "APIerSv1.GetCacheStats"
|
||||
APIerSv1ReloadCache = "APIerSv1.ReloadCache"
|
||||
APIerSv1GetActionTriggers = "APIerSv1.GetActionTriggers"
|
||||
APIerSv1SetActionTrigger = "APIerSv1.SetActionTrigger"
|
||||
APIerSv1RemoveActionPlan = "APIerSv1.RemoveActionPlan"
|
||||
APIerSv1RemoveActions = "APIerSv1.RemoveActions"
|
||||
APIerSv1RemoveBalances = "APIerSv1.RemoveBalances"
|
||||
APIerSv1GetLoadHistory = "APIerSv1.GetLoadHistory"
|
||||
APIerSv1GetLoadIDs = "APIerSv1.GetLoadIDs"
|
||||
APIerSv1GetLoadTimes = "APIerSv1.GetLoadTimes"
|
||||
APIerSv1ExecuteScheduledActions = "APIerSv1.ExecuteScheduledActions"
|
||||
APIerSv1GetSharedGroup = "APIerSv1.GetSharedGroup"
|
||||
APIerSv1RemoveActionTrigger = "APIerSv1.RemoveActionTrigger"
|
||||
APIerSv1GetAccount = "APIerSv1.GetAccount"
|
||||
APIerSv1GetAttributeProfileCount = "APIerSv1.GetAttributeProfileCount"
|
||||
APIerSv1GetMaxUsage = "APIerSv1.GetMaxUsage"
|
||||
APIerSv1GetTiming = "APIerSv1.GetTiming"
|
||||
APIerSv1SetTiming = "APIerSv1.SetTiming"
|
||||
APIerSv1RemoveTiming = "APIerSv1.RemoveTiming"
|
||||
)
|
||||
|
||||
// APIerSv1 TP APIs
|
||||
|
||||
Reference in New Issue
Block a user