Unofficial PHP SDK for GoDaddy API. A comprehensive library that provides easy-to-use interfaces for all GoDaddy API services.
- Complete API Coverage: Support for all GoDaddy API services with full implementation
- Type Safety: Full PHP 8.2+ type hints and strict typing
- PSR-4 Autoloading: Modern PHP standards compliance
- Comprehensive Testing: 290+ tests with full coverage using Pest PHP
- Multiple API Versions: Complete support for both v1 and v2 APIs
- DTO Pattern: Clean data transfer objects for all API requests/responses
- Exception Handling: 50+ specific exception classes for different error scenarios
- Enum Support: Comprehensive enum classes for type-safe values
- DNSSEC Support: Full DNSSEC record management in v2 API
- Advanced Domain Management: Complete domain lifecycle management
- PHP 8.2 or higher
- Guzzle HTTP Client 7.0 or higher
- Composer
composer require zpmlabs/godaddy-php-sdk- Clone the repository:
git clone https://github.com/your-username/godaddy-php-sdk.git
cd godaddy-php-sdk- Install dependencies:
composer install<?php
require_once 'vendor/autoload.php';
use GoDaddy\GoDaddy;
// Initialize the SDK with your API credentials
$godaddy = new GoDaddy(
apiKey: 'your-api-key',
apiSecret: 'your-api-secret',
baseUrl: 'https://api.ote-godaddy.com' // Use production URL for live
);
// Use any service
$domains = $godaddy->domains();
$certificates = $godaddy->certificates();
$shoppers = $godaddy->shoppers();<?php
use GoDaddy\Services\Domains\v1\DomainsService;
use GoDaddy\Services\Domains\v1\DTO\ListDomainsQueryData;
$domainsService = new DomainsService('api-key', 'api-secret', 'https://api.ote-godaddy.com');
try {
$queryData = new ListDomainsQueryData();
$queryData->limit = 100;
$queryData->statusGroups = ['ACTIVE'];
$domains = $domainsService->listDomains($queryData);
foreach ($domains as $domain) {
echo "Domain: {$domain['domain']}\n";
}
} catch (GoDaddy\Exceptions\ServiceException $e) {
echo "Error: " . $e->getMessage() . "\n";
}<?php
use GoDaddy\Services\Domains\v2\DomainsService;
use GoDaddy\Services\Domains\v2\DTO\GetDomainDetailsQueryData;
$domainsService = new DomainsService('api-key', 'api-secret', 'https://api.ote-godaddy.com');
try {
$queryData = new GetDomainDetailsQueryData();
$queryData->includes = ['contacts', 'nameServers'];
$domainDetails = $domainsService->getDomainDetails('customer123', 'example.com', $queryData);
echo "Domain: {$domainDetails->domain}\n";
echo "Status: {$domainDetails->status}\n";
} catch (GoDaddy\Exceptions\ServiceException $e) {
echo "Error: " . $e->getMessage() . "\n";
}<?php
use GoDaddy\Services\Domains\v2\DomainsService;
use GoDaddy\Services\Domains\v2\DTO\DnssecRecordData;
use GoDaddy\Services\Domains\v2\Enums\DnssecAlgorithm;
$domainsService = new DomainsService('api-key', 'api-secret', 'https://api.ote-godaddy.com');
try {
$record = new DnssecRecordData(
DnssecAlgorithm::RSA_SHA256->value,
'digest123',
'1',
'12345'
);
$domainsService->addDnssecRecords('customer123', 'example.com', [$record]);
echo "DNSSEC record added successfully\n";
} catch (GoDaddy\Exceptions\ServiceException $e) {
echo "Error: " . $e->getMessage() . "\n";
}<?php
use GoDaddy\Services\Certificates\v1\CertificatesService;
use GoDaddy\Services\Certificates\v1\DTO\{
CertificateCreateData,
ContactData,
AddressData,
OrganizationData
};
$certificatesService = new CertificatesService('api-key', 'api-secret', 'https://api.ote-godaddy.com');
$contactData = new ContactData(
'John Doe',
'[email protected]',
'123456789',
'123 Main St',
'City',
'State',
'12345',
'US'
);
$addressData = new AddressData(
'123 Main St',
'',
'City',
'US',
'12345',
'State'
);
$orgData = new OrganizationData(
$addressData,
'Example Corp',
'Example Corporation',
'123456789',
'Registration Agent',
'REG123456'
);
$createData = new CertificateCreateData(
'https://callback.example.com',
'example.com',
$contactData,
'CSR_STRING',
false,
$orgData,
12,
'DV',
'ROOT_TYPE',
'SLOT_SIZE',
['example.com']
);
try {
$result = $certificatesService->createCertificate($createData);
echo "Certificate created: " . $result['certificateId'] . "\n";
} catch (GoDaddy\Exceptions\ServiceException $e) {
echo "Error: " . $e->getMessage() . "\n";
}The SDK provides access to all GoDaddy API services. Each service has its own documentation with detailed usage examples:
-
Abuse Service - Report and manage abuse tickets
-
Aftermarket Service - Manage aftermarket listings
- v1 API ✅ Complete
-
Agreements Service - Retrieve legal agreements
- v1 API ✅ Complete
-
Auctions Service - Participate in domain auctions
- v1 API ✅ Complete
-
Certificates Service - Manage SSL certificates
-
Countries Service - Get country information
- v1 API ✅ Complete
-
Domains Service - Manage domain registrations
-
Orders Service - Manage orders
- v1 API ✅ Complete
-
Parking Service - Domain parking analytics
- v1 API ✅ Complete
-
Shoppers Service - Manage customer accounts
- v1 API ✅ Complete
-
Subscriptions Service - Manage subscriptions
- v1 API ✅ Complete
- 40+ new methods for advanced domain management
- DNSSEC support with full record management
- Advanced domain transfers with granular control
- Domain forwards management
- Notification system with opt-in/opt-out
- Domain actions tracking
- Registration schemas for TLDs
- Maintenance and usage tracking
- 3 new enums added for complete API coverage
- DomainSuggestionSource enum for domain suggestions
- DnsRecordType enum for DNS record types
- CheckType enum enhanced with lowercase variants
- 290+ tests with full coverage
- 658 assertions ensuring reliability
- Complete unit tests for all DTOs and Enums
- Feature tests for all service methods
- 50+ specific exception classes for different error scenarios
- Proper error categorization for better debugging
- Comprehensive error messages with context
You'll need to obtain API credentials from GoDaddy:
- Log in to your GoDaddy Developer account
- Create a new application
- Get your API Key and API Secret
- Use the appropriate base URL:
- Production:
https://api.godaddy.com - OTE (Testing):
https://api.ote-godaddy.com
- Production:
For security, store your credentials in environment variables:
export GODADDY_API_KEY="your-api-key"
export GODADDY_API_SECRET="your-api-secret"
export GODADDY_BASE_URL="https://api.ote-godaddy.com"Then use them in your code:
$godaddy = new GoDaddy(
apiKey: $_ENV['GODADDY_API_KEY'],
apiSecret: $_ENV['GODADDY_API_SECRET'],
baseUrl: $_ENV['GODADDY_BASE_URL']
);The SDK provides specific exception classes for different error scenarios:
use GoDaddy\Exceptions\{
ServiceException,
NotFoundException,
ForbiddenException,
RateLimitExceededException,
InternalServerErrorException
};
try {
$result = $service->someMethod();
} catch (NotFoundException $e) {
// Resource not found (404)
echo "Resource not found: " . $e->getMessage();
} catch (ForbiddenException $e) {
// Access denied (403)
echo "Access denied: " . $e->getMessage();
} catch (RateLimitExceededException $e) {
// Rate limit exceeded (429)
echo "Rate limit exceeded: " . $e->getMessage();
} catch (ServiceException $e) {
// General service error
echo "Service error: " . $e->getMessage();
}Run the test suite:
# Run all tests
composer test
# Run tests with coverage
./vendor/bin/pest --coverage
# Run specific test file
./vendor/bin/pest tests/Feature/v1/DomainsServiceTest.php
./vendor/bin/pest tests/Feature/v2/DomainsServiceTest.php
# Run all tests (290 tests, 658 assertions)
./vendor/bin/pest- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone the repository
git clone https://github.com/your-username/godaddy-php-sdk.git
cd godaddy-php-sdk
# Install dependencies
composer install
# Run tests
composer testThis project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Each service has detailed documentation in its respective README file
- Issues: Report bugs and feature requests on GitHub Issues
- Discussions: Join the conversation on GitHub Discussions
- ✅ Complete v2 Domains API implementation (40+ new methods)
- ✅ Enhanced v1 Domains API (3 new enums)
- ✅ Comprehensive testing (290+ tests, 658 assertions)
- ✅ DNSSEC support with full record management
- ✅ Advanced domain transfers with granular control
- ✅ Domain forwards management
- ✅ Notification system implementation
- ✅ Enhanced exception handling (50+ specific exceptions)
See CHANGELOG.md for a complete list of changes and version history.
- GoDaddy for providing the API
- The PHP community for excellent tools and libraries
- All contributors who help improve this SDK
Note: This is an unofficial SDK and is not affiliated with or endorsed by GoDaddy Inc.