メッセージ機能導入に伴うAPIへの影響

本ドキュメントの要点

1. はじめに

メルカリShopsでは、お客さまから届く問い合わせを受け付け、お客さまと連絡を取り合うための「メッセージ機能」を提供しています。商品購入前の問い合わせ(商品・ショップへの質問)と、購入後の注文に関する連絡のどちらも本機能で対応でき、ショップ管理画面では「メッセージ管理」から利用できます(参考: メルカリShopsガイド「メッセージ機能」)。

メッセージ機能は2026年6月22日にリリース済みで、従来の取引メッセージ機能・商品への質問機能はメッセージ機能に統合されています。取引メッセージ関連の Public API は後方互換が保たれており、現在も既存のインターフェースのまま、内部的にはメッセージ機能を利用する形で動作しています。

本ドキュメントでご案内する新API群は、このメッセージ機能をAPIから利用できるようにするものです。本ドキュメントでは、この新API群を「Inquiry API」と表記します。

※ GraphQL レスポンスの extensions に含まれる inquiry.id(例: "extensions": { "inquiry": { "id": "..." } })は、API のエラーに関する調査をご依頼いただく際にお伝えいただくことで、調査を効率的に行うための ID です。本ドキュメントの Inquiry API とは無関係です。

1.1 メッセージ機能のAPI提供により可能になること

1.2 APIへの影響

重要: 取引メッセージAPIは2027年1月中旬に廃止されます 取引メッセージAPI(メッセージの参照・送信、メッセージ関連のWebhook)は、2027年1月中旬(予定)に廃止され、利用できなくなります。ご利用中の方は、それまでに Inquiry API への移行実装を完了していただくようお願いいたします。具体的な廃止対象と移行先は「3. 影響範囲一覧」をご確認ください。メッセージ関連以外のAPIのみをご利用の場合は、移行の必要はありません。

現在提供中の取引メッセージAPI(OrderTransaction.messages / addOrderTransactionMessage など)は、1つの注文につき1スレッドでメッセージをやり取りする前提の機能であり、複数スレッド対応後は互換性を保てなくなります。また、今後 Inquiry API に追加される画像添付機能は、取引メッセージAPIではご利用いただけません。そのため、メッセージ機能に対応した Inquiry API の提供を開始した後、取引メッセージAPIを廃止いたします。

Inquiry API の提供と取引メッセージAPIの廃止は、以下の3つのフェーズに分けて実施します。取引メッセージAPIをご利用中の場合は Inquiry API への移行が必要となるため、移行期間として、フェーズ1の Inquiry API 提供開始(2026年8月上旬)からフェーズ2の取引メッセージAPIの廃止(2027年1月中旬)までを設けています。この期間中に Inquiry API への移行をお願いいたします。

フェーズ予定時期概要
フェーズ12026年8月上旬(予定)Inquiry API(inquiry 系の query / mutation / webhook)の提供を開始します
フェーズ22027年1月中旬(予定)既存の取引メッセージAPI群を廃止します。廃止後、Order.messages / OrderTransaction.messages は常に null を返します
フェーズ32027年2月上旬(予定)メッセージ(InquiryMessage)への画像添付に対応し、注文(orderTransaction)target でも複数の問い合わせスレッドを作成可能になります

※ 上記の予定時期は開発状況により変更される可能性があります。正確な提供開始時期については、別途アナウンスいたします。

2. 変更点概要

2.1 問い合わせを表すリソースの追加

問い合わせスレッドを表す Inquiry と、スレッド内の各メッセージを表す InquiryMessage リソースが追加されます。従来の取引メッセージは「注文(OrderTransaction)を対象とした Inquiry」として表現されます。

なお、既存の取引メッセージはすべて Inquiry / InquiryMessage として取り込み済みです。Inquiry API への移行後も、過去にやり取りした取引メッセージを含めて取得できます。

2.2 取引メッセージAPIの廃止

