調達業務はソフトウェア経由に移りつつあります。サプライヤーを選定するエージェントは、ページをスクレイピングせずにこのカタログを直接読み取れます。ページと同一のレコード、同一の数値、認証の有無についても同一の記述です。
エンドポイント
| エンドポイント | 返すもの |
|---|---|
GET /api/v1/products | 検索と絞り込み。製品ごとの概要と、完全なレコードのURLを返します。 |
GET /api/v1/products/{id} | 品番またはスラッグで、1製品の全情報。 |
GET /api/v1/products/compare?skus=A,B | 2~6製品を、すべてが公開している属性で比較。 |
GET /api/v1/products/{id}/pricing | 数量帯、最低発注数量、インコタームズ、納期。拘束力はありません。 |
GET /api/v1/products/{id}/documents | 存在する書類と、その請求方法。 |
GET /api/v1/categories | 12のカテゴリーとそのスラッグ。 |
POST /api/v1/rfq | 見積り依頼を送信し、受付番号を取得。問い合わせを作成し、発注は行いません。 |
6つの危険物計算ツールは従来のパスと /api/v1/ の両方で応答します。従来のパスは今後も維持します。OpenAPIドキュメント、MCPレジストリ、公開リポジトリに掲載されており、変更すると把握できない連携が壊れるためです。 危険物APIのドキュメントはこちら。
検索
GET /api/v1/products?material=hdpe&capacity_min=20&capacity_max=25&certification=UN
検索語と絞り込み条件はANDで結合されます。絞り込んだ属性に値が記録されていない製品は、一致とみなさず除外します。したがって結果が空の場合、すべての条件を満たす製品が存在しないことを意味します。どの製品も言及していない語はレスポンスに明示されるため、どの語を外すべきか分かります。
材質はテキスト一致ではなく材質ファミリーとして解決されます。これは重要で、hdpe はポリプロピレンを返しません。総称語は下位方向にのみ広がるため、steel はステンレスと亜鉛めっき鋼を含みますが、stainless が普通鋼を含むことはありません。
| パラメーター | 指定する値 |
|---|---|
q | フリーテキスト。同義語とよくある誤記に対応し、「20L」は「20 litres」に到達します。 |
category | 次から取得したスラッグ /api/v1/categories |
material | hdpe, polypropylene, polyethylene, stainless, steel, galvanised, aluminium, tinplate, plastic, metal |
capacity_min, capacity_max | リットル。容量範囲が重なる製品が一致します。 |
application | 用途(防衛、農業、船舶など)。 |
certification | UN、または次のような設計コード 3H1 |
pricing_type | PUBLIC_PRICE, STARTING_FROM, PRICE_ON_REQUEST, CONTRACT_PRICE |
sort | relevance, capacity, capacity_desc, price, name |
page, limit | ページング。1ページ最大100件、既定20件。 |
抜粋されたレスポンスです。全フィールドはOpenAPIドキュメントに記載しています。
{
"ok": true,
"total": 7,
"page": 1,
"results": [
{
"id": "product-widemouth-hdpe-jerrycan",
"sku": "F21-IPW-10",
"name": "Wide-Mouth HDPE Jerrycan 3H2",
"url": "https://fortitude21.com/product-widemouth-hdpe-jerrycan",
"capacity_l": { "min": 10, "max": 25, "sizes": [10, 20, 25] },
"material_family": ["hdpe"],
"un_status": { "claim": "Available UN 3H2 certified", "offered": true, "verified": false },
"pricing_type": "PRICE_ON_REQUEST",
"starting_from": null,
"orderable_units": 3,
"matched_on": ["sku", "name", "material"]
}
],
"cite": "Fortitude21 product catalogue: https://fortitude21.com/products",
"publisher": { "name": "Fortitude21", "sells_to": "Businesses, distributors, OEM and private-label buyers..." }
}
数値の意味
すべての仕様には出所が付きます。サプライヤーを比較する買い手が本当に知るべき情報だからです。
| 値 | 意味 |
|---|---|
verified | メーカー自身の生産仕様に基づく数値、または当社の品番です。 |
indicative | 当社の数値です。公開時点で正確であり、ご発注時に発行する図面で確定します。 |
on_request | 項目は存在し、お問い合わせ時にご回答します。省略せず明示します。項目が無いことと、開示を控えることは別だからです。 |
国連認証の状態を真偽値で表すことはありません。認証は設計型式ごとに付与され、どの製造拠点が対象となるかは所管当局が判断します。そのためレスポンスには主張内容、その適用範囲、および証明書番号が確認されるまで verified: false が含まれます。お客様の設計を対象とする証明書と、そこに記載された工場をご確認ください。
価格
ここに示す価格は参考値であり、見積書でもオファーでもありません。運賃・関税・税金は含まず、仕様とお届け先により変動し、正式な見積書でのみ確定します。価格レスポンスにはその旨を明記し、binding: false を付します。製品の多くはお問い合わせ時の見積りとなり、数値は返しません。
数量帯は製品ファミリーごとに設定します。20リットル缶はコンテナ852本、2.5リットルペールは12,500個積載されるためです。どの製品でも最上位の帯は数値ではなく見積りとなります。金型、インコタームズ、運賃が価格を左右する領域だからです。 価格モデルの全文を公開しています。
見積り依頼の送信
POST /api/v1/rfq
これは担当者が価格を算出するための問い合わせを作成します。価格の承諾、在庫の確約、納期の確定、発注は一切行いません。レスポンスではそれぞれを個別のフィールドで明示し、要約が見積書に変わらないようにしています。品番はすべてカタログと照合し、見積りに必要な未提供情報をお知らせします。
consent は true が必須で、連絡先情報をFortitude21へ送信することに買い手が同意したことを意味します。買い手の代理として動作するエージェントは買い手自身ではないため、同意がなければ一切保存しません。 お問い合わせの取り扱い。
curl -X POST https://fortitude21.com/api/v1/rfq \
-H 'content-type: application/json' \
-d '{
"consent": true,
"company": "Example Distribution Sdn Bhd",
"contact_name": "A Buyer",
"email": "buyer@example.com",
"country": "Malaysia",
"delivery_destination": "Port Klang, Malaysia",
"incoterms": "CIF",
"lines": [{ "sku": "F21-NF-20", "quantity": 2000 }]
}'
{
"ok": true,
"reference": "F21-RFQ-261030-ZQDFFR",
"missing_information": [
"F21-NF-20: which certification the destination market requires. UN approval is granted per design type and per production site."
],
"status_note": "Received as a quotation request. This is not a quotation.",
"price_accepted": false,
"stock_confirmed": false,
"delivery_date_committed": false,
"order_created": false,
"next_step": "A person at Fortitude21 prices it against the specification and replies by email."
}
MCPサーバー
カタログは、6つの危険物計算ツールと並んで、当社MCPサーバー上の8つのツールとしても提供しています。すでに計算ツールを接続済みのアシスタントは、追加の接続なしでカタログを利用できます。
https://fortitude21.com/mcp Streamable HTTP, JSON-RPC 2.0, no authentication
search_products get_product_pricing check_product_requirements
get_product_details get_product_categories create_quote_request
compare_products get_product_documents
7つは読み取り専用です。create_quote_request は書き込みとして宣言しているため、クライアントは黙って再試行せず、呼び出し前に確認します。そうでなければ買い手に同一の問い合わせが3件届くことになります。
フィード
カタログ全体を1ファイルで提供します。クローラー、表計算ソフト、製品ごとにリクエストを行いたくないフィードツール向けです。
| ファイル | 内容 |
|---|---|
/feeds/products.json | 全製品の型付き属性、価格状態、数量帯。 |
/feeds/products.csv | 同内容を製品1行で、表計算ソフト向けに提供。 |
/openapi.json | ツールとカタログの全エンドポイントのOpenAPI 3.1。 |
利用について
APIキーも登録も不要です。CORSは開放しているため、ブラウザからも呼び出せます。1アドレスあたり10秒間に約10リクエストの制限があり、超過すると429を返します。レスポンスにはETagが付きます。If-None-Match で送り返すと、カタログに変更がなければ本文なしの304を返します。
カタログはどのバージョンでも読み取り専用です。本文を受け付けるのは見積り依頼のみで、問い合わせを作成します。製品、仕様、価格を変更する手段はありません。
ご利用の際は、利用規約に従い製品ページへのリンクを明記してください。これを使って何かを構築される場合はご連絡ください。変更前にお客様の利用状況を考慮します。 利用規約。