Вот как это сделать, но помните, что вам нужно будет выполнить действие поиска, чтобы найти информацию для требуемых идентификаторов. Учитывая вашу ошибку, я думаю, проблема в том, что у вас не было tenantId, который должен быть определен в вашем заголовке, например: 'xero-tenant-id': 'YOURNUMBERHERE'
. См. Шаг 8 ниже, чтобы сравнить его с вашим.
Если вы не можете его найти, я предпринял следующие шаги:
XERO
- Создать учетную запись
- Создать Приложение Xero и добавить URL-адрес перенаправления Zapier OAuth в раздел перенаправления Xero (из приложения «Zapier Dev» на «шаге 2»).
ZAPIER
В своем приложении dev добавьте идентификатор и секретный ключ клиента от xero в соответствующие разделы в шаге 3 Zapier Dev
Добавьте конечную точку POST
(запрашивается в шаге 4 Zapier Dev) ') https://login.xero.com/identity/connect/authorize
с заголовками HTTP:
response_type: code
client_id: {{process.env.CLIENT_ID}}
redirect_uri: {{bundle.inputData.redirect_uri}}
state: {{bundle.inputData.state}}
Добавьте область действия: openid profile email accounting.transactions
Refre sh token ('Zapier Dev, шаг 4: Access Token') можно получить с помощью этого:
REFRESH TOKEN: POST https://identity.xero.com/connect/token
TEST CALL: GET https://api.xero.com/connections
-Сохранить возвращенный tenantId для последующего использования
-Проверить проверку подлинности. Это работает? Если да, переходите к шагу 7.
-Если тест не пройден: проверьте на наличие опечаток, проверьте правильность URL-адресов и убедитесь, что ваши заголовки соответствуют тому, что требуется ксерокопии (см. Ссылку внизу).
Добавить действие под названием createQuote
-Добавить идентификатор контакта ввода
-Добавить элемент строки ввода с меткой описания
-Добавить ввод tenantId
Добавить POST в API Config по URL-адресу https://api.xero.com/api.xro/2.0/Quotes
Пример POST:
const options = {
url: 'https://api.xero.com/api.xro/2.0/Quotes/',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': `Bearer ${bundle.authData.access_token}`,
'xero-tenant-id': bundle.inputData.tenantID
},
params: {
},
body: {
"Contact": {
"ContactID": bundle.inputData.ContactID
},
"Date": "2019-11-29",
"LineItems": [
{
"Description": bundle.inputData.LineItems
}
]
}
}
return z.request(options)
.then((response) => {
response.throwForStatus();
const results = z.JSON.parse(response.content);
return results;
});
Подключить тестовый contactID, tenantID, lineitems и проверить это
После завершения вам нужно будет создать действие поиска, чтобы получить contactID и tenantID, если вы хотите, чтобы все это было автоматизировано. Если у вас возникли проблемы, я обнаружил, что запуск делает c полезным.