重要: 2027年1月中旬(予定)に以下のAPIは廃止され、利用できなくなります それまでに Inquiry API への移行実装を完了していただくようお願いいたします。移行先の詳細は次章の影響範囲一覧をご確認ください。

2.3 問い合わせ関連Webhookの追加

お客さまからのメッセージ受信などを検知するための新しい webhook トピック(inquiry_message_created / inquiry_message_admin_deleted / inquiry_resolved)が追加されます。

2.4 画像添付(今後追加予定)

フェーズ3において、メッセージへの画像添付に対応予定です。

添付用のインターフェースは先行して公開されますが、提供開始までは attachments を指定するとエラーになります。現時点では指定しないでください。詳細は §7 を参照してください。

2.5 注文問い合わせの複数スレッド対応(今後追加予定)

現在、注文 target の問い合わせは1つの注文につき1スレッドですが、フェーズ3において、同一の注文に対して複数の問い合わせスレッドを作成できるようになります。画像添付への対応と同じタイミングでの提供を予定しています。なお、商品・ショップへの問い合わせでは、現時点から同一の対象に対して複数のスレッドが存在することがあります。

2.6 デバッグ用問い合わせ作成API(今後追加予定)

お客さまからの問い合わせ受信をテストできるよう、お客さま起点の問い合わせをデバッグ用に作成できるAPIを追加予定です(2026年9月末目処)。これにより、商品・ショップ target を含む問い合わせの受信・返信フローを、実際のお客さまを介さずにテストできるようになります。詳細な仕様は提供開始時に改めてアナウンスいたします。

3. 影響範囲一覧

以下の表は、各APIがいつ、どのような影響を受けるかをまとめたものです。ご利用中のAPIをご確認ください。

既存API影響廃止時期必要なアクション
OrderTransaction.messages
Order.messages(フィールド)
廃止されます。廃止後は常に null となります フェーズ2(2027年1月中旬) inquiries で対象注文の問い合わせを特定し、inquiryMessages でメッセージを取得する方式へ移行
mutation addOrderTransactionMessage 廃止されます フェーズ2(2027年1月中旬) 既存スレッドへの返信は addInquiryMessage、注文への新規問い合わせ開始は createInquiry へ移行
webhook order_transaction_message_created
webhook transactionmessage_created(旧トピック。廃止予告済み)
廃止されます フェーズ2(2027年1月中旬) webhook inquiry_message_created へ移行
カート機能の旧API群廃止との関係: 「カート機能導入に伴うAPIへの影響」に記載の旧API群廃止フェーズ(2026年12月予定)とは別の廃止スケジュールです。

なお、「カート機能導入に伴うAPIへの影響」では、mutation addTransactionMessage の移行先として addOrderTransactionMessage をご案内していますが、Inquiry API(createInquiry / addInquiryMessage)へ移行する場合は、addOrderTransactionMessage を経由する必要はありません。

4. 追加されるType

Inquiry API では、メッセージを表す以下のTypeが追加されます。各Typeは、ショップ管理画面のメッセージ機能で使われている概念に対応しています。

Typeメッセージ機能(ショップ管理画面)での表示
Inquiryメッセージのスレッド
InquiryMessageスレッド内の個々のメッセージ
InquiryTargetメッセージ種別(ショップ / 商品 / 注文)
InquiryStatusステータス(新規 / 未対応 / 対応中 / 送信済み / 解決済み)

各Typeの関係

1 N スレッド内のメッセージ N 1 N 1 1 ※ 1 target: いずれか1つの対象に紐づく(union) Inquiry status: InquiryStatus target: InquiryTarget userInfo: UserInfo InquiryMessage body / from / sentAt status: InquiryMessageStatus attachments ショップ InquiryShopTarget shopId のみを持つ 商品 InquiryProductTarget Product / ProductVariant を参照 注文 InquiryOrderTransactionTarget OrderTransaction を参照

