eBay::Client::OpenAPI3
eBay::Client::OpenAPI3 is a small Perl client for selected eBay REST APIs,
with the ebayapi3 command-line utility used by existing applications.
The 0.01 CPAN packaging pass is intentionally compatibility-first: it adds release metadata, tests, CI, and clearer documentation without changing the existing CLI output or pagination semantics.
Configuration
By default ebayapi3 uses $HOME/.ebayapi3.conf:
[eBay]
client_id = your-client-key
client_secret = your-secret-key
affiliateCampaignId = your-epn-campaign-id
affiliateReferenceId = optional-reference
The module constructor accepts the configuration filename explicitly. The CLI
also accepts --config FILE on API subcommands; this makes the option already
documented by the pre-CPAN project functional without changing the default.
Existing CLI behavior retained in 0.01
# Bare application token (also the default command when no subcommand is given)
ebayapi3 oauth2
# Browse a category; default output is JSON
ebayapi3 browse --limit 200 --category_ids 66502 --stats --as json
# Follow pagination. Existing behavior writes each JSON response consecutively;
# 0.01 deliberately does not wrap them into a new array.
ebayapi3 browse --limit 200 --category_ids 66502 --stats --as json --continue > data-dump.json
# YAML remains useful for a naturally document-oriented continued stream.
ebayapi3 browse --limit 200 --category_ids 66502 --as yaml --continue > data-dump.yaml
# Retrieve one item
ebayapi3 item --itemid 123456789012 --as summary
# Browse API rate-limit information
ebayapi3 rate --as summary
--nextcmd, the default AUCTION filter, --max handling, output formatting,
and the historical help exit status are covered by compatibility tests.
Perl API
use eBay::Client::OpenAPI3;
my $ebay = eBay::Client::OpenAPI3->new(
config => "$ENV{HOME}/.ebayapi3.conf",
);
my $results = $ebay->oauth2->browse(
category_ids => 66502,
limit => 200,
sort => 'endingSoonest',
);
The original getItem() spelling remains supported. get_item() is an
additive alias for Perl-style callers.
Testing
The tests are designed to be offline and must not require live eBay credentials:
cpanm --notest --installdeps .
prove -lr t
For development coverage:
cover -delete
PERL5OPT=-MDevel::Cover prove -lr t
cover -report text
GitHub Actions installs dependencies and runs prove directly. It does not use
Dist::Zilla.
Local/manual release
dist.ini is provided only for local/manual release work:
dzil test
dzil build
dzil release
After the initial release, the next development pass can inventory missing eBay API support and then work toward 100% statement/branch/condition/subroutine test coverage without changing behavior merely to satisfy a coverage number.