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")