※ 1つの注文につき Inquiry は現在1つです。複数スレッド対応(§2.5、フェーズ3)以降は 1 : N になります。対象の種類に応じて、Inquiry.target からは InquiryShopTarget / InquiryProductTarget / InquiryOrderTransactionTarget のいずれかが返ります。スレッド内のメッセージは inquiryMessages で取得します。

4.1 Inquiry と InquiryMessage

Inquiry は1つの問い合わせスレッドを表し、InquiryMessage はスレッド内の個々のメッセージを表します。1つの Inquiry には複数の InquiryMessage が紐づきます(1:N)。ただし、注文 target については、現在は1つの注文につき Inquiry は1つ(注文 : Inquiry = 1:1)です。

作成できる Inquiry(スレッド)の数は、target によって異なります。

targetInquiry の数
ショップ / 商品同一の対象に対して複数の Inquiry が作成されることがあります
注文現在は1つの注文につき Inquiry は1つで、注文に関するすべてのメッセージがこの Inquiry に紐づきます。複数スレッド対応(フェーズ3)以降は、1つの注文に対して複数の Inquiry を作成できるようになります(§2.5
リソース役割取得方法
Inquiry問い合わせスレッド。対象(target)・ステータス・問い合わせ元のお客さまの情報を持つquery inquiries / inquiry
InquiryMessageスレッド内のメッセージ。本文・送信者区分(お客さま/ショップ)・送信日時を持つquery inquiryMessages(inquiryId を指定)

4.2 問い合わせの対象(InquiryTarget)

Inquiry は以下の3種類の対象(target)のいずれかを持ちます。Inquiry.target は union 型で、対象の種類ごとに異なる型が返されます。

target意味問い合わせを開始できるのは
InquiryShopTargetショップ自体への問い合わせお客さまのみ
InquiryProductTarget商品(バリエーション)への問い合わせ。バリエーション指定なしで作成された場合、productVariantId は nullお客さまのみ
InquiryOrderTransactionTarget注文(OrderTransaction)に関する問い合わせ。従来の取引メッセージに相当購入者・ショップの両方

ショップ側から createInquiry で問い合わせを開始できるのは注文 target のみです。ショップ・商品への問い合わせはお客さま起点で作成され、ショップは一覧取得と返信(addInquiryMessage)で対応します。いずれの target の Inquiry にも返信は可能です。

また、商品・ショップへの購入前問い合わせは、ショップ管理画面の設定「ショップへの購入前問い合わせ」で「受け取る」を選択している場合にのみ受け付けられます。「受け取らない」設定の場合、お客さまは商品詳細/ショッププロフィールから問い合わせできないため、商品・ショップ target の Inquiry は届きません。

複数スレッド対応の予定: 現在、注文 target の問い合わせは1つの注文につき1スレッドですが、フェーズ3(画像添付対応と同時)で同一の注文に対して複数のスレッドを作成できるようになる予定です。1つの orderTransactionId に複数の Inquiry が紐づく前提で実装してくださいinquiries は複数件を返しうるリスト形式です)。

4.3 InquiryStatus(問い合わせのステータス)

管理画面での表示説明
OPENED_BY_BUYER新規お客さまが問い合わせを開始した直後の状態
AWAITING_SELLER未対応ショップの対応待ち(お客さまからの新着メッセージあり)
AWAITING_BUYER送信済みお客さまの返信待ち(ショップが返信済み)
HANDLING_BY_SELLER対応中ショップが対応中(ショップが明示的に設定)
RESOLVED解決済み解決済み

初期ステータス

問い合わせの起点初期ステータス
お客さまが問い合わせを開始(shop / product / orderTransaction target)OPENED_BY_BUYER
ショップが createInquiry で開始(orderTransaction target のみ)AWAITING_BUYER

メッセージ送信による自動遷移

メッセージが送信されると、ステータスは自動的に遷移します。

