ものすごくニッチな記事になりますが、未来の自分のためにも書き残しておきます。
HubSpotとは
一言で言うと、「EC特化型のCRMツール」とのことです。
なんだそりゃという感じですが、ざっくり言えばECサイトに特化したアナリティクスのようなものです。
顧客管理や注文管理などができます。
ことの発端
現在開発を手伝っているECサイトがHubSpotを使って取引を管理しているのですが、取引のリストをAPIで引っ張ってこれないかという検証を頼まれたので調査を開始しました。
dealとは
HubSpotで取引はdealと表現されています。(dealを日本語に訳すと「引き合い」という意味のようです)
なので、取引のリストを引っ張ってくるというのは、「全てのdealを取得する」と同義です。
APIを調べる
早速APIを探すべく、公式ページから情報を探したのですが、全然わかりませんでした。
唯一わかったのはnpmに公式のAPIクライアント(@hubspot/api-client)があることぐらいです。
メソッドを見つける
ついに見つけました。
deals: { associationsApi: DealsAssociationsApi basicApi: DealsBasicApi batchApi: DealsBatchApi searchApi: DealsSearchApi getAll: ( limit?: number, after?: string, properties?: string[], associations?: string[], archived?: boolean, options?: { headers: { [name: string]: string } }, ) => Promise<dealsModels.SimplePublicObject[]> }
deals.getAll()でPromiseが返ってくるようです。
こういうときにTypeScriptの便利さを痛感しますね。
引数と型が丸わかりです。
メソッドを叩いてみる
require('dotenv').config(); const { apiKey } = process.env; const hubspot = require('@hubspot/api-client'); const hubspotClient = new hubspot.Client({ apiKey }); (async () => { const deals = await hubspotClient.crm.deals.getAll(); console.log(deals); })();
試しにこんなコードを書いてみたところ、バッチリdealが全件取得できました。ミッションコンプリートです。