Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/api_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ package cmd
import (
"fmt"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/loops-so/cli/internal/config"
"github.com/spf13/cobra"
)

func runAPIKey(cfg *config.Config) (*api.APIKeyResponse, error) {
func runAPIKey(cfg *config.Config) (*loops.APIKeyResponse, error) {
return newAPIClient(cfg).GetAPIKey()
}

Expand Down
4 changes: 2 additions & 2 deletions cmd/api_key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"reflect"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunAPIKey(t *testing.T) {
Expand All @@ -15,7 +15,7 @@ func TestRunAPIKey(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
want := &api.APIKeyResponse{TeamName: "Acme Corp"}
want := &loops.APIKeyResponse{TeamName: "Acme Corp"}
if !reflect.DeepEqual(result, want) {
t.Errorf("got %+v, want %+v", result, want)
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/auth_login.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"os"
"strings"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/loops-so/cli/internal/config"
"github.com/spf13/cobra"
"golang.org/x/term"
Expand Down Expand Up @@ -54,7 +54,7 @@ var loginCmd = &cobra.Command{
},
}

func runAuthLogin(apiKey, name string, skipVerify bool) (*api.APIKeyResponse, error) {
func runAuthLogin(apiKey, name string, skipVerify bool) (*loops.APIKeyResponse, error) {
if name == "" {
return nil, errors.New("a key name is required")
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/auth_login_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"reflect"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunAuthLogin(t *testing.T) {
Expand All @@ -15,7 +15,7 @@ func TestRunAuthLogin(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
want := &api.APIKeyResponse{TeamName: "Acme"}
want := &loops.APIKeyResponse{TeamName: "Acme"}
if !reflect.DeepEqual(result, want) {
t.Errorf("got %+v, want %+v", result, want)
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/auth_status.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"strings"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/loops-so/cli/internal/config"
"github.com/spf13/cobra"
)
Expand Down Expand Up @@ -43,7 +43,7 @@ var statusCmd = &cobra.Command{
},
}

func runAuthStatus() (*config.Config, *api.APIKeyResponse, *config.PersistentConfig, error) {
func runAuthStatus() (*config.Config, *loops.APIKeyResponse, *config.PersistentConfig, error) {
cfg, err := loadConfig()
if err != nil {
return nil, nil, nil, err
Expand Down
20 changes: 10 additions & 10 deletions cmd/campaigns.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@ package cmd
import (
"fmt"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/loops-so/cli/internal/config"
"github.com/spf13/cobra"
)

func runCampaignsGet(cfg *config.Config, id string) (*api.Campaign, error) {
func runCampaignsGet(cfg *config.Config, id string) (*loops.Campaign, error) {
return newAPIClient(cfg).GetCampaign(id)
}

func runCampaignsList(cfg *config.Config, params api.PaginationParams) ([]api.CampaignListItem, error) {
func runCampaignsList(cfg *config.Config, params loops.PaginationParams) ([]loops.CampaignListItem, error) {
client := newAPIClient(cfg)
if params.Cursor != "" {
campaigns, _, err := client.ListCampaigns(params)
return campaigns, err
}
return api.Paginate(func(cursor string) ([]api.CampaignListItem, *api.Pagination, error) {
return client.ListCampaigns(api.PaginationParams{
return loops.Paginate(func(cursor string) ([]loops.CampaignListItem, *loops.Pagination, error) {
return client.ListCampaigns(loops.PaginationParams{
PerPage: params.PerPage,
Cursor: cursor,
})
Expand Down Expand Up @@ -52,7 +52,7 @@ var campaignsListCmd = &cobra.Command{

if isJSONOutput() {
if campaigns == nil {
campaigns = []api.CampaignListItem{}
campaigns = []loops.CampaignListItem{}
}
return printJSON(cmd.OutOrStdout(), campaigns)
}
Expand Down Expand Up @@ -91,7 +91,7 @@ var campaignsListCmd = &cobra.Command{
},
}

func runCampaignsCreate(cfg *config.Config, req api.CreateCampaignRequest) (*api.CampaignCreateResponse, error) {
func runCampaignsCreate(cfg *config.Config, req loops.CreateCampaignRequest) (*loops.CampaignCreateResponse, error) {
return newAPIClient(cfg).CreateCampaign(req)
}

Expand All @@ -106,7 +106,7 @@ var campaignsCreateCmd = &cobra.Command{
return err
}

resp, err := runCampaignsCreate(cfg, api.CreateCampaignRequest{Name: name})
resp, err := runCampaignsCreate(cfg, loops.CreateCampaignRequest{Name: name})
if err != nil {
return err
}
Expand All @@ -120,7 +120,7 @@ var campaignsCreateCmd = &cobra.Command{
},
}

func runCampaignsUpdate(cfg *config.Config, id string, req api.UpdateCampaignRequest) (*api.Campaign, error) {
func runCampaignsUpdate(cfg *config.Config, id string, req loops.UpdateCampaignRequest) (*loops.Campaign, error) {
return newAPIClient(cfg).UpdateCampaign(id, req)
}

Expand All @@ -136,7 +136,7 @@ var campaignsUpdateCmd = &cobra.Command{
return err
}

c, err := runCampaignsUpdate(cfg, args[0], api.UpdateCampaignRequest{Name: name})
c, err := runCampaignsUpdate(cfg, args[0], loops.UpdateCampaignRequest{Name: name})
if err != nil {
return err
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/campaigns_create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"net/http"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunCampaignsCreate(t *testing.T) {
Expand All @@ -21,7 +21,7 @@ func TestRunCampaignsCreate(t *testing.T) {

t.Run("returns response on success", func(t *testing.T) {
serveJSON(t, http.StatusCreated, body)
resp, err := runCampaignsCreate(cfg(t), api.CreateCampaignRequest{Name: "Spring"})
resp, err := runCampaignsCreate(cfg(t), loops.CreateCampaignRequest{Name: "Spring"})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand All @@ -38,7 +38,7 @@ func TestRunCampaignsCreate(t *testing.T) {

t.Run("returns error on non-201 response", func(t *testing.T) {
serveJSON(t, http.StatusBadRequest, `{"success":false,"message":"name is required"}`)
_, err := runCampaignsCreate(cfg(t), api.CreateCampaignRequest{})
_, err := runCampaignsCreate(cfg(t), loops.CreateCampaignRequest{})
if err == nil {
t.Fatal("expected error, got nil")
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/campaigns_list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import (
"net/http"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunCampaignsList(t *testing.T) {
t.Run("returns campaigns", func(t *testing.T) {
serveJSON(t, http.StatusOK, `{"pagination":{"nextCursor":""},"data":[{"campaignId":"cmp_1","emailMessageId":"em_1","name":"Spring","subject":"Hi","status":"Draft","createdAt":"2026-04-01","updatedAt":"2026-04-02"}]}`)
campaigns, err := runCampaignsList(cfg(t), api.PaginationParams{})
campaigns, err := runCampaignsList(cfg(t), loops.PaginationParams{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand All @@ -27,7 +27,7 @@ func TestRunCampaignsList(t *testing.T) {

t.Run("returns error on api failure", func(t *testing.T) {
serveJSON(t, http.StatusUnauthorized, `{"error":"unauthorized"}`)
_, err := runCampaignsList(cfg(t), api.PaginationParams{})
_, err := runCampaignsList(cfg(t), loops.PaginationParams{})
if err == nil {
t.Fatal("expected error, got nil")
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/campaigns_update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"net/http"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunCampaignsUpdate(t *testing.T) {
Expand All @@ -20,7 +20,7 @@ func TestRunCampaignsUpdate(t *testing.T) {

t.Run("returns campaign on success", func(t *testing.T) {
serveJSON(t, http.StatusOK, body)
c, err := runCampaignsUpdate(cfg(t), "cmp_abc123", api.UpdateCampaignRequest{Name: "Renamed"})
c, err := runCampaignsUpdate(cfg(t), "cmp_abc123", loops.UpdateCampaignRequest{Name: "Renamed"})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand All @@ -37,7 +37,7 @@ func TestRunCampaignsUpdate(t *testing.T) {

t.Run("returns error when not in draft", func(t *testing.T) {
serveJSON(t, http.StatusConflict, `{"success":false,"message":"Campaign is not in draft status"}`)
_, err := runCampaignsUpdate(cfg(t), "cmp_abc123", api.UpdateCampaignRequest{Name: "Renamed"})
_, err := runCampaignsUpdate(cfg(t), "cmp_abc123", loops.UpdateCampaignRequest{Name: "Renamed"})
if err == nil {
t.Fatal("expected error, got nil")
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/contact_properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ package cmd
import (
"fmt"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/loops-so/cli/internal/config"
"github.com/spf13/cobra"
)

func runContactPropertiesList(cfg *config.Config, customOnly bool) ([]api.ContactProperty, error) {
func runContactPropertiesList(cfg *config.Config, customOnly bool) ([]loops.ContactProperty, error) {
return newAPIClient(cfg).ListContactProperties(customOnly)
}

Expand Down Expand Up @@ -43,7 +43,7 @@ var contactPropertiesListCmd = &cobra.Command{

if isJSONOutput() {
if props == nil {
props = []api.ContactProperty{}
props = []loops.ContactProperty{}
}
return printJSON(cmd.OutOrStdout(), props)
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/contact_properties_list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"reflect"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunContactPropertiesCreate(t *testing.T) {
Expand Down Expand Up @@ -33,7 +33,7 @@ func TestRunContactPropertiesList(t *testing.T) {
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
want := []api.ContactProperty{
want := []loops.ContactProperty{
{Key: "firstName", Label: "First name", Type: "string"},
{Key: "score", Label: "Score", Type: "number"},
}
Expand Down
16 changes: 8 additions & 8 deletions cmd/contacts.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"strconv"
"strings"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/loops-so/cli/internal/cmdutil"
"github.com/loops-so/cli/internal/config"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -85,8 +85,8 @@ func contactFieldParamsFromCmd(cmd *cobra.Command) (contactFieldParams, error) {

// find

func runContactsFind(cfg *config.Config, email, userID string) ([]api.Contact, error) {
return newAPIClient(cfg).FindContacts(api.FindContactParams{
func runContactsFind(cfg *config.Config, email, userID string) ([]loops.Contact, error) {
return newAPIClient(cfg).FindContacts(loops.FindContactParams{
Email: email,
UserID: userID,
})
Expand Down Expand Up @@ -120,7 +120,7 @@ var contactsFindCmd = &cobra.Command{

if isJSONOutput() {
if contacts == nil {
contacts = []api.Contact{}
contacts = []loops.Contact{}
}
return printJSON(cmd.OutOrStdout(), contacts)
}
Expand Down Expand Up @@ -163,7 +163,7 @@ type contactCreateResult struct {
ID string `json:"id"`
}

func runContactsCreate(cfg *config.Config, req api.CreateContactRequest) (string, error) {
func runContactsCreate(cfg *config.Config, req loops.CreateContactRequest) (string, error) {
return newAPIClient(cfg).CreateContact(req)
}

Expand All @@ -185,7 +185,7 @@ var contactsCreateCmd = &cobra.Command{
return err
}

id, err := runContactsCreate(cfg, api.CreateContactRequest{
id, err := runContactsCreate(cfg, loops.CreateContactRequest{
Email: email,
FirstName: fields.FirstName,
LastName: fields.LastName,
Expand All @@ -210,7 +210,7 @@ var contactsCreateCmd = &cobra.Command{

// update

func runContactsUpdate(cfg *config.Config, req api.UpdateContactRequest) error {
func runContactsUpdate(cfg *config.Config, req loops.UpdateContactRequest) error {
return newAPIClient(cfg).UpdateContact(req)
}

Expand All @@ -235,7 +235,7 @@ var contactsUpdateCmd = &cobra.Command{
return err
}

if err := runContactsUpdate(cfg, api.UpdateContactRequest{
if err := runContactsUpdate(cfg, loops.UpdateContactRequest{
Email: email,
UserID: userID,
FirstName: fields.FirstName,
Expand Down
6 changes: 3 additions & 3 deletions cmd/contacts_create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"path/filepath"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -163,7 +163,7 @@ func TestContactFieldParamsFromCmd(t *testing.T) {
func TestRunContactsCreate(t *testing.T) {
t.Run("creates contact and returns ID", func(t *testing.T) {
serveJSON(t, http.StatusOK, `{"success":true,"id":"cnt_abc123"}`)
id, err := runContactsCreate(cfg(t), api.CreateContactRequest{Email: "bob@example.com"})
id, err := runContactsCreate(cfg(t), loops.CreateContactRequest{Email: "bob@example.com"})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
Expand All @@ -174,7 +174,7 @@ func TestRunContactsCreate(t *testing.T) {

t.Run("returns error on API failure", func(t *testing.T) {
serveJSON(t, http.StatusConflict, `{"success":false,"message":"Contact already exists"}`)
_, err := runContactsCreate(cfg(t), api.CreateContactRequest{Email: "existing@example.com"})
_, err := runContactsCreate(cfg(t), loops.CreateContactRequest{Email: "existing@example.com"})
if err == nil {
t.Fatal("expected error, got nil")
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/contacts_find_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ import (
"net/http"
"testing"

"github.com/loops-so/cli/internal/api"
"github.com/loops-so/loops-go"
)

func TestRunContactsFind(t *testing.T) {
body := `[{"id":"cnt_abc123","email":"bob@example.com","firstName":"Bob","lastName":"Smith","source":"api","subscribed":true,"userGroup":"default","userId":"user_123","mailingLists":{},"optInStatus":"accepted","company":"Loops","plan":"pro"}]`

assertContact := func(t *testing.T, got api.Contact) {
assertContact := func(t *testing.T, got loops.Contact) {
t.Helper()
if got.ID != "cnt_abc123" ||
got.Email != "bob@example.com" ||
Expand Down
Loading