送信者送信前のステータス送信後のステータス
ショップOPENED_BY_BUYER / HANDLING_BY_SELLER / AWAITING_SELLER / RESOLVEDAWAITING_BUYER
AWAITING_BUYER変化なし
お客さまAWAITING_BUYER / RESOLVEDAWAITING_SELLER
OPENED_BY_BUYER / HANDLING_BY_SELLER / AWAITING_SELLER変化なし

updateInquiryStatus による手動遷移

ショップが updateInquiryStatus で指定できるステータスは HANDLING_BY_SELLERRESOLVED の2つのみです。

変更後のステータス遷移条件
HANDLING_BY_SELLER現在のステータスが OPENED_BY_BUYER または AWAITING_SELLER の場合のみ可。それ以外からの遷移はエラー
RESOLVED現在のステータスが RESOLVED 以外であれば可。すでに RESOLVED の場合はエラー

ステータス遷移図

お客さまが問い合わせを開始 ショップが問い合わせを開始(注文 target のみ) ショップがメッセージ送信 「対応中」に変更 「対応中」に変更 ショップがメッセージ送信 お客さまがメッセージ送信 ショップがメッセージ送信 任意のステータスから 解決 ※ お客さまがメッセージ送信 ショップがメッセージ送信 新規 OPENED_BY_BUYER 送信済み AWAITING_BUYER 対応中 HANDLING_BY_SELLER 未対応 AWAITING_SELLER 解決済み RESOLVED

※ 図中の「解決」は、ショップによる「解決済み」への変更(updateInquiryStatus)・お客さまによる解決・2週間の自動解決のいずれかを指します。

解決済み後の再オープン

RESOLVED の問い合わせには、お客さま・ショップのどちらもメッセージを送信できます。お客さまが送信すると AWAITING_SELLER に、ショップが送信すると AWAITING_BUYER に遷移します(再オープン)。また、問い合わせの解決は、いずれの target もお客さま・ショップの双方から行えます(お客さま側で解決されるケースがあります)。RESOLVED は終端状態ではない点にご注意ください。

自動解決

ショップからの最後のメッセージ送信後、お客さまから2週間返信がない場合、問い合わせは自動的に RESOLVED になります。ショップの操作なしにステータスが変化するケースがある点にご注意ください。

4.4 その他のフィールド

