Удалить запись 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 в будущем:)