amex

package module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2025 License: MIT Imports: 21 Imported by: 0

README

Amex

Create and manage business virtual cards on Amex

[!CAUTION] This is an unofficial client that is not affiliated with or endorsed by American Express. Using this client may violate American Express's Terms of Service. By using this client, you acknowledge and accept all associated risks.

Installation

  • Download the latest release from the releases page and move it to your PATH

  • Or build from source

go install github.com/saucesteals/amex/cmd/amex@latest

Usage

  • Run the interactive CLI
amex

Programmatic Usage

  • Use the cli as a reference

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	// contains filtered or unexported fields
}

func NewAPI

func NewAPI(options Options) (*API, error)

func (*API) CreateVirtualCard

func (a *API) CreateVirtualCard(ctx context.Context, assessmentToken string, args CreateVirtualCardArgs) (VirtualCard, error)

func (*API) DeleteVirtualCard

func (a *API) DeleteVirtualCard(ctx context.Context, accountToken, virtualToken string) error

func (*API) GetCookies

func (a *API) GetCookies() []*http.Cookie

func (*API) ListVirtualCards

func (a *API) ListVirtualCards(ctx context.Context, accountToken string, page int, maxRecordsPerPage int) (*ListVirtualCardsResponse, error)

func (*API) Login

func (a *API) Login(ctx context.Context) error

func (*API) ReadEligibleCards

func (a *API) ReadEligibleCards(ctx context.Context) ([]EligibleCard, error)

func (*API) SetCookies

func (a *API) SetCookies(cookies []*http.Cookie)

func (*API) StepUp

func (a *API) StepUp(ctx context.Context, accountKey, assessmentToken string) error

type BillingAccount

type BillingAccount struct {
	BillingAccountID string                      `json:"billing_account_id"`
	VirtualCards     []BillingAccountVirtualCard `json:"virtual_cards"`
}

type BillingAccountVirtualCard

type BillingAccountVirtualCard struct {
	Name                       string            `json:"-"`
	VirtualCardReferenceID     string            `json:"virtual_card_reference_id"`
	VirtualCardID              string            `json:"virtual_card_id"`
	VirtualCardType            string            `json:"virtual_card_type"`
	VirtualCardMaintainedBy    string            `json:"virtual_card_maintained_by"`
	LimitStartDate             string            `json:"limit_start_date"`
	LimitEndDate               string            `json:"limit_end_date"`
	DateCreated                string            `json:"date_created"`
	CurrentAmount              float64           `json:"current_amount"`
	BillingCurrency            string            `json:"billing_currency"`
	OriginalAmount             float64           `json:"original_amount"`
	CurrentUsageStatus         string            `json:"current_usage_status"`
	UserDefinedFields          map[string]string `json:"user_defined_fields"`
	AccountingFields           map[string]string `json:"accounting_fields"`
	EncryptedVirtualCardNumber string            `json:"encrypted_virtual_card_number"`
	VirtualCardLastFive        string            `json:"virtual_card_last_five"`
}

type CardUseType

type CardUseType string
var (
	CardUseTypeSingleUse CardUseType = "SINGLE_USE"
	CardUseTypeMultiUse  CardUseType = "MULTI_USE"
)

type CreateVirtualCardArgs

type CreateVirtualCardArgs struct {
	AccountToken string `json:"accountToken"`
	CardNickname string `json:"cardNickname"`

	CardUseType CardUseType `json:"cardUseType"`

	SpendingLimit SpendingLimit `json:"spendingLimit"`

	SpendingLimitRenewalType SpendingLimitRenewalType `json:"spendingLimitRenewalType"`

	SpendingLimitRenewalSchedule []SpendingLimitRenewalSchedule `json:"spendingLimitRenewalSchedule"`
}

type Credentials

type Credentials struct {
	Username string
	Password string
}

type DigitalAsset

type DigitalAsset struct {
	AssetURL       string `json:"assetUrl"`
	AssetDimension string `json:"assetDimension"`
}

type EligibleCard

type EligibleCard struct {
	AccountToken          string  `json:"accountToken"`
	AccountKey            string  `json:"accountKey"`
	AccountNumberLastFive string  `json:"accountNumberLastFive"`
	Status                string  `json:"status"`
	Rank                  int     `json:"rank"`
	Product               Product `json:"product"`
}

type FunctionError

type FunctionError struct {
	Type    string `json:"-"`
	Code    string `json:"ErrorCode"`
	Message string `json:"ErrorMessage"`

	// For step up
	RiskDecision    string `json:"RiskDecision"`
	JourneyId       string `json:"JourneyId"`
	AssessmentToken string `json:"AssessmentToken"`
}

func (*FunctionError) Error

func (e *FunctionError) Error() string

type FunctionResponse

type FunctionResponse struct {
	// contains filtered or unexported fields
}

func (FunctionResponse) Bind

func (r FunctionResponse) Bind(v any) error

func (FunctionResponse) Error

func (r FunctionResponse) Error() *FunctionError

type ListVirtualCardsResponse

type ListVirtualCardsResponse struct {
	Status struct {
		Code            string `json:"code"`
		ShortMessage    string `json:"short_message"`
		DetailedMessage string `json:"detailed_message"`
	} `json:"status"`
	CurrentPage         int              `json:"current_page"`
	TotalPages          int              `json:"total_pages"`
	TotalRecordsCount   int              `json:"total_records_count"`
	IssuingCardLastFive string           `json:"issuing_card_last_five"`
	CompanyID           string           `json:"company_id"`
	BillingAccts        []BillingAccount `json:"billing_accts"`
}

type Options

type Options struct {
	Credentials Credentials

	BrowserUserDataPath string
	BrowserBinary       string

	Logger *slog.Logger
}

type Product

type Product struct {
	InitialArrangementCode string         `json:"initialArrangementCode"`
	ProductName            string         `json:"productName"`
	AssetID                string         `json:"assetId"`
	DigitalAsset           []DigitalAsset `json:"digitalAsset"`
}

type SpendingLimit

type SpendingLimit struct {
	// Currency (e.g. "USD")
	Currency string `json:"currency"`

	// Amount in dollars (e.g. "20.00")
	Amount string `json:"amount"`
}

type SpendingLimitRenewalSchedule

type SpendingLimitRenewalSchedule struct {
	// Start date of the renewal period (YYYY-MM-DD)
	StartDate string `json:"startDate"`

	// End date of the renewal period (YYYY-MM-DD)
	EndDate string `json:"endDate"`
}

type SpendingLimitRenewalType

type SpendingLimitRenewalType string
var (
	SpendingLimitRenewalTypeNever    SpendingLimitRenewalType = "NEVER"
	SpendingLimitRenewalTypeWeekly   SpendingLimitRenewalType = "WEEKLY"
	SpendingLimitRenewalTypeBiWeekly SpendingLimitRenewalType = "BI_WEEKLY"
	SpendingLimitRenewalTypeMonthly  SpendingLimitRenewalType = "MONTHLY"
)

type StepUpRequiredError

type StepUpRequiredError struct {
	AssessmentToken string
}

func (StepUpRequiredError) Error

func (e StepUpRequiredError) Error() string

type VirtualCard

type VirtualCard struct {
	VirtualCardNumber string `json:"virtualCardNumber"`
	VirtualToken      string `json:"virtualToken"`
	CardNickname      string `json:"cardNickname"`
	SecurityCode      string `json:"securityCode"`

	// Expiry date (YYYY-MM)
	ExpiryYearMonth string `json:"expiryYearMonth"`

	// Start date of the card validity period (YYYY-MM-DD)
	StartDate string `json:"startDate"`

	// End date of the card validity period (YYYY-MM-DD)
	EndDate string `json:"endDate"`

	// Token end date (YYYY-MM-DD)
	TokenEndDate string `json:"tokenEndDate"`

	CardMemberFirstName string `json:"cardmemberFirstName"`
	CardMemberLastName  string `json:"cardmemberLastName"`
}

Directories

Path Synopsis
cmd
amex command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL