Files
telecom-platform/apps/cli/internal/api/subscribers.go
T
nutcas3 bd3226edf0 feat: Refactor CLI API client by splitting billing, carrier, and charging modules into separate files
- Extract Invoice, Payment, Subscriber types and GetInvoices, GetPayments, GenerateInvoice methods to billing.go
- Extract CarrierInfo, ConnectivityStatus, ProfileInfo types and carrier connector methods to carrier.go
- Extract CreditCheckRequest/Response, CreditBalanceResponse types and charging engine methods to charging.go
- Add PacketStats, CreditInfo types and GetPacketStats, GetCreditInfo
2026-04-25 05:33:41 +03:00

55 lines
1.5 KiB
Go

package api
// Subscriber represents a subscriber from the API
type Subscriber struct {
ID uint `json:"id"`
IMSI string `json:"imsi"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Email string `json:"email"`
Status string `json:"status"`
}
// SubscriberAccount holds account info
type SubscriberAccount struct {
IMSI string `json:"imsi"`
Name string `json:"name"`
Status string `json:"status"`
Balance float64 `json:"balance"`
}
// ListSubscribers retrieves subscribers
func (c *Client) ListSubscribers() ([]SubscriberAccount, error) {
var resp struct {
Data []SubscriberAccount `json:"data"`
}
if err := c.doGetJSON("/api/v1/subscribers", &resp); err != nil {
return nil, err
}
return resp.Data, nil
}
// GetSubscriber retrieves a single subscriber
func (c *Client) GetSubscriber(imsi string) (*SubscriberAccount, error) {
var sub SubscriberAccount
if err := c.doGetJSON("/api/v1/subscribers/"+imsi, &sub); err != nil {
return nil, err
}
return &sub, nil
}
// CreateSubscriber creates a subscriber
func (c *Client) CreateSubscriber(imsi, name string) (*SubscriberAccount, error) {
var sub SubscriberAccount
body := map[string]string{"imsi": imsi, "name": name}
if err := c.doPostJSON("/api/v1/subscribers", body, &sub); err != nil {
return nil, err
}
return &sub, nil
}
// DeleteSubscriber deletes a subscriber
func (c *Client) DeleteSubscriber(imsi string) error {
return c.doDelete("/api/v1/subscribers/" + imsi)
}