rinkak 3D Print Cloud APIとは?

rinkakが提供するデジタル製造サービスをクラウドサービスとして活用できるAPIです。面倒な製造管理、受発注管理、流通管理はrinkakがフルサポートしますので誰でも簡単にアプリやWEBサービスに3Dプリント機能を組み込むことが可能です。

.

rinkak Developerに登録する


rinkakにログインします。
画面右上のアイコンのプルダウンメニューから「アカウントの設定」へ移動します。
「rinkak Developerに登録する」というチェックボックスをONにします。
「更新する」ボタンをクリックすると登録完了です。
rinkak DeveloperをONにすると、「ショップの設定」に[shop_secret]が表示されます。 これはAPIリクエストで利用する文字列です。

.

アプリを登録する


rinkak developerに登録が完了していると、右上のアイコンのプルダウンメニューに「アプリ」の項目が追加されます。
「アプリ」に移動して、「アプリの新規登録」を行うことでアプリを作ることが出来ます。
「アプリ」に必要な項目は以下のとおりです。

Redirect URIはOAuth2.0のAuthorization Codeを受け取るサイトのURIを指定して下さい。
IconとNameはユーザに表示されます
Icon、Name、Description、Web Site URLはブランディング素材として利用します。
アプリの登録が完了するとclient_idとclient_secretが取得できます。これらを利用してOAuth2.0認証を行います。

.

OAuth2.0による認証認可手順


各種APIをクライアントプログラムから利用するためには、OAuth 2.0 Protocolにより規定された認可を行うことが求められます。
この手順により、クライアントプログラムがどのようなAPIアクセスを行い、そしてどのような情報が参照または更新されるのか(これをスコープと呼びます)がユーザに提示されます。
ユーザの認証、および提示されたスコープについてユーザが同意した場合にのみ、クライアントプログラムはAPIにアクセスするための情報(トークンなど)を得ることができます。

1. 認可とAuthorization Codeの入手

最初にクライアントプログラムは、HTTP GETメソッドにて下記のURLにアクセスします。

URL https://www.rinkak.com/oauth2/auth
(パラメータ)
client_id アプリ情報で表示されているclient_idの値
redirect_uri アプリ情報で設定したredirect_uriの値
scope cart product
ブラウザで下記のURLを直接開くとアクセス許可の通知が開きます。
scopeで指定する範囲が複数ある場合は半角スペース区切りで複数個を指定します。

具体的には以下のようなアクセスになります。
https://www.rinkak.com/oauth2/auth?client_id=[アプリ情報のclient_id]&redirect_uri=[アプリ情報で登録したredirect_uri]&scope=cart product
ユーザはブラウザで下記のような認証認可の確認画面が表示されます。

ユーザが「アクセスを許可」のボタンを押すとAuthorization Codeがredirect_uriのcodeパラメータとして受け取れます。
[redirect_uri]?code=[Authorization Code]
なお、ユーザが「許可しない」をクリックした場合はcodeパラメータの含まれない[redirect_uri]にリダイレクトされます。
このAuthorization Codeの有効期限は600秒(10分)です。
10分を超えた場合はAuthorization Codeが無効化されますので、再び初めからAuthorization Codeを取得する必要があります。

2. トークンを取得する

各種APIにアクセスするためにはトークン(token)が必要になります。
トークンはHTTP POSTメソッドで下記URLにアクセスして取得します。

