๐Ÿ‡น๐Ÿ‡ซ .tf โ€” French Southern Territories

The .tf is a country-code top-level domain (ccTLD) operated by AFNIC (Association Franรงaise pour le Nommage Internet en Coopรฉration). This article documents the technical, operational, and contractual requirements for the TLD, along with special considerations for registry, registrar, and domain management.

General Information

Property Value
TLD Type ccTLD
Registry AFNIC (Association Franรงaise pour le Nommage Internet en Coopรฉration)
Registry Country France
Registry Website www.afnic.fr
Provisioning Protocol EPP
Second-Level Registration โœ… Yes
Accreditation Required โœ… Yes

Domain Lifecycle

Property Value
Registration Period 1โ€“10 years
Renewal Period 1โ€“10 years
Transfer Renewal Period 1 year
Deletion Policy Immediate
Auto-Renew Enabled โœ… Yes
Auto-Renewal Before Expiry 7 days before expiration
Sync After Operations registration, renewal, transfer

Grace periods

Period Duration
Add Grace Period 5 days
Standard Grace Period 0 days
Redemption Period 30 days
Pending Restore 7 days
Pending Delete 0 days

Launch Phases & Availability

Property Value
General Availability โœ… TLD is live
TMCH / Trademark Claims โŒ No

Domain Characteristics

Property Value
Domain Length 1โ€“63 characters
IDN Support โœ… Yes
Premium Domains โŒ No
Reserved Domains โŒ No
Registry Lock โŒ No

Contacts & Roles

Property Value
Required Contacts Domain Owner, Administrator, Technical Contact
Supported Roles Domain Owner, Administrator, Technical Contact
Thick WHOIS โœ… Yes
Privacy Proxy Allowed โŒ No
Contacts Transferable โŒ No
Allowed Postal Types Local
AuthInfo Required โœ… Yes (12โ€“63 characters)

Nameservers & DNS

Property Value
Nameserver Count 0โ€“8
Host Objects Allowed โœ… Yes
Registry Nameserver Check โŒ No
DNSSEC Allowed โœ… Yes
DNSSEC Required โŒ No
DNSSEC Mode DS
CZDS (Zone Download) โŒ No

Transfer Policy

Property Value
Transfer Lock Enabled โœ… Yes (60 days after registration; 60 days after transfer)
Transfer Duration 8 days
Transfer Extends Domain โœ… Yes (+1 year)
Transfer via AuthInfo โœ… Yes
Confirmation Required โœ… Yes (registrar)

WHOIS & RDAP

Property Value
WHOIS Server whois.nic.tf
RDAP Server rdap.nic.tf

Dispute Resolution

Property Value
Dispute Resolution Available โŒ No

Contact Attributes

AFNIC models every contact as either a natural person (PP โ€” personne physique) or a legal entity (PM โ€” personne morale), and that choice decides which of the remaining attributes apply.

Two things set the AFNIC TLDs apart from most ccTLDs:

  • the attributes are required on every contact role โ€” registrant, administrative, and technical โ€” not on the registrant alone;
  • the roles do not have to agree. A PP registrant with a PM technical contact is a normal .tf registration.
Attribute Type Required Applies to Allowed values
AFNIC_CONTACT_TYPE Enum โœ… Required Every role PP (natural person) or PM (legal entity)

Natural person (PP)

Attribute Type Required Allowed values
AFNIC_PP_FIRST_NAME String โœ… Required The contact's first name. It is sent to AFNIC in addition to the standard name field, which carries the full name
AFNIC_ID_STATUS Enum โž– Optional ok, no, pending, problem, ko, deprecated, control, delayed
AFNIC_REACHABLE_MEDIA Enum โž– Optional email or voice โ€” the channel through which the registrant was reached
AFNIC_REACHABLE_STATUS Boolean โž– Optional Whether that channel was confirmed

AFNIC_REACHABLE_STATUS is only sent to the registry when AFNIC_REACHABLE_MEDIA is set alongside it โ€” a status on its own is dropped, because AFNIC carries the confirmation as an attribute of the channel.

Attribute Type Required Allowed values
AFNIC_PM_LEGAL_STATUS Enum โœ… Required company, association, or other
AFNIC_PM_SIREN String โž– Optional SIREN or SIRET number from the French business register
AFNIC_PM_VAT String โž– Optional European VAT number
AFNIC_PM_TRADEMARK String โž– Optional Trademark registration number
AFNIC_PM_DUNS Integer โž– Optional D-U-N-S number
AFNIC_PM_LOCAL String โž– Optional Identifier from another official register, for an entity that has none of the above
AFNIC_ID_STATUS Enum โž– Optional Same values as for a natural person

