Project

General

Profile

RestAPIv1 » History » Version 90

admin, 05/16/2014 03:41 PM

1 12 admin
{{>toc}}
2 12 admin
3 2
h1. The 3DCGARTS REST API v1.0
4 2
5 17 admin
h2. API キーについて
6 2
7 17 admin
{{thumbnail(1.png,size=320)}}
8 2
9 17 admin
h3. API キーの作成
10 17 admin
11 20 admin
* 1. サービスにログインしている状態で、プロフィール画面( http://www.3dcg-arts.net/my/arts )にアクセスします。
12 17 admin
13 21 admin
* 2. API キー作成する場合は、「API キーを作成する」をクリックします。
14 17 admin
15 17 admin
h3. API キーの削除
16 17 admin
17 20 admin
* 1. サービスにログインしている状態で、プロフィール画面( http://www.3dcg-arts.net/my/arts )にアクセスします。
18 17 admin
19 21 admin
* 2. API キー削除する場合は、「API キーを削除する」をクリックします。
20 17 admin
21 17 admin
h3. API キーの取り扱い
22 17 admin
23 79 admin
* *API キーを他人に知られてしまった場合、あなたのアカウントで作品を投稿できてしまうため、 API キーは他人に知られないように大切に保管してください(不要であれば API キーを作成しないでください)。*
24 13 admin
25 55 admin
h2. HTTP ステータスコード(全ての API において共通します)
26 45 admin
27 46 admin
|*コード*|*説明*|
28 52 admin
|200|API の実行に成功しました。|
29 52 admin
|304|API の実行に成功しました。|
30 51 admin
|400|API の引数に問題があります。|
31 58 admin
|403|API の引数に問題があります(アクセス権限が存在しない)。|
32 51 admin
|500|API の実行に失敗しました(投稿作品の保存に失敗した or 投稿作品の変換に失敗した)。|
33 45 admin
34 26 admin
h2. 作品の取得
35 2
36 4 admin
* HTTP メソッド
37 4 admin
** GET
38 4 admin
* HTTP パス
39 4 admin
** http://api.3dcg-arts.net/api/v1/arts.json
40 4 admin
41 4 admin
h3. API 呼出
42 4 admin
43 33 admin
|*引数名*|*引数値*|*説明*|*デフォルト*|*指定*|
44 81 admin
|ids|文字列|作品番号(カンマ区切りにより複数指定が可能)|-|必須|
45 4 admin
46 2
h3. API 応答
47 2
48 5 admin
h4. 失敗時
49 5 admin
50 2
<pre><code class="json">
51 2
{
52 2
  "error_message": "[エラーメッセージ]"
53 2
}
54 2
</code></pre>
55 2
56 51 admin
h5. HTTP ステータスコード
57 51 admin
58 51 admin
失敗時のステータスコードは、次の通りです。
59 51 admin
60 51 admin
|*コード*|*説明*|
61 51 admin
|400|API の引数に問題があります。|
62 58 admin
|403|API の引数に問題があります(アクセス権限が存在しない)。|
63 52 admin
|500|API の実行に失敗しました。|
64 51 admin
65 5 admin
h4. 成功時
66 5 admin
67 37 admin
<pre><code class="json">
68 5 admin
[
69 5 admin
  {
70 37 admin
    "id": "[作品番号]",
71 5 admin
    "title": "[作品名]",
72 5 admin
    "icon":
73 6 admin
    {
74 6 admin
      "128x128": "[128x128 サイズのアイコンパス]",
75 2
      "256x256": "[256x256 サイズのアイコンパス]"
76 2
    }
77 2
  }
78 2
]
79 2
</code></pre>
80 2
81 51 admin
h5. HTTP ステータスコード
82 51 admin
83 51 admin
成功時のステータスコードは、次の通りです。
84 51 admin
85 51 admin
|*コード*|*説明*|
86 51 admin
|200|API の実行に成功しました。|
87 67 admin
|304|API の実行に成功しました(応答内容に差分が存在しない)。|
88 51 admin
89 8 admin
h4. API サンプル
90 6 admin
91 7 admin
* HTTP メソッド
92 7 admin
** GET
93 7 admin
* HTTP パス
94 7 admin
** http://api.3dcg-arts.net/api/v1/arts.json?ids=1
95 7 admin
96 72 admin
h5. 実行結果(例)
97 72 admin
98 37 admin
<pre><code class="json">
99 6 admin
[
100 6 admin
  {
101 6 admin
    "id": 1,
102 6 admin
    "title": "初音ミク・オン・ステージ",
103 6 admin
    "icon":
104 6 admin
    {
105 6 admin
      "128x128": "http://www.3dcg-arts.net/s3/art_icons/532/834d9539a9b9fae6acd9136e270b2e2ca94342e5e362c68018e97f543b150ab7/128x128.png",
106 6 admin
      "256x256": "http://www.3dcg-arts.net/s3/art_icons/532/e5c6e6d5513da17c9a608c5d61d7bb5f75b04612001dfc491b61b525150523dc/256x256.png"
107 6 admin
    }
108 6 admin
  }
109 6 admin
]
110 37 admin
</code></pre>
111 5 admin
112 68 admin
h2. 作品の投稿(API キーの発行が必要です)
113 2
114 4 admin
* HTTP メソッド
115 4 admin
** POST
116 2
* HTTP パス
117 31 admin
** http://api.3dcg-arts.net/api/v1/arts.json
118 2
119 2
h3. API 呼出
120 2
121 29 admin
|*引数名*|*引数値*|*説明*|*デフォルト*|*指定*|
122 2
|secret_access_key|文字列(SHA-512)|API キー|-|必須|
123 78 admin
|type|文字列|投稿形式(イメージ作品: <code>"i"</code> or ポリゴン作品: <code>"p"</code>)|-|必須|
124 75 admin
|content0[name]|文字列|投稿ファイル名|-|必須|
125 75 admin
|content0[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|必須|
126 75 admin
|content1[name]|文字列|投稿ファイル名|-|任意|
127 75 admin
|content1[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content1[name] が指定されている場合、必須)|
128 75 admin
|content2[name]|文字列|投稿ファイル名|-|任意|
129 75 admin
|content2[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content2[name] が指定されている場合、必須)|
130 75 admin
|content3[name]|文字列|投稿ファイル名|-|任意|
131 75 admin
|content3[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content3[name] が指定されている場合、必須)|
132 75 admin
|content4[name]|文字列|投稿ファイル名|-|任意|
133 75 admin
|content4[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content4[name] が指定されている場合、必須)|
134 75 admin
|content5[name]|文字列|投稿ファイル名|-|任意|
135 75 admin
|content5[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content5[name] が指定されている場合、必須)|
136 75 admin
|content6[name]|文字列|投稿ファイル名|-|任意|
137 75 admin
|content6[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content6[name] が指定されている場合、必須)|
138 75 admin
|content7[name]|文字列|投稿ファイル名|-|任意|
139 75 admin
|content7[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content7[name] が指定されている場合、必須)|
140 75 admin
|content8[name]|文字列|投稿ファイル名|-|任意|
141 75 admin
|content8[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content8[name] が指定されている場合、必須)|
142 75 admin
|content9[name]|文字列|投稿ファイル名|-|任意|
143 75 admin
|content9[data]|文字列|投稿ファイル(baes64 encode されたファイルバイナリ)|-|任意(content9[name] が指定されている場合、必須)|
144 2
145 2
* *"イメージ作品を投稿する場合":http://www.3dcg-arts.net/my/arts/new*
146 78 admin
** type パラメータに文字 <code>"i"</code> を与えます。
147 85 admin
*** 例
148 53 admin
<pre>
149 57 admin
secret_access_key=<API キー>&type=i&content0[name]=example.jpg&content0[data]=<base64 encode されたファイルバイナリの文字列>
150 53 admin
</pre>
151 53 admin
152 2
* *"ポリゴン作品を投稿する場合":http://www.3dcg-arts.net/my/arts/new*
153 78 admin
** type パラメータに文字 <code>"p"</code> を与えます。
154 85 admin
*** 例
155 53 admin
<pre>
156 57 admin
secret_access_key=<API キー>&type=p&content0[name]=example.zip&content0[data]=<base64 encode されたファイルバイナリの文字列>
157 53 admin
</pre>
158 2
159 82 admin
* 投稿ファイルについて
160 82 admin
** 投稿ファイルは *"base64 encode":http://ja.wikipedia.org/wiki/Base64* された「ポリゴンファイル」「テクスチャファイル」「マテリアルファイル」の文字列を指定するか、
161 2
各ファイルをまとめた ZIP ファイル(圧縮ファイル)のバイナリを *"base64 encode":http://ja.wikipedia.org/wiki/Base64* した文字列を指定してください("投稿形式の詳細はこちら":http://help.3dcg-arts.net/projects/support/wiki/Specs)。
162 9 admin
163 9 admin
h3. API 応答
164 43 admin
165 2
h4. 失敗時
166 2
167 2
<pre><code class="json">
168 2
{
169 2
  "error_message": "[エラーメッセージ]"
170 2
}
171 2
</code></pre>
172 50 admin
173 50 admin
h5. HTTP ステータスコード
174 51 admin
175 2
失敗時のステータスコードは、次の通りです。
176 2
177 50 admin
|*コード*|*説明*|
178 51 admin
|400|API の引数に問題があります。|
179 58 admin
|403|API の引数に問題があります(アクセス権限が存在しない)。|
180 2
|500|API の実行に失敗しました(投稿作品の保存に失敗した or 投稿作品の変換に失敗した)。|
181 51 admin
182 51 admin
h4. 成功時
183 51 admin
184 2
<pre><code class="json">
185 2
{
186 52 admin
  "id": "[作品番号]",
187 2
  "edit_my_art_path": "[投稿作品の編集ページ]"
188 2
}
189 2
</code></pre>
190 11 admin
191 37 admin
h5. HTTP ステータスコード
192 51 admin
193 2
成功時のステータスコードは、次の通りです。
194 51 admin
195 51 admin
|*コード*|*説明*|
196 51 admin
|200|API の実行に成功しました。|
197 69 admin
|304|API の実行に成功しました(応答内容に差分が存在しない)。|
198 51 admin
199 51 admin
h4. API サンプル(イメージ作品の投稿)
200 51 admin
201 2
* HTTP メソッド
202 2
** POST
203 2
* HTTP パス
204 52 admin
** http://api.3dcg-arts.net/api/v1/arts.json
205 30 admin
206 89 admin
h5. サンプルプログラム(python 2.7/3.x)
207 88 admin
208 88 admin
<pre><code class="python">
209 88 admin
# -*- coding: utf-8 -*-
210 88 admin
import base64
211 88 admin
import urllib.request
212 88 admin
213 88 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
214 88 admin
215 90 admin
file_name = "example.jpg"
216 88 admin
file_data = ""
217 88 admin
218 88 admin
url = "http://api.3dcg-arts.net/api/v1/arts.json"
219 88 admin
220 88 admin
with open(file_name, "rb") as file:
221 88 admin
  file_data = base64.b64encode(file.read())
222 88 admin
223 88 admin
with urllib.request.urlopen(url,
224 88 admin
  urllib.parse.urlencode({
225 88 admin
    "secret_access_key": secret_access_key,
226 90 admin
    "type": "i",
227 88 admin
    "content0[name]": file_name,
228 88 admin
    "content0[data]": file_data
229 88 admin
  }).encode(encoding="ascii")) as response:
230 88 admin
    json_text = response.read().decode("utf-8")
231 88 admin
232 88 admin
    print(json_text)
233 88 admin
</code></pre>
234 88 admin
235 83 admin
h5. サンプルプログラム(ruby 1.8/1.9/2.0/2.1)
236 59 admin
237 59 admin
<pre><code class="ruby">
238 59 admin
# -*- coding: utf-8 -*-
239 59 admin
require "base64"
240 59 admin
require "cgi"
241 59 admin
require "net/http"
242 59 admin
require "uri"
243 59 admin
244 62 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
245 59 admin
246 59 admin
file_name =                                                   "example.jpg"
247 59 admin
file_data = ::CGI.escape ::Base64.strict_encode64 ::File.read "example.jpg"
248 59 admin
249 59 admin
uri = URI.parse "http://api.3dcg-arts.net/api/v1/arts.json"
250 59 admin
251 86 admin
::Net::HTTP.start(uri.host, uri.port) { | http |
252 59 admin
  response = http.post uri.path, "secret_access_key=#{ secret_access_key }&type=i&content0[name]=#{ file_name }&content0[data]=#{ file_data }"
253 59 admin
254 59 admin
  puts response.body
255 59 admin
}
256 59 admin
</code></pre>
257 59 admin
258 70 admin
h5. 実行結果(例)
259 59 admin
260 37 admin
<pre><code class="json">
261 36 admin
{
262 52 admin
  "id": 1,
263 2
  "edit_my_art_path": "http://www.3dcg-arts.net/my/arts/1/edit"
264 51 admin
}
265 37 admin
</code></pre>
266 30 admin
267 30 admin
h4. API サンプル(ポリゴン作品の投稿)
268 30 admin
269 30 admin
* HTTP メソッド
270 2
** POST
271 43 admin
* HTTP パス
272 52 admin
** http://api.3dcg-arts.net/api/v1/arts.json
273 43 admin
274 84 admin
h5. サンプルプログラム(ruby 1.8/1.9/2.0/2.1)
275 60 admin
276 60 admin
<pre><code class="ruby">
277 60 admin
# -*- coding: utf-8 -*-
278 60 admin
require "base64"
279 60 admin
require "cgi"
280 60 admin
require "net/http"
281 60 admin
require "uri"
282 60 admin
283 61 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
284 60 admin
285 60 admin
file_name =                                                   "example.zip"
286 60 admin
file_data = ::CGI.escape ::Base64.strict_encode64 ::File.read "example.zip"
287 60 admin
288 60 admin
uri = URI.parse "http://api.3dcg-arts.net/api/v1/arts.json"
289 60 admin
290 87 admin
::Net::HTTP.start(uri.host, uri.port) { | http |
291 60 admin
  response = http.post uri.path, "secret_access_key=#{ secret_access_key }&type=p&content0[name]=#{ file_name }&content0[data]=#{ file_data }"
292 60 admin
293 60 admin
  puts response.body
294 60 admin
}
295 60 admin
</code></pre>
296 60 admin
297 71 admin
h5. 実行結果(例)
298 60 admin
299 43 admin
<pre><code class="json">
300 43 admin
{
301 52 admin
  "id": 1,
302 51 admin
  "edit_my_art_path": "http://www.3dcg-arts.net/my/arts/1/edit"
303 43 admin
}
304 2
</code></pre>