package
0.0.0-20250104143032-360b248952bc
Repository: https://github.com/timapril/go-registrar.git
Documentation: pkg.go.dev

# Functions

APIRespond sends the given response, ignoring possible errors.
AppendEPPActionLog will attempt to add the EPP log message to the list of log messages.
BootstrapRegistrar is used to preform the initial bootstrapping of the registrar system.
CompareDSDataEntries compares a list of DSDataEntries to another set of DSDataEntries that were from an export version of an object.
CompareHostAddressLists compares a list of HostAddresses to another set of HostAddresses that were from an export version of an object.
CompareToApproverExportShortLists compares a list of approver export objects to another set of approver exports.
CompareToApproverListExportShortList compares a list of approver sets to a set of approver sets that were from an export version of an object.
CompareToApproverSetExportShortLists compares two lists of approver set export short objects that were from an export version of an object.
CompareToApproverSetListToExportShort compares a list of approver sets to a set of approver sets that were from an export version of an object.
CompareToHostExportShortLists compares a list of host export objects to another list of host export objects.
CompareToHostListExportShortList compares a list of host list to a set of hosts that were from an export version of an object.
ConfigureLogging will prepare the logging infrastructure.
Create is a simple wrapper around gorm.Create.
CreateEPPRunRecord will attempt to add a new EPP run to the database and then return the Unique ID for that run to the client.
CreateNewIPAllowListRevision is used to create a new Host IP allow list in the database and if an error occurs during creation, it will be returned.
CreateNewProtectedDomainList is used to create a new Protected domain list in the database and if an error occurs during creation, it will be returned.
DBPing will time the round trip to the database for a connection and return the time.
DiffDomainDSData will take the DS records in the EPP response from the registry and the list of DS records that the registrar expects to be there and will return a list of the DS records that need to be added or removed from the from the registry.
DiffIPLists will take two lists of IP addresses represented as strings and compare the IPs to each other to deteremine which addresses need to be added or removed from the current list in order to match the expected list.
DiffIPsExport will take an epp response for a host and a host object from the registrar system and generate lists of the IP addresses to both add and remove for IPv4 and IPv6.
DomainExists will check if a domain name exists in the registrar system or not.
EndEPPRunRecord will attempt to mark an EPPRun record as completed in the database and return an error if the completion time could not be logged.
ErrsToStrings takes a list of error objects and converts them into a list of strings.
FlagDomainsRequiringRenewal will review all domains in the system that are active and will flag all domains that require renewal.
FuncNOPErrFunc simple noop callback for use with PrepareBase for PreprareShallow methods.
GenerateApprovalDownload is used to create an APIReponse object that has the apporval data and errors populated to be sent to the client.
GenerateErrorResponse will take a list of errors and create an APIReponse object indicating an error with the provided errors converted and set as the error list.
GenerateIDList will take an object type and a list of IDs and create the correct IDList APIResponse object to return to the client.
GenerateObjectResponse is used to prepare an APIResponse object that contains the object presented.
GenerateSignatureResponse will create a new APIResponse object with the SignatureResponse sub-object set.
GenerateSignatureUpload will create a new APIRequest object with the SignatureResponse sub-object set.
GenerateTokenResponse will create a new APIReponse object with the TokenResponse sub-object set.
GetActiveInactive is used to verify that a state submitted in an HTTP request is either "active" or "inactive".
GetActiveInactiveExternal is used to verify that a state submitted in a HTTP request is either "active", "inactive" or external.
GetActiveNewExternal is used to verify that a state submitted in a HTTP request is either "new" or "newexternal".
GetAllContacts returns a list of IDs for contats that are in the active or activepending approval states or requires work to be done on the contact.
GetAllDomains returns a list of IDs for domains that are in the active or activepending approval states or requires work to be done on the domain.
GetAllHostNamess will return a map from hostnames to IDs for the related host.
GetAllHosts returns a list of IDs for hosts that are in the active or activepending approval states or requires work to be done on the host.
GetAPIUser extracts the certificate from the headers provided by apache and will look for a current user that has a matching certificate.
GetAPIUserFromPEM takes a byte string containing a PEM encoded certificate and returns the API User associated with the certificate if there is only one API user that matches.
GetApproverSetExportArr converts an array of ApproverSets to an array of ApproverSetExportShort objects for exporting.
GetCertificate takes a byte string containing a PEM encoded certificate and returns returnes an x509.certificate object.
GetCertificateSerial takes a byte string containing a PEM encoded certificate and returns the serial number of the certificate if it can read the certificate.
GetCheckboxState is used to turn a checkbox value into a boolean.
GetConfig returns the instance of Config thats has been created if an instance has been created.
GetDefaultApproverSet - return the default approver.
GetDomainIDFromDomainName will attempt to find the domain ID for the domain name passed and return the domain ID.
GetEPPEncryptedPassphrase is used to get the encrypted passphrase for the username provided.
GetInformedApproverSets is a general implementation of lookup for ApproverSets.
GetIPAllowList will try to retrieve the current Host IP allow list from the database and return it.
GetMailHosts will resolve the MX records for a domain name and return the list of hosts sorted by preference if MX records are sent, otherwise the domain name is returned as a fallback A or AAAA record.
GetProtectedDomainList will try to retrieve the current Protected Domain list from the database and return it.
GetRemoteUser extracts the REMOTE_USER header from a HTTP Request and returns the username found.
GetRemoteUserEmail extracts the REMOTE_USER header from a HTTP request and returns the email address for the user.
GetRequiredApproverSets is a general implementation of lookup for ApproverSets.
GetServerLockChanges will attempt to generate a list of domains and server flags that need to be added or removed in order to complete changes.
GetValidApproverMap will return a map containing the Approvers email addresses and roles indexed by their Approver ID.
GetValidApproverSetMap will return a map containing the Approver set title and ID indexed by their Approver Set ID.
GetValidContactMap will return a map container the Host's title indexed by the host ID.
GetValidHostMap will return a map container the Host's title indexed by the host ID.
GetWorkContacts returns a list of IDs for contacts that require attention in the form of an update to the registry or other related information.
GetWorkDomains returns a list of IDs for domains that require attention in the form of an update to the registry or other related information.
GetWorkDomainsFull returns a list of Doamins that require work to be done or an error.
GetWorkDomainsPrepared will try and find all domains that require work to be done and then will prepare all of the domain objects.
GetWorkHosts returns a list of IDs for hosts that require attention in the form of an update to the registry or other related information.
GetWorkHostsFull returns a list of Hosts that require work to be done or an error.
HandleInProgress handles the case of an arbitrary interface.
HostnameExists checks to see if the hostname passed is currently the hostname associated with a current revision.
IsAdminUser is used to test if a user is an admin user.
IsRegisterableDomain will determine if the domain can be registered through the registrar system.
IsScopeUnchanged returns false if it is passed a scope that doesn't have a FieldHash compatible value, otherwise returns the value of IsScopeUnchanged.
Load will load rec from db iff rec is not already loaded.
LoadConfig will attempt to load the configuration at the path provided and will return the parsed config or an error.
LoadDB is used to start the connection to the database and set up logging as defined in the configuration file.
LoadTemplates will use the configuration provided and try to load the templates in that directory.
MigrateDBAPIUser will run the automigrate function for the Approver object.
MigrateDBAPIUserRevision will run the automigrate function for the APIUserRevision object.
MigrateDBApproval will run the automigrate function for the Approval object.
MigrateDBApprover will run the automigrate function for the Approver object.
MigrateDBApproverRevision will run the automigrate function for the ApproverRevision object.
MigrateDBApproverSet will run the automigrate function for the Approver Set object.
MigrateDBApproverSetRevision will run the automigrate function for the Approver Set Revision object.
MigrateDBChangeRequest will run the automigrate function for the Change Request and Approval objects.
MigrateDBContact will run the automigrate function for the Contact object.
MigrateDBContactRevision will run the automigrate function for the ContactRevision object.
MigrateDBControls will run the automigrate function for the separate controls that have been added.
MigrateDBDomain will run the automigrate function for the Domain object.
MigrateDBDomainRevision will run the automigrate function for the DomainRevision object.
MigrateDBHost will run the automigrate function for the Host object.
MigrateDBHostRevision will run the automigrate function for the HostRevision object.
MigrateDBLivenessCheck will run the automigrate function for the Liveness Check table and will also ensure that there is at least one row in the liveness check table.
MigrateEPPActionLog will run the automigrate function for the separate epp actions that have been added.
MustGetLogger wrapps the logging must get logging method that will get and return a logger object.
NewDBCache will create a new DBCache object from the provided db object.
NewDBCacheFactory will generate and return a new DBCacheFactory using the db objedct passed to initialize the factory.
NewEPPAction will gerenate and return a new EPPAction object.
NewRegistrarObject will return the object that is of the type of the object type passed.
NullInt64ConfirmEqual returns match indicating if a and b are equal.
ParseApprovers takes the http Request, a database connection and the html ID of the approver list to parse and will return an array of Approvers that correspond to each of the id's from the http request's html element.
ParseApproverSets takes the http Request, a database connection and the html ID of the approver set list to parse and will return an array of Approver Sets that correspond to each of the id's from the http request's html element.
ParseDSDataEntries takes a http Request, a database connection and the html ID of the ds data entry list to parse and will return an array of DSDataEntries that are represented in the http request.
ParseHostAddresses takes a http Request, a database connection and the html ID of the host address list to parse and will return an array of Host Addresses that are represented in the http request.
ParseHostList takes the http Request, a database connection and the HTML ID of the host list to parse and will return an array of Hosts that correspond to each of the IDs from the http request's html element.
PrepareBase implements the core logic of all of the Prepare* methods, returning immediately if the m.prepared is set, loading the base class only if is not already loaded, runs recursiveFunc, and if everything runs without errors, setting prepared to true.
RegisterableDomainSuffix will check to see if the domain is part of a zone that can be registered with registrar.
Save implements save logic broadly equivalent to gorm.DB.Save, but with smarter loop preventing logic.
SaveAfterAssociations from gorm/callback_shared.go, altered use our cycle handling Save function that only saves modified structs, (and trivially, our copies of their unexported shouldSaveAssociations and changeableField functions) Apart from that, a literal copy of the code gorm/callback_shared.go.
SaveBeforeAssociations from gorm/callback_shared.go, altered use our cycle handling Save function that only saves modified structs, (and trivially, our copies of their unexported shouldSaveAssociations and changeableField functions) Apart from that, a literal copy of the code gorm/callback_shared.go.
SendEmail takes a subject, message and a list of recipients and will attempt to send an email.
SetEPPEncryptedPassphrase is used to set the encrypted passphrase for the provided user to the encrypted passphrase included.
SetIPAllowList will attempt to set the host ip allow list in the database and if the list is not set it will be created.
SetProtectedDomainList will attempt to set the protected domain list in the database and if the list is not set it will be created TODO: Consider moving the db query into the dbcache object.
SetScopeHash will calculate a fieldHash for a scope containing a FieldHasher value.
StringsToErrs takes a list of strings and converts them into a list of errors.
TimeNow is the default now time function for all DB values, rounded to the second.
Update is a simple wrapper around gorm.Update.
UpdateApproverSets will update a set of approvers for an object that is passed in to make the list reflect the list passed as the third parameter.
UpdateDSDataEntries will update a set of DS Data Entries for a domain that is passed in to make the list reflect the list passed as the third parameter.
UpdateHostAddresses will update a set of host addresses for a host that is passed in to make the list reflect the list passed as the third parameter.
UpdateHosts will update a set of hosts for an object that is passed in to make the list reflect the list passed as the third parameter.
VerifyCR is a generic implemention of checks to make sure that all of the values and approvals within a change request match the approver that it is linked to, and that the CR is genreally well formed.
WHOISConfirmEmail will collect the required information to generate the WHOIS confimation emails as required by ICANN and then send the email.

