Documentation ¶
Overview ¶
Package czds implementing a client to the CZDS REST API using both the documented and undocumented API endpoints
Index ¶
- Constants
- func Getpass(passfrom ...string) (pass string, err error)
- type CancelRequestSubmission
- type Client
- func (c *Client) Authenticate() error
- func (c *Client) CancelRequest(cancel *CancelRequestSubmission) (*RequestsInfo, error)
- func (c *Client) DownloadAllRequests(output io.Writer) error
- func (c *Client) DownloadZone(url, destinationPath string) error
- func (c *Client) DownloadZoneToWriter(url string, dest io.Writer) (int64, error)
- func (c *Client) ExtendAllTLDs() ([]string, error)
- func (c *Client) ExtendAllTLDsExcept(except []string) ([]string, error)
- func (c *Client) ExtendTLD(tld string) error
- func (c *Client) GetAllRequests(status string) ([]Request, error)
- func (c *Client) GetDownloadInfo(url string) (*DownloadInfo, error)
- func (c *Client) GetLinks() ([]string, error)
- func (c *Client) GetRequestInfo(requestID string) (*RequestsInfo, error)
- func (c *Client) GetRequests(filter *RequestsFilter) (*RequestsResponse, error)
- func (c *Client) GetTLDStatus() ([]TLDStatus, error)
- func (c *Client) GetTerms() (*Terms, error)
- func (c *Client) GetZoneRequestID(zone string) (string, error)
- func (c *Client) RequestAllTLDs(reason string) ([]string, error)
- func (c *Client) RequestAllTLDsExcept(reason string, except []string) ([]string, error)
- func (c *Client) RequestExtension(requestID string) (*RequestsInfo, error)
- func (c *Client) RequestTLDs(tlds []string, reason string) error
- func (c *Client) SetLogger(l Logger)
- func (c *Client) SubmitRequest(request *RequestSubmission) error
- type Credentials
- type DownloadInfo
- type FtpDetails
- type HistoryEntry
- type Logger
- type Request
- type RequestSubmission
- type RequestsFilter
- type RequestsInfo
- type RequestsPagination
- type RequestsResponse
- type RequestsSort
- type TLDStatus
- type Terms
Constants ¶
const ( // AuthURL production url endpoint AuthURL = "https://account-api.icann.org/api/authenticate" // BaseURL production url endpoint BaseURL = "https://czds-api.icann.org" // TestAuthURL testing url endpoint TestAuthURL = "https://account-api-test.icann.org/api/authenticate" // TestBaseURL testing url endpoint TestBaseURL = "https://czds-api-test.icann.org" )
const ( RequestAll = "" RequestSubmitted = "Submitted" RequestPending = "Pending" RequestApproved = "Approved" RequestDenied = "Denied" RequestRevoked = "Revoked" RequestExpired = "Expired" RequestCanceled = "Canceled" )
Filters for RequestsFilter.Status Statuses for RequestStatus.Status
const ( SortAsc = "asc" SortDesc = "desc" )
Filters for RequestsSort.Direction
const ( SortByTLD = "tld" SortByStatus = "status" SortByLastUpdated = "last_updated" SortByExpiration = "expired" SortByCreated = "created" SortByAutoRenew = "auto_renew" )
Filters for RequestsSort.Field
const ( StatusAvailable = "available" StatusSubmitted = "submitted" StatusPending = "pending" StatusApproved = "approved" StatusDenied = "denied" StatusExpired = "expired" StatusCanceled = "canceled" StatusRevoked = "revoked" // unverified )
Status from TLDStatus.CurrentStatus and RequestsInfo.Status
Variables ¶
This section is empty.
Functions ¶
func Getpass ¶ added in v1.2.13
Getpass retrieves a password from the user using a method defined by the 'passfrom' string. The following methods are supported:
cmd:command Obtain the password by running the given command. The command will be passed to the shell for execution via "/bin/sh -c 'command'". env:var Obtain the password from the environment variable var. Since the environment of other processes may be visible via e.g. ps(1), this option should be used with caution. file:pathname The first line of pathname is the password. pathname need not refer to a regular file: it could for example refer to a device or named pipe. Note that standard Unix file access controls should be used to protect this file. keychain:name Use the security(1) utility to retrieve the password from the macOS keychain. lpass:name Use the LastPass command-line client lpass(1) to retrieve the named password. You should previously have run 'lpass login' for this to work. op:name Use the 1Password command-line client op(1) to retrieve the named password. pass:password The actual password is password. Since the password is visible to utilities such as ps(1) and possibly leaked into the shell history file, this form should only be used where security is not important. tty:prompt This is the default: `Getpass` will prompt the user on the controlling tty using the provided `prompt`. If no `prompt` is provided, then `Getpass` will use "Password: ".
This function is variadic purely so that you can invoke it without any arguments, thereby defaulting to interactively providing the password as if 'passfrom' was set to "tty:Password: ".
Types ¶
type CancelRequestSubmission ¶ added in v1.0.6
type CancelRequestSubmission struct { RequestID string `json:"integrationId"` // This is effectively 'requestId' TLDName string `json:"tldName"` }
CancelRequestSubmission Request cancellation arguments passed to CancelRequest()
type Client ¶
type Client struct { HTTPClient *http.Client AuthURL string BaseURL string Creds Credentials // contains filtered or unexported fields }
Client stores all session information for czds authentication and manages token renewal
func NewClient ¶
NewClient returns a new instance of the CZDS Client with the default production URLs
func (*Client) Authenticate ¶
Authenticate tests the client's credentials and gets an authentication token from the server calling this is optional. All other functions will check the auth state on their own first and authenticate if necessary.
func (*Client) CancelRequest ¶ added in v1.0.6
func (c *Client) CancelRequest(cancel *CancelRequestSubmission) (*RequestsInfo, error)
CancelRequest cancels a pre-existing request. Can only cancel pending requests.
func (*Client) DownloadAllRequests ¶
DownloadAllRequests outputs the contents of the csv file downloaded by the "Download All Requests" button on the CZDS portal to the provided output
func (*Client) DownloadZone ¶
DownloadZone provided the zone download URL retrieved from GetLinks() downloads the zone file and saves it to local disk at destinationPath
func (*Client) DownloadZoneToWriter ¶
DownloadZoneToWriter is analogous to DownloadZone but instead of writing it to a file, it will write it to a provided io.Writer. It returns the number of bytes written to dest and any error that was encountered.
func (*Client) ExtendAllTLDs ¶ added in v1.2.0
ExtendAllTLDs is a helper function to request extensions to all TLDs that are extendable
func (*Client) ExtendAllTLDsExcept ¶ added in v1.2.12
ExtendAllTLDsExcept is a helper function to request extensions to all TLDs that are extendable excluding any in except
func (*Client) ExtendTLD ¶ added in v1.2.0
ExtendTLD is a helper function that requests extensions to the provided tld TLDs provided should be marked as Extensible from GetRequestInfo()
func (*Client) GetAllRequests ¶ added in v1.2.0
GetAllRequests returns the request information for all requests with the given status status should be one of the constant czds.Status* strings warning: for large number of results, may be slow
func (*Client) GetDownloadInfo ¶
func (c *Client) GetDownloadInfo(url string) (*DownloadInfo, error)
GetDownloadInfo Performs a HEAD request to the zone at url and populates a DownloadInfo struct with the information returned by the headers
func (*Client) GetRequestInfo ¶
func (c *Client) GetRequestInfo(requestID string) (*RequestsInfo, error)
GetRequestInfo gets detailed information about a particular request and its timeline as seen on the CZDS dashboard page "https://czds.icann.org/zone-requests/{ID}"
func (*Client) GetRequests ¶
func (c *Client) GetRequests(filter *RequestsFilter) (*RequestsResponse, error)
GetRequests searches for the status of zones requests as seen on the CZDS dashboard page "https://czds.icann.org/zone-requests/all"
func (*Client) GetTLDStatus ¶
GetTLDStatus gets the current status of all TLDs and their ability to be requested
func (*Client) GetTerms ¶
GetTerms gets the current terms and conditions from the CZDS portal page "https://czds.icann.org/terms-and-conditions" this is required to accept the terms and conditions when submitting a new request
func (*Client) GetZoneRequestID ¶ added in v1.2.0
GetZoneRequestID returns the most request RequestID for the given zone
func (*Client) RequestAllTLDs ¶
RequestAllTLDs is a helper function to request access to all available TLDs with the provided reason
func (*Client) RequestAllTLDsExcept ¶ added in v1.2.12
RequestAllTLDsExcept is a helper function to request access to all available TLDs with the provided reason skipping over the TLDs in except
func (*Client) RequestExtension ¶ added in v1.2.0
func (c *Client) RequestExtension(requestID string) (*RequestsInfo, error)
RequestExtension submits a request to have the access extended. Can only request extensions for requests expiring within 30 days.
func (*Client) RequestTLDs ¶
RequestTLDs is a helper function that requests access to the provided tlds with the provided reason TLDs provided should be marked as able to request from GetTLDStatus()
func (*Client) SetLogger ¶ added in v1.2.9
SetLogger enables verbose printing for most API calls with the provided logger defaults to nil/off.
func (*Client) SubmitRequest ¶
func (c *Client) SubmitRequest(request *RequestSubmission) error
SubmitRequest submits a new request for access to new zones
type Credentials ¶
Credentials used by the czds.Client
type DownloadInfo ¶
DownloadInfo information from the HEAD request from a DownloadLink
type FtpDetails ¶
type FtpDetails struct {
PrivateDataError bool `json:"privateDataError"`
}
FtpDetails contains FTP information for RequestsInfo
type HistoryEntry ¶
type HistoryEntry struct { Timestamp time.Time `json:"timestamp"` Action string `json:"action"` Comment string `json:"comment"` }
HistoryEntry contains a timestamp and description of action that happened for a RequestsInfo For example: requested, expired, approved, etc..
type Logger ¶ added in v1.2.9
type Logger interface {
Printf(format string, v ...interface{})
}
Logger specifies the methods required for the verbose logger for the API
type Request ¶
type Request struct { RequestID string `json:"requestId"` TLD string `json:"tld"` ULabel string `json:"ulable"` // UTF-8 decoded punycode, looks like API has a typo Status string `json:"status"` // should be set to one of the Request* constants Created time.Time `json:"created"` LastUpdated time.Time `json:"last_updated"` Expired time.Time `json:"expired"` // Note: epoch 0 means no expiration set SFTP bool `json:"sftp"` AutoRenew bool `json:"auto_renew"` }
Request holds information about a request in RequestsResponse from GetRequests()
type RequestSubmission ¶
type RequestSubmission struct { AllTLDs bool `json:"allTlds"` TLDNames []string `json:"tldNames"` Reason string `json:"reason"` TcVersion string `json:"tcVersion"` // terms and conditions revision version AdditionalFTPIps []string `json:"additionalFtfIps,omitempty"` }
RequestSubmission contains the information required to submit a new request with SubmitRequest()
type RequestsFilter ¶
type RequestsFilter struct { Status string `json:"status"` // should be set to one of the Request* constants Filter string `json:"filter"` // zone name search Pagination RequestsPagination `json:"pagination"` Sort RequestsSort `json:"sort"` }
RequestsFilter is used to set what results should be returned by GetRequests
type RequestsInfo ¶
type RequestsInfo struct { RequestID string `json:"requestId"` TLD *TLDStatus `json:"tld"` FtpIps []string `json:"ftpips"` Status string `json:"status"` // should be set to one of the Status* constants TcVersion string `json:"tcVersion"` Created time.Time `json:"created"` RequestIP string `json:"requestIp"` Reason string `json:"reason"` LastUpdated time.Time `json:"last_updated"` Cancellable bool `json:"cancellable"` Extensible bool `json:"extensible"` ExtensionInProcess bool `json:"extensionInProcess"` AutoRenew bool `json:"auto_renew"` Expired time.Time `json:"expired"` // Note: epoch 0 means no expiration set History []HistoryEntry `json:"history"` FtpDetails *FtpDetails `json:"ftpDetails"` PrivateDataError bool `json:"privateDataError"` }
RequestsInfo contains the detailed information about a particular zone request returned by GetRequestInfo()
type RequestsPagination ¶
RequestsPagination sets the page size and offset for paginated results for RequestsFilter
type RequestsResponse ¶
type RequestsResponse struct { Requests []Request `json:"requests"` TotalRequests int64 `json:"totalRequests"` }
RequestsResponse holds Requests from from GetRequests() and total number of requests that match the query but may not be returned due to pagination
type RequestsSort ¶
RequestsSort sets which field and direction the results for the RequestsFilter request should be returned with
type TLDStatus ¶
type TLDStatus struct { TLD string `json:"tld"` ULabel string `json:"ulable"` // UTF-8 decoded punycode, looks like API has a typo CurrentStatus string `json:"currentStatus"` // should be set to one of the Status* constants SFTP bool `json:"sftp"` }
TLDStatus is information about a particular TLD returned from GetTLDStatus() or included in RequestsInfo
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
Package jwt defines the JWT types used by the czds authentication API
|
Package jwt defines the JWT types used by the czds authentication API |