Skip to content

Commit 57af8a3

Browse files
authored
Annofab v0.192.0に対応しました。Personal Access Token に関連したAPIが追加されました。 (#682)
* update swagger * update python file
1 parent c85747c commit 57af8a3

File tree

7 files changed

+459
-21
lines changed

7 files changed

+459
-21
lines changed

annofabapi/dataclass/annotation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ class AnnotationDetailV1(DataClassJsonMixin):
424424
""""""
425425

426426
path: Optional[str]
427-
"""外部ファイルに保存されたアノテーションのパス。`data_holding_type`が`inner`の場合は未指定です。 レスポンスの場合は`annotation_id`と同じ値が格納されます。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は、[createTempPath](#operation/createTempPath) APIで取得できる一時データ保存先S3パスを格納してください。 更新しない場合は、[getEditorAnnotation](#operation/getEditorAnnotation) APIで取得した`path`をそのまま渡せます。 外部ファイルのフォーマットは下表の通りです。 <table> <tr><th>annotation_type</th><th>形式</th></tr> <tr><td>segmentation / segmentation_v2 </td><td>PNG画像。塗りつぶした部分は<code>rgba(255, 255, 255, 1) </code>、塗りつぶしていない部分は<code>rgba(0, 0, 0, 0) </code>。</td></tr> </table> """
427+
"""外部ファイルに保存されたアノテーションのパス。`data_holding_type`が`inner`の場合は未指定です。 レスポンスの場合は`annotation_id`と同じ値が格納されます。 [putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は、[createTempPath](#operation/createTempPath) APIで取得できる一時データ保存先パスを格納してください。 更新しない場合は、[getEditorAnnotation](#operation/getEditorAnnotation) APIで取得した`path`をそのまま渡せます。 外部ファイルのフォーマットは下表の通りです。 <table> <tr><th>annotation_type</th><th>形式</th></tr> <tr><td>segmentation / segmentation_v2 </td><td>PNG画像。塗りつぶした部分は<code>rgba(255, 255, 255, 1) </code>、塗りつぶしていない部分は<code>rgba(0, 0, 0, 0) </code>。</td></tr> </table> """
428428

429429
etag: Optional[str]
430430
"""外部ファイルに保存されたアノテーションのETag。`data_holding_type`が`inner`の場合、または[putAnnotation](#operation/putAnnotation) APIのリクエストボディに渡す場合は未指定です。"""

annofabapi/dataclass/task.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class Task(DataClassJsonMixin):
110110
updated_datetime: str
111111
"""更新日時"""
112112

113-
operation_updated_datetime: str
113+
operation_updated_datetime: Optional[str]
114114
"""タスクのステータスやフェーズ、担当者などが更新されたときの日時"""
115115

116116
sampling: Optional[str]

annofabapi/generated_api.py

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,56 @@ def get_my_projects(self, query_params: Optional[Dict[str, Any]] = None, **kwarg
11441144
keyword_params.update(**kwargs)
11451145
return self._request_wrapper(http_method, url_path, **keyword_params)
11461146

1147+
def get_personal_access_tokens(self, **kwargs) -> Tuple[Any, requests.Response]:
1148+
"""パーソナルアクセストークン一覧を取得
1149+
https://annofab.com/docs/api/#operation/getPersonalAccessTokens
1150+
1151+
1152+
authorizations: Everyone
1153+
1154+
1155+
自分が発行したパーソナルアクセストークンの一覧を取得します。
1156+
1157+
Args:
1158+
1159+
Returns:
1160+
Tuple[List[PersonalAccessTokenInfo], requests.Response]
1161+
1162+
1163+
"""
1164+
url_path = "/my/personal-access-tokens"
1165+
http_method = "GET"
1166+
keyword_params: Dict[str, Any] = {}
1167+
keyword_params.update(**kwargs)
1168+
return self._request_wrapper(http_method, url_path, **keyword_params)
1169+
1170+
def issue_personal_access_token(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]:
1171+
"""パーソナルアクセストークンの発行
1172+
https://annofab.com/docs/api/#operation/issuePersonalAccessToken
1173+
1174+
1175+
authorizations: Everyone
1176+
1177+
1178+
パーソナルアクセストークンを発行します。
1179+
1180+
Args:
1181+
request_body (Any): Request Body
1182+
issue_personal_access_token_request (IssuePersonalAccessTokenRequest): (required)
1183+
1184+
Returns:
1185+
Tuple[PersonalAccessToken, requests.Response]
1186+
1187+
1188+
"""
1189+
url_path = "/my/issue-personal-access-token"
1190+
http_method = "POST"
1191+
keyword_params: Dict[str, Any] = {
1192+
"request_body": request_body,
1193+
}
1194+
keyword_params.update(**kwargs)
1195+
return self._request_wrapper(http_method, url_path, **keyword_params)
1196+
11471197
def put_my_account(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]:
11481198
"""自分のアカウント情報更新
11491199
https://annofab.com/docs/api/#operation/putMyAccount
@@ -1199,6 +1249,33 @@ def put_my_notification_message_opened(self, message_id: str, request_body: Opti
11991249
keyword_params.update(**kwargs)
12001250
return self._request_wrapper(http_method, url_path, **keyword_params)
12011251

1252+
def revoke_personal_access_token(self, request_body: Optional[Any] = None, **kwargs) -> Tuple[Any, requests.Response]:
1253+
"""パーソナルアクセストークンの無効化
1254+
https://annofab.com/docs/api/#operation/revokePersonalAccessToken
1255+
1256+
1257+
authorizations: Everyone
1258+
1259+
1260+
発行済のパーソナルアクセストークンを無効化します。
1261+
1262+
Args:
1263+
request_body (Any): Request Body
1264+
revoke_personal_access_token_request (RevokePersonalAccessTokenRequest): (required)
1265+
1266+
Returns:
1267+
Tuple[PersonalAccessTokenInfo, requests.Response]
1268+
1269+
1270+
"""
1271+
url_path = "/my/revoke-personal-access-token"
1272+
http_method = "POST"
1273+
keyword_params: Dict[str, Any] = {
1274+
"request_body": request_body,
1275+
}
1276+
keyword_params.update(**kwargs)
1277+
return self._request_wrapper(http_method, url_path, **keyword_params)
1278+
12021279
#########################################
12031280
# Public Method : AfOrganizationApi
12041281
# NOTE: This method is auto generated by OpenAPI Generator
@@ -1346,7 +1423,7 @@ def put_organization(self, organization_name: str, request_body: Optional[Any] =
13461423
https://annofab.com/docs/api/#operation/putOrganization
13471424
13481425
1349-
authorizations: OrganizationOwner
1426+
authorizations: OrganizationAdministrator
13501427
13511428
13521429
組織を更新します。
@@ -2813,7 +2890,7 @@ def initiate_tasks_generation(self, project_id: str, request_body: Optional[Any]
28132890
authorizations: ProjectOwner
28142891
28152892
2816-
タスク作成ルールに基づいて、タスクを一括で作成します。 タスク作成ルールは、以下の3つです。 * `ByCount`:1つのタスクに割り当てる入力データの個数を指定してタスクを生成します。この作成ルールは、画像を同じ枚数均等にタスクに割り振りたい場合に便利です。 * `ByDirectory`:入力データ名をファイルパスに見立て、ディレクトリ単位でタスクを生成します。この作成ルールは、動画などから切り出した画像をディレクトリ別に格納し、その動画(ディレクトリ)の単位でタスクを作りたい場合に便利です。 * `ByInputDataCsv`:入力データを各タスクに割り振ったCSVへのS3パスを指定してタスクを生成できます。この作成ルールは、特定のデータの組み合わせを持ったタスクを作成したい場合に便利です。 本APIを実行すると、バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`gen-tasks`)。 **注意:** タスクに割り当てることができる入力データの個数は最大200です。 #### ByDirectory: ディレクトリ単位でのタスク一括生成の使い方 例えば、次のような `input_data_name` の入力データが登録されているとします。 * a.zip/dir1/image1.png * a.zip/dir1/image2.png * a.zip/dir1/subdir/image3.png * a.zip/dir1/subdir/image4.png * a.zip/dir1/subdir/image5.png * b.zip/dir2/subdir1/image6.png * b.zip/dir2/subdir1/image7.png * b.zip/dir2/subdir1/image8.png * b.zip/dir2/subdir2/image9.png * b.zip/dir2/subdir2/image10.png ここで、`input_data_name_prefix`フィールド に `a.zip` を指定すると、次の2タスクが生成されます。 1. タスク: `{task_id_prefix}_a.zip_dir1` * a.zip/dir1/image1.png * a.zip/dir1/image2.png 2. タスク: `{task_id_prefix}_a.zip_dir1_subdir` * a.zip/dir1/subdir/image3.png * a.zip/dir1/subdir/image4.png * a.zip/dir1/subdir/image5.png 次に、`input_data_name_prefix` に `b.zip/dir2` を指定すると、次の2タスクが生成されます。 1. タスク: `{task_id_prefix}_b.zip_dir2_subdir1` * b.zip/dir2/subdir1/image6.png * b.zip/dir2/subdir1/image7.png * b.zip/dir2/subdir1/image8.png 2. タスク: `{task_id_prefix}_b.zip_dir2_subdir2` * b.zip/dir2/subdir2/image9.png * b.zip/dir2/subdir2/image10.png `input_data_name_prefix` が未指定の時は、全ディレクトリごとにタスクが作成されます。つまり次のように4つのタスクが生成されます。 1. タスク: `{task_id_prefix}_a.zip_dir1` * a.zip/dir1/image1.png * a.zip/dir1/image2.png 2. タスク: `{task_id_prefix}_a.zip_dir1_subdir` * a.zip/dir1/subdir/image3.png * a.zip/dir1/subdir/image4.png * a.zip/dir1/subdir/image5.png 3. タスク: `{task_id_prefix}_b.zip_dir2_subdir1` * b.zip/dir2/subdir1/image6.png * b.zip/dir2/subdir1/image7.png * b.zip/dir2/subdir1/image8.png 4. タスク: `{task_id_prefix}_b.zip_dir2_subdir2` * b.zip/dir2/subdir2/image9.png * b.zip/dir2/subdir2/image10.png タスクに割り当てられる「ディレクトリ内の入力データ」の順序は、名前の昇順となります。 **注意:** `ByDirectory`では、入力データ名がファイルパス形式になっていない入力データはタスクの作成対象になりません。 例えば、`foo/bar.png` はタスクの作成対象になりますが、ディレクトリを含まない`bar.png` や、最後がディレクトリになっている`foo/bar.png/` は対象になりません。 **注意:** `ByDirectory`では、入力データ名のディレクトリ部分がタスクIDの一部として利用されます。そのため、入力データ名のディレクトリ部分は、タスクIDとして利用できる文字で構成されている必要があります。[値の制約についてはこちら。](#section/API-Convention/APIID) 入力データ名のディレクトリ部分にタスクIDとして利用できない文字が含まれている場合、タスクの生成は失敗します。 **注意:** `ByDirectory`では、一つのディレクトリに200ファイルより多くの入力データがある場合、複数のタスクに分かれます。 例えば、`foo/` の中に201ファイルがある場合、fooから2つのタスクが作成されます。1つ目は最初の200ファイルを割り当て、2つ目は最後の1ファイルのタスクに分かれます。 分かれたタスクは、 `{上述のタスクIDの付与則}_連番` の形式でタスクIDが付与されます。連番は、対象の入力データ数の桁数まで0埋めされます。 **注意:** 動画プロジェクトの場合、ディレクトリに含まれる動画の入力データは1つに制限してください。 これが守られない場合、作成されたタスクで動画を再生できない場合があります。 #### ByInputDataCsv: CSVによるタスク一括生成の使い方 以下のように「タスクID,入力データ名,入力データID」を1行毎に指定したCSVを作成します。 ``` task_1,a001.jpg,ca0cb2f9-fec5-49b4-98df-dc34490f9785 task_1,a002.jpg,5ac1987e-ca7c-42a0-9c19-b5b23a41836b task_1,centinel.jpg,81d6407b-2172-4fa8-8525-2e43c49267ee task_2,b001.jpg,4f2ae4d0-7a38-4f9a-be6f-170ba76aba73 task_2,b002.jpg,45ac5852-f20c-4938-9ee9-cc0274401df7 task_2,centinel.jpg,81d6407b-2172-4fa8-8525-2e43c49267ee task_3,c001.jpg,3260c7a0-4820-424d-a26e-db7e91dbc139 task_3,centinel.jpg,81d6407b-2172-4fa8-8525-2e43c49267ee ``` CSVのエンコーディングは UTF-8(BOM付き)、UTF-8(BOMなし)、UTF-16(BOM付きLE) のいずれかのみ対応しています。 リクエストボディの`csv_data_path`には、[createTempPath](#operation/createTempPath) APIで取得したS3パスを指定してください。[createTempPath](#operation/createTempPath) APIで取得したURLに、事前にCSVファイルをアップロードする必要があります。
2893+
タスク作成ルールに基づいて、タスクを一括で作成します。 タスク作成ルールは、以下の3つです。 * `ByCount`:1つのタスクに割り当てる入力データの個数を指定してタスクを生成します。この作成ルールは、画像を同じ枚数均等にタスクに割り振りたい場合に便利です。 * `ByDirectory`:入力データ名をファイルパスに見立て、ディレクトリ単位でタスクを生成します。この作成ルールは、動画などから切り出した画像をディレクトリ別に格納し、その動画(ディレクトリ)の単位でタスクを作りたい場合に便利です。 * `ByInputDataCsv`:入力データを各タスクに割り振ったCSVへの一時データ保存先を指定してタスクを生成できます。この作成ルールは、特定のデータの組み合わせを持ったタスクを作成したい場合に便利です。 本APIを実行すると、バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`gen-tasks`)。 **注意:** タスクに割り当てることができる入力データの個数は最大200です。 #### ByDirectory: ディレクトリ単位でのタスク一括生成の使い方 例えば、次のような `input_data_name` の入力データが登録されているとします。 * a.zip/dir1/image1.png * a.zip/dir1/image2.png * a.zip/dir1/subdir/image3.png * a.zip/dir1/subdir/image4.png * a.zip/dir1/subdir/image5.png * b.zip/dir2/subdir1/image6.png * b.zip/dir2/subdir1/image7.png * b.zip/dir2/subdir1/image8.png * b.zip/dir2/subdir2/image9.png * b.zip/dir2/subdir2/image10.png ここで、`input_data_name_prefix`フィールド に `a.zip` を指定すると、次の2タスクが生成されます。 1. タスク: `{task_id_prefix}_a.zip_dir1` * a.zip/dir1/image1.png * a.zip/dir1/image2.png 2. タスク: `{task_id_prefix}_a.zip_dir1_subdir` * a.zip/dir1/subdir/image3.png * a.zip/dir1/subdir/image4.png * a.zip/dir1/subdir/image5.png 次に、`input_data_name_prefix` に `b.zip/dir2` を指定すると、次の2タスクが生成されます。 1. タスク: `{task_id_prefix}_b.zip_dir2_subdir1` * b.zip/dir2/subdir1/image6.png * b.zip/dir2/subdir1/image7.png * b.zip/dir2/subdir1/image8.png 2. タスク: `{task_id_prefix}_b.zip_dir2_subdir2` * b.zip/dir2/subdir2/image9.png * b.zip/dir2/subdir2/image10.png `input_data_name_prefix` が未指定の時は、全ディレクトリごとにタスクが作成されます。つまり次のように4つのタスクが生成されます。 1. タスク: `{task_id_prefix}_a.zip_dir1` * a.zip/dir1/image1.png * a.zip/dir1/image2.png 2. タスク: `{task_id_prefix}_a.zip_dir1_subdir` * a.zip/dir1/subdir/image3.png * a.zip/dir1/subdir/image4.png * a.zip/dir1/subdir/image5.png 3. タスク: `{task_id_prefix}_b.zip_dir2_subdir1` * b.zip/dir2/subdir1/image6.png * b.zip/dir2/subdir1/image7.png * b.zip/dir2/subdir1/image8.png 4. タスク: `{task_id_prefix}_b.zip_dir2_subdir2` * b.zip/dir2/subdir2/image9.png * b.zip/dir2/subdir2/image10.png タスクに割り当てられる「ディレクトリ内の入力データ」の順序は、名前の昇順となります。 **注意:** `ByDirectory`では、入力データ名がファイルパス形式になっていない入力データはタスクの作成対象になりません。 例えば、`foo/bar.png` はタスクの作成対象になりますが、ディレクトリを含まない`bar.png` や、最後がディレクトリになっている`foo/bar.png/` は対象になりません。 **注意:** `ByDirectory`では、入力データ名のディレクトリ部分がタスクIDの一部として利用されます。そのため、入力データ名のディレクトリ部分は、タスクIDとして利用できる文字で構成されている必要があります。[値の制約についてはこちら。](#section/API-Convention/APIID) 入力データ名のディレクトリ部分にタスクIDとして利用できない文字が含まれている場合、タスクの生成は失敗します。 **注意:** `ByDirectory`では、一つのディレクトリに200ファイルより多くの入力データがある場合、複数のタスクに分かれます。 例えば、`foo/` の中に201ファイルがある場合、fooから2つのタスクが作成されます。1つ目は最初の200ファイルを割り当て、2つ目は最後の1ファイルのタスクに分かれます。 分かれたタスクは、 `{上述のタスクIDの付与則}_連番` の形式でタスクIDが付与されます。連番は、対象の入力データ数の桁数まで0埋めされます。 **注意:** 動画プロジェクトの場合、ディレクトリに含まれる動画の入力データは1つに制限してください。 これが守られない場合、作成されたタスクで動画を再生できない場合があります。 #### ByInputDataCsv: CSVによるタスク一括生成の使い方 以下のように「タスクID,入力データ名,入力データID」を1行毎に指定したCSVを作成します。 ``` task_1,a001.jpg,ca0cb2f9-fec5-49b4-98df-dc34490f9785 task_1,a002.jpg,5ac1987e-ca7c-42a0-9c19-b5b23a41836b task_1,centinel.jpg,81d6407b-2172-4fa8-8525-2e43c49267ee task_2,b001.jpg,4f2ae4d0-7a38-4f9a-be6f-170ba76aba73 task_2,b002.jpg,45ac5852-f20c-4938-9ee9-cc0274401df7 task_2,centinel.jpg,81d6407b-2172-4fa8-8525-2e43c49267ee task_3,c001.jpg,3260c7a0-4820-424d-a26e-db7e91dbc139 task_3,centinel.jpg,81d6407b-2172-4fa8-8525-2e43c49267ee ``` CSVのエンコーディングは UTF-8(BOM付き)、UTF-8(BOMなし)、UTF-16(BOM付きLE) のいずれかのみ対応しています。 リクエストボディの`csv_data_path`には、[createTempPath](#operation/createTempPath) APIで取得した一時データ保存先パスを指定してください。[createTempPath](#operation/createTempPath) APIで取得したURLに、事前にCSVファイルをアップロードする必要があります。
28172894
28182895
Args:
28192896
project_id (str): プロジェクトID (required)

0 commit comments

Comments
 (0)