# Constants

ActionApproved is used to incidate when an approval acction has taken place.
ActionCancel is used to indicate when the cancel action has been requested by a user.
ActionDeclined is used to indicate when approval has been declined for some action.
ActionGet is used to represent the API action where the current selected object is returned to the requestor.
ActionStartApproval is used to indicate when the start approval action has been requested by a user.
ActionTriggerUpdate is used to represent that a parent update should have its update state process triggered.
ActionUpdateEPPCheckRequired is used to represent that API action where the client is trying to unset the check_reqired field for an object.
ActionUpdateEPPInfo is used to reprsent the API action where the client is trying to update the EPP info of the object.
ActionUpdatePreview is used to represent that the requestor would like to update the preview fields for an object.
APIUserCertificate is the name that can be used to reference the Certificate field of the current apiuser revision.
APIUserDescription is the name that can be used to reference the Description field of the current apiuser revision.
APIUserName is the name that can be used to reference the Name field of the current apiuser revision.
APIUserObjectType is used to identify an APIResponse containing an api user object.
APIUserRevisionActionGOTOChangeRequest is the name of the action that will trigger a redirect to the current CR of an object.
APIUserRevisionObjectType is used to identify an APIResponse containing an api user revision object.
APIUserRevisionType is a string used to represent the API User revision object.
APIUserSerial is the name that can be used to reference the Serial field of the current apiuser revision.
APIUserType is a string used to represent the API User object.
ApprovalDownloadType is used to identify an APIResponse containing a ApprovalDownload object.
ApprovalObjectType is used to identify an APIResponse containing an approval object.
ApprovalType is the string used to represent the Approval object.
ApproverFieldDepartment is a name that can be used to reference the Department field of the current approver revision.
ApproverFieldEmailAddres is a name that can be used to reference the email address field of the current approver revision.
ApproverFieldEmployeeID is a name that can be used to reference the EmployeeID field of the current approver revision.
ApproverFieldFingerprint is a name that can be used to reference the Fingerprint field of the current approver revision.
ApproverFieldName is a name that can be used to reference the name field of the current approver revision.
ApproverFieldPublicKey is a name that can be used to reference the PublicKey field of the current approver revision.
ApproverFieldRole is a name that can be used to reference the role field of the current approver revision.
ApproverFieldUsername is a name that can be used to reference the username field of the current approver revision.
ApproverObjectType is used to identify an APIResponse containing an approver object.
ApproverRevisionActionGOTOChangeRequest is the name of the action that will trigger a redirect to the current CR of an object.
ApproverRevisionObjectType is used to identify an APIResponse containing an approver revision object.
ApproverRevisionType is the string used to represent the Approver Revision object.
ApproverSetFieldDescription is the name that can be used to reference the Description field of the current approver set revision.
ApproverSetFieldTitle is the name that can be used to reference the Title field of the current approver set revision.
ApproverSetObjectType is used to identify an APIResponse containing an approver set object.
ApproverSetRevisionActionCancel is the name of the action that will cancel an Approver Set Revision.
ApproverSetRevisionActionGOTOChangeRequest is the name of the action that will trigger a redirect to the current CR of an object.
ApproverSetRevisionActionStartApproval is the name of the action that will start the approval process for the Approver Set Revision.
ApproverSetRevisionObjectType is used to identify an APIResponse containing an approver set revision object.
ApproverSetRevisionType is the string used to represent the Approver Set Revision object.
ApproverSetType is the string used to represent the Approver Set object.
ApproverType is the string used to represent the Approver object.
CertAuthType indicates that the authentication type was a client certificate.
ChangeRequestObjectType is used to identify an APIResponse containing an change request object.
ChangeRequestType is the string used to represent the Change Request object.
ClientDeleteFlag is a name that can be used to reference the Client Delete field of the current revision.
ClientHoldFlag is a name that can be used to reference the Client Hold field of the current revision.
ClientRenewFlag is a name that can be used to reference the Client Renew field of the current revision.
ClientTransferFlag is a name that can be used to reference the Client Transfer field of the current revision.
ClientUpdateFlag is a name that can be used to reference the Client Transfer field of the current revision.
ContactFieldAddressCity is the name that is used to reference the address city field of the current contact revision.
ContactFieldAddressCountry is the name that is used to reference the address country field of the current contact revision.
ContactFieldAddressPostalCode is the name that is used to reference the address postal code field of the current contact revision.
ContactFieldAddressState is the name that is used to reference the address state field of the current contact revision.
ContactFieldAddressStreet1 is the name that is used to reference the address street 1 field of the current contact revision.
ContactFieldAddressStreet2 is the name that is used to reference the address street 2 field of the current contact revision.
ContactFieldAddressStreet3 is the name that is used to reference the address street 3 field of the current contact revision.
ContactFieldEmail is the name that is used to reference the email field of the current contact revision.
ContactFieldFaxExtension is the name that is used to reference the fax phone number extension.
ContactFieldFaxNumber is the name that is used to reference the fax number field of the current contact revision.
ContactFieldFullAddress is the name that is used to reference the full address of the current contact revision (made up of other address fields).
ContactFieldName is a name that can be used to reference the name field of the current contact revision.
ContactFieldOrg is the name that is used to reference the org field of the current contact revision.
ContactFieldVoiceExtension is the name that is used to reference the voice phone number extension.
ContactFieldVoiceNumber is the name that is used to reference the voice number field of the current contact revision.
ContactIDListType is used to identify an APIResponse containing a list of ContactIDs.
ContactObjectType is used to identify an APIResponse containing a contact object.
ContactRevisionActionGOTOChangeRequest is the name of the action that will trigger a redirect to the current CR of an object.
ContactRevisionObjectType is used to identify an APIResponse containing a contact revision object.
ContactRevisionType is the string used to represent the Contact Revision object.
ContactType is the string used to represent the Contact object.
DBTypeMySQL is a constant to describe a MySQL database type.
DBTypePostgres is a constant to describe a postgres database type.
DBTypeSqlite is a constant to describe a sqlite database type.
DesiredStateActive is the name that can be used to reference the desired state of active when checking for a suggested value.
DesiredStateExternal is the name that can be used to reference the desired state of external when checking for a suggested value.
DesiredStateInactive is the name that can be used to reference the desired state of inactive when checking for a suggested value.
DomainClassHighValue is used to represent domains that are high value domains for a customer.
DomainClassInUse is used to reprsent domains that are in use but not to the level that require registry locks.
DomainClassOther is a pseudo class for domains that have classes that are not defined above.
DomainClassParked is used to represent the domain class for domains that are owned but and parked.
DomainFieldClass is a name that can be used to reference the domain class of the current domain revision.
DomainFieldDomainAdminContact is a name that can be used to reference the domain admin contact id field of the current domain revision.
DomainFieldDomainBillingContact is a name that can be used to reference the domain billing contact id field of the current domain revision.
DomainFieldDomainRegistrant is a name that can be used to reference the domain registrant id field of the current domain revision.
DomainFieldDomainTechContact is a name that can be used to reference the domain technical contact id field of the current domain revision.
DomainFieldName is a name that can be used to reference the name field of the current domain revision.
DomainFieldOwners is a name that can be used to reference the owners field of the current domain revision.
DomainIDListType is used to identify an APIResponse containing a list of DomainIDs.
DomainObjectType is used to identify an APIResponse containing a domain object.
DomainRevisionActionGOTOChangeRequest is the name of the action that will trigger a redirect to the current CR of an object.
DomainRevisionObjectType is used to identify an APIResponse containing a domain revision object.
DomainRevisionType is the string used to represent the Host Revision object.
DomainType is the string used to represent the Host object.
EPPLogActionDomainAddDSRecord represents the action where an EPP Update request has been made for a domain where the DS records are altered.
EPPLogActionDomainAddHosts represents the action where an EPP Update request has been made for a domain where the hosts are altered.
EPPLogActionDomainAddStatuses represents the action where an EPP Update request has been made for a domain where the statuses are altered.
EPPLogActionDomainAvailable represents the action where an EPP Available request has been made for a domain.
EPPLogActionDomainChangeAuthInfo represents the action where an EPP Update request has been made for a domain to change its AuthInfo field.
EPPLogActionDomainCreate represents the action where an EPP Create request has been made for a domain.
EPPLogActionDomainDelete represents the action where an EPP Delete request has been made for a domain.
EPPLogActionDomainInfo represents the action where an EPP Info request has been made for a domain.
EPPLogActionDomainRemoveDSRecord represents the action where an EPP Update request has been made for a domain where the DS records are altered.
EPPLogActionDomainRemoveHosts represents the action where an EPP Update request has been made for a domain where the hosts are altered.
EPPLogActionDomainRemoveStatuses represents the action where an EPP Update request has been made for a domain where the statuses are altered.
EPPLogActionDomainRenew represents the action where an EPP Renew request has been made for a domain.
EPPLogActionDomainSync represents the action where an EPP Sync request has been made for a domain to change its expiration date.
EPPLogActionDomainTransferApprove represents the action where an EPP Transfer Approve request has been made for a domain.
EPPLogActionDomainTransferQuery represents the action where an EPP Transfer Query request has been made for a domain.
EPPLogActionDomainTransferReject represents the action where an EPP Transfer Reject request has been made for a domain.
EPPLogActionDomainTransferRequest represents the action where an EPP Transfer Request request has been made for a domain.
EPPLogActionHello represents the action where an EPP Hello has happened.
EPPLogActionHostAvailable represents the action where an EPP Available request has been made for a host.
EPPLogActionHostCreate represents the action where an EPP Create request has been made for a host.
EPPLogActionHostDelete represents the action where an EPP Delete request has been made for a host.
EPPLogActionHostInfo represents the action where an EPP Info request has been made for a host.
EPPLogActionHostUpdate represents the action where an EPP Update request has been made for a host.
EPPLogActionLogin represents the action where an EPP Login has happened.
EPPLogActionLogout represents the action where an EPP Logout has happened.
EPPLogActionPoll represents the action where an EPP Poll has happened.
EPPLogActionPollAck represents the action where an EPP Poll has been acked.
ErrorResponseType is used to identify an APIResponse containing an error(s).
EventApprovalFailed is used to represent when an object has failed the approval process.
EventApprovalStarted is used to represent when an object has started the approval process.
EventPromoted is used to represent when an object has completed the approval process successfully.
EventSuperseded is used to represent when an object has been superseded by a later object.
EventUpdated is used to represent when an object is update.
HostFieldName is a name that can be used to reference the name field of the current host revision.
HostIDListType is used to identify an APIResponse containing a list of HostIDs.
HostIPAllowList is used to identify an APIResponse containing a list of IPs which correspond to registrar controlled nameserver IPs TODO: inclusive language edit.
HostnameListType is used to identify an APIResponse containing a map of hostnames to IDs.
HostObjectType is used to identify an APIResponse containing a host object.
HostRevisionActionGOTOChangeRequest is the name of the action that will trigger a redirect to the current CR of an object.
HostRevisionObjectType is used to identify an APIResponse containing a host revision object.
HostRevisionType is the string used to represent the Host Revision object.
HostType is the string used to represent the Host object.
ProtectedDomainList is used to identity an APIResponse containing a list of domains which are protected and suggest extra review before provisioning.
RemoteUserAuthType indicates that the authentication type was a remote user header.
SavedObjectNote is the name that can be used to reference the saved object note for a revision.
ServerDeleteFlag is a name that can be used to reference the Server Delete field of the current revision.
ServerHoldFlag is a name that can be used to reference the Server Hold field of the current revision.
ServerRenewFlag is a name that can be used to reference the Server Renew field of the current revision.
ServerTransferFlag is a name that can be used to reference the Server Transfer field of the current revision.
ServerUpdateFlag is a name that can be used to reference the Server Transfer field of the current revision.
SignatureDownloadType is used to identify an APIResponse containing a SignatureRequest object.
SignatureUploadType is used to identify an APIRequest containing a SignatureRequest object.
StateActive is used to indicate that an object is currently active or in the case that it is the value of DesiredState, the state which the parent object should be in if approved.
StateActivePendingApproval is used to indicate that an object is currently active but pending approval.
StateApprovalFailed is used to indicate that the approval process for a revision has failed for some reason.
StateApproved is used to incidate that the approval for an object has completed successfully.
StateBootstrap is used to incidate that an object is being used to start the system for the first time.
StateCancelled is used to incidate that the approval process for the object revision has been cancelled.
StateDeclined is used to indicate that the change request for a revision has been declined by at least one Approver Set.
StateExternal is used to indicate that an object is currently external or in the case that it is the value of DesiredState, the state which the parent object should be in if approved.
StateExternalPendingApproval is used to indicate that an object is currently external but pending approval.
StateImplemented is used to indicate that a Change Request has been approved and all implementation steps have completed.
StateInactive is used to indicate that an object is currently inactive or in the case that it is the value of DesiredState, the state which the parent object should be in if approved.
StateInactiveApproverSet is used to indicate that the Approver set required for an Approval is in an Inactive state at the time.
StateInactivePendingApproval is used to indicate that an object is currently inactive but pending approval.
StateNew is used to indicate that an object has been created but not submitted for approval (in the case of a revision), no revisions have been submitted (in the case of a parent object) or an approval that has not started (in the case of an Approval).
StateNewExternal is used to indicate that an object is currently new but will be external when the first approval is completed.
StateNoValidApprovers is used to indicate that there are no valid Approvers within the Approver Set that is required for an Approval.
StatePendingApproval is used to indicate that an object is waiting on approvals to be completed.
StatePendingBootstrap is used to indicate that an object is waiting for a bootstrap approval to be completed.
StatePendingNew is used to indicate parent objects that have a revision that has been submitted and now current revision.
StatePendingNewExternal is used to indicate parent objects that have a revision that has been submitted and now current revision.
StateSkippedInactiveApproverSet is used to indicate that the Approver set required for an Approval was not in an active state after all other available approver sets had completed the approval process.
StateSkippedNoValidApprovers is used to indicate that there were no valid approvers for an Approver Set when the Change Request was fully approved (for a Change Request to be approved, at least one Approval must be approved).
StateSuperseded is used to indicate that a new revision has been approved and is now the current revsion.
TokenResponseType is used to identify an APIResponse containing a TokenResponse object.
UnknownObjectTypeError indicates the passed type is not supported.
UnPreparedAPIUserError is the text of an error that is displayed when a apiuser has not been prepared before use.
UnPreparedApproverError is the text of an error that is displayed when a approver has not been prepared before use.
UnPreparedContactError is the text of an error that is displayed when a contact has not been prepared before use.
UnPreparedDomainError is the text of an error that is displayed when a domain has not been prepared before use.
UnPreparedHostError is the text of an error that is displayed when a host has not been prepared before use.

