Documentation generated
at 04.02.2023 23:29:04

Client Domains

Active domains
GET client/domains
API Token required
read access_domains

Returns a list of active domains.

Response-Params

Feld Datentyp Beschreibung
data[].id int Domain ID
data[].domain string Domain name
data[].domain_idn string Domain name in IDN format
data[].firstamount float First payment amount
data[].recurringamount float Recurring payment amount
data[].status string Domain status (Active, Pending, Pending Transfer, Expired, Cancelled, Transferred Away, Fraud)
data[].register_date string Domain registration date
data[].next_due_date string Domain expiry date
data[].next_due_human string Domain expiry date in human readable format
curl -X GET \
-G 'https://api.pph.sh/client/domains' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": [
        {
            "id": 6129,
            "domain": "clientify.de",
            "domain_idn": "clientify.de",
            "firstamount": 8.99,
            "recurringamount": 8.99,
            "status": "Active",
            "register_date": "2022-08-24T22:00:00.000000Z",
            "next_due_date": "2023-08-24T22:00:00.000000Z",
            "next_due_in": 203,
            "next_due_human": "in 6 Monaten"
        },
        {
            "id": 5373,
            "domain": "pph.sh",
            "domain_idn": "pph.sh",
            "firstamount": 0,
            "recurringamount": 0,
            "status": "Expired",
            "register_date": "2021-12-26T23:00:00.000000Z",
            "next_due_date": "2023-12-26T23:00:00.000000Z",
            "next_due_in": 327,
            "next_due_human": "in 10 Monaten"
        },
        {
            "id": 5250,
            "domain": "nathix.de",
            "domain_idn": "nathix.de",
            "firstamount": 0,
            "recurringamount": 0,
            "status": "Expired",
            "register_date": "2021-11-05T23:00:00.000000Z",
            "next_due_date": "2023-11-05T23:00:00.000000Z",
            "next_due_in": 276,
            "next_due_human": "in 9 Monaten"
        },
        {
            "id": 5082,
            "domain": "pph.systems",
            "domain_idn": "pph.systems",
            "firstamount": 4.99,
            "recurringamount": 11.99,
            "status": "Expired",
            "register_date": "2021-08-31T22:00:00.000000Z",
            "next_due_date": "2022-08-31T22:00:00.000000Z",
            "next_due_in": 154,
            "next_due_human": "vor 5 Monaten"
        },
        {
            "id": 4953,
            "domain": "trashmail-api.de",
            "domain_idn": "trashmail-api.de",
            "firstamount": 0,
            "recurringamount": 0,
            "status": "Expired",
            "register_date": "2021-07-14T22:00:00.000000Z",
            "next_due_date": "2024-07-14T22:00:00.000000Z",
            "next_due_in": 528,
            "next_due_human": "in 1 Jahr"
        },
        {
            "id": 4040,
            "domain": "\u00fcbertragungsdauer.de",
            "domain_idn": "xn--bertragungsdauer-izb.de",
            "firstamount": 0,
            "recurringamount": 0,
            "status": "Expired",
            "register_date": "2020-07-15T22:00:00.000000Z",
            "next_due_date": "2022-07-15T22:00:00.000000Z",
            "next_due_in": 201,
            "next_due_human": "vor 6 Monaten"
        }
    ]
}
Single domain
GET client/domains/:domainId
API Token required
read access_domains

Returns information about a single domain.

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get information about. Example: 4040 required

Response-Params

Feld Datentyp Beschreibung
data.id int Domain ID
data.domain string Domain name
data.domain_idn string Domain name in IDN format
data.firstamount float First payment amount
data.recurringamount float Recurring payment amount
data.status string Domain status (Active, Pending, Expired, etc.)
data.register_date string Domain registration date
data.next_due_date string Domain expiry date
data.next_due_human string Domain expiry date in human readable format
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": {
        "id": 6129,
        "domain": "clientify.de",
        "domain_idn": "clientify.de",
        "firstamount": 8.99,
        "recurringamount": 8.99,
        "status": "Active",
        "register_date": "2022-08-24T22:00:00.000000Z",
        "next_due_date": "2023-08-24T22:00:00.000000Z",
        "next_due_in": 203,
        "next_due_human": "in 6 Monaten"
    }
}
Domain invoices
GET client/domains/:domainId/invoices
API Token required
read access_domains access_invoices