URL https://www.rinkak.com/oauth2/token
(パラメータ)
client_id アプリ情報で表示されているclient_idの値
client_secret アプリ情報で表示されているclient_secretの値
redirect_uri アプリ情報で設定したredirect_uriの値
grant_type authorization_code もしくは refresh_token
code ユーザ認証認可で取得したAuthorization Code
以下のようなアクセスになります。
curl -d client_id=[アプリ情報のclient_id] -d client_secret=[アプリ情報のclient_secret] -d redirect_uri=[アプリ情報で登録したredirect_uri] -d grant_type=authorization_code -d code=[Authorization Code] https://www.rinkak.com/oauth2/token
正しくリクエストすると下記のようなJSON形式のデータが取得できます。
{"access_token": "[アクセストークン文字列]", "tokeny_type": "Bearer", "expires_in": 3600, "refresh_token": "[リフレッシュトークン文字列]"}
tokenの有効期限を更新する場合はgrant_typeにrefresh_tokenを指定します。
JSONの各値の内容は以下のとおりです。
要素名 説明
access_token String 各APIにアクセスするためのトークン文字列
token_type String アクセストークンの種類。"Bearer"という値が返されます。
expires_in Integer アクセストークンが失効するまでの時間(秒)
refresh_token String アクセストークンを更新する際に利用するリフレッシュトークン文字列
grant_type String authorization_code
code String ユーザ認証認可で取得したAuthorization Code
なんらかのエラーが発生した場合もJSONが返ります。JSONにはerror要素が含まれ、その内容は下記のとおりです。
error要素 意味
invalid_request パラメータの指定ミス
unsupported_grant_type 不正なgrant_type
invalid_grant 不正なAuthorization Code
invalid_token 不正なトークンもしくは期限切れのトークン
エラー情報のJSONにはmessage要素が含まれており、詳しいエラーの内容が記述されています。

.

プロダクト情報を取得するAPI


プロダクト情報を取得するには以下のURIにHTTP GETリクエストします。
product_secretもしくはshop_secretを指定する場合はPOSTリクエスで受け付けており、製造可能かつ非公開なプロダクトにもアクセスすることができます。

URL GET https://www.rinkak.com/api/v1/product/info
(パラメータ)
product_id プロダクト編集画面に表示されるproduct_idの値
URL POST https://www.rinkak.com/api/v1/product/info
(パラメータ)
token OAuth2.0で認証認可されたトークン文字列
product_id プロダクト編集画面に表示されるproduct_idの値
product_secret (OPTION) プロダクト編集画面に表示されるproduct_secretの値。非公開プロダクトの情報にアクセスする際に必要となる。公開プロダクトの情報にアクセスする際は不要。
shop_secret (OPTION) アカウント情報画面に表示されるshop_secretの値。Shop内の公開/非公開プロダクトの情報にアクセスする際に必要となる。特定の非公開プロダクトの情報にアクセスしたい場合はproduct_secretかshop_secretのいずれかを利用する。
以下の情報がJSON形式で取得できます
要素名 説明
code Integer 成否フラグ。値の取得に成功した場合は0(ゼロ)、それ以外は不成功。
id Integer プロダクトID
lang String 言語コード。例)ja
currency_code String 通貨コード。例)jpy
name String プロダクト名
shoulder String プロダクトのキャッチコピー
description String プロダクトの説明
images String配列 プロダクト画像のURL
price Float プロダクトの価格
material_ids Integer プロダクトの素材ID
area Float プロダクトの面積(cm2)
volume Float プロダクトの体積(cm3)
size String プロダクトのサイズ(cm)
original Integer オリジナルプロダクトのID。存在しない場合は-1。
cc Integer プロダクトがCreative Commonsで公開されているか否か。
0: 非公開, 1: CC-BY-NC-ND, 2: CC-BY-NC-SA, 3: CC-BY-NC, 4: CC-BY-ND, 5: CC-BY-SA, 6: CC-BY
download Integer データがダウンロードされた数
view Integer プロダクトが閲覧された数
favorite Integer Favoriteされている数
score Float プロダクトの平均評価値
create String プロダクトが登録されたUTC日時。
フォーマット: yyyy-mm-dd HH:MM:ss
■デモ
https://www.rinkak.com/api/v1/product/info?product_id=5798429187899392

APIアクセスに失敗した場合、code要素が0以外の値となり、エラーメッセージがJSONで返されます。

素材IDは「素材情報一覧を取得するAPI」を参考にして下さい。

.

カートにプロダクトを登録するAPI


ユーザに代わってサービス(アプリ)が指定のプロダクトをユーザのカートに追加するAPI。
これにより、サービス(アプリ)が独自のプロダクトをカートに追加でき、ユーザをそのまま購入へ導くことができます。
カートにプロダクトを追加した後の実際の購入フローはブラウザで行います。

