Project

General

Profile

RestAPIv1 » History » Version 99

admin, 05/16/2014 04:10 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 99 admin
h5. サンプルプログラム(python 3.x)
207 88 admin
208 95 admin
{{collapse(サンプルプログラムを表示する,サンプルプログラムを閉じる)
209 88 admin
<pre><code class="python">
210 88 admin
# -*- coding: utf-8 -*-
211 88 admin
import base64
212 88 admin
import urllib.request
213 88 admin
214 88 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
215 88 admin
216 90 admin
file_name = "example.jpg"
217 88 admin
file_data = ""
218 88 admin
219 88 admin
url = "http://api.3dcg-arts.net/api/v1/arts.json"
220 88 admin
221 88 admin
with open(file_name, "rb") as file:
222 88 admin
  file_data = base64.b64encode(file.read())
223 88 admin
224 88 admin
with urllib.request.urlopen(url,
225 88 admin
  urllib.parse.urlencode({
226 88 admin
    "secret_access_key": secret_access_key,
227 90 admin
    "type": "i",
228 88 admin
    "content0[name]": file_name,
229 88 admin
    "content0[data]": file_data
230 88 admin
  }).encode(encoding="ascii")) as response:
231 88 admin
    json_text = response.read().decode("utf-8")
232 88 admin
233 88 admin
    print(json_text)
234 88 admin
</code></pre>
235 95 admin
}}
236 88 admin
237 83 admin
h5. サンプルプログラム(ruby 1.8/1.9/2.0/2.1)
238 59 admin
239 94 admin
{{collapse(サンプルプログラムを表示する,サンプルプログラムを閉じる)
240 59 admin
<pre><code class="ruby">
241 59 admin
# -*- coding: utf-8 -*-
242 59 admin
require "base64"
243 59 admin
require "cgi"
244 59 admin
require "net/http"
245 59 admin
require "uri"
246 59 admin
247 62 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
248 59 admin
249 59 admin
file_name =                                                   "example.jpg"
250 59 admin
file_data = ::CGI.escape ::Base64.strict_encode64 ::File.read "example.jpg"
251 59 admin
252 96 admin
uri = ::URI.parse "http://api.3dcg-arts.net/api/v1/arts.json"
253 59 admin
254 86 admin
::Net::HTTP.start(uri.host, uri.port) { | http |
255 59 admin
  response = http.post uri.path, "secret_access_key=#{ secret_access_key }&type=i&content0[name]=#{ file_name }&content0[data]=#{ file_data }"
256 59 admin
257 59 admin
  puts response.body
258 59 admin
}
259 59 admin
</code></pre>
260 94 admin
}}
261 59 admin
262 70 admin
h5. 実行結果(例)
263 59 admin
264 37 admin
<pre><code class="json">
265 36 admin
{
266 52 admin
  "id": 1,
267 2
  "edit_my_art_path": "http://www.3dcg-arts.net/my/arts/1/edit"
268 51 admin
}
269 37 admin
</code></pre>
270 30 admin
271 30 admin
h4. API サンプル(ポリゴン作品の投稿)
272 30 admin
273 30 admin
* HTTP メソッド
274 2
** POST
275 43 admin
* HTTP パス
276 52 admin
** http://api.3dcg-arts.net/api/v1/arts.json
277 43 admin
278 98 admin
h5. サンプルプログラム(python 3.x)
279 91 admin
280 92 admin
{{collapse(サンプルプログラムを表示する,サンプルプログラムを閉じる)
281 91 admin
<pre><code class="python">
282 91 admin
# -*- coding: utf-8 -*-
283 91 admin
import base64
284 91 admin
import urllib.request
285 91 admin
286 91 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
287 91 admin
288 91 admin
file_name = "example.zip"
289 91 admin
file_data = ""
290 91 admin
291 91 admin
url = "http://api.3dcg-arts.net/api/v1/arts.json"
292 91 admin
293 91 admin
with open(file_name, "rb") as file:
294 91 admin
  file_data = base64.b64encode(file.read())
295 91 admin
296 91 admin
with urllib.request.urlopen(url,
297 91 admin
  urllib.parse.urlencode({
298 91 admin
    "secret_access_key": secret_access_key,
299 91 admin
    "type": "p",
300 91 admin
    "content0[name]": file_name,
301 91 admin
    "content0[data]": file_data
302 91 admin
  }).encode(encoding="ascii")) as response:
303 91 admin
    json_text = response.read().decode("utf-8")
304 91 admin
305 91 admin
    print(json_text)
306 91 admin
</code></pre>
307 92 admin
}}
308 91 admin
309 84 admin
h5. サンプルプログラム(ruby 1.8/1.9/2.0/2.1)
310 60 admin
311 93 admin
{{collapse(サンプルプログラムを表示する,サンプルプログラムを閉じる)
312 60 admin
<pre><code class="ruby">
313 60 admin
# -*- coding: utf-8 -*-
314 60 admin
require "base64"
315 60 admin
require "cgi"
316 60 admin
require "net/http"
317 60 admin
require "uri"
318 60 admin
319 61 admin
secret_access_key = "Write your secret access key" # NOTE: あなたの API キーをここに記述してください。
320 60 admin
321 60 admin
file_name =                                                   "example.zip"
322 60 admin
file_data = ::CGI.escape ::Base64.strict_encode64 ::File.read "example.zip"
323 60 admin
324 97 admin
uri = ::URI.parse "http://api.3dcg-arts.net/api/v1/arts.json"
325 60 admin
326 87 admin
::Net::HTTP.start(uri.host, uri.port) { | http |
327 60 admin
  response = http.post uri.path, "secret_access_key=#{ secret_access_key }&type=p&content0[name]=#{ file_name }&content0[data]=#{ file_data }"
328 60 admin
329 60 admin
  puts response.body
330 60 admin
}
331 60 admin
</code></pre>
332 93 admin
}}
333 60 admin
334 71 admin
h5. 実行結果(例)
335 60 admin
336 43 admin
<pre><code class="json">
337 43 admin
{
338 52 admin
  "id": 1,
339 51 admin
  "edit_my_art_path": "http://www.3dcg-arts.net/my/arts/1/edit"
340 43 admin
}
341 2
</code></pre>