Returns a list of invoices connected to a domain

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get invoice from. Example: 4040 required
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/invoices' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": [
        {
            "id": 203625,
            "duedate": "2022-08-24T22:00:00.000000Z",
            "datepaid": "2022-08-25T14:38:57.000000Z",
            "date": "2022-08-24T22:00:00.000000Z",
            "subtotal": 7.55,
            "credit": 8.99,
            "tax": 1.44,
            "taxrate": 19,
            "total": 8.99,
            "status": "Paid",
            "status_label": "Bezahlt",
            "is_open": false,
            "items": [
                {
                    "id": 235213,
                    "invoiceid": 203625,
                    "type": "DomainRegister",
                    "short_description": "Domainregistrierung - clientify.de - 1 Jahr(e) (25.08.2022 - 24.08.2023)",
                    "description": "Domainregistrierung - clientify.de - 1 Jahr(e) (25.08.2022 - 24.08.2023)",
                    "relid": 6129,
                    "amount": 8.99,
                    "taxed": 1,
                    "donation": false
                }
            ],
            "donation_invoice": false,
            "resources": {
                "invoice": "https:\/\/api.pph.sh\/client\/invoices\/203625",
                "download": "https:\/\/api.pph.sh\/client\/invoices\/203625\/download"
            }
        }
    ],
    "links": {
        "first": "https:\/\/fsn-01.api.pph.sh\/client\/domains\/6129\/invoices?page=1",
        "last": "https:\/\/fsn-01.api.pph.sh\/client\/domains\/6129\/invoices?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "https:\/\/fsn-01.api.pph.sh\/client\/domains\/6129\/invoices?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "https:\/\/fsn-01.api.pph.sh\/client\/domains\/6129\/invoices",
        "per_page": 15,
        "to": 1,
        "total": 1
    }
}
Get redirects
GET client/domains/:domainId/dns/redirect/subdomains
read access_domains update_domain_dns

URL-Parameter

Feld Datentyp Beschreibung
domainId int The Domain ID. Example: 4040
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/redirect/subdomains' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": {
        "domain": "6129",
        "subDomains": []
    }
}
Get all redirects
GET client/domains/:domainId/dns/redirect
read access_domains update_domain_dns

URL-Parameter

Feld Datentyp Beschreibung
domainId int The Domain ID. Example: 4040
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/redirect' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": {
        "redirects": []
    }
}
Rebuild redirects on the server
GET client/domains/:domainId/dns/redirect/build
read access_domains update_domain_dns

URL-Parameter

Feld Datentyp Beschreibung
domainId int The Domain ID. Example: 4040
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/redirect/build' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Receive nameservers
GET client/domains/:domainId/dns/nameserver
API Token required
read access_domains access_domain_dns

Returns a domains nameservers as set by the registrar.

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get information about. Example: 4040

Response-Params

Feld Datentyp Beschreibung
nameservers array The nameservers of the domain
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/nameserver' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": {
        "domain": "clientify.de",
        "nameservers": [
            "ns1.kramer-dns.de",
            "ns2.kramer-dns.de",
            "ns3.kramer-dns.de"
        ]
    }
}
Set nameservers
POST client/domains/:domainId/dns/nameserver
API Token required
read access_domains update_domain_dns

Set the nameservers of a domain.

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to set the nameservers for. Example: 4040 required

Body-Parameter

Feld Datentyp Beschreibung
nameservers string[] List of nameservers. A minimum of 2 is required. A maximum of 5 is possible. required
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/nameserver' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Autocomplete Nameservers
GET client/domains/:domainId/dns/nameserver/autocomplete
API Token required
read access_domains access_domain_dns

URL-Parameter

Feld Datentyp Beschreibung
domainId The domain id. Example: 4040

Query-Parameter

Feld Datentyp Beschreibung
nameserver The first nameserver. Example: ns1.kramer-dns.de

Response-Params