カートにプロダクトを登録するには以下のURIにHTTP POSTリクエストします。

URL https://www.rinkak.com/api/v1/addcart
各パラメータ
token OAuth2.0で認証認可されたトークン文字列
product_id プロダクト編集画面に表示されるproduct_idの値
product_secret (OPTION) プロダクト編集画面に表示されるproduct_secretの値。製造可能かつ非公開プロダクトの情報にアクセスする際に必要となる。公開プロダクトの情報にアクセスする際は不要。
shop_secret (OPTION) アカウント情報画面に表示されるshop_secretの値。Shop内の製造可能かつ公開/非公開プロダクトの情報にアクセスする際に必要となる。特定の非公開プロダクトの情報にアクセスしたい場合はproduct_secretかshop_secretのいずれかを指定する。
quantity カートに追加するプロダクトの個数
material_id 製造する素材ID。プロダクトが許可する素材IDのみ指定可。
以下の情報がJSON形式で取得できます
要素名 説明
code Integer カートにプロダクトを追加できたか否か。0:成功。
product_id Integer プロダクトID
material_id Integer 素材ID
quantity Integer カートに追加したプロダクトの個数
cart_url String ユーザのカート画面ページのURL。

素材IDは「素材情報一覧を取得するAPI」を参考にして下さい。

.

素材情報一覧を取得するAPI


素材情報を取得するには以下のURIにHTTP GETリクエストします。

URL https://www.rinkak.com/api/v1/materials
結果はJSON形式で以下の内容が取得できます。
要素名 説明
id Integer 素材ID
name String 素材名
minimum_thickness Float 当該素材の造形に必要となる最低厚み(mm)

.

プロダクトを登録するAPI


本APIを利用したい場合はrinkakのお問合せフォームからご相談下さい。 個別に対応させて頂きます。

.

ショップ情報を取得するAPI


ショップ情報を取得するには以下のURIにHTTP GET/POSTリクエストします。shop_secretを指定することで、製造可能かつ非公開なプロダクトにもアクセスすることができます。

URL GET https://www.rinkak.com/api/v1/shop/info
(パラメータ)
shop_id ショップの設定画面に表示されるshop_idの値
URL POST https://www.rinkak.com/api/v1/shop/info
(パラメータ)
token OAuth2.0で認証認可されたトークン文字列
shop_id ショップページもしくはショップの設定画面に表示されるshop_idの値
shop_secret (OPTION) ショップの設定画面に表示されるshop_secretの値。ショップ内の公開/非公開プロダクトの情報にアクセスする際に必要となる。
以下の情報がJSON形式で取得できます
要素名 説明
shop JSON ショップ詳細
products JSONArray 簡易プロダクト情報のリスト
ショップ詳細(shop)は下記の要素を含みます。
要素名 説明
name String ショップ名
icon String ショップアイコンのURL
description String ショップの説明
簡易プロダクト情報(products)は下記の内容を含みます。
要素名 説明
currency_code String 通貨コード。例)jpy
name String プロダクト名
shoulder String プロダクトのキャッチコピー
images String配列 プロダクト画像のURL
price Float プロダクトの価格
original Integer オリジナルプロダクトのID。存在しない場合は-1。
cc Integer プロダクトがCreative Commonsで公開されているか否か。
0: 非公開, 1: CC-BY-NC-ND, 2: CC-BY-NC-SA, 3: CC-BY-NC, 4: CC-BY-ND, 5: CC-BY-SA, 6: CC-BY
favorite Integer Favoriteされている数
score Float プロダクトの平均評価値
create String プロダクトが登録されたUTC日時。
フォーマット: yyyy-mm-dd HH:MM:ss
■デモ
https://www.rinkak.com/api/v1/shop/info?shop_id=5532867065020416

素材IDは「素材情報一覧を取得するAPI」を参考にして下さい。

.

3DモデリングAPI


