From ac3dccd27c8f2de325fde1394c92a6091f27555c Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Sun, 2 Aug 2026 15:29:36 -0500 Subject: convert readme to nfo; convert docs to txt; relicense to 0bsd --- API.md | 797 ----------------------------------------------------------------- 1 file changed, 797 deletions(-) delete mode 100644 API.md (limited to 'API.md') diff --git a/API.md b/API.md deleted file mode 100644 index 74c231c..0000000 --- a/API.md +++ /dev/null @@ -1,797 +0,0 @@ -API Documentation ------------------ - -API Endpoint: **https://njal.la/api/1/** -Requests follow the JSON-RPC 2.0 protocol. -You can use session cookies or token based authentication. -POST JSON body to the API Endpoint: - - { - "jsonrpc": "2.0", - "method": "...", - "params": {...}, - "id": "123" - } - -and you will get a JSON response. Success: - - { - "jsonrpc": "2.0", - "result": {}. - "id": "123" - } - -or error: - - { - "jsonrpc": "2.0", - "error": { - "code": 0 - "message": "" - }, - "id": "123" - } - -Example using python requests - - import requests - - def njalla(method, **params): - url = 'https://njal.la/api/1/' - token = '' - headers = { - 'Authorization': 'Njalla ' + token - } - response = requests.post(url, json={ - 'method': method, - 'params': params - }, headers=headers).json() - if 'result' not in response: - raise Exception('API Error', response) - return response['result'] - - - print(njalla('list-domains')) - print(njalla('get-domain', domain='example.com')) - - -Example using curl - - NJALLA_TOKEN='' - curl -s \ - -H "Accept: application/json" \ - -H "Content-Type: application/json" \ - -H "Authorization: Njalla ${NJALLA_TOKEN}" \ - --data '{"method":"get-domain", "params": {"domain": "exampe.com"}}' \ - https://njal.la/api/1/ - - -api -=== - -add-token - -Add a new API token - - params: { - comment: string (optional) - from: [string] (optional) array of IPv4 or IPv6 IPs or networks - that are allowed to use the token. - i.e.: ['8.8.8.8', '192.168.0.0/24'] - allowed_domains: [string] (optional) restrict token to subset of your domains - allowed_servers: [string] (optional) restrict token to subset of your servers by id - allowed_methods: [string] (optional) restrict token to subset of possible API calls - allowed_prefixes: [string] (optional) restrict token to DNS record name prefixes - allowed_types: [string] (optional) restrict token to subset of possible types of DNS records - acme: bool (optional) syntax sugar adding allowed_methods, - allowed_prefixes and allowed_types - needed for ACME DNS challenge - } - returns: { - } - -check-task - -Check status of a long running task - - params: { - id: string - } - returns: { - id: string - status: object - } - -edit-token - -Edit API token - - params: { - key: string - comment: string (optional) - from: [string] (optional) array of IPv4 or IPv6 IPs or networks - that are allowed to use the token. - i.e.: ['8.8.8.8', '192.168.0.0/24'] - allowed_domains: [string] (optional) restrict token to subset of your domains - allowed_servers: [string] (optional) restrict token to subset of your servers by id - allowed_methods: [string] (optional) restrict token to subset of possible API calls - allowed_prefixes: [string] (optional) restrict token to DNS record name prefixes - allowed_types: [string] (optional) restrict token to subset of possible types of DNS records - } - returns: { - } - -list-tokens - -List existing API authorization tokens. - - params: { - } - returns: { - tokens: [...] - } - -remove-token - -Remove an existing API token - - params: { - key: string - } - returns: { - } - -domain -====== - -add-dnssec - -Add DNSSEC record for domain - - params: { - domain: string - algorithm: integer - - digest: string - digest_type: integer - key_tag: integer - - or - - public_key: string - } - returns: { - } - -add-forward - -Add email forward - - params: { - domain: string - from: string - to: string - } - returns: { - domain: string - from: string - to: string - } - -add-glue - -Add glue record for the domain, name is the subdomain - - params: { - domain: string - name: string - address4: string - address6: string - } - returns: { - } - -add-record - -Add new DNS Record to domain - - params: { - domain: string - type: string (types: A, AAAA, ANAME, CAA, CNAME, DS, Dynamic, HTTPS, MX, NAPTR, NS, PTR, SRV, SSHFP, SVCB, TLSA, TXT) - name: string (all types) - content: string (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, Static, TLSA, TXT) - ttl: int (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, TLSA, TXT) - prio: int (types: HTTPS, MX, Redirect, SRV, SVCB) - weight: int (types: SRV) - port: int (types: SRV) - target: string (types: HTTPS, SVCB) - ssh_algorithm: int (types: SSHFP, values: 1-5 // RSA, DSA, ECDSA, Ed25519, XMSS) - ssh_type: int (types: SSHFP, values: 1-2 // SHA-1, SHA-256) - } - returns: { - id: string - domain: string - type: string (types: A, AAAA, ANAME, CAA, CNAME, DS, Dynamic, HTTPS, MX, NAPTR, NS, PTR, SRV, SSHFP, SVCB, TLSA, TXT) - name: string (all types) - content: string (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, Static, TLSA, TXT) - ttl: int (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, TLSA, TXT) - prio: int (types: HTTPS, MX, Redirect, SRV, SVCB) - weight: int (types: SRV) - port: int (types: SRV) - target: string (types: HTTPS, SVCB) - ssh_algorithm: int (types: SSHFP, values: 1-5 // RSA, DSA, ECDSA, Ed25519, XMSS) - ssh_type: int (types: SSHFP, values: 1-2 // SHA-1, SHA-256) - } - -edit-domain - -Edit domain configuration - - params: { - domain: string - ... - } - possible keys: - mailforwarding: boolean - dnssec: boolean - lock: boolean - contacts: custom whois contact ids - nameservers: list of custom nameservers or empty list to use our nameservers - - returns: { - name: string, - ... - } - -edit-glue - -Edit glue record - - params: { - domain: string - name: string - address4: string - address6: string - } - returns: { - } - -edit-record - -Edit DNS Record - - params: { - id: string - domain: string - type: string (types: A, AAAA, ANAME, CAA, CNAME, DS, Dynamic, HTTPS, MX, NAPTR, NS, PTR, SRV, SSHFP, SVCB, TLSA, TXT) - name: string (all types) - content: string (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, Static, TLSA, TXT) - ttl: int (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, TLSA, TXT) - prio: int (types: HTTPS, MX, Redirect, SRV, SVCB) - weight: int (types: SRV) - port: int (types: SRV) - target: string (types: HTTPS, SVCB) - ssh_algorithm: int (types: SSHFP, values: 1-5 // RSA, DSA, ECDSA, Ed25519, XMSS) - ssh_type: int (types: SSHFP, values: 1-2 // SHA-1, SHA-256) - } - returns: { - domain: string - type: string (types: A, AAAA, ANAME, CAA, CNAME, DS, Dynamic, HTTPS, MX, NAPTR, NS, PTR, SRV, SSHFP, SVCB, TLSA, TXT) - name: string (all types) - content: string (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, Static, TLSA, TXT) - ttl: int (types: A, AAAA, ANAME, CAA, CNAME, DS, MX, NAPTR, NS, PTR, Redirect, SRV, SSHFP, TLSA, TXT) - prio: int (types: HTTPS, MX, Redirect, SRV, SVCB) - weight: int (types: SRV) - port: int (types: SRV) - target: string (types: HTTPS, SVCB) - ssh_algorithm: int (types: SSHFP, values: 1-5 // RSA, DSA, ECDSA, Ed25519, XMSS) - ssh_type: int (types: SSHFP, values: 1-2 // SHA-1, SHA-256) - } - -find-domains - -Find new domains - - params: { - query: string - } - returns: { - domains: [ - {price: int, status: string, name: string} - ] - } - -get-domain - -Get information about one of your domains - - params: { - domain: string - } - returns: { - name: string, - ... - } - -get-tlds - -Get list of supported TLDs - - params: { - } - returns: { - tld: {price: int, max_year: int, dnssec: boolean}, - } - -import-zone - -Import BIND zone file - - params: { - domain: string - zone: string - } - returns: { - } - -list-dnssec - -List DNSSEC records for domain - - params: { - domain: string - } - returns: { - dnssec: list - } - -list-domains - -Get list of your domains - - params: { - } - returns: { - domains: list - } - -list-forwards - -List existing email forwards - - params: { - domain: string - } - returns: { - forwards: list - } - -list-glue - -List glue records for domain - - params: { - domain: string - } - returns: { - glue: list - } - -list-records - -List DNS records for given domain - - params: { - domain: string - } - returns: { - records: list - } - -register-domain - -Register a new domain - - params: { - domain: string - years: int (default: 1) - } - returns: { - task: string - } - use check-task for response - -remove-dnssec - -Remove DNSSEC record from domain - - params: { - domain: string - id: string - } - returns: { - } - -remove-forward - -Remove email forward - - params: { - domain: string - from: string - to: string - } - returns: { - } - -remove-glue - -Remove glue record - - params: { - domain: string - name: string - } - returns: { - } - -remove-record - -Remove DNS Record - - params: { - domain: string - id: string - name: string // optional - type: string // optional - ... // optional - } - - remove a dns record by id - or multiple records by passing name, type and any other existing record's field - - returns: { - records: list - } - -renew-domain - -Renew one of your domains - - params: { - domain: string - years: int (default: 1) - } - returns: { - task: string - } - use check-task for response - -server -====== - -add-server - -Create a new server with the given name, type, os and ssh\_key. Returns an id of the newly created server - - params: { - name: string, - type: string - os: string - ssh_key: string - months: int (max 12) - autorenew: bool - } - returns: { - id: string - ... - } - -add-traffic - -Add extra traffic package. - - params: { - id: string - amount: int - months: int - starts_today: bool - } - returns: { - ... - } - -edit-server - -Edit an existing server identified by id - - params: { - id: string - name: string, - type: string - ssh_key: string - reverse_name: string - autorenew: bool - } - returns: { - ... - } - -get-server - -Returns information about one of your servers - - params: { - id: string - } - returns: { - ... - } - -list-server-images - -Returns a list of server images that can be used for new servers - - params: { - } - returns: { - images: list - } - -list-server-types - -Returns a list of server types that can be used for new servers - - params: { - } - returns: { - types: list - } - -list-servers - -Returns a list of your servers - - params: { - } - returns: { - servers: list - } - -list-traffic - -List extra traffic packages per server. - - params: { - id: string # server id - } - returns: { - traffic: [] - } - -remove-server - -Remote an existing server, your server will be stopped and all data deleted. - - params: { - id: string - } - returns: { - task: string - } - -renew-server - -Renew an existing server identified by id, your wallet must have enough credit to complete this operation. - - params: { - id: string - months: int - } - returns: { - ... - } - -reset-server - -Reset existing server and reinstall the given os. All data will be lost. Required field: \`id\` - - params: { - id: string - os: string - ssh_key: string - type: string - } - returns: { - ... - } - -restart-server - -Restart existing server - - params: { - id: string - } - returns: { - ... - } - -start-server - -Start existing server - - params: { - id: string - } - returns: { - ... - } - -stop-server - -Stop existing server - - params: { - id: string - } - returns: { - ... - } - -user -==== - -delete-account - -Delete your account. You can only delete the account if all domains and servers have been removed and your wallet is empty. - - params: { - } - returns: { - } - -login - -Login into an existing account (cookie based session). Consider using API tokens instead - - params: { - email: string [or] xmpp: string - password: string - } - returns: { - } - -logout - -Logout and end your current session - - params: { - } - returns: { - } - -vpn -=== - -add-vpn - -Add a new VPN client Returns an id - - params: { - name: string, - autorenew: boolean - } - returns: { - id: string - ... - } - -edit-vpn - -Edit an existing VPN identified by id - - params: { - id: string - name: string, - autorenew: boolean - backend: wireguard|openvpn - publickey: WireGuard PublicKey, set to your public key or null to generate a new one - } - returns: { - ... - } - -get-vpn - -Returns information about VPN - - params: { - id: string - } - returns: { - ... - } - -list-vpns - -Returns a list of your VPNs - - params: { - } - returns: { - vpns: list - } - -remove-vpn - -Remove an existing VPN - - params: { - id: string - } - returns: { - ... - } - -renew-vpn - -Renew an existing VPN identified by id, your wallet must have enough credit to complete this operation. - - params: { - id: string - months: int - } - returns: { - ... - } - -wallet -====== - -add-payment - -Refill your wallet - - params: { - amount: int (5 or multiple of 15, max: 300) - via: string (options: paypal, bitcoin, litecoin, monero, zcash, ethereum) - } - returns: { - amount: int - address: string (payment address) - url: string (paypal url to process payment) - } - -get-balance - - params: { - } - returns: { - balance: int (in euros) - } - -get-payment - -Get details about a payment - - params: { - id: string - } - returns: { - id: string - amount: int - status: string - address: string - url: string - } - -list-transactions - -List transactions (payments, registrations, renewals, etc..) of the last 90 days - - params: { - } - returns: { - transactions: list - } -- cgit v1.2.3