The Third-Party SDK Layer contains custom-built Go clients for service providers that do not offer an official Go SDK or whose official SDKs are unsuitable for Certimate's deployment needs. These clients are located under the pkg/sdk3rd/ directory and provide a unified way to interact with various APIs for certificate deployment, DNS management, and infrastructure orchestration.
Most of these clients utilize the github.com/go-resty/resty/v2 library to handle HTTP communication, implementing custom authentication logic (e.g., HMAC signatures, Bearer tokens, or custom headers) required by each provider.
Custom SDKs in Certimate typically follow a consistent structural pattern to ensure maintainability and ease of use within the Certificate Deployment Providers system.
Each SDK typically implements:
NewClient: A constructor that validates input parameters (URLs, credentials) and initializes a resty.Client. For example, APISIX validates the serverUrl and apiKey pkg/sdk3rd/apisix/client.go22-45 while Proxmox VE handles PVEAPIToken construction pkg/sdk3rd/proxmoxve/client.go22-49doRequestWithResult: A helper method that wraps the HTTP execution, handles JSON unmarshaling into response structs, and performs error code validation specific to the provider's API. Examples include APISIX pkg/sdk3rd/apisix/client.go90-110 and Nginx Proxy Manager pkg/sdk3rd/nginxproxymanager/client.go110-137signer struct is implemented. This is seen in DogeCloud pkg/sdk3rd/dogecloud/client.go33-48 and QingCloud DNS pkg/sdk3rd/qingcloud/dns/client.go33-48This table and diagram illustrate how the custom SDKs bridge "Natural Language" configuration into "Code Entity" request headers and signature logic.
| System Name | Code Entity / Header Pattern |
|---|---|
| APISIX Auth | X-Api-Key header set during client initialization pkg/sdk3rd/apisix/client.go43 |
| Proxmox VE | Authorization header with PVEAPIToken=ID=SECRET pkg/sdk3rd/proxmoxve/client.go44 |
| Kong Admin | Kong-Admin-Token header pkg/sdk3rd/kong/client.go48 |
| Dokploy | X-Api-Key header pkg/sdk3rd/dokploy/client.go43 |
| Dynv6 | Authorization: Bearer <token> pkg/sdk3rd/dynv6/client.go32 |
| cPanel | Authorization: cpanel <user>:<token> pkg/sdk3rd/cpanel/client.go44 |
| uniCloud | X-Client-Token and HMAC-based X-Serverless-Sign pkg/sdk3rd/dcloud/unicloud/client.go179-181 |
Sources: pkg/sdk3rd/nginxproxymanager/client.go139-177 pkg/sdk3rd/mohua/client.go130-166 pkg/sdk3rd/upyun/console/client.go128-170 pkg/sdk3rd/apisix/client.go22-45
Certimate provides extensive support for server management panels and WAF/Gateway solutions. These SDKs often handle complex authentication flows (like JWT token exchange) or specific API structures for certificate management.
Key implementations include:
ensureToken to handle JWT authentication via the /tokens endpoint pkg/sdk3rd/nginxproxymanager/client.go139-177btpanel, btpanelgo, and btwaf variants, including console-mode support.For a complete list of supported panels and technical details on their implementation, see Panel & Infrastructure SDKs.
For cloud providers lacking official Go SDK support or requiring specialized handling, Certimate implements dedicated clients to manage SSL settings and DNS records.
Most 3rd-party SDKs share a common internal request execution pattern using resty.
Sources: pkg/sdk3rd/qingcloud/dns/client.go90-114 pkg/sdk3rd/dogecloud/client.go90-114 pkg/sdk3rd/baishan/client.go76-100
For detailed documentation on each cloud provider SDK and their specific API endpoints, see CDN & Cloud Provider SDKs.
Sources: