Files
cgrates/apier/v1/api_interfaces.go
2025-05-29 15:40:20 +02:00

271 lines
19 KiB
Go

/*
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 v1
import (
"time"
"github.com/cgrates/birpc/context"
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/cores"
"github.com/cgrates/cgrates/dispatchers"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/sessions"
"github.com/cgrates/cgrates/utils"
"github.com/cgrates/ltcache"
)
type ThresholdSv1Interface interface {
GetThresholdIDs(ctx *context.Context, tenant *utils.TenantWithAPIOpts, tIDs *[]string) error
GetThresholdsForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.Thresholds) error
GetThreshold(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, t *engine.Threshold) error
ProcessEvent(ctx *context.Context, args *utils.CGREvent, tIDs *[]string) error
}
type StatSv1Interface interface {
GetQueueIDs(ctx *context.Context, tenant *utils.TenantWithAPIOpts, qIDs *[]string) error
ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *[]string) error
GetStatQueuesForEvent(ctx *context.Context, args *utils.CGREvent, reply *[]string) (err error)
GetQueueStringMetrics(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *map[string]string) (err error)
GetQueueFloatMetrics(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *map[string]float64) (err error)
}
type ResourceSv1Interface interface {
GetResourcesForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.Resources) error
AuthorizeResources(ctx *context.Context, args *utils.CGREvent, reply *string) error
AllocateResources(ctx *context.Context, args *utils.CGREvent, reply *string) error
ReleaseResources(ctx *context.Context, args *utils.CGREvent, reply *string) error
GetResource(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Resource) error
GetResourceWithConfig(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ResourceWithConfig) error
}
type IPsV1Interface interface {
GetIPsForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.IPs) error
AuthorizeIPs(ctx *context.Context, args *utils.CGREvent, reply *string) error
AllocateIPs(ctx *context.Context, args *utils.CGREvent, reply *string) error
ReleaseIPs(ctx *context.Context, args *utils.CGREvent, reply *string) error
GetIP(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.IP) error
}
type RouteSv1Interface interface {
GetRoutes(ctx *context.Context, args *utils.CGREvent, reply *engine.SortedRoutesList) error
GetRouteProfilesForEvent(ctx *context.Context, args *utils.CGREvent, reply *[]*engine.RouteProfile) error
GetRoutesList(ctx *context.Context, args *utils.CGREvent, reply *[]string) error
}
type AttributeSv1Interface interface {
GetAttributeForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.AttributeProfile) (err error)
ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.AttrSProcessEventReply) error
}
type ChargerSv1Interface interface {
GetChargersForEvent(ctx *context.Context, cgrEv *utils.CGREvent, reply *engine.ChargerProfiles) error
ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *[]*engine.ChrgSProcessEventReply) error
}
type SessionSv1Interface interface {
AuthorizeEvent(ctx *context.Context, args *sessions.V1AuthorizeArgs, rply *sessions.V1AuthorizeReply) error
AuthorizeEventWithDigest(ctx *context.Context, args *sessions.V1AuthorizeArgs, rply *sessions.V1AuthorizeReplyWithDigest) error
InitiateSession(ctx *context.Context, args *sessions.V1InitSessionArgs, rply *sessions.V1InitSessionReply) error
InitiateSessionWithDigest(ctx *context.Context, args *sessions.V1InitSessionArgs, rply *sessions.V1InitReplyWithDigest) error
UpdateSession(ctx *context.Context, args *sessions.V1UpdateSessionArgs, rply *sessions.V1UpdateSessionReply) error
SyncSessions(ctx *context.Context, args *utils.TenantWithAPIOpts, rply *string) error
TerminateSession(ctx *context.Context, args *sessions.V1TerminateSessionArgs, rply *string) error
ProcessCDR(ctx *context.Context, cgrEv *utils.CGREvent, rply *string) error
ProcessMessage(ctx *context.Context, args *sessions.V1ProcessMessageArgs, rply *sessions.V1ProcessMessageReply) error
ProcessEvent(ctx *context.Context, args *sessions.V1ProcessEventArgs, rply *sessions.V1ProcessEventReply) error
GetCost(ctx *context.Context, args *sessions.V1ProcessEventArgs, rply *sessions.V1GetCostReply) error
GetActiveSessions(ctx *context.Context, args *utils.SessionFilter, rply *[]*sessions.ExternalSession) error
GetActiveSessionsCount(ctx *context.Context, args *utils.SessionFilter, rply *int) error
ForceDisconnect(ctx *context.Context, args utils.SessionFilterWithEvent, rply *string) error
AlterSessions(ctx *context.Context, args utils.SessionFilterWithEvent, rply *string) error
GetPassiveSessions(ctx *context.Context, args *utils.SessionFilter, rply *[]*sessions.ExternalSession) error
GetPassiveSessionsCount(ctx *context.Context, args *utils.SessionFilter, rply *int) error
ReplicateSessions(ctx *context.Context, args *dispatchers.ArgsReplicateSessionsWithAPIOpts, rply *string) error
SetPassiveSession(ctx *context.Context, args *sessions.Session, reply *string) error
ActivateSessions(ctx *context.Context, args *utils.SessionIDsWithArgsDispatcher, reply *string) error
DeactivateSessions(ctx *context.Context, args *utils.SessionIDsWithArgsDispatcher, reply *string) error
STIRAuthenticate(ctx *context.Context, args *sessions.V1STIRAuthenticateArgs, reply *string) error
STIRIdentity(ctx *context.Context, args *sessions.V1STIRIdentityArgs, reply *string) error
}
type ResponderInterface interface {
GetCost(ctx *context.Context, arg *engine.CallDescriptorWithAPIOpts, reply *engine.CallCost) (err error)
Debit(ctx *context.Context, arg *engine.CallDescriptorWithAPIOpts, reply *engine.CallCost) (err error)
MaxDebit(ctx *context.Context, arg *engine.CallDescriptorWithAPIOpts, reply *engine.CallCost) (err error)
RefundIncrements(ctx *context.Context, arg *engine.CallDescriptorWithAPIOpts, reply *engine.Account) (err error)
RefundRounding(ctx *context.Context, arg *engine.CallDescriptorWithAPIOpts, reply *engine.Account) (err error)
GetMaxSessionTime(ctx *context.Context, arg *engine.CallDescriptorWithAPIOpts, reply *time.Duration) (err error)
GetCostOnRatingPlans(ctx *context.Context, arg *utils.GetCostOnRatingPlansArgs, reply *map[string]any) (err error)
GetMaxSessionTimeOnAccounts(ctx *context.Context, arg *utils.GetMaxSessionTimeOnAccountsArgs, reply *map[string]any) (err error)
Shutdown(ctx *context.Context, arg *utils.TenantWithAPIOpts, reply *string) (err error)
}
type CacheSv1Interface interface {
GetItemIDs(ctx *context.Context, args *utils.ArgsGetCacheItemIDsWithAPIOpts, reply *[]string) error
HasItem(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *bool) error
GetItemExpiryTime(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *time.Time) error
RemoveItem(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *string) error
RemoveItems(ctx *context.Context, args *utils.AttrReloadCacheWithAPIOpts, reply *string) error
Clear(ctx *context.Context, cacheIDs *utils.AttrCacheIDsWithAPIOpts, reply *string) error
GetCacheStats(ctx *context.Context, cacheIDs *utils.AttrCacheIDsWithAPIOpts, rply *map[string]*ltcache.CacheStats) error
PrecacheStatus(ctx *context.Context, cacheIDs *utils.AttrCacheIDsWithAPIOpts, rply *map[string]string) error
HasGroup(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, rply *bool) error
GetGroupItemIDs(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, rply *[]string) error
RemoveGroup(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, rply *string) error
ReloadCache(ctx *context.Context, attrs *utils.AttrReloadCacheWithAPIOpts, reply *string) error
LoadCache(ctx *context.Context, args *utils.AttrReloadCacheWithAPIOpts, reply *string) error
ReplicateSet(ctx *context.Context, args *utils.ArgCacheReplicateSet, reply *string) (err error)
ReplicateRemove(ctx *context.Context, args *utils.ArgCacheReplicateRemove, reply *string) (err error)
}
type GuardianSv1Interface interface {
RemoteLock(ctx *context.Context, attr *dispatchers.AttrRemoteLockWithAPIOpts, reply *string) (err error)
RemoteUnlock(ctx *context.Context, refID *dispatchers.AttrRemoteUnlockWithAPIOpts, reply *[]string) (err error)
}
type SchedulerSv1Interface interface {
Reload(ctx *context.Context, arg *utils.CGREvent, reply *string) error
ExecuteActions(ctx *context.Context, attr *utils.AttrsExecuteActions, reply *string) error
ExecuteActionPlans(ctx *context.Context, attr *utils.AttrsExecuteActionPlans, reply *string) error
}
type CDRsV1Interface interface {
ProcessCDR(ctx *context.Context, cdr *engine.CDRWithAPIOpts, reply *string) error
ProcessEvent(ctx *context.Context, arg *engine.ArgV1ProcessEvent, reply *string) error
ProcessExternalCDR(ctx *context.Context, cdr *engine.ExternalCDRWithAPIOpts, reply *string) error
RateCDRs(ctx *context.Context, arg *engine.ArgRateCDRs, reply *string) error
StoreSessionCost(ctx *context.Context, attr *engine.AttrCDRSStoreSMCost, reply *string) error
GetCDRsCount(ctx *context.Context, args *utils.RPCCDRsFilterWithAPIOpts, reply *int64) error
GetCDRs(ctx *context.Context, args *utils.RPCCDRsFilterWithAPIOpts, reply *[]*engine.CDR) error
}
type ServiceManagerV1Interface interface {
StartService(ctx *context.Context, args *dispatchers.ArgStartServiceWithAPIOpts, reply *string) error
StopService(ctx *context.Context, args *dispatchers.ArgStartServiceWithAPIOpts, reply *string) error
ServiceStatus(ctx *context.Context, args *dispatchers.ArgStartServiceWithAPIOpts, reply *string) error
}
type RALsV1Interface interface {
GetRatingPlansCost(ctx *context.Context, arg *utils.RatingPlanCostArg, reply *dispatchers.RatingPlanCost) error
}
type ConfigSv1Interface interface {
GetConfig(ctx *context.Context, section *config.SectionWithAPIOpts, reply *map[string]any) (err error)
ReloadConfig(ctx *context.Context, section *config.ReloadArgs, reply *string) (err error)
SetConfig(ctx *context.Context, args *config.SetConfigArgs, reply *string) (err error)
SetConfigFromJSON(ctx *context.Context, args *config.SetConfigFromJSONArgs, reply *string) (err error)
GetConfigAsJSON(ctx *context.Context, args *config.SectionWithAPIOpts, reply *string) (err error)
}
type CoreSv1Interface interface {
Status(_ *context.Context, _ *cores.V1StatusParams, _ *map[string]any) error
Panic(_ *context.Context, _ *utils.PanicMessageArgs, _ *string) error
Sleep(_ *context.Context, _ *utils.DurationArgs, _ *string) error
StartCPUProfiling(_ *context.Context, _ *utils.DirectoryArgs, _ *string) error
StartMemoryProfiling(_ *context.Context, _ cores.MemoryProfilingParams, _ *string) error
StopCPUProfiling(_ *context.Context, _ *utils.TenantWithAPIOpts, _ *string) error
StopMemoryProfiling(_ *context.Context, _ utils.TenantWithAPIOpts, _ *string) error
}
type ReplicatorSv1Interface interface {
GetAccount(ctx *context.Context, args *utils.StringWithAPIOpts, reply *engine.Account) error
GetDestination(ctx *context.Context, key *utils.StringWithAPIOpts, reply *engine.Destination) error
GetReverseDestination(ctx *context.Context, key *utils.StringWithAPIOpts, reply *[]string) error
GetStatQueue(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.StatQueue) error
GetFilter(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.Filter) error
GetThreshold(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.Threshold) error
GetThresholdProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.ThresholdProfile) error
GetStatQueueProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.StatQueueProfile) error
GetTiming(ctx *context.Context, id *utils.StringWithAPIOpts, reply *utils.TPTiming) error
GetResource(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.Resource) error
GetResourceProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.ResourceProfile) error
GetIP(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.IP) error
GetIPProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.IPProfile) error
GetActionTriggers(ctx *context.Context, id *utils.StringWithAPIOpts, reply *engine.ActionTriggers) error
GetSharedGroup(ctx *context.Context, id *utils.StringWithAPIOpts, reply *engine.SharedGroup) error
GetActions(ctx *context.Context, id *utils.StringWithAPIOpts, reply *engine.Actions) error
GetActionPlan(ctx *context.Context, id *utils.StringWithAPIOpts, reply *engine.ActionPlan) error
GetAllActionPlans(ctx *context.Context, _ *utils.StringWithAPIOpts, reply *map[string]*engine.ActionPlan) error
GetAccountActionPlans(ctx *context.Context, id *utils.StringWithAPIOpts, reply *[]string) error
GetRatingPlan(ctx *context.Context, id *utils.StringWithAPIOpts, reply *engine.RatingPlan) error
GetRatingProfile(ctx *context.Context, id *utils.StringWithAPIOpts, reply *engine.RatingProfile) error
GetRouteProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.RouteProfile) error
GetAttributeProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.AttributeProfile) error
GetChargerProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.ChargerProfile) error
GetDispatcherProfile(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.DispatcherProfile) error
GetDispatcherHost(ctx *context.Context, tntID *utils.TenantIDWithAPIOpts, reply *engine.DispatcherHost) error
GetItemLoadIDs(ctx *context.Context, itemID *utils.StringWithAPIOpts, reply *map[string]int64) error
SetThresholdProfile(ctx *context.Context, th *engine.ThresholdProfileWithAPIOpts, reply *string) error
SetThreshold(ctx *context.Context, th *engine.ThresholdWithAPIOpts, reply *string) error
SetAccount(ctx *context.Context, acc *engine.AccountWithAPIOpts, reply *string) error
SetDestination(ctx *context.Context, dst *engine.DestinationWithAPIOpts, reply *string) error
SetReverseDestination(ctx *context.Context, dst *engine.DestinationWithAPIOpts, reply *string) error
SetStatQueue(ctx *context.Context, ssq *engine.StatQueueWithAPIOpts, reply *string) error
SetFilter(ctx *context.Context, fltr *engine.FilterWithAPIOpts, reply *string) error
SetStatQueueProfile(ctx *context.Context, sq *engine.StatQueueProfileWithAPIOpts, reply *string) error
SetTiming(ctx *context.Context, tm *utils.TPTimingWithAPIOpts, reply *string) error
SetResource(ctx *context.Context, rs *engine.ResourceWithAPIOpts, reply *string) error
SetResourceProfile(ctx *context.Context, rs *engine.ResourceProfileWithAPIOpts, reply *string) error
SetIP(ctx *context.Context, rs *engine.IPWithAPIOpts, reply *string) error
SetIPProfile(ctx *context.Context, rs *engine.IPProfileWithAPIOpts, reply *string) error
SetActionTriggers(ctx *context.Context, args *engine.SetActionTriggersArgWithAPIOpts, reply *string) error
SetSharedGroup(ctx *context.Context, shg *engine.SharedGroupWithAPIOpts, reply *string) error
SetActions(ctx *context.Context, args *engine.SetActionsArgsWithAPIOpts, reply *string) error
SetRatingPlan(ctx *context.Context, rp *engine.RatingPlanWithAPIOpts, reply *string) error
SetRatingProfile(ctx *context.Context, rp *engine.RatingProfileWithAPIOpts, reply *string) error
SetRouteProfile(ctx *context.Context, sp *engine.RouteProfileWithAPIOpts, reply *string) error
SetAttributeProfile(ctx *context.Context, ap *engine.AttributeProfileWithAPIOpts, reply *string) error
SetChargerProfile(ctx *context.Context, cp *engine.ChargerProfileWithAPIOpts, reply *string) error
SetDispatcherProfile(ctx *context.Context, dpp *engine.DispatcherProfileWithAPIOpts, reply *string) error
SetActionPlan(ctx *context.Context, args *engine.SetActionPlanArgWithAPIOpts, reply *string) error
SetAccountActionPlans(ctx *context.Context, args *engine.SetAccountActionPlansArgWithAPIOpts, reply *string) error
SetDispatcherHost(ctx *context.Context, dpp *engine.DispatcherHostWithAPIOpts, reply *string) error
RemoveThreshold(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
SetLoadIDs(ctx *context.Context, args *utils.LoadIDsWithAPIOpts, reply *string) error
RemoveDestination(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveAccount(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveStatQueue(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveFilter(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveThresholdProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveStatQueueProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveTiming(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveResource(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveResourceProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveIP(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveIPProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveActionTriggers(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveSharedGroup(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveActions(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveActionPlan(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemAccountActionPlans(ctx *context.Context, args *engine.RemAccountActionPlansArgsWithAPIOpts, reply *string) error
RemoveRatingPlan(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveRatingProfile(ctx *context.Context, id *utils.StringWithAPIOpts, reply *string) error
RemoveRouteProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveAttributeProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveChargerProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveDispatcherProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
RemoveDispatcherHost(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) error
GetIndexes(ctx *context.Context, args *utils.GetIndexesArg, reply *map[string]utils.StringSet) error
SetIndexes(ctx *context.Context, args *utils.SetIndexesArg, reply *string) error
RemoveIndexes(ctx *context.Context, args *utils.GetIndexesArg, reply *string) error
}