Yokinsoft.Rakuten.RMS.Api 2.0.0

dotnet add package Yokinsoft.Rakuten.RMS.Api --version 2.0.0                
NuGet\Install-Package Yokinsoft.Rakuten.RMS.Api -Version 2.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Yokinsoft.Rakuten.RMS.Api" Version="2.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Yokinsoft.Rakuten.RMS.Api --version 2.0.0                
#r "nuget: Yokinsoft.Rakuten.RMS.Api, 2.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Yokinsoft.Rakuten.RMS.Api as a Cake Addin
#addin nuget:?package=Yokinsoft.Rakuten.RMS.Api&version=2.0.0

// Install Yokinsoft.Rakuten.RMS.Api as a Cake Tool
#tool nuget:?package=Yokinsoft.Rakuten.RMS.Api&version=2.0.0                

Rakuten RMS WEB API .NET client library

楽天RMS WEB API へ接続するための .NET Framework クライアント用ライブラリです。

楽天RMSは楽天出店者が商品や注文の管理を行うウェブプラットフォームです。RMSでは出店者用にWEB APIが公開されており APIを通じて商品、注文、在庫などほとんどの管理を行うことができます。

本ライブラリは、このRMS WEB APIへ接続をサポートする .NET Framework で動作するクライアントライブラリです。Python.NET を使用すると Python から API を利用することもできます。

煩雑な通信部分、メッセージの読み書き部分を内蔵しているため、プログラマーは用途に合ったロジックの構築に集中できます。


本ライブラリは楽天RMS APIへ接続する社内受注管理システムの開発、評価のために作られました。

サーバーサイドAPIと、その仕様、関連するドキュメントは楽天が所有するものであり、それらの詳細については楽天RMS で参照してください。なお楽天RMS APIの利用について、楽天と正式な契約関係のある開発者を支援することを前提としています。

本ライブラリは楽天とは一切関係がありません。動作の安定性、整合性など、楽天の認証や監修を受けたものではありません。このライブラリについて楽天へ問い合わせ等は遠慮ください。

また、RMS APIの仕様、動作などに関する当方へのお問合せもご遠慮ください。

本ライブラリについての議論、未完成部分の実装、バグの報告・修正など、外部からのコミット(pull request等)は常に歓迎します。

履歴

  • 2024-01-07 システムイベント系DLL分離とバグ修正
  • 2023-11-10 全メソッドの実装
  • 2023-11-01 ドキュメント類追加
  • 2023-09-30 最初のコミット

Copyright (c) 2023 Jake Yoshimura, Yokinsoft. Released under MIT license.

https://opensource.org/license/mit/

動作環境

  • .NET Framework 4.8
  • Newtonsoft Json.NET (latest version)
  • (Python.NET)

使い方

詳細なドキュメントはこちら

API

ServiceProvider クラスがクライアントの認証情報とカテゴリ別のAPIへアクセスするクラスへのアクセスを提供します。

var provider = new ServiceProvider( serviceSecret, licenseKey );

serviceSecret と licenseKey はRMSのAPI設定から取得できる認証用の文字列です。

各カテゴリ別のAPI群へのアクセスは ServiceProvider のメソッドからオブジェクトを取得します。APIの分類別にアクセスするためのクラスが対応します。

RMS WEB API カテゴリ ServiceProvider メソッド 対応クラス
商品API<br/> 商品API 2.0(ItemAPI 2.0) GetItemAPI20() ItemAPI20.ItemAPI20
カテゴリAPI<br/> カテゴリAPI 2.0(CategoryAPI 2.0) GetCategoryAPI20() CategoryAPI20.CategoryAPI20
在庫API 在庫API 2.1(InventoryAPI 2.1) GetInventoryAPI21() InventoryAPI21.RakutenInventoryServiceV21
在庫API 2.0(InventoryAPI 2.0) GetInventoryAPI20() InventoryAPI20.RakutenInventoryServiceV2
ナビゲーションAPI ジャンル・商品属性情報検索API(NavigationAPI 2.0) GetNavigationAPI20() NavigationAPI20.NavigationAPI20
組み合わせ販売API(ItemBundleAPI) GetItemBundleAPI() ItemBundleAPI.ItemBundleAPI
R-CabinetAPI(CabinetAPI) GetCabinetAPI() CabinetAPI.CabinetAPI
製品API(ProductAPI) GetProductAPI() ProductAPI.ProductAPI
楽天ペイ受注API(RakutenPayOrderAPI) GetRakutenPayOrderAPI() RakutenPayOrderAPI.RakutenPayOrderService
購入商品API(PurchaseItemAPI) GetPurchaseItemAPI() PurchaseItemAPI.PurchaseItemAPI
購入申込API(ReserveAPI) GetReserveAPI() ReserveAPI.ReserveAPI
問い合わせ管理API(InquiryManagementAPI) GetInquiryManagementAPI() InquiryManagementAPI.InquiryManagementAPI
店舗情報API(ShopAPI) GetShopAPI() ShopAPI.ShopAPI
店舗ページAPI(ShopPageAPI) GetShopPageAPI() ShopPageAPI.ShopPageAPI
クーポンAPI(CouponAPI) GetCouponAPI() CouponAPI.CouponAPI
ライセンス管理API(LicenseManagementAPI) GetLicenseManagementAPI() LicenseManagementAPI.LicenseManagementAPI