Feld Datentyp Beschreibung
data.nameservers array The nameservers as responded by the first NS
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/nameserver/autocomplete' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": {
        "nameservers": [
            "ns1.kramer-dns.de",
            "ns2.kramer-dns.de",
            "ns3.kramer-dns.de"
        ]
    }
}
DNS Records
GET client/domains/:domainId/dns/records
API Token required
read access_domains access_domain_dns

Returns a list of DNS records in kramer-dns for a domain.

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get information about. Example: 4040 required

Query-Parameter

Feld Datentyp Beschreibung
all bool Whether to return all records, including hidden (non updatable) records (NS, SOA)

Response-Params

Feld Datentyp Beschreibung
domain string Domain name
records object[] DNS records
records[].id DNS record ID
records[].name DNS record name
records[].full_name DNS record full name
records[].type DNS record type
records[].content DNS record content
records[].ttl DNS record ttl
records[].editable Whether this dns record is editable
records[].priority DNS record priority
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/records' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": {
        "domain": "clientify.de",
        "records": [
            {
                "id": 328030,
                "name": "www",
                "full_name": "www.clientify.de",
                "type": "A",
                "content": "127.0.0.1",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true
            },
            {
                "id": 328035,
                "name": "mail",
                "full_name": "mail.clientify.de",
                "type": "A",
                "content": "127.0.0.1",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true
            },
            {
                "id": 332275,
                "name": "local",
                "full_name": "local.clientify.de",
                "type": "A",
                "content": "217.249.40.72",
                "last_changed": 1675127889,
                "ttl": 3800,
                "editable": true
            },
            {
                "id": 328038,
                "name": "",
                "full_name": "clientify.de",
                "type": "A",
                "content": "127.0.0.1",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true
            },
            {
                "id": 328037,
                "name": "*",
                "full_name": "*.clientify.de",
                "type": "A",
                "content": "127.0.0.1",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true
            },
            {
                "id": 332274,
                "name": "local",
                "full_name": "local.clientify.de",
                "type": "AAAA",
                "content": "2003:db:57ff:7e9:66fd:96ff:fe4b:933d",
                "last_changed": 1675127889,
                "ttl": 3800,
                "editable": true
            },
            {
                "id": 328039,
                "name": "webmail",
                "full_name": "webmail.clientify.de",
                "type": "CNAME",
                "content": "webmail.kramer-hosting.de",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true
            },
            {
                "id": 328036,
                "name": "",
                "full_name": "clientify.de",
                "type": "MX",
                "content": "mail.clientify.de",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true,
                "priority": 10
            },
            {
                "id": 328033,
                "name": "",
                "full_name": "clientify.de",
                "type": "NS",
                "content": "ns1.kramer-dns.de",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": false
            },
            {
                "id": 328034,
                "name": "",
                "full_name": "clientify.de",
                "type": "NS",
                "content": "ns2.kramer-dns.de",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": false
            },
            {
                "id": 328040,
                "name": "",
                "full_name": "clientify.de",
                "type": "NS",
                "content": "ns3.kramer-dns.de",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": false
            },
            {
                "id": 328031,
                "name": "",
                "full_name": "clientify.de",
                "type": "SOA",
                "content": "ns1.kramer-dns.de. hostmaster.kramer-dns.de. 2022120200 43200 7200 1209600 86400",
                "last_changed": 1669977296,
                "ttl": 43200,
                "editable": false
            },
            {
                "id": 328032,
                "name": "",
                "full_name": "clientify.de",
                "type": "SOA",
                "content": "ns1.kramer-dns.de. hostmaster.kramer-dns.de. 2023013103 43200 7200 1209600 86400",
                "last_changed": 1675127889,
                "ttl": 86400,
                "editable": false
            },
            {
                "id": 328041,
                "name": "_dmarc",
                "full_name": "_dmarc.clientify.de",
                "type": "TXT",
                "content": "\"v=DMARC1; p=none\"",
                "last_changed": 1669977296,
                "ttl": 86400,
                "editable": true,
                "txt": []
            }
        ]
    }
}
Connectable hostings
GET client/domains/:domainId/dns/connect
API Token required
read access_domains access_domain_dns

