products

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2025 License: MIT Imports: 9 Imported by: 0

README

Products API

Manage your product catalog for e-commerce and digital goods.

Available Operations

  • Create - Create a new product
  • List - List products with filtering
  • Fetch - Get product by ID
  • Update - Update product details

Quick Examples

Create Product
import "github.com/huysamen/paystack-go/api/products"

request := products.NewCreateRequestBuilder().
    Name("Premium Software License").
    Description("Annual license for premium software features").
    Price(50000000).  // 500,000 NGN in kobo
    Currency(enums.NGN).
    Limited(true).
    Quantity(100).
    Build()

result, err := client.Products.Create(ctx, *request)
List Products
query := products.NewListRequestBuilder().
    PerPage(50).
    Page(1).
    Active(true).
    Build()

result, err := client.Products.List(ctx, *query)

for _, product := range result.Data {
    fmt.Printf("Product: %s - %d kobo\n", 
        product.Name.String(), 
        product.Price.Int64())
}
Update Product
request := products.NewUpdateRequestBuilder(productID).
    Name("Premium Software License v2").
    Price(60000000).  // Price increase
    Description("Enhanced features with AI integration").
    Build()

result, err := client.Products.Update(ctx, *request)

Use Cases

Perfect for:

  • Digital products and licenses
  • Physical goods inventory
  • Service packages
  • Subscription add-ons

Best Practices

// Include detailed metadata for inventory tracking
request := products.NewCreateRequestBuilder().
    Name("MacBook Pro 16-inch").
    Price(250000000).  // 2,500,000 NGN
    Currency(enums.NGN).
    Limited(true).
    Quantity(10).
    Metadata(map[string]any{
        "sku": "MBP16-001",
        "category": "electronics",
        "weight_kg": 2.1,
        "warranty_months": 12,
    }).
    Build()

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client api.API

func (*Client) Create

func (c *Client) Create(ctx context.Context, builder CreateRequestBuilder) (*CreateResponse, error)

func (*Client) Fetch

func (c *Client) Fetch(ctx context.Context, productID string) (*FetchResponse, error)

func (*Client) List

func (c *Client) List(ctx context.Context, builder ListRequestBuilder) (*ListResponse, error)

func (*Client) Update

func (c *Client) Update(ctx context.Context, productID string, builder UpdateRequestBuilder) (*UpdateResponse, error)

type CreateRequestBuilder

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

func NewCreateRequestBuilder

func NewCreateRequestBuilder(name, description string, price int, currency string) *CreateRequestBuilder

func (*CreateRequestBuilder) Build

func (b *CreateRequestBuilder) Build() *createRequest

func (*CreateRequestBuilder) Metadata

func (b *CreateRequestBuilder) Metadata(metadata *types.Metadata) *CreateRequestBuilder

func (*CreateRequestBuilder) Quantity

func (b *CreateRequestBuilder) Quantity(quantity int) *CreateRequestBuilder

func (*CreateRequestBuilder) Unlimited

func (b *CreateRequestBuilder) Unlimited(unlimited bool) *CreateRequestBuilder

type CreateResponse

type CreateResponse = types.Response[CreateResponseData]

type CreateResponseData

type CreateResponseData = types.Product

type FetchResponse

type FetchResponse = types.Response[FetchResponseData]

type FetchResponseData

type FetchResponseData = types.Product

type ListProduct

type ListProduct struct {
	ID                 data.Int        `json:"id,omitempty"`
	Integration        data.Int        `json:"integration,omitempty"`
	Name               data.String     `json:"name"`
	Description        data.String     `json:"description"`
	ProductCode        data.String     `json:"product_code,omitempty"`
	Price              data.Int        `json:"price"`
	Currency           enums.Currency  `json:"currency"`
	Quantity           data.NullInt    `json:"quantity,omitempty"`
	QuantitySold       data.NullInt    `json:"quantity_sold,omitempty"`
	Type               data.String     `json:"type,omitempty"`  // good, service
	Files              []any           `json:"files,omitempty"` // Array in list response
	IsShippable        data.Bool       `json:"is_shippable,omitempty"`
	ShippingFields     types.Metadata  `json:"shipping_fields,omitempty"` // Object in list response
	Unlimited          data.Bool       `json:"unlimited,omitempty"`
	Domain             data.String     `json:"domain,omitempty"`
	Active             data.Bool       `json:"active,omitempty"`
	InStock            data.Bool       `json:"in_stock,omitempty"`
	Metadata           types.Metadata  `json:"metadata,omitempty"` // Object in list response
	Slug               data.String     `json:"slug,omitempty"`
	SuccessMessage     data.NullString `json:"success_message,omitempty"`
	RedirectURL        data.NullString `json:"redirect_url,omitempty"`
	SplitCode          data.NullString `json:"split_code,omitempty"`
	NotificationEmails []data.String   `json:"notification_emails,omitempty"`
	MinimumOrderable   data.NullInt    `json:"minimum_orderable,omitempty"`
	MaximumOrderable   data.NullInt    `json:"maximum_orderable,omitempty"`
	LowStockAlert      data.Bool       `json:"low_stock_alert,omitempty"`
	DigitalAssets      []any           `json:"digital_assets,omitempty"`  // Array in list response
	VariantOptions     []any           `json:"variant_options,omitempty"` // Array in list response
	CreatedAt          data.NullTime   `json:"createdAt,omitempty"`
	UpdatedAt          data.NullTime   `json:"updatedAt,omitempty"`
}

type ListRequestBuilder

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

func NewListRequestBuilder

func NewListRequestBuilder() *ListRequestBuilder

func (*ListRequestBuilder) Build

func (b *ListRequestBuilder) Build() *listRequest

func (*ListRequestBuilder) DateRange

func (b *ListRequestBuilder) DateRange(from, to string) *ListRequestBuilder

func (*ListRequestBuilder) From

func (*ListRequestBuilder) Page

func (b *ListRequestBuilder) Page(page int) *ListRequestBuilder

func (*ListRequestBuilder) PerPage

func (b *ListRequestBuilder) PerPage(perPage int) *ListRequestBuilder

func (*ListRequestBuilder) To

type ListResponse

type ListResponse = types.Response[ListResponseData]

type ListResponseData

type ListResponseData = []ListProduct

type UpdateRequestBuilder

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

func NewUpdateRequestBuilder

func NewUpdateRequestBuilder() *UpdateRequestBuilder

func (*UpdateRequestBuilder) Build

func (b *UpdateRequestBuilder) Build() *updateRequest

func (*UpdateRequestBuilder) Currency

func (b *UpdateRequestBuilder) Currency(currency string) *UpdateRequestBuilder

func (*UpdateRequestBuilder) Description

func (b *UpdateRequestBuilder) Description(description string) *UpdateRequestBuilder

func (*UpdateRequestBuilder) Metadata

func (b *UpdateRequestBuilder) Metadata(metadata *types.Metadata) *UpdateRequestBuilder

func (*UpdateRequestBuilder) Name

func (*UpdateRequestBuilder) Price

func (*UpdateRequestBuilder) Quantity

func (b *UpdateRequestBuilder) Quantity(quantity int) *UpdateRequestBuilder

func (*UpdateRequestBuilder) Unlimited

func (b *UpdateRequestBuilder) Unlimited(unlimited bool) *UpdateRequestBuilder

type UpdateResponse

type UpdateResponse = types.Response[UpdateResponseData]

type UpdateResponseData

type UpdateResponseData = types.Product

Jump to

Keyboard shortcuts

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