# Variables

DNSSECAlgorithms is a map of DNSSEC algorithm type IDs to the algorithm name as defined by IANA Source: http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml IANA Page Last Updated: 2014-03-31.
DNSSECDigestTypes is a map of DNSSEC digest types to the digest name as defined by IANA Source: http://www.iana.org/assignments/ds-rr-types/ds-rr-types.xhtml IANA Page Last Updated: 2012-04-13.
EPPStatusAdditionalDSRecords represents the state where DS records exist in the registry but not in the configured state.
EPPStatusClientFlagMismatch represents the state where client flags need to be changed.
EPPStatusHostMismatch represents the state where the list of hosts at the registry does not match the requested state.
EPPStatusMissingDSRecords represents the state where DS not all of the requested DS records are present in the registry.
EPPStatusPendingChange represents the state where a change needs to be made to a host.
EPPStatusPendingRenew represents the state where a domain is pending renewal.
EPPStatusProvisioned represents a domain that has been successfully provisioned.
EPPStatusServerFlagsMismatch represents the state where a domain has incorrect server flags.
ErrAPIUserMayNotBeDirectlyUpdated indicates that the APIUser object may not be directly updated.
ErrDatabaseCertPathNotSet is used to indicate that the cert path for the application to communicate with the database is missing.
ErrDomainContactNotSet is returned when a domain contact is not set when parsing a domain revision update.
ErrExcessAPIKeysLocated indicates that more than 1 apiuser was found with the same API key.
ErrIDNotSet indicates that an object ID was not set when it should be.
ErrNoAPIUsersForKey indicates that no APIUser was found for the provided key.
ErrNoCSRFFound is an error that is used when no valid CSRF token is found when a token is required for the action.
ErrNoCurrentRevision is returned if there is no current revision.
ErrNoDefaultApprover indicates that no default approver was located.
ErrPendingRevisionInInvalidState indicates the object is in an unexpected state.
ErrUnableToHandleState indicates that the service is unable to handle the current state.
ErrUnableToParseDSDataEntry defines the error returned when a DS Data entry is not able to be parsed.
ErrUnableToParseHostAddress defines the error returned when a host address is not able to be parsed.
ErrUnableToSelectMaxIndex is used to indicate that there was an error finding the maximum secret index for the certificates.
ErrUpdateStateNotImplemented indicates that the current state of an object is not supported by its updateState method.
ValidSuffixList contains a list of all valid zones for which domains can be registered.