URL-Parameter

Feld Datentyp Beschreibung
domainId The domain id. Example: 4040
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/connect' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
{
    "data": [
        {
            "id": 41986,
            "label": "92351-62462.pph-server.de",
            "product": "KVM Root Server",
            "ips": [
                "45.145.225.180"
            ]
        },
        {
            "id": 41905,
            "label": "88836-41003.pph-server.de",
            "product": "KVM Root Server",
            "ips": [
                "45.84.199.31"
            ]
        },
        {
            "id": 41922,
            "label": "88042-41003.pph-server.de",
            "product": "KVM Root Server",
            "ips": [
                "45.84.199.118"
            ]
        }
    ]
}
Connect to hosting
POST client/domains/:domainId/dns/connect/:hostingId
API Token required
read access_domains update_domain_dns

Query-Parameter

Feld Datentyp Beschreibung
reset boolean Whether the DNS should be reset before.
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/connect/<hostingId>' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Create a new srv record
POST client/domains/:domainId/dns/record/srv
API Token required
read access_domains update_domain_dns

You can automatically connect minecraft and teamspeak servers with your domain without losing its possibility to connect to another server (like a webpage) in the browser.

This will create a new A-Record in the domain and use it in the target field for the srv record.

Example: Connect domain.com with 127.0.0.1:25565
-> Creates new A-Record with "name" mc-127-0-0-1.domain.com and content 127.0.0.1
-> Creates new SRV-Record with "name" $subdomain and content 0 25565 mc-127-0-0-1.domain.com

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get information about. Example: 4040 required

Body-Parameter

Feld Datentyp Beschreibung
type string The srv type. One of: minecraft, teamspeak. Example: minecraft
subdomain string The subdomain to use. Defaults to empty.
ip string The target IP. You can specify a domain name, whose A-Record IP will be used. Example: 127.0.0.1
port string The target port. Must be greater than 0 and lower than 65565. Example: 25565
skip_a_record boolean Skip automatically creating an A-Record for this target. Can only be used when ip is a resolvable hostname. Defaults to false.
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/srv' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Create record
POST client/domains/:domainId/dns/record/create
API Token required
read access_domains update_domain_dns

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID. Example: 4040 required

Body-Parameter

Feld Datentyp Beschreibung
record[name] string The record name. Example: minecraft
record[content] string The record content. Example: 127.0.0.1
record[type] string The record type. Example: A
record[priority] string The record priority. Example: 0
record[ttl] string The record ttl. Example: 1880
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/create' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Update DNS Record
POST client/domains/:domainId/dns/record/update
API Token required
read access_domains update_domain_dns

Updates a single kramer dns record for a domain.

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get information about. Example: 4040 required
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/update' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Replace IP
POST client/domains/:domainId/dns/record/replace-ip
API Token required
read access_domains update_domain_dns

Replaces an IP address with another IP address in all dns records.

URL-Parameter

Feld Datentyp Beschreibung
domainId int Domain ID to get information about. Example: 4040 required

Body-Parameter

Feld Datentyp Beschreibung
old_ip string The old ip. Example: 149.202.17.134 required
new_ip string The new ip. Example: 51.89.85.77 required
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/replace-ip' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Remove record
POST client/domains/:domainId/dns/record/delete
API Token required
read access_domains update_domain_dns

Permanently removes a dns record from kramer dns for a domain

Body-Parameter

Feld Datentyp Beschreibung
record.id int Record ID to remove. Example: 4040 required
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/delete' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Reset DNS records
POST client/domains/:domainId/dns/record/reset
API Token required

Completely resets dns records in kramer dns for a domain

curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/reset' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Import records by text
POST client/domains/:domainId/dns/record/import
API Token required
curl -X POST \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/import' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq
Export records to text
GET client/domains/:domainId/dns/record/export
API Token required
curl -X GET \
-G 'https://api.pph.sh/client/domains/<domainId>/dns/record/export' \
-H 'Authorization: Bearer ${ACCESS_TOKEN}' \
-H 'Content-Type=application/json' \
-H 'Accept=application/json' \
-H 'Accept-Language=de; *;q=0.5' | jq