Name = "Akamai EdgeDNS"
Description = '''
Akamai edgedns supersedes FastDNS; implementing a DNS provider for solving the DNS-01 challenge using Akamai EdgeDNS
'''
URL = "https://www.akamai.com/us/en/products/security/edge-dns.jsp"
Code = "edgedns"
Aliases = ["fastdns"] # "fastdns" is for compatibility with v3, must be dropped in v5
Since = "v3.9.0"

Example = '''
AKAMAI_CLIENT_SECRET=abcdefghijklmnopqrstuvwxyz1234567890ABCDEFG= \
AKAMAI_CLIENT_TOKEN=akab-mnbvcxzlkjhgfdsapoiuytrewq1234567 \
AKAMAI_HOST=akab-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.luna.akamaiapis.net \
AKAMAI_ACCESS_TOKEN=akab-1234567890qwerty-asdfghjklzxcvtnu \
lego --email you@example.com --dns edgedns -d '*.example.com' -d example.com run
'''

Additional = '''
Akamai's credentials are automatically detected in the following locations and prioritized in the following order:

1. Section-specific environment variables (where `{SECTION}` is specified using `AKAMAI_EDGERC_SECTION`):
  - `AKAMAI_{SECTION}_HOST`
  - `AKAMAI_{SECTION}_ACCESS_TOKEN`
  - `AKAMAI_{SECTION}_CLIENT_TOKEN`
  - `AKAMAI_{SECTION}_CLIENT_SECRET`
2. If `AKAMAI_EDGERC_SECTION` is not defined or is set to `default`, environment variables:
  - `AKAMAI_HOST`
  - `AKAMAI_ACCESS_TOKEN`
  - `AKAMAI_CLIENT_TOKEN`
  - `AKAMAI_CLIENT_SECRET`
3. `.edgerc` file located at `AKAMAI_EDGERC`
  - defaults to `~/.edgerc`, sections can be specified using `AKAMAI_EDGERC_SECTION`
4. Default environment variables:
  - `AKAMAI_HOST`
  - `AKAMAI_ACCESS_TOKEN`
  - `AKAMAI_CLIENT_TOKEN`
  - `AKAMAI_CLIENT_SECRET`

See also:

- [Setting up Akamai credentials](https://developer.akamai.com/api/getting-started)
- [.edgerc Format](https://developer.akamai.com/legacy/introduction/Conf_Client.html#edgercformat)
- [API Client Authentication](https://developer.akamai.com/legacy/introduction/Client_Auth.html)
- [Config from Env](https://github.com/akamai/AkamaiOPEN-edgegrid-golang/blob/master/pkg/edgegrid/config.go#L118)
- [Manage many accounts](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client)
'''

[Configuration]
  [Configuration.Credentials]
    AKAMAI_HOST = "API host, managed by the Akamai EdgeGrid client"
    AKAMAI_CLIENT_TOKEN = "Client token, managed by the Akamai EdgeGrid client"
    AKAMAI_CLIENT_SECRET = "Client secret, managed by the Akamai EdgeGrid client"
    AKAMAI_ACCESS_TOKEN = "Access token, managed by the Akamai EdgeGrid client"
    AKAMAI_EDGERC = "Path to the .edgerc file, managed by the Akamai EdgeGrid client"
    AKAMAI_EDGERC_SECTION = "Configuration section, managed by the Akamai EdgeGrid client"
  [Configuration.Additional]
    AKAMAI_ACCOUNT_SWITCH_KEY = "Target account ID when the DNS zone and credentials belong to different accounts"
    AKAMAI_POLLING_INTERVAL = "Time between DNS propagation check in seconds (Default: 15)"
    AKAMAI_PROPAGATION_TIMEOUT = "Maximum waiting time for DNS propagation in seconds (Default: 180)"
    AKAMAI_TTL = "The TTL of the TXT record used for the DNS challenge in seconds (Default: 120)"

[Links]
  API = "https://developer.akamai.com/api/cloud_security/edge_dns_zone_management/v2.html"
  GoClient = "https://github.com/akamai/AkamaiOPEN-edgegrid-golang"