3DモデリングAPIは簡単な座標データを送信することで3Dプリントできるモデルデータ(OBJやWRL)を作ることができるAPIです。 指定した座標位置に立方体のカラーボックスを配置したモデルデータを作ることができます。
以下のURIにHTTP POSTリクエストします。

URL POST https://www.rinkak.com/api/v1/model/make
(パラメータ)
client_id アプリ情報で表示されているclient_idの値
length (オプション)配置する立方体の1辺の長さ。単位はmm(ミリメートル)。default=1
data JSON形式の2次元配列の文字列。各配列要素にはx,y,z座標と色情報を指定。
x,y,zは整数。色情報は16進数6桁の文字列。
(例) (x,y,z)=(0,1,2)に赤(FF0000)の立方体を配置する場合 data='[ [0,1,2,"FF0000"] ]' となります。
signature data文字列の末尾にアプリ情報のclient_secretの文字列を連結した文字列にMD5ハッシュ計算した値(16進数文字列)。
(注)client_secretが外部に漏れないよう気をつけて管理して下さい。外部に漏れた可能性のある場合は「アプリ」から「client_secretをリセットする」をクリックして新たなclient_secretを生成して下さい。

dataパラメータ

例えば、(x,y,z)=(0,0,0), (1,0,0), (0,1,0), (0,0,1)の位置にそれぞれ赤色(FF0000)、青色(0000FF)、緑色(00FF00)、白色(FFFFFF)の立方体を配置する場合。data要素は下記のようになります。
data = '[ [0,0,0,"FF0000"], [1,0,0,"0000FF"], [0,1,0,"00FF00"], [0,0,1,"FFFFFF"] ]'

signatureパラメータ

アプリのclient_secretの文字列が「abcdef」の場合、signatureの値は以下のように計算します。
var data =  '[ [0,0,0,"FF0000"], [1,0,0,"0000FF"], [0,1,0,"00FF00"], [0,0,1,"FFFFFF"] ]';
var secret = 'abcdef';
var signature = CryptoJS.MD5(data + secret);
console.log( signature );
> '536d7f25b313fcace72089e0f6880540'
このdataで指定した立方体の1辺の長さを2mmにする場合、以下の様なアクセスになります。
curl -d client_id=[アプリ情報のclient_id] -d length=2 -d data='[ [0,0,0,"FF0000"], [1,0,0,"0000FF"], [0,1,0,"00FF00"], [0,0,1,"FFFFFF"] ]' -d signature=536d7f25b313fcace72089e0f6880540 https://www.rinkak.com/api/v1/model/make
リクエストが成功したら以下の様な形のモデルを作ることができます。

リクエストの結果はJSON形式で以下の内容が取得できます。

要素名 説明
code Integer 0で成功。それ以外の値は失敗。
label String 取得結果。
message String 取得結果に対するメッセージ。アクセスに失敗した時に参考にして下さい。
id Integer モデルデータのid。モデルデータを取得する際に必要になります。(成功した場合のみ)
length Integer 指定した立方体の1辺の長さ(mm)。(成功した場合のみ)
size Integer 配列データのサイズ。(成功した場合のみ)
x Integer Xの要素数。(成功した場合のみ)
y Integer Yの要素数。(成功した場合のみ)
z Integer Zの要素数。(成功した場合のみ)

.

3Dモデルデータを取得するAPI


本APIは3DモデリングAPIで作成したモデルを取得するAPIです。 本APIへアクセスするエンドユーザはOAuth2.0で認証済みである必要があります。
以下のURIにHTTP GETリクエストします。

URL GET https://www.rinkak.com/api/v1/model/get
(パラメータ)
token OAuth2.0で認証認可されたトークン文字列
id モデルデータのid。
type (オプション)取得する3Dモデルの種類(objかwrl)を指定。default=wrl
リクエストが正しい場合、指定したtypeのファイルがダウンロードできます。
失敗した場合、JSON形式で以下の内容が取得できます。

要素名 説明
code Integer 識別番号。
label String 取得結果。
message String 取得結果に対するメッセージ。

.