# Structs

APIRequest is an object that is populated when a client is making a request to the api entry point.
APIResponse is an object that is populated when responding to an API request.
APIRevisionHint is used to provide a hint to the clients of which object revision is current for each current object.
APIUser is an object that represents a API account that may be used to query the registrar system without being an authenticated employee.
APIUserExportFull is an object that is used to export the current state of an API User object.
APIUserExportShort is an object that is used to export the current state of an APIUser object.
APIUserPage is used to hold all the information required to render the APIUser HTML template.
APIUserRevision represents individual versions of an APIUser object.
APIUserRevisionExport is an object that is used to export the current version of an APIUser Revision.
APIUserRevisionPage are used to hold all the information required to render the APIUserRevision HTML template.
The APIUserRevisionsPage type is used to render the html template which lists all of the APIUserRevisions currently in the registrar system.
APIUsersPage is used to render the html template which lists all of the APIUsers currently in the registrar system.
Approval holds the data associated with getting a Change Request approved by a member of an Approver Set.
ApprovalAttestation is used to create the object that is exported and presented to an Approver so they can either approve or decline an approval.
ApprovalAttestationUnmarshal allows the Approval Attestations to be unpacked knowing that multiple types may be present.
ApprovalDownload is used to transmit a unsigned approval object over an APIResponse.
ApprovalExport is an object that is used to export the current state of an Approval object.
ApprovalPage is used to hold all the information required to render the Approval HTML Template.
ApprovalsPage is used to render the HTML template which lists a group of approvals.
Approver is an object that represents an individual that may be used to approve changes within the registrar system.
ApproverExportFull is an object that is used to export the current state of an approver object.
ApproverExportShort is an object that is used to export the current state of an approver object.
ApproverPage is used to hold all the information required to render the Appprover HTML template.
ApproverRevision represents individual versions of an Approver object.
ApproverRevisionExport is an object that is used to export the current version of an Approver Revision.
ApproverRevisionPage are used to hold all the information required to render the AppproverRevision HTML template.
The ApproverRevisionsPage type is used to render the html template which lists all of the AppproverRevisions currently in the registrar system.
ApproverSet objects are used to group similar approvers together to allow equivalence classes of Approvers (increasing availability).
ApproverSetDisplayObject is used to bundle the dispaly name and the approver set ID as one object to be passed into a template.
ApproverSetExportFull is an object that is uesd to export the current snapshot of an Approver Set object.
ApproverSetExportShort is an object that is used to expor the current snapshot of an Approver Set object.
ApproverSetPage is used to hold all the information required to render the Approver Set HTML template.
ApproverSetRevision represents an individual version of an Approver Set object.
ApproverSetRevisionExport is an object that is used to export the current version of an Approver Set Revision.
ApproverSetRevisionPage are used to hold all the information required to render the ApproverSetRevision HTML template.
The ApproverSetRevisionsPage type is used to render the html template which lists all of the AppproverSetRevisions currently in the registrar system TODO: Add paging support.
ApproverSetsPage is used to render the html template which lists all of the Approvers currently in the registrar system.
ApproversPage is used to render the html template which lists all of the Approvers currently in the registrar system.
ChangeRequest is an object that represents a desired change in an object.
ChangeRequestExport is an object that is used to export the current state of a ChangeRequest object.
ChangeRequestPage is used to hold all the information required to render the Change Reuqest HTML template.
ChangeRequestsPage is used to render the html template which lists all of the Change Requests currently in the registrar system TODO: Add paging support TODO: Add filtering support.
A Config object holds the runtime configuration parameters set in the configuration file which is read at startup.
Contact is an object that represents the state of a registrar contact object as defined by RFC 5733 http://tools.ietf.org/html/rfc5733.
ContactExport is an object that is used to export the current state of a contact object.
ContactExportShort is an object that is used to expor the current snapshot of an Contact object.
ContactPage is used to hold all the information required to render the Contact HTML page.
ContactRevision represents individual versions of a Contact Object.
ContactRevisionExport is an object that is used to export the current version of a Contact Revision.
ContactRevisionPage are used to hold all the information required to render the ContactRevision HTML template.
The ContactRevisionsPage type is used to render the html template which lists all of the ContactRevisions currently in the registrar system TODO: Add paging support.
ContactsPage is used to hold all the information required to render the Contact HTML page.
DBCache is a write through caching layer for the registrar system to allow objects to be cached on the server side for each request rather than having to contact the database for each request.
DBCacheFactory is used to generate new DBCache objects for requests.
Domain is an object that represents the state of a registrar domain object as defined by RFC 5731 http://tools.ietf.org/html/rfc5731.
DomainExport is an object that is used to export the current state of a Domain object.
DomainPage is used to hold all the information required to render the Domain HTML page.
DomainRevision represents individual versions of a Domain Object.
DomainRevisionExport is an object that is used to export the current version of a Domain Revision.
DomainRevisionPage are used to hold all the information required to render the DomainRevision HTML template.
The DomainRevisionsPage type is used to render the html template which lists all of the DomainRevisions currently in the registrar system TODO: Add paging support.
DomainsPage is used to hold all the information required to render the Domain HTML page.
DSDataEntry is an object that will hold a single DS Data entry used to indicate how a domain is signed with DNSSEC.
DSDataEntryEpp is an object that will hold a single DS Data entry used to indicate how a domain is signed with DNSSEC.
EPPAction is used to store log infomration about an EPP action that has been taken.
EPPEncryptedPassphrase is used to store the encrypted passphrases for the EPP accounts associated with the registrar.
EPPRun is a record that is used to identify unique EPP sessions to ensure that the client transaction IDs for each epp command are unique.
Host is an object that represents the state of a registrar host object as defined by RFC 5732 http://tools.ietf.org/html/rfc5732.
HostAddress is an object that will hold an IP address and the prodocol that the address is from (IPv4 / IPv6).
HostAddressEpp is an object that will hold an IP address and the prodocol that the address is from (IPv4 / IPv6).
HostExport is an object that is used to export the current state of a host object.
HostExportShort is an object that is used to export the current state of a host object.
HostPage is used to hold all the information required to render the Host HTML page.
HostRevision represents individual versions of a Host Object.
HostRevisionExport is an object that is used to export the current version of a Host Revision.
HostRevisionPage are used to hold all the information required to render the HostRevision HTML template.
The HostRevisionsPage type is used to render the html template which lists all of the HostRevisions currently in the registrar system TODO: Add paging support.
HostsPage is used to hold all the information required to render the Host HTML page.
IPAllowListRevision represents a list of IPs that correspond to NameServers in control of the registrar.
LivenessCheck is a table that is used to get a known value when the GTM liveness check is issued.
No description provided by the author
Model is a base type for our gorm objects, it is the basis for many of the utility functions.
A NotExportableObject is used when trying to fully implement a Registrar object but do not want to create exportable versions of the object.
ProtectedHostnameListRevision is a list of domains that encourage extra attention when changes are being made.
SignatureResponse is used to transmit a signed approval object from the server to the client.
TokenResponse is the object that is populated when a request is sent for a CSRF token over the api.

# Interfaces

FieldHasher is the public interface field hashing routines in Model.
Modeler interface for any struct implements GetModel, which is to say any struct that embeds Model.
ProgressHandler is a simple interface for the HandleInProgress method.
RegistrarApprovalable is an interface that is used for objects that may have revisions and can be used to get information related to the current state of a revision.
RegistrarCRObject is an implementation extension RegistrarApprovalable that includes methods for loading objects and other functions.
RegistrarObject is defined to allow shared CRUD tasks within a single application.
RegistrarObjectExport is an interface that can be used to create a diff or json for export to be used in signing or verification operations.
RegistrarObjectPage is an interface that is used to define methods that can be used to help generate HTML templates.
RegistrarParent is an interface that represents a parent object where the child revision can be found.
A RevisionModeler is a abstration of a revision model to a general purpose GetRequiredApproverSets and GetInformedApproverSets to be written for all base types (e.g.

# Type aliases

AuthType is a type that is used to describe the authentication type that was used for the request that has triggered the action.
CompareLoadFn is a callback function type that loads values into the provided RegistrarObjectExport.
CompareReturnFn is callback function returned by ComparePendingToCallback.
SignatureUpload is used to transmit a signed approval object from a client to the server.