API呼び出しメソッドは、基本的にサービスのエンドポイントで定義されている名前を尊重し、C# 形式、また [動詞][目的語] (GetItemなど)の順になるように定義しなおしています。

コードサンプル

特定の注文番号を指定して注文データを取得する例

using Rakuten.RMS.Api;

var provider = new ServiceProvider( "SPxxxxxxxxxxxxxxxxx","SLxxxxxxxxxxxxxx" );
var orderApi = provider.GetRakutenPayOrderAPI();
var orderList = orderApi.GetOrder( new [] { "123456-12341234-1234567890" } );

Python から利用する方法

Python.NET を使用して Python からAPIにアクセスることができます。

Python.NET を使用して Python から使用するための環境の構築と使用方法の詳細

Python から使用では、list や パラメータのクラスオブジェクトの指定が簡単になります。

注文データの取得の例

sp = ServiceProvider('SPxxxxxxxxxxxxxxxxx','SLxxxxxxxxxxxxxx')
api = sp.GetRakutenPayOrderAPI()

orders = api.GetOrder( ["123456-12341234-1234567890"])

システム通知イベント

2種類ある通知メッセージに対応する2つのハンドラーが用意されています。いずれも、ASP.NETの HTTP ハンドラ内でメッセージの読み込みに対応します。 メッセージのハンドリングはメソッドのコールバック内で、開発者が記述します。

Rakuten.RMS.Api.SystemEventNotification.dll をプロジェクトから参照

注文通知系

public static void HandleOrderNoify(HttpRequest request, HttpResponse response, Func<OrderNotifyModel, ResultCode> handler)

システム情報系

public static void HandleSystemInfoNotify(HttpRequest request, HttpResponse response, Func<SystemNotifyModel, ResultCode> handler)
Notification.HandleOrderNoify(HttpContext.Current.Request, HttpContext.Current.Response,
    (model) => {
        // 任意の実装
        var orderNumbers = model.OrderInfoNotifyModel.Select(m => m.OrderNumber).ToList();
    }
);

実装状況

現在、すべてのAPIとメソッドが実装されているわけではありません。 当面は最新バージョンのAPIのみの実装を目標とします。 SOAP形式など旧来のAPIや廃止されたAPIの実装は省略します。

商品・画像管理

API メソッド 実装
商品API 商品API 2.0(ItemAPI 2.0) items.get
items.upsert
items.patch
items.delete
items.search
items.inventory-related-settings.get
items.inventory-related-settings.update
カテゴリAPI カテゴリAPI 2.0(CategoryAPI 2.0) category.shop-categories.get
category.shop-categories.insert
category.shop-categories.update
category.item-mappings.get
category.item-mappings.upsert
category.item-mappings.delete
category.category-trees.get
category.category-trees.upsert
category.category-set-lists.get
在庫API 在庫API 2.1(InventoryAPI 2.1) inventories.variants.get
inventories.variants.upsert
inventories.variants.delete
inventories.bulk.get.range
inventories.bulk.get
inventories.bulk.upsert
在庫API 2.0(InventoryAPI 2.0) inventories.variants.get
inventories.variants.upsert
inventories.variants.delete
inventories.bulk.get.range
inventories.bulk.get
inventories.bulk.upsert
ナビゲーションAPI ジャンル・商品属性情報検索API(NavigationAPI 2.0)) version.get
genres.get
genres.attributes.get
genres.attributes.dictionaryValues.get
組み合わせ販売API(ItemBundleAPI)) ItemBundle.create
ItemBundle.delete
ItemBundle.getBundleList
ItemBundle.update
R-CabinetAPI(CabinetAPI) cabinet.usage.get
cabinet.folders.get
cabinet.folder.files.get
cabinet.files.search
cabinet.file.delete
cabinet.trashbox.files.get
cabinet.trashbox.files.revert
cabinet.file.insert
cabinet.file.update
cabinet.folder.insert
製品API(ProductAPI) product.search

