diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py
index 435d64bd..5ec52a92 100644
--- a/annofabapi/__version__.py
+++ b/annofabapi/__version__.py
@@ -1 +1 @@
-__version__ = '0.17.0'
+__version__ = '0.18.0'
diff --git a/annofabapi/api.py b/annofabapi/api.py
index 54e9c120..53ff5e2c 100644
--- a/annofabapi/api.py
+++ b/annofabapi/api.py
@@ -219,7 +219,7 @@ def login(self) -> Tuple[Dict[str, Any], requests.Response]:
json_obj = response.json()
self.token_dict = json_obj["token"]
- logger.debug(f"Logined successfully. user_id = {self.login_user_id}")
+ logger.debug("Logined successfully. user_id = %s", self.login_user_id)
return json_obj, response
def logout(self) -> Optional[Tuple[Dict[str, Any], requests.Response]]:
diff --git a/annofabapi/dataclass/annotation.py b/annofabapi/dataclass/annotation.py
index 05752fc1..c248f7ef 100644
--- a/annofabapi/dataclass/annotation.py
+++ b/annofabapi/dataclass/annotation.py
@@ -19,6 +19,7 @@
OneOfstringFullAnnotationData = Dict[str, Any]
FullAnnotationData = Dict[str, Any]
+AdditionalDataValue = Dict[str, Any]
@dataclass_json
@@ -44,7 +45,7 @@ class AdditionalData:
flag: Optional[bool]
""""""
- interger: Optional[int]
+ integer: Optional[int]
""""""
comment: Optional[str]
@@ -67,25 +68,42 @@ class FullAnnotationAdditionalData:
type: Optional[AdditionalDataDefinitionType]
""""""
- flag: Optional[bool]
- """typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される"""
+ value: Optional[AdditionalDataValue]
+ """"""
+@dataclass_json
+@dataclass
+class FullAnnotationDetail:
+ """
+
+ """
+ annotation_id: Optional[str]
+ """アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)
annotation_type が classification の場合は label_id と同じ値が格納されます。 """
- integer: Optional[int]
- """typeがintegerの場合に、整数値が格納される"""
+ user_id: Optional[str]
+ """"""
- comment: Optional[str]
- """* typeがcommentの場合、コメントの値 * typeがtrackingの場合、トラッキングID * typeがlinkの場合、リンク先のアノテーションID """
+ label_id: Optional[str]
+ """"""
- choice: Optional[str]
+ label_name: Optional[InternationalizationMessage]
""""""
- choice_name: Optional[InternationalizationMessage]
+ annotation_type: Optional[AnnotationType]
+ """"""
+
+ data_holding_type: Optional[AnnotationDataHoldingType]
+ """"""
+
+ data: Optional[FullAnnotationData]
+ """"""
+
+ additional_data_list: Optional[List[FullAnnotationAdditionalData]]
""""""
@dataclass_json
@dataclass
-class FullAnnotationDetail:
+class FullAnnotationDetailOld:
"""
-
+ for v1
"""
annotation_id: Optional[str]
"""アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)
annotation_type が classification の場合は label_id と同じ値が格納されます。 """
@@ -108,7 +126,7 @@ class FullAnnotationDetail:
data: Optional[FullAnnotationData]
""""""
- additional_data_list: Optional[List[FullAnnotationAdditionalData]]
+ additional_data_list: Optional[List[AdditionalData]]
""""""
@dataclass_json
@dataclass
@@ -137,11 +155,17 @@ class FullAnnotation:
input_data_name: Optional[str]
""""""
- detail: Optional[List[FullAnnotationDetail]]
+ details: Optional[List[FullAnnotationDetail]]
""""""
+ detail: Optional[List[FullAnnotationDetailOld]]
+ """use details"""
+
updated_datetime: Optional[str]
""""""
+
+ annotation_format_version: Optional[str]
+ """アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。 """
@dataclass_json
@dataclass
class SimpleAnnotationDetail:
@@ -221,7 +245,7 @@ class SingleAnnotationDetail:
url: Optional[str]
"""data_holding_typeがouterの場合のみ存在し、データへの一時URLが格納される"""
- additional_data_list: Optional[List[FullAnnotationAdditionalData]]
+ additional_data_list: Optional[List[AdditionalData]]
""""""
created_datetime: Optional[str]
diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py
index b1868156..0769a10a 100644
--- a/annofabapi/generated_api.py
+++ b/annofabapi/generated_api.py
@@ -403,12 +403,11 @@ def get_archive_full_with_pro_id(
) -> Tuple[Any, requests.Response]:
"""fullアノテーションZIP取得
- .. deprecated:: X
authorizations: ProjectDataUser
- **このAPIは廃止予定です。fullアノテーションZIPにある情報で、simpleアノテーションZIPにも欲しいものがあれば、ご連絡ください。** プロジェクト内のアノテーション(full版)がまとめられたZIPを取得します。 full版のアノテーションJSONデータは、画像やアノテーションやアノテーション作成者など管理用の詳細情報が付随しています。機械学習での一般的な利用には、[詳細情報を省いた扱いやすい構造の simple版](#operation/getAnnotationArchive) を推奨します。 取得できるZIPファイルの構造は以下のとおりです。 * ファイル名: af-annotation-{プロジェクトID}-{更新日時: yyyyMMdd-hhmmss}.zip * 内容: / * {タスクID}/ * {入力データID}.json * アノテーションJSONデータ (詳細は 200レスポンス を参照) * {入力データID}/ (塗りつぶしアノテーション時のみ) * {アノテーションデータID} (塗りつぶしのPNG画像)
+ プロジェクト内のアノテーション(full版)がまとめられたZIPを取得します。 full版のアノテーションJSONデータは、画像やアノテーションやアノテーション作成者など管理用の詳細情報が付随しています。機械学習での一般的な利用には、[詳細情報を省いた扱いやすい構造の simple版](#operation/getAnnotationArchive) を推奨します。 取得できるZIPファイルの構造は以下のとおりです。 * ファイル名: af-annotation-{プロジェクトID}-{更新日時: yyyyMMdd-hhmmss}.zip * 内容: / * {タスクID}/ * {入力データID}.json * アノテーションJSONデータ (詳細は 200レスポンス を参照) * {入力データID}/ (塗りつぶしアノテーション時のみ) * {アノテーションデータID} (塗りつぶしのPNG画像)
Args:
project_id (str): プロジェクトID (required)
@@ -418,7 +417,6 @@ def get_archive_full_with_pro_id(
"""
- warnings.warn("deprecated", DeprecationWarning)
url_path = f'/projects/{project_id}/archive/full'
http_method = 'GET'
keyword_params: Dict[str, Any] = {}
@@ -1806,6 +1804,31 @@ def initiate_project_copy(self, project_id: str,
}
return self._request_wrapper(http_method, url_path, **keyword_params)
+ def post_project_tasks_update(
+ self,
+ project_id: str,
+ ) -> Tuple[Any, requests.Response]:
+ """プロジェクトのタスク全件ファイル更新開始
+
+
+ authorizations: ProjectOwner
+
+
+ プロジェクト内のタスク全件ファイルの更新を開始します。 ファイルの更新は、データ量に応じて数分程度かかります。 タスク全件ファイルは日本時間AM02:00ごろに自動更新されます。 本APIを用いると、自動更新を待たずに更新を要求できます。 ただし、タスク全件ファイル以外は更新されません。
+
+ Args:
+ project_id (str): プロジェクトID (required)
+
+ Returns:
+ Tuple[Message, requests.Response]
+
+
+ """
+ url_path = f'/projects/{project_id}/rawdata/tasks'
+ http_method = 'POST'
+ keyword_params: Dict[str, Any] = {}
+ return self._request_wrapper(http_method, url_path, **keyword_params)
+
def put_project(self, project_id: str, request_body: Optional[Any] = None) -> Tuple[Any, requests.Response]:
"""プロジェクト作成/更新
diff --git a/annofabapi/models.py b/annofabapi/models.py
index 208534d9..4e81513b 100644
--- a/annofabapi/models.py
+++ b/annofabapi/models.py
@@ -222,13 +222,26 @@ class AccountAuthority(Enum):
* flag: bool
-* interger: int
+* integer: int
* comment: str
* choice: str
+"""
+
+AdditionalDataChoiceValue = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* id: str
+
+* name: InternationalizationMessage
+
+
"""
AdditionalDataDefinition = Dict[str, Any]
@@ -289,6 +302,97 @@ class AdditionalDataDefinitionType(Enum):
LINK = "link"
+AdditionalDataValue = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Link
+* value: str
+ リンク先アノテーションID
+
+"""
+
+AdditionalDataValueChoice = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Choice
+* value: AdditionalDataChoiceValue
+
+
+"""
+
+AdditionalDataValueComment = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Comment
+* value: str
+ 自由記述
+
+"""
+
+AdditionalDataValueFlag = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Flag
+* value: bool
+ フラグのON(true)またはOFF(false)
+
+"""
+
+AdditionalDataValueInteger = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Integer
+* value: int
+ 整数値
+
+"""
+
+AdditionalDataValueLink = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Link
+* value: str
+ リンク先アノテーションID
+
+"""
+
+AdditionalDataValueTracking = Dict[str, Any]
+"""
+
+
+Kyes of Dict
+
+* type: str
+ Tracking
+* value: str
+ トラッキングID
+
+"""
+
AggregationResult = Dict[str, Any]
"""
@@ -492,7 +596,7 @@ class AssigneeRuleOfResubmittedTask(Enum):
アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)
annotation_type が classification の場合は label_id と同じ値が格納されます。
* label_id: str
-* additional_data_list: List[FullAnnotationAdditionalData]
+* additional_data_list: List[AdditionalData]
* updated_datetime: str
@@ -1073,10 +1177,14 @@ class AssigneeRuleOfResubmittedTask(Enum):
入力データID。[値の制約についてはこちら。](#section/API-Convention/APIID)
* input_data_name: str
-* detail: List[FullAnnotationDetail]
+* details: List[FullAnnotationDetail]
+* detail: List[FullAnnotationDetailOld]
+ use details
* updated_datetime: str
+* annotation_format_version: str
+ アノテーションフォーマットのバージョンです。 アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。 したがって、アノテーション仕様を更新しても、このバージョンは変化しません。 バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。 JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。 すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。 バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
"""
@@ -1084,6 +1192,23 @@ class AssigneeRuleOfResubmittedTask(Enum):
"""
+Kyes of Dict
+
+* additional_data_definition_id: str
+
+* additional_data_definition_name: InternationalizationMessage
+
+* type: AdditionalDataDefinitionType
+
+* value: AdditionalDataValue
+
+
+"""
+
+FullAnnotationAdditionalDataOld = Dict[str, Any]
+"""
+for v1
+
Kyes of Dict
* additional_data_definition_id: str
@@ -1261,6 +1386,31 @@ class AssigneeRuleOfResubmittedTask(Enum):
* additional_data_list: List[FullAnnotationAdditionalData]
+"""
+
+FullAnnotationDetailOld = Dict[str, Any]
+"""
+for v1
+
+Kyes of Dict
+
+* annotation_id: str
+ アノテーションID。[値の制約についてはこちら。](#section/API-Convention/APIID)
annotation_type が classification の場合は label_id と同じ値が格納されます。
+* user_id: str
+
+* label_id: str
+
+* label_name: InternationalizationMessage
+
+* annotation_type: AnnotationType
+
+* data_holding_type: AnnotationDataHoldingType
+
+* data: FullAnnotationData
+
+* additional_data_list: List[AdditionalData]
+
+
"""
HistogramItem = Dict[str, Any]
@@ -1877,13 +2027,14 @@ class JobStatus(Enum):
class JobType(Enum):
"""
- * `copy-project` - プロジェクトのコピー。[initiateProjectCopy](#operation/initiateProjectCopy) APIを実行したときに登録されるジョブ。 * `gen-inputs` - zipファイルから入力データの作成。[putInputData](#operation/putInputData) APIを実行して、zipファイルから入力データを作成したときに登録されるジョブ。 * `gen-tasks` - タスクの一括作成。[initiateTasksGeneration](#operation/initiateTasksGeneration) APIを実行したときに登録されるジョブ。 * `gen-annotation` - アノテーションZIPの更新。[postAnnotationArchiveUpdate](#operation/postAnnotationArchiveUpdate) APIを実行したときに登録されるジョブ。 * `invoke-hook` - Webhookの起動。
+ * `copy-project` - プロジェクトのコピー。[initiateProjectCopy](#operation/initiateProjectCopy) APIを実行したときに登録されるジョブ。 * `gen-inputs` - zipファイルから入力データの作成。[putInputData](#operation/putInputData) APIを実行して、zipファイルから入力データを作成したときに登録されるジョブ。 * `gen-tasks` - タスクの一括作成。[initiateTasksGeneration](#operation/initiateTasksGeneration) APIを実行したときに登録されるジョブ。 * `gen-annotation` - アノテーションZIPの更新。[postAnnotationArchiveUpdate](#operation/postAnnotationArchiveUpdate) APIを実行したときに登録されるジョブ。 * `gen-tasks-list` - タスク全件ファイルの更新。[postProjectTasksUpdate](#operation/postProjectTasksUpdate) APIを実行したときに登録されるジョブ。 * `invoke-hook` - Webhookの起動。
"""
COPY_PROJECT = "copy-project"
GEN_INPUTS = "gen-inputs"
GEN_TASKS = "gen-tasks"
GEN_ANNOTATION = "gen-annotation"
+ GEN_TASKS_LIST = "gen-tasks-list"
INVOKE_HOOK = "invoke-hook"
@@ -2704,7 +2855,7 @@ class ProjectStatus(Enum):
data_holding_typeがouterの場合のみ存在し、データのETagが格納される
* url: str
data_holding_typeがouterの場合のみ存在し、データへの一時URLが格納される
-* additional_data_list: List[FullAnnotationAdditionalData]
+* additional_data_list: List[AdditionalData]
* created_datetime: str
diff --git a/annofabapi/wrapper.py b/annofabapi/wrapper.py
index bfef79b6..619dba80 100644
--- a/annofabapi/wrapper.py
+++ b/annofabapi/wrapper.py
@@ -51,7 +51,7 @@ def _get_content_type(file_path: str, content_type: Optional[str] = None) -> str
if content_type is None:
new_content_type = mimetypes.guess_type(file_path)[0]
if new_content_type is None:
- logger.info(f"mimetypes.guess_type function can't guess type. file_path = {file_path}")
+ logger.info("mimetypes.guess_type function can't guess type. file_path = %s", file_path)
new_content_type = content_type
else:
@@ -85,7 +85,7 @@ def _get_all_objects(func_get_list: Callable, limit: int, **kwargs_for_func_get_
kwargs_for_func_get_list['query_params'] = copied_query_params
content, _ = func_get_list(**kwargs_for_func_get_list)
if content.get('over_limit'):
- logger.warning(f"検索結果が10,000件を超えてますが、Web APIの都合上10,000件までしか取得できません。")
+ logger.warning("検索結果が10,000件を超えてますが、Web APIの都合上10,000件までしか取得できません。")
all_objects.extend(content["list"])
@@ -95,7 +95,8 @@ def _get_all_objects(func_get_list: Callable, limit: int, **kwargs_for_func_get_
kwargs_for_func_get_list['query_params'] = copied_query_params
content, _ = func_get_list(**kwargs_for_func_get_list)
all_objects.extend(content["list"])
- logger.debug(f"{func_get_list.__name__} {content['page_no']} / {content['total_page_no']} page")
+ logger.debug("%s %d / %d page",
+ func_get_list.__name__, content['page_no'], content['total_page_no'])
return all_objects
@@ -549,9 +550,10 @@ def put_project_members(self, project_id, project_members: List[Dict[str, Any]])
request_body=request_body)[0]
updated_project_members.append(updated_project_member)
- logger.debug(f"プロジェクトメンバの{'追加' if last_updated_datetime is None else '更新'} 完了."
- f" project_id={project_id}, user_id={member['user_id']}, "
- f"last_updated_datetime={last_updated_datetime}")
+ logger.debug("プロジェクトメンバの{'追加' if last_updated_datetime is None else '更新'} 完了."
+ " project_id=%s, user_id=%s, "
+ "last_updated_datetime=%s",
+ project_id, member['user_id'], last_updated_datetime)
return updated_project_members
@@ -803,8 +805,8 @@ def wait_for_completion(self, project_id: str, job_type: JobType, job_access_int
max_job_access: ジョブに最大何回アクセスするか
Returns:
- True: ジョブが成功した or 実行中のジョブがない。
- False: ジョブが失敗 or ``max_job_access`` 回アクセスしても、ジョブが完了しなかった。
+ Trueならば、ジョブが成功した or 実行中のジョブがない。
+ Falseならば、ジョブが失敗 or ``max_job_access`` 回アクセスしても、ジョブが完了しなかった。
"""
def get_latest_job():
@@ -816,24 +818,26 @@ def get_latest_job():
while True:
job = get_latest_job()
if job_access_count == 0 and job["job_status"] != "progress":
- logger.debug(f"進行中のジョブはありませんでした。")
+ logger.debug("進行中のジョブはありませんでした。")
return True
job_access_count += 1
if job["job_status"] == "succeeded":
- logger.debug(f"job_id = {job['job_id']} のジョブが成功しました。")
+ logger.debug("job_id = %s のジョブが成功しました。", job['job_id'])
return True
elif job["job_status"] == "failed":
- logger.info(f"job_id = {job['job_id']} のジョブが失敗しました。")
+ logger.info("job_id = %s のジョブが失敗しました。", job['job_id'])
return False
else:
# 進行中
if job_access_count < max_job_access:
- logger.debug(f"job_id = {job['job_id']} のジョブが進行中です。{job_access_interval} 秒間待ちます。")
+ logger.debug("job_id = %s のジョブが進行中です。%d 秒間待ちます。",
+ job['job_id'], job_access_interval)
time.sleep(job_access_interval)
else:
- logger.debug(f"job_id = {job['job_id']} のジョブに {job_access_interval} 回アクセスしましたが、完了しませんでした。")
+ logger.debug("job_id = %s のジョブに %d 回アクセスしましたが、完了しませんでした。",
+ job['job_id'], job_access_interval)
return False
diff --git a/docs/conf.py b/docs/conf.py
index 719238ff..56599703 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -108,7 +108,7 @@
html_logo = "img/logo_landscape.png"
-html_favicon = "img/favicon.ico"
+#html_favicon = "img/favicon.ico"
# -- Options for HTMLHelp output ---------------------------------------------
diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico
deleted file mode 100644
index 9b025d13..00000000
Binary files a/docs/img/favicon.ico and /dev/null differ
diff --git a/generate/generate.sh b/generate/generate.sh
index a715b26e..4857cdc3 100755
--- a/generate/generate.sh
+++ b/generate/generate.sh
@@ -109,6 +109,7 @@ declare -a model_files=(${MODELS_DIR}/point.py \
${MODELS_DIR}/additional_data.py \
${MODELS_DIR}/full_annotation_additional_data.py \
${MODELS_DIR}/full_annotation_detail.py \
+ ${MODELS_DIR}/full_annotation_detail_old.py \
${MODELS_DIR}/full_annotation.py \
${MODELS_DIR}/simple_annotation_detail.py \
${MODELS_DIR}/simple_annotation.py \
diff --git a/generate/partial-header/dataclass/annotation.py b/generate/partial-header/dataclass/annotation.py
index 444e95a6..c349ed02 100644
--- a/generate/partial-header/dataclass/annotation.py
+++ b/generate/partial-header/dataclass/annotation.py
@@ -2,4 +2,5 @@
AnnotationType, TaskPhase, TaskStatus)
OneOfstringFullAnnotationData = Dict[str, Any]
-FullAnnotationData = Dict[str, Any]
\ No newline at end of file
+FullAnnotationData = Dict[str, Any]
+AdditionalDataValue = Dict[str, Any]
diff --git a/generate/swagger/swagger-api-components.yaml b/generate/swagger/swagger-api-components.yaml
index 4a7290ed..dcc2cc02 100644
--- a/generate/swagger/swagger-api-components.yaml
+++ b/generate/swagger/swagger-api-components.yaml
@@ -926,6 +926,19 @@
Duration:
type: string
example: "PT34H17M36.789S"
+ AnnotationFormatVersion:
+ type: string
+ example: "1.0.0"
+ description: |
+ アノテーションフォーマットのバージョンです。
+ アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。
+ したがって、アノテーション仕様を更新しても、このバージョンは変化しません。
+
+ バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。
+
+ JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。
+ すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。
+ バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
Project:
type: object
required:
@@ -1068,12 +1081,14 @@
- gen-inputs
- gen-tasks
- gen-annotation
+ - gen-tasks-list
- invoke-hook
description: |
* `copy-project` - プロジェクトのコピー。[initiateProjectCopy](#operation/initiateProjectCopy) APIを実行したときに登録されるジョブ。
* `gen-inputs` - zipファイルから入力データの作成。[putInputData](#operation/putInputData) APIを実行して、zipファイルから入力データを作成したときに登録されるジョブ。
* `gen-tasks` - タスクの一括作成。[initiateTasksGeneration](#operation/initiateTasksGeneration) APIを実行したときに登録されるジョブ。
* `gen-annotation` - アノテーションZIPの更新。[postAnnotationArchiveUpdate](#operation/postAnnotationArchiveUpdate) APIを実行したときに登録されるジョブ。
+ * `gen-tasks-list` - タスク全件ファイルの更新。[postProjectTasksUpdate](#operation/postProjectTasksUpdate) APIを実行したときに登録されるジョブ。
* `invoke-hook` - Webhookの起動。
JobStatus:
type: string
@@ -2401,12 +2416,107 @@
$ref: "#/components/schemas/AdditionalDataDefinitionId"
flag:
type: boolean
- interger:
+ integer:
type: integer
comment:
type: string
choice:
$ref: "#/components/schemas/ChoiceId"
+ AdditionalDataValue:
+ oneOf:
+ - type: object
+ - $ref: "#/components/schemas/AdditionalDataValueFlag"
+ - $ref: "#/components/schemas/AdditionalDataValueInteger"
+ - $ref: "#/components/schemas/AdditionalDataValueComment"
+ - $ref: "#/components/schemas/AdditionalDataValueChoice"
+ - $ref: "#/components/schemas/AdditionalDataValueTracking"
+ - $ref: "#/components/schemas/AdditionalDataValueLink"
+ AdditionalDataValueFlag:
+ type: object
+ required:
+ - _type
+ - value
+ properties:
+ _type:
+ type: string
+ description: Flag
+ example: "Flag"
+ value:
+ type: boolean
+ description: フラグのON(true)またはOFF(false)
+ AdditionalDataValueInteger:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Integer
+ example: "Integer"
+ value:
+ type: integer
+ description: 整数値
+ AdditionalDataValueComment:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Comment
+ example: "Comment"
+ value:
+ type: string
+ description: 自由記述
+ AdditionalDataValueChoice:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Choice
+ example: "Choice"
+ value:
+ $ref: "#/components/schemas/AdditionalDataChoiceValue"
+ AdditionalDataChoiceValue:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ allOf:
+ - $ref: "#/components/schemas/ChoiceId"
+ - description: 選択された選択肢のID
+ name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 選択された選択肢の表示名
+ AdditionalDataValueTracking:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Tracking
+ example: "Tracking"
+ value:
+ type: string
+ description: トラッキングID
+ AdditionalDataValueLink:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Link
+ example: "Link"
+ value:
+ type: string
+ description: リンク先アノテーションID
SingleAnnotation:
type: object
properties:
@@ -2425,18 +2535,7 @@
type: object
properties:
annotation_format_version:
- type: string
- example: "1.0.0"
- description: |
- アノテーションフォーマットのバージョンです。
- アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。
- したがって、アノテーション仕様を更新しても、このバージョンは変化しません。
-
- バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。
-
- JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。
- すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。
- バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
+ $ref: "#/components/schemas/AnnotationFormatVersion"
project_id:
$ref: "#/components/schemas/ProjectId"
task_id:
@@ -2476,7 +2575,7 @@
additional_data_list:
type: array
items:
- $ref: "#/components/schemas/FullAnnotationAdditionalData"
+ $ref: "#/components/schemas/AdditionalData"
updated_datetime:
type: string
format: date-time
@@ -2541,7 +2640,7 @@
additional_data_list:
type: array
items:
- $ref: "#/components/schemas/FullAnnotationAdditionalData"
+ $ref: "#/components/schemas/AdditionalData"
created_datetime:
type: string
format: date-time
@@ -2590,13 +2689,21 @@
$ref: "#/components/schemas/InputDataId"
input_data_name:
type: string
- detail:
+ details:
type: array
items:
$ref: "#/components/schemas/FullAnnotationDetail"
+ detail:
+ deprecated: true
+ description: use details
+ type: array
+ items:
+ $ref: "#/components/schemas/FullAnnotationDetailOld"
updated_datetime:
type: string
format: date-time
+ annotation_format_version:
+ $ref: "#/components/schemas/AnnotationFormatVersion"
FullAnnotationDetail:
type: object
properties:
@@ -2618,6 +2725,29 @@
type: array
items:
$ref: "#/components/schemas/FullAnnotationAdditionalData"
+ FullAnnotationDetailOld:
+ deprecated: true
+ description: for v1
+ type: object
+ properties:
+ annotation_id:
+ $ref: "#/components/schemas/AnnotationId"
+ user_id:
+ $ref: "#/components/schemas/UserId"
+ label_id:
+ $ref: "#/components/schemas/LabelId"
+ label_name:
+ $ref: "#/components/schemas/InternationalizationMessage"
+ annotation_type:
+ $ref: "#/components/schemas/AnnotationType"
+ data_holding_type:
+ $ref: "#/components/schemas/AnnotationDataHoldingType"
+ data:
+ $ref: "#/components/schemas/FullAnnotationData"
+ additional_data_list:
+ type: array
+ items:
+ $ref: "#/components/schemas/AdditionalData"
FullAnnotationData:
oneOf:
- type: object
@@ -2638,39 +2768,6 @@
* `FullAnnotationDataPoints`: ポリゴン(閉じた頂点集合)のアノテーションデータです。
* `FullAnnotationDataSegmentation`: 点のアノテーションデータです。
* `FullAnnotationDataRange`: 動画区間のアノテーションデータです。
- FullAnnotationAdditionalData:
- type: object
- properties:
- additional_data_definition_id:
- allOf:
- - $ref: "#/components/schemas/AdditionalDataDefinitionId"
- - description: 属性ID
- additional_data_definition_name:
- allOf:
- - $ref: "#/components/schemas/InternationalizationMessage"
- - description: 属性表示名
- type:
- $ref: "#/components/schemas/AdditionalDataDefinitionType"
- flag:
- type: boolean
- description: typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される
- integer:
- type: integer
- description: typeがintegerの場合に、整数値が格納される
- comment:
- type: string
- description: |
- * typeがcommentの場合、コメントの値
- * typeがtrackingの場合、トラッキングID
- * typeがlinkの場合、リンク先のアノテーションID
- choice:
- allOf:
- - $ref: "#/components/schemas/ChoiceId"
- - description: typeがchoice・selectの場合に、選択肢のIDが格納される
- choice_name:
- allOf:
- - $ref: "#/components/schemas/InternationalizationMessage"
- - description: typeがchoice・selectの場合に、選択肢の表示名が格納される
FullAnnotationDataClassification:
type: object
required:
@@ -2794,6 +2891,56 @@
type: integer
y:
type: integer
+ FullAnnotationAdditionalData:
+ type: object
+ properties:
+ additional_data_definition_id:
+ allOf:
+ - $ref: "#/components/schemas/AdditionalDataDefinitionId"
+ - description: 属性ID
+ additional_data_definition_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 属性表示名
+ type:
+ $ref: "#/components/schemas/AdditionalDataDefinitionType"
+ value:
+ $ref: "#/components/schemas/AdditionalDataValue"
+ FullAnnotationAdditionalDataOld:
+ deprecated: true
+ description: for v1
+ type: object
+ properties:
+ additional_data_definition_id:
+ allOf:
+ - $ref: "#/components/schemas/AdditionalDataDefinitionId"
+ - description: 属性ID
+ additional_data_definition_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 属性表示名
+ type:
+ $ref: "#/components/schemas/AdditionalDataDefinitionType"
+ flag:
+ type: boolean
+ description: typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される
+ integer:
+ type: integer
+ description: typeがintegerの場合に、整数値が格納される
+ comment:
+ type: string
+ description: |
+ * typeがcommentの場合、コメントの値
+ * typeがtrackingの場合、トラッキングID
+ * typeがlinkの場合、リンク先のアノテーションID
+ choice:
+ allOf:
+ - $ref: "#/components/schemas/ChoiceId"
+ - description: typeがchoice・selectの場合に、選択肢のIDが格納される
+ choice_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: typeがchoice・selectの場合に、選択肢の表示名が格納される
BatchInspectionRequestItemPut:
type: object
description: 検査コメント更新
diff --git a/generate/swagger/swagger.v2.yaml b/generate/swagger/swagger.v2.yaml
index 3879548f..4735add4 100644
--- a/generate/swagger/swagger.v2.yaml
+++ b/generate/swagger/swagger.v2.yaml
@@ -75,7 +75,7 @@ info:
検査ID | プロジェクト内で一意
WebhookID | プロジェクト内で一意
- version: 0.62.0
+ version: 0.63.0
title: AnnoFab Web API
x-logo:
url: "https://annofab.com/images/logo_landscape.png"
@@ -1485,6 +1485,19 @@ components:
Duration:
type: string
example: "PT34H17M36.789S"
+ AnnotationFormatVersion:
+ type: string
+ example: "1.0.0"
+ description: |
+ アノテーションフォーマットのバージョンです。
+ アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。
+ したがって、アノテーション仕様を更新しても、このバージョンは変化しません。
+
+ バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。
+
+ JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。
+ すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。
+ バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
Project:
type: object
required:
@@ -1627,12 +1640,14 @@ components:
- gen-inputs
- gen-tasks
- gen-annotation
+ - gen-tasks-list
- invoke-hook
description: |
* `copy-project` - プロジェクトのコピー。[initiateProjectCopy](#operation/initiateProjectCopy) APIを実行したときに登録されるジョブ。
* `gen-inputs` - zipファイルから入力データの作成。[putInputData](#operation/putInputData) APIを実行して、zipファイルから入力データを作成したときに登録されるジョブ。
* `gen-tasks` - タスクの一括作成。[initiateTasksGeneration](#operation/initiateTasksGeneration) APIを実行したときに登録されるジョブ。
* `gen-annotation` - アノテーションZIPの更新。[postAnnotationArchiveUpdate](#operation/postAnnotationArchiveUpdate) APIを実行したときに登録されるジョブ。
+ * `gen-tasks-list` - タスク全件ファイルの更新。[postProjectTasksUpdate](#operation/postProjectTasksUpdate) APIを実行したときに登録されるジョブ。
* `invoke-hook` - Webhookの起動。
JobStatus:
type: string
@@ -2960,12 +2975,107 @@ components:
$ref: "#/components/schemas/AdditionalDataDefinitionId"
flag:
type: boolean
- interger:
+ integer:
type: integer
comment:
type: string
choice:
$ref: "#/components/schemas/ChoiceId"
+ AdditionalDataValue:
+ oneOf:
+ - type: object
+ - $ref: "#/components/schemas/AdditionalDataValueFlag"
+ - $ref: "#/components/schemas/AdditionalDataValueInteger"
+ - $ref: "#/components/schemas/AdditionalDataValueComment"
+ - $ref: "#/components/schemas/AdditionalDataValueChoice"
+ - $ref: "#/components/schemas/AdditionalDataValueTracking"
+ - $ref: "#/components/schemas/AdditionalDataValueLink"
+ AdditionalDataValueFlag:
+ type: object
+ required:
+ - _type
+ - value
+ properties:
+ _type:
+ type: string
+ description: Flag
+ example: "Flag"
+ value:
+ type: boolean
+ description: フラグのON(true)またはOFF(false)
+ AdditionalDataValueInteger:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Integer
+ example: "Integer"
+ value:
+ type: integer
+ description: 整数値
+ AdditionalDataValueComment:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Comment
+ example: "Comment"
+ value:
+ type: string
+ description: 自由記述
+ AdditionalDataValueChoice:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Choice
+ example: "Choice"
+ value:
+ $ref: "#/components/schemas/AdditionalDataChoiceValue"
+ AdditionalDataChoiceValue:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ allOf:
+ - $ref: "#/components/schemas/ChoiceId"
+ - description: 選択された選択肢のID
+ name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 選択された選択肢の表示名
+ AdditionalDataValueTracking:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Tracking
+ example: "Tracking"
+ value:
+ type: string
+ description: トラッキングID
+ AdditionalDataValueLink:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Link
+ example: "Link"
+ value:
+ type: string
+ description: リンク先アノテーションID
SingleAnnotation:
type: object
properties:
@@ -2984,18 +3094,7 @@ components:
type: object
properties:
annotation_format_version:
- type: string
- example: "1.0.0"
- description: |
- アノテーションフォーマットのバージョンです。
- アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。
- したがって、アノテーション仕様を更新しても、このバージョンは変化しません。
-
- バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。
-
- JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。
- すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。
- バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
+ $ref: "#/components/schemas/AnnotationFormatVersion"
project_id:
$ref: "#/components/schemas/ProjectId"
task_id:
@@ -3035,7 +3134,7 @@ components:
additional_data_list:
type: array
items:
- $ref: "#/components/schemas/FullAnnotationAdditionalData"
+ $ref: "#/components/schemas/AdditionalData"
updated_datetime:
type: string
format: date-time
@@ -3100,7 +3199,7 @@ components:
additional_data_list:
type: array
items:
- $ref: "#/components/schemas/FullAnnotationAdditionalData"
+ $ref: "#/components/schemas/AdditionalData"
created_datetime:
type: string
format: date-time
@@ -3149,13 +3248,21 @@ components:
$ref: "#/components/schemas/InputDataId"
input_data_name:
type: string
- detail:
+ details:
type: array
items:
$ref: "#/components/schemas/FullAnnotationDetail"
+ detail:
+ deprecated: true
+ description: use details
+ type: array
+ items:
+ $ref: "#/components/schemas/FullAnnotationDetailOld"
updated_datetime:
type: string
format: date-time
+ annotation_format_version:
+ $ref: "#/components/schemas/AnnotationFormatVersion"
FullAnnotationDetail:
type: object
properties:
@@ -3177,6 +3284,29 @@ components:
type: array
items:
$ref: "#/components/schemas/FullAnnotationAdditionalData"
+ FullAnnotationDetailOld:
+ deprecated: true
+ description: for v1
+ type: object
+ properties:
+ annotation_id:
+ $ref: "#/components/schemas/AnnotationId"
+ user_id:
+ $ref: "#/components/schemas/UserId"
+ label_id:
+ $ref: "#/components/schemas/LabelId"
+ label_name:
+ $ref: "#/components/schemas/InternationalizationMessage"
+ annotation_type:
+ $ref: "#/components/schemas/AnnotationType"
+ data_holding_type:
+ $ref: "#/components/schemas/AnnotationDataHoldingType"
+ data:
+ $ref: "#/components/schemas/FullAnnotationData"
+ additional_data_list:
+ type: array
+ items:
+ $ref: "#/components/schemas/AdditionalData"
FullAnnotationData:
oneOf:
- type: object
@@ -3197,39 +3327,6 @@ components:
* `FullAnnotationDataPoints`: ポリゴン(閉じた頂点集合)のアノテーションデータです。
* `FullAnnotationDataSegmentation`: 点のアノテーションデータです。
* `FullAnnotationDataRange`: 動画区間のアノテーションデータです。
- FullAnnotationAdditionalData:
- type: object
- properties:
- additional_data_definition_id:
- allOf:
- - $ref: "#/components/schemas/AdditionalDataDefinitionId"
- - description: 属性ID
- additional_data_definition_name:
- allOf:
- - $ref: "#/components/schemas/InternationalizationMessage"
- - description: 属性表示名
- type:
- $ref: "#/components/schemas/AdditionalDataDefinitionType"
- flag:
- type: boolean
- description: typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される
- integer:
- type: integer
- description: typeがintegerの場合に、整数値が格納される
- comment:
- type: string
- description: |
- * typeがcommentの場合、コメントの値
- * typeがtrackingの場合、トラッキングID
- * typeがlinkの場合、リンク先のアノテーションID
- choice:
- allOf:
- - $ref: "#/components/schemas/ChoiceId"
- - description: typeがchoice・selectの場合に、選択肢のIDが格納される
- choice_name:
- allOf:
- - $ref: "#/components/schemas/InternationalizationMessage"
- - description: typeがchoice・selectの場合に、選択肢の表示名が格納される
FullAnnotationDataClassification:
type: object
required:
@@ -3353,6 +3450,56 @@ components:
type: integer
y:
type: integer
+ FullAnnotationAdditionalData:
+ type: object
+ properties:
+ additional_data_definition_id:
+ allOf:
+ - $ref: "#/components/schemas/AdditionalDataDefinitionId"
+ - description: 属性ID
+ additional_data_definition_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 属性表示名
+ type:
+ $ref: "#/components/schemas/AdditionalDataDefinitionType"
+ value:
+ $ref: "#/components/schemas/AdditionalDataValue"
+ FullAnnotationAdditionalDataOld:
+ deprecated: true
+ description: for v1
+ type: object
+ properties:
+ additional_data_definition_id:
+ allOf:
+ - $ref: "#/components/schemas/AdditionalDataDefinitionId"
+ - description: 属性ID
+ additional_data_definition_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 属性表示名
+ type:
+ $ref: "#/components/schemas/AdditionalDataDefinitionType"
+ flag:
+ type: boolean
+ description: typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される
+ integer:
+ type: integer
+ description: typeがintegerの場合に、整数値が格納される
+ comment:
+ type: string
+ description: |
+ * typeがcommentの場合、コメントの値
+ * typeがtrackingの場合、トラッキングID
+ * typeがlinkの場合、リンク先のアノテーションID
+ choice:
+ allOf:
+ - $ref: "#/components/schemas/ChoiceId"
+ - description: typeがchoice・selectの場合に、選択肢のIDが格納される
+ choice_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: typeがchoice・selectの場合に、選択肢の表示名が格納される
BatchInspectionRequestItemPut:
type: object
description: 検査コメント更新
diff --git a/generate/swagger/swagger.yaml b/generate/swagger/swagger.yaml
index f097bc19..5e19ca35 100644
--- a/generate/swagger/swagger.yaml
+++ b/generate/swagger/swagger.yaml
@@ -75,7 +75,7 @@ info:
検査ID | プロジェクト内で一意
WebhookID | プロジェクト内で一意
- version: 0.62.0
+ version: 0.63.0
title: AnnoFab Web API
x-logo:
url: "https://annofab.com/images/logo_landscape.png"
@@ -1474,6 +1474,42 @@ paths:
$ref: "#/components/responses/ErrorMissingResource"
503:
$ref: "#/components/responses/ErrorUnderMaintenance"
+ post:
+ tags:
+ - af-project
+ summary: プロジェクトのタスク全件ファイル更新開始
+ description: |
+ プロジェクト内のタスク全件ファイルの更新を開始します。
+ ファイルの更新は、データ量に応じて数分程度かかります。
+
+ タスク全件ファイルは日本時間AM02:00ごろに自動更新されます。
+ 本APIを用いると、自動更新を待たずに更新を要求できます。
+ ただし、タスク全件ファイル以外は更新されません。
+ security:
+ - ProjectOwner: []
+ operationId: postProjectTasksUpdate
+ parameters:
+ - name: project_id
+ in: path
+ description: プロジェクトID
+ required: true
+ schema:
+ $ref: "#/components/schemas/ProjectId"
+ responses:
+ 202:
+ $ref: "#/components/responses/SuccessMessage"
+ 400:
+ $ref: "#/components/responses/ErrorInvalidRequest"
+ 401:
+ $ref: "#/components/responses/ErrorUnauthorizedApi"
+ 409:
+ description: 停止中プロジェクトに対する操作のため失敗
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ErrorStateMismatch"
+ 503:
+ $ref: "#/components/responses/ErrorUnderMaintenance"
/projects/{project_id}/rawdata/inspections:
get:
tags:
@@ -3383,13 +3419,10 @@ paths:
$ref: "#/components/responses/ErrorUnderMaintenance"
/projects/{project_id}/archive/full:
get:
- deprecated: true
tags:
- af-annotation
summary: fullアノテーションZIP取得
description: |
- **このAPIは廃止予定です。fullアノテーションZIPにある情報で、simpleアノテーションZIPにも欲しいものがあれば、ご連絡ください。**
-
プロジェクト内のアノテーション(full版)がまとめられたZIPを取得します。
full版のアノテーションJSONデータは、画像やアノテーションやアノテーション作成者など管理用の詳細情報が付随しています。機械学習での一般的な利用には、[詳細情報を省いた扱いやすい構造の simple版](#operation/getAnnotationArchive) を推奨します。
@@ -5369,6 +5402,19 @@ components:
Duration:
type: string
example: "PT34H17M36.789S"
+ AnnotationFormatVersion:
+ type: string
+ example: "1.0.0"
+ description: |
+ アノテーションフォーマットのバージョンです。
+ アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。
+ したがって、アノテーション仕様を更新しても、このバージョンは変化しません。
+
+ バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。
+
+ JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。
+ すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。
+ バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
Project:
type: object
required:
@@ -5511,12 +5557,14 @@ components:
- gen-inputs
- gen-tasks
- gen-annotation
+ - gen-tasks-list
- invoke-hook
description: |
* `copy-project` - プロジェクトのコピー。[initiateProjectCopy](#operation/initiateProjectCopy) APIを実行したときに登録されるジョブ。
* `gen-inputs` - zipファイルから入力データの作成。[putInputData](#operation/putInputData) APIを実行して、zipファイルから入力データを作成したときに登録されるジョブ。
* `gen-tasks` - タスクの一括作成。[initiateTasksGeneration](#operation/initiateTasksGeneration) APIを実行したときに登録されるジョブ。
* `gen-annotation` - アノテーションZIPの更新。[postAnnotationArchiveUpdate](#operation/postAnnotationArchiveUpdate) APIを実行したときに登録されるジョブ。
+ * `gen-tasks-list` - タスク全件ファイルの更新。[postProjectTasksUpdate](#operation/postProjectTasksUpdate) APIを実行したときに登録されるジョブ。
* `invoke-hook` - Webhookの起動。
JobStatus:
type: string
@@ -6844,12 +6892,107 @@ components:
$ref: "#/components/schemas/AdditionalDataDefinitionId"
flag:
type: boolean
- interger:
+ integer:
type: integer
comment:
type: string
choice:
$ref: "#/components/schemas/ChoiceId"
+ AdditionalDataValue:
+ oneOf:
+ - type: object
+ - $ref: "#/components/schemas/AdditionalDataValueFlag"
+ - $ref: "#/components/schemas/AdditionalDataValueInteger"
+ - $ref: "#/components/schemas/AdditionalDataValueComment"
+ - $ref: "#/components/schemas/AdditionalDataValueChoice"
+ - $ref: "#/components/schemas/AdditionalDataValueTracking"
+ - $ref: "#/components/schemas/AdditionalDataValueLink"
+ AdditionalDataValueFlag:
+ type: object
+ required:
+ - _type
+ - value
+ properties:
+ _type:
+ type: string
+ description: Flag
+ example: "Flag"
+ value:
+ type: boolean
+ description: フラグのON(true)またはOFF(false)
+ AdditionalDataValueInteger:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Integer
+ example: "Integer"
+ value:
+ type: integer
+ description: 整数値
+ AdditionalDataValueComment:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Comment
+ example: "Comment"
+ value:
+ type: string
+ description: 自由記述
+ AdditionalDataValueChoice:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Choice
+ example: "Choice"
+ value:
+ $ref: "#/components/schemas/AdditionalDataChoiceValue"
+ AdditionalDataChoiceValue:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ allOf:
+ - $ref: "#/components/schemas/ChoiceId"
+ - description: 選択された選択肢のID
+ name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 選択された選択肢の表示名
+ AdditionalDataValueTracking:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Tracking
+ example: "Tracking"
+ value:
+ type: string
+ description: トラッキングID
+ AdditionalDataValueLink:
+ type: object
+ required:
+ - _type
+ properties:
+ _type:
+ type: string
+ description: Link
+ example: "Link"
+ value:
+ type: string
+ description: リンク先アノテーションID
SingleAnnotation:
type: object
properties:
@@ -6868,18 +7011,7 @@ components:
type: object
properties:
annotation_format_version:
- type: string
- example: "1.0.0"
- description: |
- アノテーションフォーマットのバージョンです。
- アノテーションフォーマットとは、プロジェクト個別のアノテーション仕様ではなく、AnnoFabのアノテーション構造のことです。
- したがって、アノテーション仕様を更新しても、このバージョンは変化しません。
-
- バージョンの読み方と更新ルールは、業界慣習の[Semantic Versioning](https://semver.org/)にもとづきます。
-
- JSONに出力されるアノテーションフォーマットのバージョンは、アノテーションZIPが作成される時点のものが使われます。
- すなわち、`1.0.0`の時点のタスクで作成したアノテーションであっても、フォーマットが `1.0.1` に上がった次のZIP作成時では `1.0.1` となります。
- バージョンを固定してZIPを残しておきたい場合は、プロジェクトが完了した時点でZIPをダウンロードして保管しておくか、またはプロジェクトを「停止中」にします。
+ $ref: "#/components/schemas/AnnotationFormatVersion"
project_id:
$ref: "#/components/schemas/ProjectId"
task_id:
@@ -6919,7 +7051,7 @@ components:
additional_data_list:
type: array
items:
- $ref: "#/components/schemas/FullAnnotationAdditionalData"
+ $ref: "#/components/schemas/AdditionalData"
updated_datetime:
type: string
format: date-time
@@ -6984,7 +7116,7 @@ components:
additional_data_list:
type: array
items:
- $ref: "#/components/schemas/FullAnnotationAdditionalData"
+ $ref: "#/components/schemas/AdditionalData"
created_datetime:
type: string
format: date-time
@@ -7033,13 +7165,21 @@ components:
$ref: "#/components/schemas/InputDataId"
input_data_name:
type: string
- detail:
+ details:
type: array
items:
$ref: "#/components/schemas/FullAnnotationDetail"
+ detail:
+ deprecated: true
+ description: use details
+ type: array
+ items:
+ $ref: "#/components/schemas/FullAnnotationDetailOld"
updated_datetime:
type: string
format: date-time
+ annotation_format_version:
+ $ref: "#/components/schemas/AnnotationFormatVersion"
FullAnnotationDetail:
type: object
properties:
@@ -7061,6 +7201,29 @@ components:
type: array
items:
$ref: "#/components/schemas/FullAnnotationAdditionalData"
+ FullAnnotationDetailOld:
+ deprecated: true
+ description: for v1
+ type: object
+ properties:
+ annotation_id:
+ $ref: "#/components/schemas/AnnotationId"
+ user_id:
+ $ref: "#/components/schemas/UserId"
+ label_id:
+ $ref: "#/components/schemas/LabelId"
+ label_name:
+ $ref: "#/components/schemas/InternationalizationMessage"
+ annotation_type:
+ $ref: "#/components/schemas/AnnotationType"
+ data_holding_type:
+ $ref: "#/components/schemas/AnnotationDataHoldingType"
+ data:
+ $ref: "#/components/schemas/FullAnnotationData"
+ additional_data_list:
+ type: array
+ items:
+ $ref: "#/components/schemas/AdditionalData"
FullAnnotationData:
oneOf:
- type: object
@@ -7081,39 +7244,6 @@ components:
* `FullAnnotationDataPoints`: ポリゴン(閉じた頂点集合)のアノテーションデータです。
* `FullAnnotationDataSegmentation`: 点のアノテーションデータです。
* `FullAnnotationDataRange`: 動画区間のアノテーションデータです。
- FullAnnotationAdditionalData:
- type: object
- properties:
- additional_data_definition_id:
- allOf:
- - $ref: "#/components/schemas/AdditionalDataDefinitionId"
- - description: 属性ID
- additional_data_definition_name:
- allOf:
- - $ref: "#/components/schemas/InternationalizationMessage"
- - description: 属性表示名
- type:
- $ref: "#/components/schemas/AdditionalDataDefinitionType"
- flag:
- type: boolean
- description: typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される
- integer:
- type: integer
- description: typeがintegerの場合に、整数値が格納される
- comment:
- type: string
- description: |
- * typeがcommentの場合、コメントの値
- * typeがtrackingの場合、トラッキングID
- * typeがlinkの場合、リンク先のアノテーションID
- choice:
- allOf:
- - $ref: "#/components/schemas/ChoiceId"
- - description: typeがchoice・selectの場合に、選択肢のIDが格納される
- choice_name:
- allOf:
- - $ref: "#/components/schemas/InternationalizationMessage"
- - description: typeがchoice・selectの場合に、選択肢の表示名が格納される
FullAnnotationDataClassification:
type: object
required:
@@ -7237,6 +7367,56 @@ components:
type: integer
y:
type: integer
+ FullAnnotationAdditionalData:
+ type: object
+ properties:
+ additional_data_definition_id:
+ allOf:
+ - $ref: "#/components/schemas/AdditionalDataDefinitionId"
+ - description: 属性ID
+ additional_data_definition_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 属性表示名
+ type:
+ $ref: "#/components/schemas/AdditionalDataDefinitionType"
+ value:
+ $ref: "#/components/schemas/AdditionalDataValue"
+ FullAnnotationAdditionalDataOld:
+ deprecated: true
+ description: for v1
+ type: object
+ properties:
+ additional_data_definition_id:
+ allOf:
+ - $ref: "#/components/schemas/AdditionalDataDefinitionId"
+ - description: 属性ID
+ additional_data_definition_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: 属性表示名
+ type:
+ $ref: "#/components/schemas/AdditionalDataDefinitionType"
+ flag:
+ type: boolean
+ description: typeがflagの場合に、フラグのON(true)またはOFF(false)が格納される
+ integer:
+ type: integer
+ description: typeがintegerの場合に、整数値が格納される
+ comment:
+ type: string
+ description: |
+ * typeがcommentの場合、コメントの値
+ * typeがtrackingの場合、トラッキングID
+ * typeがlinkの場合、リンク先のアノテーションID
+ choice:
+ allOf:
+ - $ref: "#/components/schemas/ChoiceId"
+ - description: typeがchoice・selectの場合に、選択肢のIDが格納される
+ choice_name:
+ allOf:
+ - $ref: "#/components/schemas/InternationalizationMessage"
+ - description: typeがchoice・selectの場合に、選択肢の表示名が格納される
BatchInspectionRequestItemPut:
type: object
description: 検査コメント更新
diff --git a/tests/data/dataclass/full-annotation.json b/tests/data/dataclass/full-annotation.json
index a87674a3..a563baf0 100644
--- a/tests/data/dataclass/full-annotation.json
+++ b/tests/data/dataclass/full-annotation.json
@@ -1,440 +1,885 @@
{
- "project_id": "1186bb00-16e6-4d20-8e24-310322911850",
- "task_id": "sample_1",
- "task_phase": "acceptance",
- "task_phase_stage": 1,
- "task_status": "complete",
- "input_data_id": "c86205d1-bdd4-4110-ae46-194e661d622b",
- "input_data_name": "./tests/data/lenna.png",
- "detail": [
- {
- "annotation_id": "02a9eab8-264b-4b92-b3b7-6e6c377a10ee",
- "user_id": "kawamatsu_yuuji",
- "label_id": "ded52dcb-bcd6-4e77-9626-61e546f635d0",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "鳥"
- },
- {
- "lang": "en-US",
- "message": "bird"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "polygon",
- "data_holding_type": "inner",
- "data": {
- "points": [
- {
- "x": 55,
- "y": 18
- },
- {
- "x": 58,
- "y": 27
- },
- {
- "x": 57,
- "y": 33
- },
- {
- "x": 57,
- "y": 35
- },
- {
- "x": 53,
- "y": 60
- },
- {
- "x": 50,
- "y": 60
- },
- {
- "x": 40,
- "y": 61
- },
- {
- "x": 38,
- "y": 34
- },
- {
- "x": 47,
- "y": 33
- },
- {
- "x": 39,
- "y": 30
- }
- ],
- "_type": "Points"
- },
- "additional_data_list": []
- },
- {
- "annotation_id": "e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
- "user_id": "kawamatsu_yuuji",
- "label_id": "2ffb4c74-106b-44ac-81ce-3c3df77518e0",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "人間"
- },
- {
- "lang": "en-US",
- "message": "human"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "segmentation_v2",
- "data_holding_type": "outer",
- "data": null,
- "additional_data_list": []
- },
- {
- "annotation_id": "2280a89f-986c-4184-82df-feaec37a9149",
- "user_id": "kawamatsu_yuuji",
- "label_id": "f50aa88d-36c7-43f5-8728-247a49b4f4d8",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "目"
- },
- {
- "lang": "en-US",
- "message": "eye"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "point",
- "data_holding_type": "inner",
- "data": {
- "point": {
- "x": 25,
- "y": 18
+ "project_id": "1186bb00-16e6-4d20-8e24-310322911850",
+ "task_id": "sample_1",
+ "task_phase": "acceptance",
+ "task_phase_stage": 1,
+ "task_status": "complete",
+ "input_data_id": "c86205d1-bdd4-4110-ae46-194e661d622b",
+ "input_data_name": "./tests/data/lenna.png",
+ "detail": [
+ {
+ "annotation_id": "02a9eab8-264b-4b92-b3b7-6e6c377a10ee",
+ "user_id": "my_user_id",
+ "label_id": "ded52dcb-bcd6-4e77-9626-61e546f635d0",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "鳥"
+ },
+ {
+ "lang": "en-US",
+ "message": "bird"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "polygon",
+ "data_holding_type": "inner",
+ "data": {
+ "points": [
+ {
+ "x": 55,
+ "y": 18
+ },
+ {
+ "x": 58,
+ "y": 27
+ },
+ {
+ "x": 57,
+ "y": 33
+ },
+ {
+ "x": 57,
+ "y": 35
+ },
+ {
+ "x": 53,
+ "y": 60
+ },
+ {
+ "x": 50,
+ "y": 60
+ },
+ {
+ "x": 40,
+ "y": 61
+ },
+ {
+ "x": 38,
+ "y": 34
+ },
+ {
+ "x": 47,
+ "y": 33
+ },
+ {
+ "x": 39,
+ "y": 30
+ }
+ ],
+ "_type": "Points"
+ },
+ "additional_data_list": []
},
- "_type": "SinglePoint"
- },
- "additional_data_list": []
- },
- {
- "annotation_id": "226b49a4-c8ef-4016-9e90-99107d8a623b",
- "user_id": "kawamatsu_yuuji",
- "label_id": "15ba7932-24b9-4cf3-95bd-9bf6deede4fa",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "ネコ"
- },
- {
- "lang": "en-US",
- "message": "Cat"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "bounding_box",
- "data_holding_type": "inner",
- "data": {
- "left_top": {
- "x": 10,
- "y": 7
+ {
+ "annotation_id": "e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
+ "user_id": "my_user_id",
+ "label_id": "2ffb4c74-106b-44ac-81ce-3c3df77518e0",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "人間"
+ },
+ {
+ "lang": "en-US",
+ "message": "human"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "segmentation_v2",
+ "data_holding_type": "outer",
+ "data": {
+ "data_uri": "./c86205d1-bdd4-4110-ae46-194e661d622b/e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
+ "_type": "SegmentationV2"
+ },
+ "additional_data_list": []
},
- "right_bottom": {
- "x": 36,
- "y": 36
+ {
+ "annotation_id": "2280a89f-986c-4184-82df-feaec37a9149",
+ "user_id": "my_user_id",
+ "label_id": "f50aa88d-36c7-43f5-8728-247a49b4f4d8",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "目"
+ },
+ {
+ "lang": "en-US",
+ "message": "eye"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "point",
+ "data_holding_type": "inner",
+ "data": {
+ "point": {
+ "x": 25,
+ "y": 18
+ },
+ "_type": "SinglePoint"
+ },
+ "additional_data_list": []
},
- "_type": "BoundingBox"
- },
- "additional_data_list": [
{
- "additional_data_definition_id": "e6864d96-78fa-45f3-a786-6c8c900c92ae",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "隠れ"
- },
- {
- "lang": "en-US",
- "message": "occluded"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "flag",
- "flag": true,
- "integer": null,
- "comment": null,
- "choice": null,
- "choice_name": null
+ "annotation_id": "226b49a4-c8ef-4016-9e90-99107d8a623b",
+ "user_id": "my_user_id",
+ "label_id": "15ba7932-24b9-4cf3-95bd-9bf6deede4fa",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "ネコ"
+ },
+ {
+ "lang": "en-US",
+ "message": "Cat"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "bounding_box",
+ "data_holding_type": "inner",
+ "data": {
+ "left_top": {
+ "x": 10,
+ "y": 7
+ },
+ "right_bottom": {
+ "x": 36,
+ "y": 36
+ },
+ "_type": "BoundingBox"
+ },
+ "additional_data_list": [
+ {
+ "additional_data_definition_id": "e6864d96-78fa-45f3-a786-6c8c900c92ae",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "隠れ"
+ },
+ {
+ "lang": "en-US",
+ "message": "occluded"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "flag",
+ "flag": true,
+ "integer": null,
+ "comment": null,
+ "choice": null,
+ "choice_name": null
+ },
+ {
+ "additional_data_definition_id": "51e8c91f-5de1-450b-a0f3-94fec582f5ce",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "目のリンク"
+ },
+ {
+ "lang": "en-US",
+ "message": "link-eye"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "link",
+ "flag": null,
+ "integer": null,
+ "comment": "2280a89f-986c-4184-82df-feaec37a9149",
+ "choice": null,
+ "choice_name": null
+ },
+ {
+ "additional_data_definition_id": "aff2855e-2e3d-47a2-8c27-c7652e4dfb2f",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "体重"
+ },
+ {
+ "lang": "en-US",
+ "message": "weight"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "integer",
+ "flag": null,
+ "integer": 3,
+ "comment": null,
+ "choice": null,
+ "choice_name": null
+ },
+ {
+ "additional_data_definition_id": "7e6a577a-3410-4c8a-9624-2904bb2e6666",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "名前"
+ },
+ {
+ "lang": "en-US",
+ "message": "name"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "comment",
+ "flag": null,
+ "integer": null,
+ "comment": "lena",
+ "choice": null,
+ "choice_name": null
+ },
+ {
+ "additional_data_definition_id": "a63a0513-a96e-4c7c-8754-88a24fef9ca9",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "備考"
+ },
+ {
+ "lang": "en-US",
+ "message": "memo"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "text",
+ "flag": null,
+ "integer": null,
+ "comment": "テスト",
+ "choice": null,
+ "choice_name": null
+ },
+ {
+ "additional_data_definition_id": "649abf45-1ed7-459a-8282-a58228e9a302",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "object id"
+ },
+ {
+ "lang": "en-US",
+ "message": "object id"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "tracking",
+ "flag": null,
+ "integer": null,
+ "comment": "6602c86c-5e22-42b9-b5a4-8a77c7bade01",
+ "choice": null,
+ "choice_name": null
+ }
+ ]
},
{
- "additional_data_definition_id": "51e8c91f-5de1-450b-a0f3-94fec582f5ce",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "目のリンク"
- },
- {
- "lang": "en-US",
- "message": "link-eye"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "link",
- "flag": null,
- "integer": null,
- "comment": "2280a89f-986c-4184-82df-feaec37a9149",
- "choice": null,
- "choice_name": null
+ "annotation_id": "60a18a10-5d8a-4c1a-90b3-aa67226249c6",
+ "user_id": "my_user_id",
+ "label_id": "c754f724-5f8c-48eb-81ec-ea77e55efee7",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "足"
+ },
+ {
+ "lang": "en-US",
+ "message": "leg"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "polyline",
+ "data_holding_type": "inner",
+ "data": {
+ "points": [
+ {
+ "x": 22,
+ "y": 29
+ },
+ {
+ "x": 33,
+ "y": 41
+ }
+ ],
+ "_type": "Points"
+ },
+ "additional_data_list": []
},
{
- "additional_data_definition_id": "aff2855e-2e3d-47a2-8c27-c7652e4dfb2f",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "体重"
- },
- {
- "lang": "en-US",
- "message": "weight"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "integer",
- "flag": null,
- "integer": 3,
- "comment": null,
- "choice": null,
- "choice_name": null
+ "annotation_id": "ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
+ "user_id": "my_user_id",
+ "label_id": "108ce1f7-217b-43e9-a407-8d0ac6aad87e",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "犬"
+ },
+ {
+ "lang": "en-US",
+ "message": "dog"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "segmentation",
+ "data_holding_type": "outer",
+ "data": {
+ "data_uri": "./c86205d1-bdd4-4110-ae46-194e661d622b/ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
+ "_type": "Segmentation"
+ },
+ "additional_data_list": []
},
{
- "additional_data_definition_id": "7e6a577a-3410-4c8a-9624-2904bb2e6666",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "名前"
- },
- {
- "lang": "en-US",
- "message": "name"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "comment",
- "flag": null,
- "integer": null,
- "comment": "lena",
- "choice": null,
- "choice_name": null
+ "annotation_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
+ "user_id": "my_user_id",
+ "label_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "気候"
+ },
+ {
+ "lang": "en-US",
+ "message": "climatic"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "classification",
+ "data_holding_type": "inner",
+ "data": {
+ "_type": "Classification"
+ },
+ "additional_data_list": [
+ {
+ "additional_data_definition_id": "896d7eeb-9c60-4fbf-b7c4-8f4209261049",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "天気"
+ },
+ {
+ "lang": "en-US",
+ "message": "weather"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "choice",
+ "flag": null,
+ "integer": null,
+ "comment": null,
+ "choice": "c9615782-b872-4641-9be4-0fb4f905d966",
+ "choice_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "晴"
+ },
+ {
+ "lang": "en-US",
+ "message": "sunny"
+ }
+ ],
+ "default_lang": "ja-JP"
+ }
+ },
+ {
+ "additional_data_definition_id": "60caffa5-6300-4819-9a99-c43ce49008c2",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "気温"
+ },
+ {
+ "lang": "en-US",
+ "message": "temparature"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "select",
+ "flag": null,
+ "integer": null,
+ "comment": null,
+ "choice": "bdcd4d5b-cecc-4ec9-9038-d9284cd4f475",
+ "choice_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "20"
+ },
+ {
+ "lang": "en-US",
+ "message": "20"
+ }
+ ],
+ "default_lang": "ja-JP"
+ }
+ }
+ ]
+ }
+ ],
+ "details": [
+ {
+ "annotation_id": "02a9eab8-264b-4b92-b3b7-6e6c377a10ee",
+ "user_id": "my_user_id",
+ "label_id": "ded52dcb-bcd6-4e77-9626-61e546f635d0",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "鳥"
+ },
+ {
+ "lang": "en-US",
+ "message": "bird"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "polygon",
+ "data_holding_type": "inner",
+ "data": {
+ "points": [
+ {
+ "x": 55,
+ "y": 18
+ },
+ {
+ "x": 58,
+ "y": 27
+ },
+ {
+ "x": 57,
+ "y": 33
+ },
+ {
+ "x": 57,
+ "y": 35
+ },
+ {
+ "x": 53,
+ "y": 60
+ },
+ {
+ "x": 50,
+ "y": 60
+ },
+ {
+ "x": 40,
+ "y": 61
+ },
+ {
+ "x": 38,
+ "y": 34
+ },
+ {
+ "x": 47,
+ "y": 33
+ },
+ {
+ "x": 39,
+ "y": 30
+ }
+ ],
+ "_type": "Points"
+ },
+ "additional_data_list": []
},
{
- "additional_data_definition_id": "a63a0513-a96e-4c7c-8754-88a24fef9ca9",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "備考"
- },
- {
- "lang": "en-US",
- "message": "memo"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "text",
- "flag": null,
- "integer": null,
- "comment": "テスト",
- "choice": null,
- "choice_name": null
+ "annotation_id": "e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
+ "user_id": "my_user_id",
+ "label_id": "2ffb4c74-106b-44ac-81ce-3c3df77518e0",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "人間"
+ },
+ {
+ "lang": "en-US",
+ "message": "human"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "segmentation_v2",
+ "data_holding_type": "outer",
+ "data": {
+ "data_uri": "./c86205d1-bdd4-4110-ae46-194e661d622b/e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
+ "_type": "SegmentationV2"
+ },
+ "additional_data_list": []
},
{
- "additional_data_definition_id": "649abf45-1ed7-459a-8282-a58228e9a302",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "object id"
- },
- {
- "lang": "en-US",
- "message": "object id"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "tracking",
- "flag": null,
- "integer": null,
- "comment": "6602c86c-5e22-42b9-b5a4-8a77c7bade01",
- "choice": null,
- "choice_name": null
- }
- ]
- },
- {
- "annotation_id": "60a18a10-5d8a-4c1a-90b3-aa67226249c6",
- "user_id": "kawamatsu_yuuji",
- "label_id": "c754f724-5f8c-48eb-81ec-ea77e55efee7",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "足"
- },
- {
- "lang": "en-US",
- "message": "leg"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "polyline",
- "data_holding_type": "inner",
- "data": {
- "points": [
- {
- "x": 22,
- "y": 29
- },
- {
- "x": 33,
- "y": 41
- }
- ],
- "_type": "Points"
- },
- "additional_data_list": []
- },
- {
- "annotation_id": "ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
- "user_id": "kawamatsu_yuuji",
- "label_id": "108ce1f7-217b-43e9-a407-8d0ac6aad87e",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "犬"
- },
- {
- "lang": "en-US",
- "message": "dog"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "segmentation",
- "data_holding_type": "outer",
- "data": null,
- "additional_data_list": []
- },
- {
- "annotation_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
- "user_id": "kawamatsu_yuuji",
- "label_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
- "label_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "気候"
- },
- {
- "lang": "en-US",
- "message": "climatic"
- }
- ],
- "default_lang": "ja-JP"
- },
- "annotation_type": "classification",
- "data_holding_type": "inner",
- "data": null,
- "additional_data_list": [
+ "annotation_id": "2280a89f-986c-4184-82df-feaec37a9149",
+ "user_id": "my_user_id",
+ "label_id": "f50aa88d-36c7-43f5-8728-247a49b4f4d8",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "目"
+ },
+ {
+ "lang": "en-US",
+ "message": "eye"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "point",
+ "data_holding_type": "inner",
+ "data": {
+ "point": {
+ "x": 25,
+ "y": 18
+ },
+ "_type": "SinglePoint"
+ },
+ "additional_data_list": []
+ },
+ {
+ "annotation_id": "226b49a4-c8ef-4016-9e90-99107d8a623b",
+ "user_id": "my_user_id",
+ "label_id": "15ba7932-24b9-4cf3-95bd-9bf6deede4fa",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "ネコ"
+ },
+ {
+ "lang": "en-US",
+ "message": "Cat"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "bounding_box",
+ "data_holding_type": "inner",
+ "data": {
+ "left_top": {
+ "x": 10,
+ "y": 7
+ },
+ "right_bottom": {
+ "x": 36,
+ "y": 36
+ },
+ "_type": "BoundingBox"
+ },
+ "additional_data_list": [
+ {
+ "additional_data_definition_id": "e6864d96-78fa-45f3-a786-6c8c900c92ae",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "隠れ"
+ },
+ {
+ "lang": "en-US",
+ "message": "occluded"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "flag",
+ "value": {
+ "value": true,
+ "_type": "Flag"
+ }
+ },
+ {
+ "additional_data_definition_id": "51e8c91f-5de1-450b-a0f3-94fec582f5ce",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "目のリンク"
+ },
+ {
+ "lang": "en-US",
+ "message": "link-eye"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "link",
+ "value": {
+ "value": "2280a89f-986c-4184-82df-feaec37a9149",
+ "_type": "Link"
+ }
+ },
+ {
+ "additional_data_definition_id": "aff2855e-2e3d-47a2-8c27-c7652e4dfb2f",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "体重"
+ },
+ {
+ "lang": "en-US",
+ "message": "weight"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "integer",
+ "value": {
+ "value": 3,
+ "_type": "Integer"
+ }
+ },
+ {
+ "additional_data_definition_id": "7e6a577a-3410-4c8a-9624-2904bb2e6666",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "名前"
+ },
+ {
+ "lang": "en-US",
+ "message": "name"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "comment",
+ "value": {
+ "value": "lena",
+ "_type": "Comment"
+ }
+ },
+ {
+ "additional_data_definition_id": "a63a0513-a96e-4c7c-8754-88a24fef9ca9",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "備考"
+ },
+ {
+ "lang": "en-US",
+ "message": "memo"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "text",
+ "value": {
+ "value": "テスト",
+ "_type": "Comment"
+ }
+ },
+ {
+ "additional_data_definition_id": "649abf45-1ed7-459a-8282-a58228e9a302",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "object id"
+ },
+ {
+ "lang": "en-US",
+ "message": "object id"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "tracking",
+ "value": {
+ "value": "6602c86c-5e22-42b9-b5a4-8a77c7bade01",
+ "_type": "Tracking"
+ }
+ }
+ ]
+ },
+ {
+ "annotation_id": "60a18a10-5d8a-4c1a-90b3-aa67226249c6",
+ "user_id": "my_user_id",
+ "label_id": "c754f724-5f8c-48eb-81ec-ea77e55efee7",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "足"
+ },
+ {
+ "lang": "en-US",
+ "message": "leg"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "polyline",
+ "data_holding_type": "inner",
+ "data": {
+ "points": [
+ {
+ "x": 22,
+ "y": 29
+ },
+ {
+ "x": 33,
+ "y": 41
+ }
+ ],
+ "_type": "Points"
+ },
+ "additional_data_list": []
+ },
{
- "additional_data_definition_id": "896d7eeb-9c60-4fbf-b7c4-8f4209261049",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "天気"
- },
- {
- "lang": "en-US",
- "message": "weather"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "choice",
- "flag": null,
- "integer": null,
- "comment": null,
- "choice": "c9615782-b872-4641-9be4-0fb4f905d966",
- "choice_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "晴"
- },
- {
- "lang": "en-US",
- "message": "sunny"
- }
- ],
- "default_lang": "ja-JP"
- }
+ "annotation_id": "ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
+ "user_id": "my_user_id",
+ "label_id": "108ce1f7-217b-43e9-a407-8d0ac6aad87e",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "犬"
+ },
+ {
+ "lang": "en-US",
+ "message": "dog"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "segmentation",
+ "data_holding_type": "outer",
+ "data": {
+ "data_uri": "./c86205d1-bdd4-4110-ae46-194e661d622b/ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
+ "_type": "Segmentation"
+ },
+ "additional_data_list": []
},
{
- "additional_data_definition_id": "60caffa5-6300-4819-9a99-c43ce49008c2",
- "additional_data_definition_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "気温"
- },
- {
- "lang": "en-US",
- "message": "temparature"
- }
- ],
- "default_lang": "ja-JP"
- },
- "type": "select",
- "flag": null,
- "integer": null,
- "comment": null,
- "choice": "bdcd4d5b-cecc-4ec9-9038-d9284cd4f475",
- "choice_name": {
- "messages": [
- {
- "lang": "ja-JP",
- "message": "20"
- },
- {
- "lang": "en-US",
- "message": "20"
- }
- ],
- "default_lang": "ja-JP"
- }
+ "annotation_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
+ "user_id": "my_user_id",
+ "label_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
+ "label_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "気候"
+ },
+ {
+ "lang": "en-US",
+ "message": "climatic"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "annotation_type": "classification",
+ "data_holding_type": "inner",
+ "data": {
+ "_type": "Classification"
+ },
+ "additional_data_list": [
+ {
+ "additional_data_definition_id": "896d7eeb-9c60-4fbf-b7c4-8f4209261049",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "天気"
+ },
+ {
+ "lang": "en-US",
+ "message": "weather"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "choice",
+ "value": {
+ "value": {
+ "id": "c9615782-b872-4641-9be4-0fb4f905d966",
+ "name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "晴"
+ },
+ {
+ "lang": "en-US",
+ "message": "sunny"
+ }
+ ],
+ "default_lang": "ja-JP"
+ }
+ },
+ "_type": "Choice"
+ }
+ },
+ {
+ "additional_data_definition_id": "60caffa5-6300-4819-9a99-c43ce49008c2",
+ "additional_data_definition_name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "気温"
+ },
+ {
+ "lang": "en-US",
+ "message": "temparature"
+ }
+ ],
+ "default_lang": "ja-JP"
+ },
+ "type": "select",
+ "value": {
+ "value": {
+ "id": "bdcd4d5b-cecc-4ec9-9038-d9284cd4f475",
+ "name": {
+ "messages": [
+ {
+ "lang": "ja-JP",
+ "message": "20"
+ },
+ {
+ "lang": "en-US",
+ "message": "20"
+ }
+ ],
+ "default_lang": "ja-JP"
+ }
+ },
+ "_type": "Choice"
+ }
+ }
+ ]
}
- ]
- }
- ],
- "updated_datetime": "2019-08-22T14:14:11.084+09:00"
+ ],
+ "updated_datetime": "2019-08-22T14:14:11.084+09:00",
+ "annotation_format_version": "2.0.0"
}
\ No newline at end of file
diff --git a/tests/data/dataclass/simple-annotation.json b/tests/data/dataclass/simple-annotation.json
index a10c3994..7442c6e9 100644
--- a/tests/data/dataclass/simple-annotation.json
+++ b/tests/data/dataclass/simple-annotation.json
@@ -1,143 +1,129 @@
{
"project_id": "1186bb00-16e6-4d20-8e24-310322911850",
- "annotation_format_version": "1.1.0",
+ "annotation_format_version": "1.2.0",
"task_id": "sample_1",
"task_phase": "acceptance",
"task_phase_stage": 1,
"task_status": "complete",
- "input_data_id": "c86205d1-bdd4-4110-ae46-194e661d622b",
+ "input_data_id": "c6e1c2ec-6c7c-41c6-9639-4244c2ed2839",
"input_data_name": "./tests/data/lenna.png",
"details": [
- {
- "label": "bird",
- "annotation_id": "02a9eab8-264b-4b92-b3b7-6e6c377a10ee",
- "data": {
- "points": [
- {
- "x": 55,
- "y": 18
+ {
+ "label": "bird",
+ "annotation_id": "9a15fac0-736f-454f-a50d-7da094bc133d",
+ "data": {
+ "points": [
+ {
+ "x": 15,
+ "y": 55
+ },
+ {
+ "x": 12,
+ "y": 49
+ },
+ {
+ "x": 9,
+ "y": 43
+ },
+ {
+ "x": 16,
+ "y": 36
+ },
+ {
+ "x": 21,
+ "y": 39
+ },
+ {
+ "x": 24,
+ "y": 53
+ }
+ ],
+ "_type": "Points"
},
- {
- "x": 58,
- "y": 27
- },
- {
- "x": 57,
- "y": 33
- },
- {
- "x": 57,
- "y": 35
- },
- {
- "x": 53,
- "y": 60
+ "attributes": {}
+ },
+ {
+ "label": "human",
+ "annotation_id": "762f113a-5e17-4b49-861e-dfbea1dda09d",
+ "data": {
+ "data_uri": "762f113a-5e17-4b49-861e-dfbea1dda09d",
+ "_type": "SegmentationV2"
},
- {
- "x": 50,
- "y": 60
+ "attributes": {}
+ },
+ {
+ "label": "dog",
+ "annotation_id": "1e2931d2-de34-4956-ab75-81f710dc0108",
+ "data": {
+ "data_uri": "1e2931d2-de34-4956-ab75-81f710dc0108",
+ "_type": "Segmentation"
},
- {
- "x": 40,
- "y": 61
+ "attributes": {}
+ },
+ {
+ "label": "eye",
+ "annotation_id": "a05019fd-6e23-456b-9971-641a45979d98",
+ "data": {
+ "point": {
+ "x": 25,
+ "y": 18
+ },
+ "_type": "SinglePoint"
},
- {
- "x": 38,
- "y": 34
+ "attributes": {}
+ },
+ {
+ "label": "leg",
+ "annotation_id": "c9c688d1-6c05-4118-94c7-308185cdb60a",
+ "data": {
+ "points": [
+ {
+ "x": 22,
+ "y": 29
+ },
+ {
+ "x": 33,
+ "y": 41
+ }
+ ],
+ "_type": "Points"
},
- {
- "x": 47,
- "y": 33
+ "attributes": {}
+ },
+ {
+ "label": "Cat",
+ "annotation_id": "6602c86c-5e22-42b9-b5a4-8a77c7bade01",
+ "data": {
+ "left_top": {
+ "x": 10,
+ "y": 7
+ },
+ "right_bottom": {
+ "x": 36,
+ "y": 36
+ },
+ "_type": "BoundingBox"
},
- {
- "x": 39,
- "y": 30
+ "attributes": {
+ "weight": 3,
+ "name": "lena",
+ "link-eye": "a05019fd-6e23-456b-9971-641a45979d98",
+ "occluded": true,
+ "object id": "6602c86c-5e22-42b9-b5a4-8a77c7bade01",
+ "memo": "テスト"
}
- ],
- "_type": "Points"
- },
- "attributes": {}
- },
- {
- "label": "human",
- "annotation_id": "e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
- "data": {
- "data_uri": "e2a1fbe3-fa8e-413c-be31-882f12ef62b9",
- "_type": "SegmentationV2"
- },
- "attributes": {}
- },
- {
- "label": "eye",
- "annotation_id": "2280a89f-986c-4184-82df-feaec37a9149",
- "data": {
- "point": {
- "x": 25,
- "y": 18
- },
- "_type": "SinglePoint"
- },
- "attributes": {}
- },
- {
- "label": "Cat",
- "annotation_id": "226b49a4-c8ef-4016-9e90-99107d8a623b",
- "data": {
- "left_top": {
- "x": 10,
- "y": 7
- },
- "right_bottom": {
- "x": 36,
- "y": 36
- },
- "_type": "BoundingBox"
},
- "attributes": {
- "weight": 3,
- "name": "lena",
- "link-eye": "2280a89f-986c-4184-82df-feaec37a9149",
- "occluded": true,
- "object id": "6602c86c-5e22-42b9-b5a4-8a77c7bade01",
- "memo": "テスト"
- }
- },
- {
- "label": "leg",
- "annotation_id": "60a18a10-5d8a-4c1a-90b3-aa67226249c6",
- "data": {
- "points": [
- {
- "x": 22,
- "y": 29
+ {
+ "label": "climatic",
+ "annotation_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
+ "data": {
+ "_type": "Classification"
},
- {
- "x": 33,
- "y": 41
+ "attributes": {
+ "temparature": "20",
+ "weather": "sunny"
}
- ],
- "_type": "Points"
- },
- "attributes": {}
- },
- {
- "label": "dog",
- "annotation_id": "ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
- "data": {
- "data_uri": "ee83756f-074d-4aab-8bfc-6ab6e754c2b8",
- "_type": "Segmentation"
- },
- "attributes": {}
- },
- {
- "label": "climatic",
- "annotation_id": "5ac0d7d5-6738-4c4b-a69a-cd583ff458e1",
- "data": null,
- "attributes": {
- "temparature": "20",
- "weather": "sunny"
}
- }
],
- "updated_datetime": "2019-08-22T12:02:40.392+09:00"
+ "updated_datetime": "2019-08-22T14:10:14.758+09:00"
}
\ No newline at end of file
diff --git a/tests/data/full-annotation.zip b/tests/data/full-annotation.zip
old mode 100644
new mode 100755
index 563f2002..911baf9a
Binary files a/tests/data/full-annotation.zip and b/tests/data/full-annotation.zip differ
diff --git a/tests/data/full-annotation/sample_0/0733d1e1-ef85-455e-aec0-ff05c499b711.json b/tests/data/full-annotation/sample_0/0733d1e1-ef85-455e-aec0-ff05c499b711.json
index 6aa7fe65..934c9569 100644
--- a/tests/data/full-annotation/sample_0/0733d1e1-ef85-455e-aec0-ff05c499b711.json
+++ b/tests/data/full-annotation/sample_0/0733d1e1-ef85-455e-aec0-ff05c499b711.json
@@ -1 +1 @@
-{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_0","task_phase":"acceptance","task_phase_stage":1,"task_status":"not_started","input_data_id":"0733d1e1-ef85-455e-aec0-ff05c499b711","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":null,"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"updated_datetime":"2019-08-22T12:36:10.25+09:00"}
\ No newline at end of file
+{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_0","task_phase":"acceptance","task_phase_stage":1,"task_status":"not_started","input_data_id":"0733d1e1-ef85-455e-aec0-ff05c499b711","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"details":[{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","value":{"value":{"id":"c9615782-b872-4641-9be4-0fb4f905d966","name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},"_type":"Choice"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","value":{"value":{"id":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}},"_type":"Choice"}}]}],"updated_datetime":"2019-08-22T12:36:10.25+09:00","annotation_format_version":"2.0.0"}
\ No newline at end of file
diff --git a/tests/data/full-annotation/sample_0/a3281975-e632-47a7-a71f-08013fad5604.json b/tests/data/full-annotation/sample_0/a3281975-e632-47a7-a71f-08013fad5604.json
index 0d418ccf..40c6b102 100644
--- a/tests/data/full-annotation/sample_0/a3281975-e632-47a7-a71f-08013fad5604.json
+++ b/tests/data/full-annotation/sample_0/a3281975-e632-47a7-a71f-08013fad5604.json
@@ -1 +1 @@
-{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_0","task_phase":"acceptance","task_phase_stage":1,"task_status":"not_started","input_data_id":"a3281975-e632-47a7-a71f-08013fad5604","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":null,"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"updated_datetime":"2019-08-22T12:36:14.015+09:00"}
\ No newline at end of file
+{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_0","task_phase":"acceptance","task_phase_stage":1,"task_status":"not_started","input_data_id":"a3281975-e632-47a7-a71f-08013fad5604","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"details":[{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","value":{"value":{"id":"c9615782-b872-4641-9be4-0fb4f905d966","name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},"_type":"Choice"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","value":{"value":{"id":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}},"_type":"Choice"}}]}],"updated_datetime":"2019-08-22T12:36:14.015+09:00","annotation_format_version":"2.0.0"}
\ No newline at end of file
diff --git a/tests/data/full-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json b/tests/data/full-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json
index 0c7ddfd4..03e2ad87 100644
--- a/tests/data/full-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json
+++ b/tests/data/full-annotation/sample_1/c6e1c2ec-6c7c-41c6-9639-4244c2ed2839.json
@@ -1 +1 @@
-{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_1","task_phase":"acceptance","task_phase_stage":1,"task_status":"complete","input_data_id":"c6e1c2ec-6c7c-41c6-9639-4244c2ed2839","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"9a15fac0-736f-454f-a50d-7da094bc133d","user_id":"kawamatsu_yuuji","label_id":"ded52dcb-bcd6-4e77-9626-61e546f635d0","label_name":{"messages":[{"lang":"ja-JP","message":"鳥"},{"lang":"en-US","message":"bird"}],"default_lang":"ja-JP"},"annotation_type":"polygon","data_holding_type":"inner","data":{"points":[{"x":15,"y":55},{"x":12,"y":49},{"x":9,"y":43},{"x":16,"y":36},{"x":21,"y":39},{"x":24,"y":53}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"762f113a-5e17-4b49-861e-dfbea1dda09d","user_id":"kawamatsu_yuuji","label_id":"2ffb4c74-106b-44ac-81ce-3c3df77518e0","label_name":{"messages":[{"lang":"ja-JP","message":"人間"},{"lang":"en-US","message":"human"}],"default_lang":"ja-JP"},"annotation_type":"segmentation_v2","data_holding_type":"outer","data":null,"additional_data_list":[]},{"annotation_id":"1e2931d2-de34-4956-ab75-81f710dc0108","user_id":"kawamatsu_yuuji","label_id":"108ce1f7-217b-43e9-a407-8d0ac6aad87e","label_name":{"messages":[{"lang":"ja-JP","message":"犬"},{"lang":"en-US","message":"dog"}],"default_lang":"ja-JP"},"annotation_type":"segmentation","data_holding_type":"outer","data":null,"additional_data_list":[]},{"annotation_id":"a05019fd-6e23-456b-9971-641a45979d98","user_id":"kawamatsu_yuuji","label_id":"f50aa88d-36c7-43f5-8728-247a49b4f4d8","label_name":{"messages":[{"lang":"ja-JP","message":"目"},{"lang":"en-US","message":"eye"}],"default_lang":"ja-JP"},"annotation_type":"point","data_holding_type":"inner","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"additional_data_list":[]},{"annotation_id":"c9c688d1-6c05-4118-94c7-308185cdb60a","user_id":"kawamatsu_yuuji","label_id":"c754f724-5f8c-48eb-81ec-ea77e55efee7","label_name":{"messages":[{"lang":"ja-JP","message":"足"},{"lang":"en-US","message":"leg"}],"default_lang":"ja-JP"},"annotation_type":"polyline","data_holding_type":"inner","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","user_id":"kawamatsu_yuuji","label_id":"15ba7932-24b9-4cf3-95bd-9bf6deede4fa","label_name":{"messages":[{"lang":"ja-JP","message":"ネコ"},{"lang":"en-US","message":"Cat"}],"default_lang":"ja-JP"},"annotation_type":"bounding_box","data_holding_type":"inner","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"additional_data_list":[{"additional_data_definition_id":"e6864d96-78fa-45f3-a786-6c8c900c92ae","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"隠れ"},{"lang":"en-US","message":"occluded"}],"default_lang":"ja-JP"},"type":"flag","flag":true,"integer":null,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"51e8c91f-5de1-450b-a0f3-94fec582f5ce","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"目のリンク"},{"lang":"en-US","message":"link-eye"}],"default_lang":"ja-JP"},"type":"link","flag":null,"integer":null,"comment":"a05019fd-6e23-456b-9971-641a45979d98","choice":null,"choice_name":null},{"additional_data_definition_id":"aff2855e-2e3d-47a2-8c27-c7652e4dfb2f","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"体重"},{"lang":"en-US","message":"weight"}],"default_lang":"ja-JP"},"type":"integer","flag":null,"integer":3,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"7e6a577a-3410-4c8a-9624-2904bb2e6666","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"名前"},{"lang":"en-US","message":"name"}],"default_lang":"ja-JP"},"type":"comment","flag":null,"integer":null,"comment":"lena","choice":null,"choice_name":null},{"additional_data_definition_id":"a63a0513-a96e-4c7c-8754-88a24fef9ca9","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"備考"},{"lang":"en-US","message":"memo"}],"default_lang":"ja-JP"},"type":"text","flag":null,"integer":null,"comment":"テスト","choice":null,"choice_name":null},{"additional_data_definition_id":"649abf45-1ed7-459a-8282-a58228e9a302","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"object id"},{"lang":"en-US","message":"object id"}],"default_lang":"ja-JP"},"type":"tracking","flag":null,"integer":null,"comment":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","choice":null,"choice_name":null}]},{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":null,"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"updated_datetime":"2019-08-22T14:10:14.758+09:00"}
\ No newline at end of file
+{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_1","task_phase":"acceptance","task_phase_stage":1,"task_status":"complete","input_data_id":"c6e1c2ec-6c7c-41c6-9639-4244c2ed2839","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"9a15fac0-736f-454f-a50d-7da094bc133d","user_id":"kawamatsu_yuuji","label_id":"ded52dcb-bcd6-4e77-9626-61e546f635d0","label_name":{"messages":[{"lang":"ja-JP","message":"鳥"},{"lang":"en-US","message":"bird"}],"default_lang":"ja-JP"},"annotation_type":"polygon","data_holding_type":"inner","data":{"points":[{"x":15,"y":55},{"x":12,"y":49},{"x":9,"y":43},{"x":16,"y":36},{"x":21,"y":39},{"x":24,"y":53}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"762f113a-5e17-4b49-861e-dfbea1dda09d","user_id":"kawamatsu_yuuji","label_id":"2ffb4c74-106b-44ac-81ce-3c3df77518e0","label_name":{"messages":[{"lang":"ja-JP","message":"人間"},{"lang":"en-US","message":"human"}],"default_lang":"ja-JP"},"annotation_type":"segmentation_v2","data_holding_type":"outer","data":{"data_uri":"./c6e1c2ec-6c7c-41c6-9639-4244c2ed2839/762f113a-5e17-4b49-861e-dfbea1dda09d","_type":"SegmentationV2"},"additional_data_list":[]},{"annotation_id":"1e2931d2-de34-4956-ab75-81f710dc0108","user_id":"kawamatsu_yuuji","label_id":"108ce1f7-217b-43e9-a407-8d0ac6aad87e","label_name":{"messages":[{"lang":"ja-JP","message":"犬"},{"lang":"en-US","message":"dog"}],"default_lang":"ja-JP"},"annotation_type":"segmentation","data_holding_type":"outer","data":{"data_uri":"./c6e1c2ec-6c7c-41c6-9639-4244c2ed2839/1e2931d2-de34-4956-ab75-81f710dc0108","_type":"Segmentation"},"additional_data_list":[]},{"annotation_id":"a05019fd-6e23-456b-9971-641a45979d98","user_id":"kawamatsu_yuuji","label_id":"f50aa88d-36c7-43f5-8728-247a49b4f4d8","label_name":{"messages":[{"lang":"ja-JP","message":"目"},{"lang":"en-US","message":"eye"}],"default_lang":"ja-JP"},"annotation_type":"point","data_holding_type":"inner","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"additional_data_list":[]},{"annotation_id":"c9c688d1-6c05-4118-94c7-308185cdb60a","user_id":"kawamatsu_yuuji","label_id":"c754f724-5f8c-48eb-81ec-ea77e55efee7","label_name":{"messages":[{"lang":"ja-JP","message":"足"},{"lang":"en-US","message":"leg"}],"default_lang":"ja-JP"},"annotation_type":"polyline","data_holding_type":"inner","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","user_id":"kawamatsu_yuuji","label_id":"15ba7932-24b9-4cf3-95bd-9bf6deede4fa","label_name":{"messages":[{"lang":"ja-JP","message":"ネコ"},{"lang":"en-US","message":"Cat"}],"default_lang":"ja-JP"},"annotation_type":"bounding_box","data_holding_type":"inner","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"additional_data_list":[{"additional_data_definition_id":"e6864d96-78fa-45f3-a786-6c8c900c92ae","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"隠れ"},{"lang":"en-US","message":"occluded"}],"default_lang":"ja-JP"},"type":"flag","flag":true,"integer":null,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"51e8c91f-5de1-450b-a0f3-94fec582f5ce","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"目のリンク"},{"lang":"en-US","message":"link-eye"}],"default_lang":"ja-JP"},"type":"link","flag":null,"integer":null,"comment":"a05019fd-6e23-456b-9971-641a45979d98","choice":null,"choice_name":null},{"additional_data_definition_id":"aff2855e-2e3d-47a2-8c27-c7652e4dfb2f","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"体重"},{"lang":"en-US","message":"weight"}],"default_lang":"ja-JP"},"type":"integer","flag":null,"integer":3,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"7e6a577a-3410-4c8a-9624-2904bb2e6666","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"名前"},{"lang":"en-US","message":"name"}],"default_lang":"ja-JP"},"type":"comment","flag":null,"integer":null,"comment":"lena","choice":null,"choice_name":null},{"additional_data_definition_id":"a63a0513-a96e-4c7c-8754-88a24fef9ca9","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"備考"},{"lang":"en-US","message":"memo"}],"default_lang":"ja-JP"},"type":"text","flag":null,"integer":null,"comment":"テスト","choice":null,"choice_name":null},{"additional_data_definition_id":"649abf45-1ed7-459a-8282-a58228e9a302","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"object id"},{"lang":"en-US","message":"object id"}],"default_lang":"ja-JP"},"type":"tracking","flag":null,"integer":null,"comment":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","choice":null,"choice_name":null}]},{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"details":[{"annotation_id":"9a15fac0-736f-454f-a50d-7da094bc133d","user_id":"kawamatsu_yuuji","label_id":"ded52dcb-bcd6-4e77-9626-61e546f635d0","label_name":{"messages":[{"lang":"ja-JP","message":"鳥"},{"lang":"en-US","message":"bird"}],"default_lang":"ja-JP"},"annotation_type":"polygon","data_holding_type":"inner","data":{"points":[{"x":15,"y":55},{"x":12,"y":49},{"x":9,"y":43},{"x":16,"y":36},{"x":21,"y":39},{"x":24,"y":53}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"762f113a-5e17-4b49-861e-dfbea1dda09d","user_id":"kawamatsu_yuuji","label_id":"2ffb4c74-106b-44ac-81ce-3c3df77518e0","label_name":{"messages":[{"lang":"ja-JP","message":"人間"},{"lang":"en-US","message":"human"}],"default_lang":"ja-JP"},"annotation_type":"segmentation_v2","data_holding_type":"outer","data":{"data_uri":"./c6e1c2ec-6c7c-41c6-9639-4244c2ed2839/762f113a-5e17-4b49-861e-dfbea1dda09d","_type":"SegmentationV2"},"additional_data_list":[]},{"annotation_id":"1e2931d2-de34-4956-ab75-81f710dc0108","user_id":"kawamatsu_yuuji","label_id":"108ce1f7-217b-43e9-a407-8d0ac6aad87e","label_name":{"messages":[{"lang":"ja-JP","message":"犬"},{"lang":"en-US","message":"dog"}],"default_lang":"ja-JP"},"annotation_type":"segmentation","data_holding_type":"outer","data":{"data_uri":"./c6e1c2ec-6c7c-41c6-9639-4244c2ed2839/1e2931d2-de34-4956-ab75-81f710dc0108","_type":"Segmentation"},"additional_data_list":[]},{"annotation_id":"a05019fd-6e23-456b-9971-641a45979d98","user_id":"kawamatsu_yuuji","label_id":"f50aa88d-36c7-43f5-8728-247a49b4f4d8","label_name":{"messages":[{"lang":"ja-JP","message":"目"},{"lang":"en-US","message":"eye"}],"default_lang":"ja-JP"},"annotation_type":"point","data_holding_type":"inner","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"additional_data_list":[]},{"annotation_id":"c9c688d1-6c05-4118-94c7-308185cdb60a","user_id":"kawamatsu_yuuji","label_id":"c754f724-5f8c-48eb-81ec-ea77e55efee7","label_name":{"messages":[{"lang":"ja-JP","message":"足"},{"lang":"en-US","message":"leg"}],"default_lang":"ja-JP"},"annotation_type":"polyline","data_holding_type":"inner","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","user_id":"kawamatsu_yuuji","label_id":"15ba7932-24b9-4cf3-95bd-9bf6deede4fa","label_name":{"messages":[{"lang":"ja-JP","message":"ネコ"},{"lang":"en-US","message":"Cat"}],"default_lang":"ja-JP"},"annotation_type":"bounding_box","data_holding_type":"inner","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"additional_data_list":[{"additional_data_definition_id":"e6864d96-78fa-45f3-a786-6c8c900c92ae","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"隠れ"},{"lang":"en-US","message":"occluded"}],"default_lang":"ja-JP"},"type":"flag","value":{"value":true,"_type":"Flag"}},{"additional_data_definition_id":"51e8c91f-5de1-450b-a0f3-94fec582f5ce","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"目のリンク"},{"lang":"en-US","message":"link-eye"}],"default_lang":"ja-JP"},"type":"link","value":{"value":"a05019fd-6e23-456b-9971-641a45979d98","_type":"Link"}},{"additional_data_definition_id":"aff2855e-2e3d-47a2-8c27-c7652e4dfb2f","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"体重"},{"lang":"en-US","message":"weight"}],"default_lang":"ja-JP"},"type":"integer","value":{"value":3,"_type":"Integer"}},{"additional_data_definition_id":"7e6a577a-3410-4c8a-9624-2904bb2e6666","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"名前"},{"lang":"en-US","message":"name"}],"default_lang":"ja-JP"},"type":"comment","value":{"value":"lena","_type":"Comment"}},{"additional_data_definition_id":"a63a0513-a96e-4c7c-8754-88a24fef9ca9","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"備考"},{"lang":"en-US","message":"memo"}],"default_lang":"ja-JP"},"type":"text","value":{"value":"テスト","_type":"Comment"}},{"additional_data_definition_id":"649abf45-1ed7-459a-8282-a58228e9a302","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"object id"},{"lang":"en-US","message":"object id"}],"default_lang":"ja-JP"},"type":"tracking","value":{"value":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","_type":"Tracking"}}]},{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","value":{"value":{"id":"c9615782-b872-4641-9be4-0fb4f905d966","name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},"_type":"Choice"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","value":{"value":{"id":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}},"_type":"Choice"}}]}],"updated_datetime":"2019-08-22T14:10:14.758+09:00","annotation_format_version":"2.0.0"}
\ No newline at end of file
diff --git a/tests/data/full-annotation/sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json b/tests/data/full-annotation/sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json
index ca7352a4..4bb81b0d 100644
--- a/tests/data/full-annotation/sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json
+++ b/tests/data/full-annotation/sample_1/c86205d1-bdd4-4110-ae46-194e661d622b.json
@@ -1 +1 @@
-{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_1","task_phase":"acceptance","task_phase_stage":1,"task_status":"complete","input_data_id":"c86205d1-bdd4-4110-ae46-194e661d622b","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"02a9eab8-264b-4b92-b3b7-6e6c377a10ee","user_id":"kawamatsu_yuuji","label_id":"ded52dcb-bcd6-4e77-9626-61e546f635d0","label_name":{"messages":[{"lang":"ja-JP","message":"鳥"},{"lang":"en-US","message":"bird"}],"default_lang":"ja-JP"},"annotation_type":"polygon","data_holding_type":"inner","data":{"points":[{"x":55,"y":18},{"x":58,"y":27},{"x":57,"y":33},{"x":57,"y":35},{"x":53,"y":60},{"x":50,"y":60},{"x":40,"y":61},{"x":38,"y":34},{"x":47,"y":33},{"x":39,"y":30}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"e2a1fbe3-fa8e-413c-be31-882f12ef62b9","user_id":"kawamatsu_yuuji","label_id":"2ffb4c74-106b-44ac-81ce-3c3df77518e0","label_name":{"messages":[{"lang":"ja-JP","message":"人間"},{"lang":"en-US","message":"human"}],"default_lang":"ja-JP"},"annotation_type":"segmentation_v2","data_holding_type":"outer","data":null,"additional_data_list":[]},{"annotation_id":"2280a89f-986c-4184-82df-feaec37a9149","user_id":"kawamatsu_yuuji","label_id":"f50aa88d-36c7-43f5-8728-247a49b4f4d8","label_name":{"messages":[{"lang":"ja-JP","message":"目"},{"lang":"en-US","message":"eye"}],"default_lang":"ja-JP"},"annotation_type":"point","data_holding_type":"inner","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"additional_data_list":[]},{"annotation_id":"226b49a4-c8ef-4016-9e90-99107d8a623b","user_id":"kawamatsu_yuuji","label_id":"15ba7932-24b9-4cf3-95bd-9bf6deede4fa","label_name":{"messages":[{"lang":"ja-JP","message":"ネコ"},{"lang":"en-US","message":"Cat"}],"default_lang":"ja-JP"},"annotation_type":"bounding_box","data_holding_type":"inner","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"additional_data_list":[{"additional_data_definition_id":"e6864d96-78fa-45f3-a786-6c8c900c92ae","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"隠れ"},{"lang":"en-US","message":"occluded"}],"default_lang":"ja-JP"},"type":"flag","flag":true,"integer":null,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"51e8c91f-5de1-450b-a0f3-94fec582f5ce","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"目のリンク"},{"lang":"en-US","message":"link-eye"}],"default_lang":"ja-JP"},"type":"link","flag":null,"integer":null,"comment":"2280a89f-986c-4184-82df-feaec37a9149","choice":null,"choice_name":null},{"additional_data_definition_id":"aff2855e-2e3d-47a2-8c27-c7652e4dfb2f","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"体重"},{"lang":"en-US","message":"weight"}],"default_lang":"ja-JP"},"type":"integer","flag":null,"integer":3,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"7e6a577a-3410-4c8a-9624-2904bb2e6666","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"名前"},{"lang":"en-US","message":"name"}],"default_lang":"ja-JP"},"type":"comment","flag":null,"integer":null,"comment":"lena","choice":null,"choice_name":null},{"additional_data_definition_id":"a63a0513-a96e-4c7c-8754-88a24fef9ca9","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"備考"},{"lang":"en-US","message":"memo"}],"default_lang":"ja-JP"},"type":"text","flag":null,"integer":null,"comment":"テスト","choice":null,"choice_name":null},{"additional_data_definition_id":"649abf45-1ed7-459a-8282-a58228e9a302","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"object id"},{"lang":"en-US","message":"object id"}],"default_lang":"ja-JP"},"type":"tracking","flag":null,"integer":null,"comment":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","choice":null,"choice_name":null}]},{"annotation_id":"60a18a10-5d8a-4c1a-90b3-aa67226249c6","user_id":"kawamatsu_yuuji","label_id":"c754f724-5f8c-48eb-81ec-ea77e55efee7","label_name":{"messages":[{"lang":"ja-JP","message":"足"},{"lang":"en-US","message":"leg"}],"default_lang":"ja-JP"},"annotation_type":"polyline","data_holding_type":"inner","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"ee83756f-074d-4aab-8bfc-6ab6e754c2b8","user_id":"kawamatsu_yuuji","label_id":"108ce1f7-217b-43e9-a407-8d0ac6aad87e","label_name":{"messages":[{"lang":"ja-JP","message":"犬"},{"lang":"en-US","message":"dog"}],"default_lang":"ja-JP"},"annotation_type":"segmentation","data_holding_type":"outer","data":null,"additional_data_list":[]},{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":null,"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"updated_datetime":"2019-08-22T14:14:11.084+09:00"}
\ No newline at end of file
+{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","task_id":"sample_1","task_phase":"acceptance","task_phase_stage":1,"task_status":"complete","input_data_id":"c86205d1-bdd4-4110-ae46-194e661d622b","input_data_name":"./tests/data/lenna.png","detail":[{"annotation_id":"02a9eab8-264b-4b92-b3b7-6e6c377a10ee","user_id":"kawamatsu_yuuji","label_id":"ded52dcb-bcd6-4e77-9626-61e546f635d0","label_name":{"messages":[{"lang":"ja-JP","message":"鳥"},{"lang":"en-US","message":"bird"}],"default_lang":"ja-JP"},"annotation_type":"polygon","data_holding_type":"inner","data":{"points":[{"x":55,"y":18},{"x":58,"y":27},{"x":57,"y":33},{"x":57,"y":35},{"x":53,"y":60},{"x":50,"y":60},{"x":40,"y":61},{"x":38,"y":34},{"x":47,"y":33},{"x":39,"y":30}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"e2a1fbe3-fa8e-413c-be31-882f12ef62b9","user_id":"kawamatsu_yuuji","label_id":"2ffb4c74-106b-44ac-81ce-3c3df77518e0","label_name":{"messages":[{"lang":"ja-JP","message":"人間"},{"lang":"en-US","message":"human"}],"default_lang":"ja-JP"},"annotation_type":"segmentation_v2","data_holding_type":"outer","data":{"data_uri":"./c86205d1-bdd4-4110-ae46-194e661d622b/e2a1fbe3-fa8e-413c-be31-882f12ef62b9","_type":"SegmentationV2"},"additional_data_list":[]},{"annotation_id":"2280a89f-986c-4184-82df-feaec37a9149","user_id":"kawamatsu_yuuji","label_id":"f50aa88d-36c7-43f5-8728-247a49b4f4d8","label_name":{"messages":[{"lang":"ja-JP","message":"目"},{"lang":"en-US","message":"eye"}],"default_lang":"ja-JP"},"annotation_type":"point","data_holding_type":"inner","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"additional_data_list":[]},{"annotation_id":"226b49a4-c8ef-4016-9e90-99107d8a623b","user_id":"kawamatsu_yuuji","label_id":"15ba7932-24b9-4cf3-95bd-9bf6deede4fa","label_name":{"messages":[{"lang":"ja-JP","message":"ネコ"},{"lang":"en-US","message":"Cat"}],"default_lang":"ja-JP"},"annotation_type":"bounding_box","data_holding_type":"inner","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"additional_data_list":[{"additional_data_definition_id":"e6864d96-78fa-45f3-a786-6c8c900c92ae","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"隠れ"},{"lang":"en-US","message":"occluded"}],"default_lang":"ja-JP"},"type":"flag","flag":true,"integer":null,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"51e8c91f-5de1-450b-a0f3-94fec582f5ce","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"目のリンク"},{"lang":"en-US","message":"link-eye"}],"default_lang":"ja-JP"},"type":"link","flag":null,"integer":null,"comment":"2280a89f-986c-4184-82df-feaec37a9149","choice":null,"choice_name":null},{"additional_data_definition_id":"aff2855e-2e3d-47a2-8c27-c7652e4dfb2f","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"体重"},{"lang":"en-US","message":"weight"}],"default_lang":"ja-JP"},"type":"integer","flag":null,"integer":3,"comment":null,"choice":null,"choice_name":null},{"additional_data_definition_id":"7e6a577a-3410-4c8a-9624-2904bb2e6666","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"名前"},{"lang":"en-US","message":"name"}],"default_lang":"ja-JP"},"type":"comment","flag":null,"integer":null,"comment":"lena","choice":null,"choice_name":null},{"additional_data_definition_id":"a63a0513-a96e-4c7c-8754-88a24fef9ca9","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"備考"},{"lang":"en-US","message":"memo"}],"default_lang":"ja-JP"},"type":"text","flag":null,"integer":null,"comment":"テスト","choice":null,"choice_name":null},{"additional_data_definition_id":"649abf45-1ed7-459a-8282-a58228e9a302","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"object id"},{"lang":"en-US","message":"object id"}],"default_lang":"ja-JP"},"type":"tracking","flag":null,"integer":null,"comment":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","choice":null,"choice_name":null}]},{"annotation_id":"60a18a10-5d8a-4c1a-90b3-aa67226249c6","user_id":"kawamatsu_yuuji","label_id":"c754f724-5f8c-48eb-81ec-ea77e55efee7","label_name":{"messages":[{"lang":"ja-JP","message":"足"},{"lang":"en-US","message":"leg"}],"default_lang":"ja-JP"},"annotation_type":"polyline","data_holding_type":"inner","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"ee83756f-074d-4aab-8bfc-6ab6e754c2b8","user_id":"kawamatsu_yuuji","label_id":"108ce1f7-217b-43e9-a407-8d0ac6aad87e","label_name":{"messages":[{"lang":"ja-JP","message":"犬"},{"lang":"en-US","message":"dog"}],"default_lang":"ja-JP"},"annotation_type":"segmentation","data_holding_type":"outer","data":{"data_uri":"./c86205d1-bdd4-4110-ae46-194e661d622b/ee83756f-074d-4aab-8bfc-6ab6e754c2b8","_type":"Segmentation"},"additional_data_list":[]},{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","flag":null,"integer":null,"comment":null,"choice":"c9615782-b872-4641-9be4-0fb4f905d966","choice_name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","flag":null,"integer":null,"comment":null,"choice":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","choice_name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}}]}],"details":[{"annotation_id":"02a9eab8-264b-4b92-b3b7-6e6c377a10ee","user_id":"kawamatsu_yuuji","label_id":"ded52dcb-bcd6-4e77-9626-61e546f635d0","label_name":{"messages":[{"lang":"ja-JP","message":"鳥"},{"lang":"en-US","message":"bird"}],"default_lang":"ja-JP"},"annotation_type":"polygon","data_holding_type":"inner","data":{"points":[{"x":55,"y":18},{"x":58,"y":27},{"x":57,"y":33},{"x":57,"y":35},{"x":53,"y":60},{"x":50,"y":60},{"x":40,"y":61},{"x":38,"y":34},{"x":47,"y":33},{"x":39,"y":30}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"e2a1fbe3-fa8e-413c-be31-882f12ef62b9","user_id":"kawamatsu_yuuji","label_id":"2ffb4c74-106b-44ac-81ce-3c3df77518e0","label_name":{"messages":[{"lang":"ja-JP","message":"人間"},{"lang":"en-US","message":"human"}],"default_lang":"ja-JP"},"annotation_type":"segmentation_v2","data_holding_type":"outer","data":{"data_uri":"./c86205d1-bdd4-4110-ae46-194e661d622b/e2a1fbe3-fa8e-413c-be31-882f12ef62b9","_type":"SegmentationV2"},"additional_data_list":[]},{"annotation_id":"2280a89f-986c-4184-82df-feaec37a9149","user_id":"kawamatsu_yuuji","label_id":"f50aa88d-36c7-43f5-8728-247a49b4f4d8","label_name":{"messages":[{"lang":"ja-JP","message":"目"},{"lang":"en-US","message":"eye"}],"default_lang":"ja-JP"},"annotation_type":"point","data_holding_type":"inner","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"additional_data_list":[]},{"annotation_id":"226b49a4-c8ef-4016-9e90-99107d8a623b","user_id":"kawamatsu_yuuji","label_id":"15ba7932-24b9-4cf3-95bd-9bf6deede4fa","label_name":{"messages":[{"lang":"ja-JP","message":"ネコ"},{"lang":"en-US","message":"Cat"}],"default_lang":"ja-JP"},"annotation_type":"bounding_box","data_holding_type":"inner","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"additional_data_list":[{"additional_data_definition_id":"e6864d96-78fa-45f3-a786-6c8c900c92ae","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"隠れ"},{"lang":"en-US","message":"occluded"}],"default_lang":"ja-JP"},"type":"flag","value":{"value":true,"_type":"Flag"}},{"additional_data_definition_id":"51e8c91f-5de1-450b-a0f3-94fec582f5ce","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"目のリンク"},{"lang":"en-US","message":"link-eye"}],"default_lang":"ja-JP"},"type":"link","value":{"value":"2280a89f-986c-4184-82df-feaec37a9149","_type":"Link"}},{"additional_data_definition_id":"aff2855e-2e3d-47a2-8c27-c7652e4dfb2f","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"体重"},{"lang":"en-US","message":"weight"}],"default_lang":"ja-JP"},"type":"integer","value":{"value":3,"_type":"Integer"}},{"additional_data_definition_id":"7e6a577a-3410-4c8a-9624-2904bb2e6666","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"名前"},{"lang":"en-US","message":"name"}],"default_lang":"ja-JP"},"type":"comment","value":{"value":"lena","_type":"Comment"}},{"additional_data_definition_id":"a63a0513-a96e-4c7c-8754-88a24fef9ca9","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"備考"},{"lang":"en-US","message":"memo"}],"default_lang":"ja-JP"},"type":"text","value":{"value":"テスト","_type":"Comment"}},{"additional_data_definition_id":"649abf45-1ed7-459a-8282-a58228e9a302","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"object id"},{"lang":"en-US","message":"object id"}],"default_lang":"ja-JP"},"type":"tracking","value":{"value":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","_type":"Tracking"}}]},{"annotation_id":"60a18a10-5d8a-4c1a-90b3-aa67226249c6","user_id":"kawamatsu_yuuji","label_id":"c754f724-5f8c-48eb-81ec-ea77e55efee7","label_name":{"messages":[{"lang":"ja-JP","message":"足"},{"lang":"en-US","message":"leg"}],"default_lang":"ja-JP"},"annotation_type":"polyline","data_holding_type":"inner","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"additional_data_list":[]},{"annotation_id":"ee83756f-074d-4aab-8bfc-6ab6e754c2b8","user_id":"kawamatsu_yuuji","label_id":"108ce1f7-217b-43e9-a407-8d0ac6aad87e","label_name":{"messages":[{"lang":"ja-JP","message":"犬"},{"lang":"en-US","message":"dog"}],"default_lang":"ja-JP"},"annotation_type":"segmentation","data_holding_type":"outer","data":{"data_uri":"./c86205d1-bdd4-4110-ae46-194e661d622b/ee83756f-074d-4aab-8bfc-6ab6e754c2b8","_type":"Segmentation"},"additional_data_list":[]},{"annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","user_id":"kawamatsu_yuuji","label_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","label_name":{"messages":[{"lang":"ja-JP","message":"気候"},{"lang":"en-US","message":"climatic"}],"default_lang":"ja-JP"},"annotation_type":"classification","data_holding_type":"inner","data":{"_type":"Classification"},"additional_data_list":[{"additional_data_definition_id":"896d7eeb-9c60-4fbf-b7c4-8f4209261049","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"天気"},{"lang":"en-US","message":"weather"}],"default_lang":"ja-JP"},"type":"choice","value":{"value":{"id":"c9615782-b872-4641-9be4-0fb4f905d966","name":{"messages":[{"lang":"ja-JP","message":"晴"},{"lang":"en-US","message":"sunny"}],"default_lang":"ja-JP"}},"_type":"Choice"}},{"additional_data_definition_id":"60caffa5-6300-4819-9a99-c43ce49008c2","additional_data_definition_name":{"messages":[{"lang":"ja-JP","message":"気温"},{"lang":"en-US","message":"temparature"}],"default_lang":"ja-JP"},"type":"select","value":{"value":{"id":"bdcd4d5b-cecc-4ec9-9038-d9284cd4f475","name":{"messages":[{"lang":"ja-JP","message":"20"},{"lang":"en-US","message":"20"}],"default_lang":"ja-JP"}},"_type":"Choice"}}]}],"updated_datetime":"2019-08-22T14:14:11.084+09:00","annotation_format_version":"2.0.0"}
\ No newline at end of file
diff --git a/tests/data/simple-annotation.zip b/tests/data/simple-annotation.zip
old mode 100644
new mode 100755
index d062499f..81d47519
Binary files a/tests/data/simple-annotation.zip and b/tests/data/simple-annotation.zip differ
diff --git a/tests/data/simple-annotation/sample_0/.__tests__data__lenna.png.json b/tests/data/simple-annotation/sample_0/.__tests__data__lenna.png.json
index 4cc4b997..b470c162 100644
--- a/tests/data/simple-annotation/sample_0/.__tests__data__lenna.png.json
+++ b/tests/data/simple-annotation/sample_0/.__tests__data__lenna.png.json
@@ -1 +1 @@
-{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","annotation_format_version":"1.2.0","task_id":"sample_0","task_phase":"acceptance","task_phase_stage":1,"task_status":"not_started","input_data_id":"0733d1e1-ef85-455e-aec0-ff05c499b711","input_data_name":"./tests/data/lenna.png","details":[{"label":"climatic","annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","data":null,"attributes":{"temparature":"20","weather":"sunny"}}],"updated_datetime":"2019-08-22T12:36:10.25+09:00"}
\ No newline at end of file
+{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","annotation_format_version":"1.2.0","task_id":"sample_0","task_phase":"acceptance","task_phase_stage":1,"task_status":"not_started","input_data_id":"a3281975-e632-47a7-a71f-08013fad5604","input_data_name":"./tests/data/lenna.png","details":[{"label":"climatic","annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","data":{"_type":"Classification"},"attributes":{"temparature":"20","weather":"sunny"}}],"updated_datetime":"2019-08-22T12:36:14.015+09:00"}
\ No newline at end of file
diff --git a/tests/data/simple-annotation/sample_1/.__tests__data__lenna.png.json b/tests/data/simple-annotation/sample_1/.__tests__data__lenna.png.json
index 51e55ac3..c2b0d8f2 100644
--- a/tests/data/simple-annotation/sample_1/.__tests__data__lenna.png.json
+++ b/tests/data/simple-annotation/sample_1/.__tests__data__lenna.png.json
@@ -1 +1 @@
-{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","annotation_format_version":"1.2.0","task_id":"sample_1","task_phase":"acceptance","task_phase_stage":1,"task_status":"complete","input_data_id":"c6e1c2ec-6c7c-41c6-9639-4244c2ed2839","input_data_name":"./tests/data/lenna.png","details":[{"label":"bird","annotation_id":"9a15fac0-736f-454f-a50d-7da094bc133d","data":{"points":[{"x":15,"y":55},{"x":12,"y":49},{"x":9,"y":43},{"x":16,"y":36},{"x":21,"y":39},{"x":24,"y":53}],"_type":"Points"},"attributes":{}},{"label":"human","annotation_id":"762f113a-5e17-4b49-861e-dfbea1dda09d","data":{"data_uri":"762f113a-5e17-4b49-861e-dfbea1dda09d","_type":"SegmentationV2"},"attributes":{}},{"label":"dog","annotation_id":"1e2931d2-de34-4956-ab75-81f710dc0108","data":{"data_uri":"1e2931d2-de34-4956-ab75-81f710dc0108","_type":"Segmentation"},"attributes":{}},{"label":"eye","annotation_id":"a05019fd-6e23-456b-9971-641a45979d98","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"attributes":{}},{"label":"leg","annotation_id":"c9c688d1-6c05-4118-94c7-308185cdb60a","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"attributes":{}},{"label":"Cat","annotation_id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"attributes":{"weight":3,"name":"lena","link-eye":"a05019fd-6e23-456b-9971-641a45979d98","occluded":true,"object id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","memo":"テスト"}},{"label":"climatic","annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","data":null,"attributes":{"temparature":"20","weather":"sunny"}}],"updated_datetime":"2019-08-22T14:10:14.758+09:00"}
\ No newline at end of file
+{"project_id":"1186bb00-16e6-4d20-8e24-310322911850","annotation_format_version":"1.2.0","task_id":"sample_1","task_phase":"acceptance","task_phase_stage":1,"task_status":"complete","input_data_id":"c6e1c2ec-6c7c-41c6-9639-4244c2ed2839","input_data_name":"./tests/data/lenna.png","details":[{"label":"bird","annotation_id":"9a15fac0-736f-454f-a50d-7da094bc133d","data":{"points":[{"x":15,"y":55},{"x":12,"y":49},{"x":9,"y":43},{"x":16,"y":36},{"x":21,"y":39},{"x":24,"y":53}],"_type":"Points"},"attributes":{}},{"label":"human","annotation_id":"762f113a-5e17-4b49-861e-dfbea1dda09d","data":{"data_uri":"762f113a-5e17-4b49-861e-dfbea1dda09d","_type":"SegmentationV2"},"attributes":{}},{"label":"dog","annotation_id":"1e2931d2-de34-4956-ab75-81f710dc0108","data":{"data_uri":"1e2931d2-de34-4956-ab75-81f710dc0108","_type":"Segmentation"},"attributes":{}},{"label":"eye","annotation_id":"a05019fd-6e23-456b-9971-641a45979d98","data":{"point":{"x":25,"y":18},"_type":"SinglePoint"},"attributes":{}},{"label":"leg","annotation_id":"c9c688d1-6c05-4118-94c7-308185cdb60a","data":{"points":[{"x":22,"y":29},{"x":33,"y":41}],"_type":"Points"},"attributes":{}},{"label":"Cat","annotation_id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","data":{"left_top":{"x":10,"y":7},"right_bottom":{"x":36,"y":36},"_type":"BoundingBox"},"attributes":{"weight":3,"name":"lena","link-eye":"a05019fd-6e23-456b-9971-641a45979d98","occluded":true,"object id":"6602c86c-5e22-42b9-b5a4-8a77c7bade01","memo":"テスト"}},{"label":"climatic","annotation_id":"5ac0d7d5-6738-4c4b-a69a-cd583ff458e1","data":{"_type":"Classification"},"attributes":{"temparature":"20","weather":"sunny"}}],"updated_datetime":"2019-08-22T14:10:14.758+09:00"}
\ No newline at end of file
diff --git a/tests/test_api.py b/tests/test_api.py
index 23441c77..1dfc86c3 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -284,6 +284,8 @@ def test_project():
assert wrapper.download_project_inspections_url(project_id, f'{out_dir}/inspections.json').startswith("https://")
+ # assert api.post_project_tasks_update(project_id)
+
def test_project_member():
print(f"get_project_member")