The five identifiers apply to the company and other legal statuses. An entity may supply several; AFNIC accepts them together.

Associations

An association identifies itself through its WALDEC number, or through its publication in the Journal Officiel โ€” one of the two is mandatory, and a create that carries neither is rejected before it reaches the registry.

Attribute Type Required Allowed values
AFNIC_PM_ASSOC_WALDEC String โž– Conditional WALDEC number of the association
AFNIC_PM_ASSOC_PUBL_DATE Datetime โž– Conditional Date of publication in the Journal Officiel
AFNIC_PM_ASSOC_PUBL_PAGE Integer โž– Conditional Page of that publication
AFNIC_PM_ASSOC_PUBL_ANNOUNCE Integer โž– Optional Announcement number within the publication
AFNIC_PM_ASSOC_DECL Datetime โž– Optional Date the association was declared

Supply either AFNIC_PM_ASSOC_WALDEC, or AFNIC_PM_ASSOC_PUBL_DATE together with AFNIC_PM_ASSOC_PUBL_PAGE. When a WALDEC number is present it is what gets sent, and the publication attributes are ignored. AFNIC_PM_ASSOC_DECL and AFNIC_PM_ASSOC_PUBL_ANNOUNCE only add detail to the publication route; neither satisfies the requirement on its own.

{
  "type": "policy-validation-error",
  "title": "Policy Validation Error",
  "status": 422,
  "code": "ERROR_POLICY_VALIDATION",
  "detail": "PM association requires AFNIC_PM_ASSOC_WALDEC or (AFNIC_PM_ASSOC_PUBL_DATE + AFNIC_PM_ASSOC_PUBL_PAGE)"
}

Registry-managed attributes

Attribute Type Allowed values
AFNIC_RESTRICTED_PUBLICATION Boolean Whether AFNIC restricts publication of the contact's details

AFNIC_RESTRICTED_PUBLICATION is read back from AFNIC when a contact is imported or read; it is not sent on a contact create, so setting it on an attribute set has no effect.

Example attribute sets

A natural person:

curl "$OPUSDNS_API_BASE/v1/contacts/attribute-sets" \
  --request POST \
  --header "X-Api-Key: $OPUSDNS_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "label": "TF registrant - individual",
    "tld": "tf",
    "attributes": {
      "AFNIC_CONTACT_TYPE": "PP",
      "AFNIC_PP_FIRST_NAME": "Pierre"
    }
  }'

An association identified by its Journal Officiel publication:

curl "$OPUSDNS_API_BASE/v1/contacts/attribute-sets" \
  --request POST \
  --header "X-Api-Key: $OPUSDNS_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "label": "TF registrant - association",
    "tld": "tf",
    "attributes": {
      "AFNIC_CONTACT_TYPE": "PM",
      "AFNIC_PM_LEGAL_STATUS": "association",
      "AFNIC_PM_ASSOC_PUBL_DATE": "2015-03-14T00:00:00Z",
      "AFNIC_PM_ASSOC_PUBL_PAGE": 118
    }
  }'

โš ๏ธ Reusing one contact for every role? AFNIC_CONTACT_TYPE is required on the administrative and technical contacts too, not only the registrant. A create that carries it on the registrant alone is rejected before it reaches the registry:

{
  "type": "policy-validation-error",
  "title": "Policy Validation Error",
  "status": 422,
  "code": "ERROR_POLICY_VALIDATION",
  "errors": [
    {
      "detail": "Attribute 'AFNIC_CONTACT_TYPE' is required for admin contacts",
      "pointer": "contacts.admin[0].attributes.AFNIC_CONTACT_TYPE"
    }
  ],
  "detail": "Policy validation failed"
}

These constraints are machine-readable: each possible_attributes entry returned by GET /v1/tlds/tf carries its own type, values, required, contact_roles, and conditions fields. Build forms from the specification rather than hard-coding the PP/PM split.

Contact handles

AFNIC assigns contact handles itself โ€” a handle cannot be chosen when creating a contact, and an existing AFNIC handle cannot be adopted through the API.

Transfers and registrant changes

The registrant is not part of a .tf transfer request: an inbound transfer keeps the registrant the domain already has at the registry. The administrative and technical contacts are supplied with the transfer as usual.

To move a domain to a different holder, transfer it first and then change the registrant with a domain update โ€” .tf supports a registrant change through PATCH /v1/domains/{domain_reference}.