受注・問い合わせ管理

API メソッド 実装
楽天ペイ受注API(RakutenPayOrderAPI) searchOrder
getOrder
confirmOrder
updateOrdershipping
updateOrderShippingAsync
getResultUpdateOrderShippingAsync
getSubStatusList
updateOrderSubStatus
updateOrderMemo
updateOrderRemarks
updateOrderSender
updateOrderSenderAfterShipping
cancelOrder
cancelOrderAfterShipping
updateOrderOrderer
updateOrderDelivery
simulateCouponAmount
getPayment
購入商品API(PurchaseItemAPI) searchOrderItem
getOrderItem
購入申込API(ReserveAPI) reserve.infoList.get
reserve.earlyCommit.update
問い合わせ管理API(InquiryManagementAPI) inquirymngapi.counts.get
inquirymngapi.inquiries.get
inquirymngapi.inquiry.get
inquirymngapi.reply.post
inquirymngapi.attachment.post
inquirymngapi.attachment.get
inquirymngapi.inquiries.patch.read
inquirymngapi.inquiries.patch.complete/incomplete

店舗情報

API メソッド 実装
店舗情報API(ShopAPI) shop.topDisplay.get
shop.topDisplay.edit
shop.shopLayoutImage.get
shop.shopLayoutImage.edit
shop.shopLayoutCommon.get
shop.shopLayoutCommon.edit
shop.naviButtonInfo.get
shop.naviButtonInfo.edit
shop.naviButton.get
shop.naviButton.edit
shop.layoutTextSmall.get
shop.layoutLossLeader.get
shop.layoutItemMap.get
shop.layoutCategoryMap.get
shop.shopCalendar.get
shop.delvdateMaster.get
shop.deliverySetInfo.get
shop.soryoKbn.get
shop.shopAreaSoryo.get
shop.shopAreaSoryo.edit
shop.delvAreaMaster.get
shop.layoutTextLarge.get
shop.layoutTextLarge.edit
shop.goldTop.get
shop.goldTop.edit
shop.shopMaster.get
shop.shopCalendarAndDesign.get
shop.shopCalendarAndDesign.edit
shop.shopHoliday.get
shop.shopHoliday.edit
shop.spBigBanner.get
shop.spBigBanner.edit
shop.spCategoryPage.get
shop.spCategoryPage.edit
shop.spItemPage.get
shop.spItemPage.edit
shop.spMedamaCategory.get
shop.spMedamaCategory.edit
shop.spMedamaItem.get
shop.spMedamaItem.edit
shop.spSmallBanner.get
shop.spSmallBanner.edit
shop.spTopPage.get
shop.spTopPage.edit
shop.spTopPageDisplay.get
shop.shopStatus.get
shop.shopStatus.edit
shop.operationLeadTime.get
shop.shipFrom.get
shop.signboard.get
shop.signboard.edit
店舗ページAPI(ShopPageAPI)
ShopPage.navigations.insert
ShopPage.navigations.list
ShopPage.navigations.get
ShopPage.navigations.update
ShopPage.widgets.insert
ShopPage.widgets.list
ShopPage.widgets.get
ShopPage.widgets.update
ShopPage.widgets.delete
ShopPage.layouts.insert
ShopPage.layouts.list
ShopPage.layouts.published.list
ShopPage.layouts.get
ShopPage.layouts.replace
ShopPage.layouts.update
ShopPage.layouts.delete
クーポンAPI(CouponAPI) coupon.issue
coupon.update
coupon.delete
coupon.get
coupon.search
thankscoupon.issue
thankscoupon.update
thankscoupon.stop
thankscoupon.get
thankscoupon.search
ライセンス管理API(LicenseManagementAPI) license.expiryDate.get

その他

API メソッド 実装
システムイベント通知サービス(System Event Notification Service) HandleOrderNoify
HandleSystemInfoNotify

TODO

  • 実装はかなり進みましたが、動作検証がかなり手抜きです。
  • 実装途中のプロジェクトのため、メソッドの引数、戻り値など、破壊的な変更が起こりえます。
Product Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 119 6/9/2024

楽天RMS WEB API へ接続するための .NET Framework クライアント用ライブラリです。