フィールド説明
Inquiry.firstOpenedAt問い合わせが最初に開かれた日時
Inquiry.lastActivityAt最終アクティビティ日時(お客さま・ショップいずれかのメッセージ送信、メッセージまたは問い合わせのステータス変更のうち最新のもの)。新着順ソートに使用
Inquiry.salesChannel問い合わせの発生元チャネル(MERCARI_SHOPS / M_DEPARTMENT
Inquiry.userInfo問い合わせを作成したお客さまの情報(nickname / pictureUrl
InquiryMessage.from送信者区分(BUYER / SELLER
InquiryMessage.statusメッセージの状態。ACTIVE(通常) / ADMIN_DELETED(禁止行為への該当などにより事務局が非表示にしたメッセージ) / BLOCKED(事務局による内容確認中のため非表示のメッセージ)

5. インターフェース仕様

inquiries / inquiry の取得結果に最新の更新が反映されるまでには数秒かかることがあります。createInquiryaddInquiryMessage などでデータを更新した直後に取得する場合は、2〜3秒ほど間隔を空けてから取得してください。

5.1 query inquiries

ショップに届いた問い合わせの一覧を取得します。ステータス・対象によるフィルタと、ソートを指定できます。

query {
  inquiries(first: Int = 50, after: String,
            filter: ListInquiriesFilterInput,
            sort: ListInquiriesSortInput): InquiryConnection!
}

ListInquiriesFilterInput

フィールド必須説明
statuses[InquiryStatus!]No指定したステータスの問い合わせに絞り込み
targetFilterListInquiriesTargetFilterInputNo対象種別による絞り込み。shopTarget / productTarget / orderTransactionTarget のうち最大1つを指定

targetFilter で指定できる検索条件と一致方式

filterフィールド一致方式
shopTarget(条件なし。空オブジェクト {} を指定)
productTargetproductId完全一致
productName部分一致
productVariantName部分一致 ※ variant 指定なしで作成された問い合わせにはマッチしません
skuCode / janCode前方一致
orderTransactionTargetorderTransactionId / productId完全一致
productName / productVariantName部分一致
skuCode / janCode前方一致
lastName / firstName / lastNameKana / firstNameKana(購入者名)完全一致
phoneNumber / zipCode完全一致
trackingNumber完全一致

ListInquiriesSortInput

フィールド説明
fieldInquirySortField!FIRST_OPENED_AT または LAST_ACTIVITY_AT
orderSortOrder!ASC / DESC

リクエスト例(未対応の注文問い合わせを新着順に取得)

query {
  inquiries(
    first: 50
    filter: {
      statuses: [AWAITING_SELLER, OPENED_BY_BUYER]
      targetFilter: { orderTransactionTarget: {} }
    }
    sort: { field: LAST_ACTIVITY_AT, order: DESC }
  ) {
    edges {
      node {
        id
        status
        lastActivityAt
        userInfo { nickname }
        target {
          __typename
          ... on InquiryOrderTransactionTarget { orderTransaction { id } }
          ... on InquiryProductTarget { productId productVariantId }
          ... on InquiryShopTarget { shopId }
        }
      }
    }
    pageInfo { hasNextPage endCursor }
  }
}

5.2 query inquiry

問い合わせIDを指定して単一の問い合わせを取得します。

query { inquiry(id: ID!): Inquiry! }

5.3 query inquiryMessages

問い合わせIDを指定して、スレッド内のメッセージ一覧を取得します。

query {
  inquiryMessages(inquiryId: ID!, first: Int = 100, after: String): InquiryMessageConnection!
}

InquiryMessage

フィールド説明
idID!メッセージID
inquiryIdID!問い合わせID
bodyString!メッセージ本文。メッセージの status が ACTIVE 以外(BLOCKED / ADMIN_DELETED)の場合は空文字列が返されます
attachments[InquiryMessageAttachment!]!添付画像のリスト(署名付きURL)。画像添付の提供開始までは常に空のリストです。詳細は §7
fromInquiryMessageFrom!送信者区分(お客さま / ショップ)
statusInquiryMessageStatus!メッセージ状態
sentAtDateTime!送信日時

5.4 mutation createInquiry

ショップ側から注文に関する問い合わせスレッドを新規に開始します。従来 addOrderTransactionMessage でショップから最初のメッセージを送っていたケースに相当します。

mutation { createInquiry(input: CreateInquiryInput!): CreateInquiryPayload! }

CreateInquiryInput

フィールド必須説明
idempotencyKeyString!Yes重複処理防止のためのキー(1〜255文字の任意の文字列)。詳細は §5.7
messageBodyString!Yes最初のメッセージ本文
targetInquiryTargetInput!Yes問い合わせ対象。ショップ側から問い合わせを開始できるのは注文のみのため、指定できるのは orderTransaction{ orderTransactionId: ID! })のみ
attachments[InquiryMessageAttachmentInput!]No最初のメッセージに添付する画像(最大4件)。画像添付の提供開始までは指定するとエラーになります。詳細は §7

リクエスト例

mutation {
  createInquiry(
    input: {
      idempotencyKey: "b4f2e0a1-8c3d-4e5f-9a6b-7c8d9e0f1a2b"
      messageBody: "ご注文の商品について確認させてください。"
      target: { orderTransaction: { orderTransactionId: "order_transaction_1" } }
    }
  ) {
    inquiry { id status }
  }
}

5.5 mutation addInquiryMessage

既存の問い合わせスレッドにメッセージを追加(返信)します。target の種類を問わず利用できます。

mutation { addInquiryMessage(input: AddInquiryMessageInput!): AddInquiryMessagePayload! }

AddInquiryMessageInput

フィールド必須説明
idempotencyKeyString!Yes重複処理防止のためのキー(1〜255文字の任意の文字列)。詳細は §5.7
inquiryIdID!Yes返信先の問い合わせID
bodyString!Yesメッセージ本文
attachments[InquiryMessageAttachmentInput!]Noメッセージに添付する画像(最大4件)。注文 target の問い合わせのみ指定可能。画像添付の提供開始までは指定するとエラーになります。詳細は §7

5.6 mutation updateInquiryStatus

問い合わせのステータスを更新します(例: 対応開始時に HANDLING_BY_SELLER、対応完了時に RESOLVED へ変更)。

mutation { updateInquiryStatus(input: UpdateInquiryStatusInput!): UpdateInquiryStatusPayload! }

UpdateInquiryStatusInput

フィールド必須説明
inquiryIdID!Yes更新対象の問い合わせID
statusUpdatableInquiryStatus!Yes変更後のステータス。HANDLING_BY_SELLERRESOLVED のみを許可する専用の enum です

遷移条件(現在のステータスによる制限)は §4.3「updateInquiryStatus による手動遷移」を参照してください。条件を満たさない場合はエラーが返されます。AWAITING_BUYER / AWAITING_SELLER への遷移はメッセージ送信に伴って自動的に行われるため、本 mutation では指定できません。

5.7 idempotencyKey

createInquiryaddInquiryMessage では、重複処理を防止するために idempotencyKey の指定が必要です。ネットワークの問題やタイムアウトによって API レスポンスが失われた場合にも、同じ処理が重複実行されることを防ぐためのものです。

使用例

問い合わせへの返信を送信する場合の例です。

  1. addInquiryMessage を実行(idempotencyKey: "reply-001")
  2. メッセージの作成は成功したが、レスポンスがネットワーク問題で失われる
  3. 同じ idempotencyKey: "reply-001" でリトライを実行
  4. メッセージは既に作成済みのため、重複作成は行われずエラーが返される

リトライに対してエラーが返された場合は、元のリクエストが成功している可能性があります。inquiries / inquiryMessages で対象が作成済みかをご確認ください。

仕様

項目内容
必須フィールドcreateInquiry / addInquiryMessage で必ず指定します
形式1〜255文字の任意の文字列。UUID などの一意な値の利用を推奨します
リトライ時の挙動リクエストが失敗した場合は、同じ idempotencyKey でリトライしてください。対象が既に作成済みの場合は、重複作成せずエラーを返します。リトライ時に異なるキーを指定すると、意図せず問い合わせやメッセージが重複して作成される可能性があります

6. Webhook

問い合わせ関連のイベントを検知するため、以下の webhook トピックが追加されます。

トピック送信タイミング
inquiry_message_createdお客さまがショップにメッセージを送信したとき。ショップ自身が送信したメッセージでは本 webhook は送信されません
inquiry_message_admin_deleted事務局がメッセージを削除したとき
inquiry_resolved問い合わせが解決済みになったとき

各トピックの Payload は以下のとおりです。

inquiry_message_created

keytypenullable説明
inquiry_idstringNo問い合わせID
inquiry_message_idstringNoメッセージID
shop_idstringNoショップID
topicstringNoinquiry_message_created
sent_atstringNoメッセージ送信日時(RFC 3339)

Payload にはメッセージ本文が含まれません。本文は inquiry_message_id をもとに inquiryMessages で取得してください。

inquiry_message_admin_deleted

keytypenullable説明
inquiry_idstringNo問い合わせID
inquiry_message_idstringNoメッセージID
shop_idstringNoショップID
topicstringNoinquiry_message_admin_deleted
sent_atstringNoメッセージ送信日時(RFC 3339)
deleted_atstringNo削除日時(RFC 3339)

inquiry_resolved

keytypenullable説明
inquiry_idstringNo問い合わせID
shop_idstringNoショップID
topicstringNoinquiry_resolved
resolved_atstringNo解決日時(RFC 3339)

7. 画像添付(今後追加予定)

メッセージへの画像添付に、フェーズ3(2027年2月上旬予定)で対応予定です。

提供環境について: 画像添付用のインターフェース(以下のフィールド)は提供開始に先立って公開されていますが、提供開始までは attachments を指定するとエラーとなります。また、InquiryMessage.attachments は提供開始までは常に空のリストを返します。提供開始時期は別途アナウンスいたします。

7.1 画像の添付(送信)

createInquiry(最初のメッセージ)および addInquiryMessage の入力に attachments フィールドを指定します。

InquiryMessageAttachmentInput

フィールド必須説明
urlStringNo添付する画像のURL。指定されたURLから画像が取り込まれます。ファイルサイズ上限は8MB。現時点で指定できるフィールドは url のみです

制約事項

項目内容
添付方式画像URLの指定(指定したURLからシステムが画像を取得します)
枚数上限1メッセージにつき最大4件
ファイルサイズ1ファイルにつき最大8MB
対象注文 target の問い合わせのみ。商品・ショップ target の問い合わせには添付できません

リクエスト例(既存スレッドへの画像つき返信)

mutation {
  addInquiryMessage(
    input: {
      idempotencyKey: "3f8a1c2d-6b4e-4f7a-8d9c-0e1f2a3b4c5d"
      inquiryId: "inq_1"
      body: "商品の状態を撮影した画像をお送りします。"
      attachments: [{ url: "https://example.com/images/item-condition.jpg" }]
    }
  ) {
    inquiryMessage {
      id
      attachments { url }
    }
  }
}

7.2 添付画像の取得

添付画像は InquiryMessage.attachments から取得できます。

InquiryMessageAttachment

フィールド説明
urlString!アップロードされた添付画像の署名付きURL

7.3 廃止スケジュールとの関係

既存の取引メッセージAPI群(§3 影響範囲一覧)は、画像添付・複数スレッド対応(フェーズ3)の提供を待たず、フェーズ2(2027年1月中旬予定)で廃止されます。それまでに Inquiry API への移行実装を完了していただくようお願いいたします。

8. 移行手順の例

8.1 メッセージの取得

Before: 取引メッセージAPI

query {
  orderTransaction(id: "ot_1") {
    messages {
      body
      sender
      createdAt
    }
  }
}

After: Inquiry API

inquiriesinquiryMessages の2段階で取得します。

# 1. 注文に紐づく問い合わせを特定
query {
  inquiries(filter: {
    targetFilter: {
      orderTransactionTarget: {
        orderTransactionId: "ot_1"
      }
    }
  }) {
    edges { node { id } }
  }
}

# 2. inquiry の id でメッセージを取得
query {
  inquiryMessages(inquiryId: "inq_1", first: 100) {
    edges { node { body from sentAt } }
  }
}

複数スレッド対応(フェーズ3)以降は、1つの注文に複数の問い合わせが紐づく場合があります。上記手順1で取得した edges は全件を処理するように実装してください。

8.2 メッセージの送信

Before: 取引メッセージAPI

mutation {
  addOrderTransactionMessage(input: {
    orderTransactionId: "ot_1"
    message: "発送しました"
  }) { ... }
}

After: Inquiry API

既存スレッドへの返信は addInquiryMessage、注文への新規問い合わせ開始は createInquiry を使用します。

# 既存の問い合わせに返信
mutation {
  addInquiryMessage(input: {
    idempotencyKey: "reply-001"
    inquiryId: "inq_1"
    body: "発送しました"
  }) { inquiryMessage { id sentAt } }
}

# 注文への問い合わせをショップから開始
mutation {
  createInquiry(input: {
    idempotencyKey: "create-ot_1-001"
    messageBody: "発送しました"
    target: { orderTransaction: {
      orderTransactionId: "ot_1" } }
  }) { inquiry { id } }
}

8.3 新着メッセージの検知

webhook order_transaction_message_created を利用していた場合は inquiry_message_created へ移行してください。新着メッセージの検知には webhook のご利用を推奨します。