Удалить запись Libcloud (GoDaddy api)

Я пытаюсь реализовать метод удаления для записи delate-record, но я впервые использую python и этот API.

1 ответ

Сначала отправьте запрос GET https://api.godaddy.com/v1/domains/{DOMAIN}/records

Затем перечислите все записи API Response (JSON Array) и подготовьте новые данные, удалив те, которые необходимо удалить.

Ответ API (ОБРАЗЕЦ)

[
    {
        "data": "192.168.1.1",
        "name": "@",
        "ttl": 600,
        "type": "A"
    },
    {
        "data": "ns1.example.com",
        "name": "@",
        "ttl": 3600,
        "type": "NS"
    },
    {
        "data": "@",
        "name": "www",
        "ttl": 3600,
        "type": "CNAME"
    },
    {
        "data": "mail.example.com",
        "name": "@",
        "ttl": 3600,
        "priority": 1,
        "type": "MX"
    }
]

Новые данные (после удаления записи) (ОБРАЗЕЦ)

[
    {
        "data": "192.168.1.1",
        "name": "@",
        "ttl": 600,
        "type": "A"
    },
    {
        "data": "ns1.example.com",
        "name": "@",
        "ttl": 3600,
        "type": "NS"
    },
    {
        "data": "@",
        "name": "www",
        "ttl": 3600,
        "type": "CNAME"
    }
]

Теперь отправьте запрос PUT на https://api.godaddy.com/v1/domains/{DOMAIN}/records с новыми данными.

Самое главное, как вы идентифицируете записи в вышеуказанном массиве, которые нужно удалить. Это не будет сложной задачей, если у вас есть хорошие навыки программирования.

В API GoDaddy нет метода удаления записи, поэтому эта функция не отображается в драйвере. https://developer.godaddy.com/doc

Драйвер может предложить метод "заменить записи в зоне", который позволит вам получить текущий список записей, а затем установить новый список за вычетом записи, которую вы хотите удалить. Но эта функция не реализована и довольно рискованно.

Мне удалось обойти это своего рода хакерством - у нас была куча записей, которые мы хотели удалить, делать это вручную казалось странным, поэтому я добавил Javascript в консоль разработчика Chrome, работающий в аутентифицированном сеансе со страницы управления DNS:

function deleteGoDaddyRecords(recordId) {
        $.ajax({
        url: 'https://dcc.godaddy.com/api/v3/domains/<YOUR-DOMAIN.com>/records?recordId='+recordId,
        type: 'DELETE',
        success: function(result) {
            console.log(result)
        }
    });
}

что позволяет мне использовать тот же вызов, который вызывает пользовательский интерфейс, когда вы просите удалить запись.

единственное, что вам нужно предоставить, это AttributeUid, который недоступен в общедоступном API, но есть во интерфейсном API:

https://dcc.godaddy.com/api/v2/domains/runahr.com/records

Итак, мне удалось создать скрипт, который будет генерировать кучу

deleteGoDaddyRecords('<RECORD-UUID>');
deleteGoDaddyRecords('<RECORD-UUID>');

скопируйте и вставьте сгенерированный скрипт в консоль разработчика, и на данный момент это решило проблему.

Я надеюсь, что GoDaddy добавит публичную конечную точку DELETE в свой API в будущем:)

Другие вопросы по тегам