diff --git a/annofabapi/__version__.py b/annofabapi/__version__.py index e72781a7..da7ed90a 100644 --- a/annofabapi/__version__.py +++ b/annofabapi/__version__.py @@ -1 +1 @@ -__version__ = "0.39.0" +__version__ = "0.40.0" diff --git a/annofabapi/dataclass/project.py b/annofabapi/dataclass/project.py index b5dcc30f..1a9bc999 100644 --- a/annofabapi/dataclass/project.py +++ b/annofabapi/dataclass/project.py @@ -66,6 +66,9 @@ class ProjectConfiguration(DataClassJsonMixin): custom_task_assignment_plugin_id: Optional[str] """プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ + custom_specs_plugin_id: Optional[str] + """プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ + @dataclass class Project(DataClassJsonMixin): diff --git a/annofabapi/generated_api.py b/annofabapi/generated_api.py index 45d5a26f..f133e7e9 100644 --- a/annofabapi/generated_api.py +++ b/annofabapi/generated_api.py @@ -412,7 +412,7 @@ def get_archive_full_with_pro_id(self, project_id: str, **kwargs) -> Tuple[Any, return self._request_wrapper(http_method, url_path, **keyword_params) def get_editor_annotation( - self, project_id: str, task_id: str, input_data_id: str, **kwargs + self, project_id: str, task_id: str, input_data_id: str, query_params: Optional[Dict[str, Any]] = None, **kwargs ) -> Tuple[Any, requests.Response]: """タスク/入力データのアノテーション一括取得 https://annofab.com/docs/api/#operation/getEditorAnnotation @@ -427,6 +427,8 @@ def get_editor_annotation( project_id (str): プロジェクトID (required) task_id (str): タスクID (required) input_data_id (str): 入力データID (required) + query_params (Dict[str, Any]): Query Parameters + task_history_id (str): 過去のフェーズのアノテーションを取得する場合、タスク履歴IDを指定します。未指定時は最新のアノテーションを取得します。 Returns: Tuple[Annotation, requests.Response] @@ -435,7 +437,9 @@ def get_editor_annotation( """ url_path = f"/projects/{project_id}/tasks/{task_id}/inputs/{input_data_id}/annotation" http_method = "GET" - keyword_params: Dict[str, Any] = {} + keyword_params: Dict[str, Any] = { + "query_params": query_params, + } return self._request_wrapper(http_method, url_path, **keyword_params) def post_annotation_archive_update( @@ -1837,7 +1841,7 @@ def delete_project( authorizations: ProjectOwner - プロジェクトを完全に削除します。 アノテーション仕様、タスク、入力データ、アノテーションなど、プロジェクト配下のリソースがすべて削除されます。 削除されたプロジェクトは元に戻せません。 完了したプロジェクトは削除せず、プロジェクト状態を「停止中」に変更するのをおすすめします。 + プロジェクトを完全に削除します。 アノテーション仕様、タスク、入力データ、アノテーションなど、プロジェクト配下のリソースがすべて削除されます。 削除されたプロジェクトは元に戻せません。 完了したプロジェクトは削除せず、プロジェクト状態を「停止中」に変更するのをおすすめします。 本APIを実行すると、バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`delete-project`)。 Args: project_id (str): プロジェクトID (required) @@ -2121,7 +2125,7 @@ def put_project( authorizations: OrganizationAdministrator, ProjectOwner - プロジェクトを新規作成または更新します。 ### 新規作成する場合 ユーザーは、作成するプロジェクトをひもづける組織の [OrganizationAdministrator](#section/Authentication/OrganizationAdministrator) である必要があります。 ### 更新する場合 ユーザーは、更新するプロジェクトの [ProjectOwner](#section/Authentication/ProjectOwner) である必要があります。 また所属組織を変更する場合は、新しくひもづける組織の [OrganizationAdministrator](#section/Authentication/OrganizationAdministrator) である必要があります。 なお、プロジェクト状態を「停止中」にした場合、アノテーションZIPやタスク進捗状況などの集計情報は自動更新されなくなります。 + プロジェクトを新規作成または更新します。 ### 新規作成する場合 ユーザーは、作成するプロジェクトをひもづける組織の [OrganizationAdministrator](#section/Authentication/OrganizationAdministrator) である必要があります。 ### 更新する場合 ユーザーは、更新するプロジェクトの [ProjectOwner](#section/Authentication/ProjectOwner) である必要があります。 また所属組織を変更する場合は、新しくひもづける組織の [OrganizationAdministrator](#section/Authentication/OrganizationAdministrator) である必要があります。 なお、プロジェクト状態を「停止中」にした場合、アノテーションZIPやタスク進捗状況などの集計情報は自動更新されなくなります。 所属組織が変更された場合バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`move-project`)。 Args: project_id (str): プロジェクトID。[値の制約についてはこちら。](#section/API-Convention/APIID) (required) @@ -2943,7 +2947,7 @@ def put_webhook( authorizations: ProjectOwner - プロジェクトのWebhookを新規作成/更新します。 Webhook で送信される body には、event_type によって以下のプレースホルダーを使用できます。 * task-completed * {{PROJECT_ID}} : プロジェクトID * {{TASK_ID}} : タスクID * {{PROJECT_TITLE}} : プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 * {{LAST_ACCOUNT}} : 最終作業者 * 形式 : アカウントID * annotation-archive-updated * {{PROJECT_ID}} : プロジェクトID * {{PROJECT_TITLE}} : プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 * input-data-zip-registered * {{PROJECT_ID}} : プロジェクトID * {{PROJECT_TITLE}} : プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 * {{ZIP_NAME}} : ZIPファイル名 * 例 : input_data.zip * project-copy-completed * {{PROJECT_ID}} : プロジェクトID * {{DEST_PROJECT_ID}} : コピー先プロジェクトID * {{DEST_PROJECT_TITLE}} : コピー先プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 + プロジェクトのWebhookを新規作成/更新します。 Webhook で送信される body には、event_type によって以下のプレースホルダーを使用できます。 * task-completed * {{PROJECT_ID}} : プロジェクトID * {{TASK_ID}} : タスクID * {{PROJECT_TITLE}} : プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 * {{LAST_ACCOUNT}} : 最終作業者 * 形式 : アカウントID * annotation-archive-updated * {{PROJECT_ID}} : プロジェクトID * {{PROJECT_TITLE}} : プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 * input-data-zip-registered * {{PROJECT_ID}} : プロジェクトID * {{PROJECT_TITLE}} : プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 * {{ZIP_NAME}} : ZIPファイル名 * 例 : input_data.zip * project-copy-completed * {{PROJECT_ID}} : プロジェクトID * {{DEST_PROJECT_ID}} : コピー先プロジェクトID * {{DEST_PROJECT_TITLE}} : コピー先プロジェクトタイトル * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 Webhookが起動されると、ジョブ種別が`invoke-hook`のバックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます。 Args: project_id (str): プロジェクトID (required) diff --git a/annofabapi/models.py b/annofabapi/models.py index dbf8904b..770c2eab 100644 --- a/annofabapi/models.py +++ b/annofabapi/models.py @@ -2755,8 +2755,10 @@ class OrganizationMemberStatus(Enum): カスタムアノテーションエディタでタスクを開くための URL です。 プラグインを使用するプロジェクトのタスク一覧などで使用されます。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 この URL には、タスクを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * `{taskId}` 以下のパラメーターは任意で指定します。 * `{inputDataId}`: アノテーション一覧などから、特定の入力データにフォーカスした状態でタスクを開くときなどに指定します。 * `{annotationId}`: アノテーション一覧などから、特定のアノテーションにフォーカスした状態でタスクを開くときなどに指定します。 * task_assignment_url: str 「カスタムタスク割当API」のURLです。 プラグイン種別がカスタムタスク割当の場合のみ有効です。 #### カスタムタスク割当APIについて。 * 独自のアルゴリズムで作業者にタスクを割当するAPIです。 * AnnoFabから提供されるものではなく、第三者 (ユーザー様) が用意します。 * 作業者がタスク一覧やアノテーションエディタのタスク取得ボタンを押すと、指定したURLに複数の情報 (※1) と共にHTTPリクエスト (POST) が送られます。 * カスタムタスク割当APIでは、AnnoFabで提供しているAPI (※2) を使用して作業者にタスクを割当してください。 * タスクの割当に成功した場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: 割当した単一のタスク * ステータスコード: 200 * 作業者に割当できるタスクがない場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"MISSING_RESOURCE\"}]}` * ステータスコード: 404 * 作業者の認証トークンの期限が切れている場合があります。その場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"EXPIRED_TOKEN\"}]}` * ステータスコード: 401 #### Preflightリクエストについて。 * AnnoFabからカスタムタスク割当APIへCross-OriginなHTTPリクエストを送信するより前に、ブラウザの仕様により「Preflightリクエスト」と呼ばれるHTTPリクエストが送られます。 * カスタムタスク割当を利用するためには、カスタムタスク割当APIとは別に「Preflightリクエスト対応API」を用意する必要があります。 * 以下の要件を満たす「Preflightリクエスト対応API」を用意してください。 * URL: カスタムタスク割当APIと同じURL * HTTPメソッド: OPTIONS * レスポンスヘッダ: * `Access-Control-Allow-Origin: https://annofab.com` * `Access-Control-Allow-Headers: Content-Type` * レスポンスボディ: 空(から) * ステータスコード: 200 ※1 以下の情報が送られます。 * HTTPボディ (JSON形式) * `authorization_token` : 作業者の認証トークン。AnnoFabのAPIを利用する際に使用します。 * `project_id` : タスクの割当リクエストが行われたプロジェクトのID。 * `phase` : 作業者が割当を要求したタスクフェーズ。このフェーズのタスクを割当してください。 ※2 例えば以下のAPIがあります。(詳しい情報はAPIドキュメントを参照してください) * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 +* specs_url: str + カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * created_datetime: str * updated_datetime: str @@ -2853,11 +2855,12 @@ class OrganizationMemberStatus(Enum): class PluginType(Enum): """ - プラグイン種別。 * `custom_annotation_editor` - カスタムアノテーションエディタ用のプラグインを表します。 * `custom_task_assignment` - カスタムタスク割当用のプラグインを表します。 + プラグイン種別。 * `custom_annotation_editor` - カスタムアノテーションエディタ用のプラグインを表します。 * `custom_task_assignment` - カスタムタスク割当用のプラグインを表します。 * `custom_specs` - カスタムアノテーション仕様用のプラグインを表します。 """ ANNOTATION_EDITOR = "custom_annotation_editor" TASK_ASSIGNMENT = "custom_task_assignment" + SPECS = "custom_specs" Point = Dict[str, Any] @@ -3085,6 +3088,8 @@ class PricePlan(Enum): プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * custom_task_assignment_plugin_id: str プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) +* custom_specs_plugin_id: str + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -3118,6 +3123,8 @@ class PricePlan(Enum): プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) * custom_task_assignment_plugin_id: str プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) +* custom_specs_plugin_id: str + プラグインID。[値の制約についてはこちら。](#section/API-Convention/APIID) """ @@ -3483,8 +3490,10 @@ class ProjectStatus(Enum): カスタムアノテーションエディタでタスクを開くための URL です。 プラグインを使用するプロジェクトのタスク一覧などで使用されます。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 この URL には、タスクを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * `{taskId}` 以下のパラメーターは任意で指定します。 * `{inputDataId}`: アノテーション一覧などから、特定の入力データにフォーカスした状態でタスクを開くときなどに指定します。 * `{annotationId}`: アノテーション一覧などから、特定のアノテーションにフォーカスした状態でタスクを開くときなどに指定します。 * task_assignment_url: str 「カスタムタスク割当API」のURLです。 プラグイン種別がカスタムタスク割当の場合のみ有効です。 #### カスタムタスク割当APIについて。 * 独自のアルゴリズムで作業者にタスクを割当するAPIです。 * AnnoFabから提供されるものではなく、第三者 (ユーザー様) が用意します。 * 作業者がタスク一覧やアノテーションエディタのタスク取得ボタンを押すと、指定したURLに複数の情報 (※1) と共にHTTPリクエスト (POST) が送られます。 * カスタムタスク割当APIでは、AnnoFabで提供しているAPI (※2) を使用して作業者にタスクを割当してください。 * タスクの割当に成功した場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: 割当した単一のタスク * ステータスコード: 200 * 作業者に割当できるタスクがない場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"MISSING_RESOURCE\"}]}` * ステータスコード: 404 * 作業者の認証トークンの期限が切れている場合があります。その場合は以下のHTTPレスポンスを返却してください。 * レスポンスヘッダ: `Access-Control-Allow-Origin: https://annofab.com` * レスポンスボディ: `{\"errors\": [{\"error_code\": \"EXPIRED_TOKEN\"}]}` * ステータスコード: 401 #### Preflightリクエストについて。 * AnnoFabからカスタムタスク割当APIへCross-OriginなHTTPリクエストを送信するより前に、ブラウザの仕様により「Preflightリクエスト」と呼ばれるHTTPリクエストが送られます。 * カスタムタスク割当を利用するためには、カスタムタスク割当APIとは別に「Preflightリクエスト対応API」を用意する必要があります。 * 以下の要件を満たす「Preflightリクエスト対応API」を用意してください。 * URL: カスタムタスク割当APIと同じURL * HTTPメソッド: OPTIONS * レスポンスヘッダ: * `Access-Control-Allow-Origin: https://annofab.com` * `Access-Control-Allow-Headers: Content-Type` * レスポンスボディ: 空(から) * ステータスコード: 200 ※1 以下の情報が送られます。 * HTTPボディ (JSON形式) * `authorization_token` : 作業者の認証トークン。AnnoFabのAPIを利用する際に使用します。 * `project_id` : タスクの割当リクエストが行われたプロジェクトのID。 * `phase` : 作業者が割当を要求したタスクフェーズ。このフェーズのタスクを割当してください。 ※2 例えば以下のAPIがあります。(詳しい情報はAPIドキュメントを参照してください) * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 +* specs_url: str + カスタムアノテーション仕様画面の URL です。 プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 * `{projectId}` * compatible_input_data_types: List[InputDataType] - プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 + プラグインが対応している入力データです。 プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 * last_updated_datetime: str 新規作成時は未指定、更新時は必須(更新前の日時) diff --git a/generate/swagger/swagger-api-components.yaml b/generate/swagger/swagger-api-components.yaml index 0707f724..849e0c09 100644 --- a/generate/swagger/swagger-api-components.yaml +++ b/generate/swagger/swagger-api-components.yaml @@ -646,6 +646,8 @@ components: $ref: "#/components/schemas/AnnotationEditorUrl" task_assignment_url: $ref: "#/components/schemas/TaskAssignmentUrl" + specs_url: + $ref: "#/components/schemas/AnnotationSpecsUrl" compatible_input_data_types: $ref: "#/components/schemas/PluginCompatibleInputDataTypes" created_datetime: @@ -670,6 +672,8 @@ components: $ref: "#/components/schemas/AnnotationEditorUrl" task_assignment_url: $ref: "#/components/schemas/TaskAssignmentUrl" + specs_url: + $ref: "#/components/schemas/AnnotationSpecsUrl" compatible_input_data_types: $ref: "#/components/schemas/PluginCompatibleInputDataTypes" last_updated_datetime: @@ -684,10 +688,12 @@ components: enum: - custom_annotation_editor - custom_task_assignment + - custom_specs description: | プラグイン種別。 * `custom_annotation_editor` - カスタムアノテーションエディタ用のプラグインを表します。 * `custom_task_assignment` - カスタムタスク割当用のプラグインを表します。 + * `custom_specs` - カスタムアノテーション仕様用のプラグインを表します。 PluginName: type: string example: "foo-bar" @@ -707,7 +713,7 @@ components: example: ["custom"] description: | プラグインが対応している入力データです。 - プラグイン種別がカスタムアノテーションエディタの場合のみ有効です。 + プラグイン種別がカスタムアノテーションエディタ、またはカスタムアノテーション仕様の場合のみ有効です。 AnnotationEditorUrl: type: string example: "https://example.com/my/editors?p={projectId}&t={taskId}" @@ -776,7 +782,16 @@ components: * `getMyAccount` : 作業者のアカウント情報を取得できます。 * `getTasks` : プロジェクトのタスクを取得できます。 * `assignTasks` : 作業者にタスクを割当することができます。 + AnnotationSpecsUrl: + type: string + example: "https://example.com/my/specs?p={projectId}" + description: | + カスタムアノテーション仕様画面の URL です。 + プラグイン種別がカスタムアノテーション仕様の場合のみ有効です。 + + この URL には、プロジェクトを特定するための以下のパラメータを必ず埋め込んでください。 + * `{projectId}` MyOrganization: type: object properties: @@ -1091,6 +1106,10 @@ components: $ref: "#/components/schemas/PluginId" description: | `task_assignment_type`に`custom`を設定している場合のみ、カスタムタスク割当のプラグインIDを設定してください。 + custom_specs_plugin_id: + $ref: "#/components/schemas/PluginId" + description: | + カスタムアノテーション仕様のプラグインID。 ProjectSummary: type: object properties: diff --git a/generate/swagger/swagger.v2.yaml b/generate/swagger/swagger.v2.yaml index ab606b6d..1ccc25a1 100644 --- a/generate/swagger/swagger.v2.yaml +++ b/generate/swagger/swagger.v2.yaml @@ -115,7 +115,7 @@ info: 上記例 `account_id_count` は、タスクのフィールド `account_id` でタスクを分類したところ「`account_id` が `c5eee002` であるタスクが9件、`9f110e48` であるタスクが5件、`b25dfeb3` であるタスクが1件」だったという結果を表しています。 - version: 0.95.7 + version: 0.96.0 title: AnnoFab Web API x-logo: url: "https://annofab.com/images/logo_landscape.png" diff --git a/generate/swagger/swagger.yaml b/generate/swagger/swagger.yaml index 03a0ee3b..9cb78396 100644 --- a/generate/swagger/swagger.yaml +++ b/generate/swagger/swagger.yaml @@ -116,7 +116,7 @@ info: 上記例 `account_id_count` は、タスクのフィールド `account_id` でタスクを分類したところ「`account_id` が `c5eee002` であるタスクが9件、`9f110e48` であるタスクが5件、`b25dfeb3` であるタスクが1件」だったという結果を表しています。 また、AggregationResultの集約の件数は、合計で10000件以下に制限されており、それを超える件数がある場合は上位10000件が取得されます。もし、省略された部分を取得したい場合は、検索条件を縛って結果に上る集約の数を減らしてください。 - version: 0.95.7 + version: 0.96.0 title: AnnoFab Web API x-logo: url: "https://annofab.com/images/logo_landscape.png" @@ -1768,6 +1768,7 @@ paths: また所属組織を変更する場合は、新しくひもづける組織の [OrganizationAdministrator](#section/Authentication/OrganizationAdministrator) である必要があります。 なお、プロジェクト状態を「停止中」にした場合、アノテーションZIPやタスク進捗状況などの集計情報は自動更新されなくなります。 + 所属組織が変更された場合バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`move-project`)。 security: - OrganizationAdministrator: [] ProjectOwner: [] @@ -1817,7 +1818,7 @@ paths: "403": $ref: "swagger-api-components.yaml#/components/responses/ErrorForbiddenResource" "409": - description: 現在のプロジェクトやタスクの状態ではできない操作をしようとした + description: 現在のプロジェクトやタスクの状態ではできない操作をしようとした、またはジョブの同時実行制限による失敗(所属組織を変更した場合) content: application/json: schema: @@ -1834,6 +1835,9 @@ paths: 削除されたプロジェクトは元に戻せません。 完了したプロジェクトは削除せず、プロジェクト状態を「停止中」に変更するのをおすすめします。 + + 本APIを実行すると、バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`delete-project`)。 + security: - ProjectOwner: [] operationId: deleteProject @@ -1870,7 +1874,7 @@ paths: "404": $ref: "swagger-api-components.yaml#/components/responses/ErrorMissingResource" "409": - description: 停止中ではないプロジェクトを削除しようとした + description: 停止中ではないプロジェクトを削除しようとした、またはジョブの同時実行制限による失敗 content: application/json: schema: @@ -1976,6 +1980,12 @@ paths: $ref: "swagger-api-components.yaml#/components/responses/ErrorUnauthorizedApi" "403": $ref: "swagger-api-components.yaml#/components/responses/ErrorForbiddenResource" + "409": + description: ジョブの同時実行制限による失敗 + content: + application/json: + schema: + $ref: "swagger-api-components.yaml#/components/schemas/ErrorStateMismatch" "503": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnderMaintenance" /projects/{project_id}/rawdata/inputs: @@ -2045,6 +2055,12 @@ paths: $ref: "swagger-api-components.yaml#/components/responses/ErrorInvalidRequest" "401": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnauthorizedApi" + "409": + description: ジョブの同時実行制限による失敗 + content: + application/json: + schema: + $ref: "swagger-api-components.yaml#/components/schemas/ErrorStateMismatch" "503": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnderMaintenance" /projects/{project_id}/rawdata/tasks: @@ -2126,6 +2142,12 @@ paths: $ref: "swagger-api-components.yaml#/components/responses/ErrorInvalidRequest" "401": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnauthorizedApi" + "409": + description: ジョブの同時実行制限による失敗 + content: + application/json: + schema: + $ref: "swagger-api-components.yaml#/components/schemas/ErrorStateMismatch" "503": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnderMaintenance" /projects/{project_id}/rawdata/inspections: @@ -2770,6 +2792,7 @@ paths: * {{COMPLETE_DATETIME}} : 完了日時 * 例 : 2019-05-08T10:00:00.000+09:00 + Webhookが起動されると、ジョブ種別が`invoke-hook`のバックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます。 security: - ProjectOwner: [] operationId: putWebhook @@ -3983,6 +4006,13 @@ paths: required: true schema: $ref: "swagger-api-components.yaml#/components/schemas/InputDataId" + - name: task_history_id + in: query + description: | + 過去のフェーズのアノテーションを取得する場合、タスク履歴IDを指定します。未指定時は最新のアノテーションを取得します。 + required: false + schema: + $ref: "swagger-api-components.yaml#/components/schemas/TaskHistoryId" responses: "200": description: 正常 @@ -4221,6 +4251,12 @@ paths: $ref: "swagger-api-components.yaml#/components/responses/ErrorInvalidRequest" "401": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnauthorizedApi" + "409": + description: ジョブの同時実行制限による失敗 + content: + application/json: + schema: + $ref: "swagger-api-components.yaml#/components/schemas/ErrorStateMismatch" "503": $ref: "swagger-api-components.yaml#/components/responses/ErrorUnderMaintenance" /projects/{project_id}/tasks/{task_id}/inputs/{input_data_id}/inspections: @@ -4619,7 +4655,7 @@ paths: "404": $ref: "swagger-api-components.yaml#/components/responses/ErrorMissingResource" "409": - description: 先に更新されているため失敗 + description: 先に更新されているため、またはジョブの同時実行制御(zipファイルをアップロードした場合)により失敗 content: application/json: schema: diff --git a/pyproject.toml b/pyproject.toml index 3b7fcd4b..d8fd1828 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "annofabapi" -version = "0.39.0" +version = "0.40.0" description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)" authors = ["yuji38kwmt "] maintainers = ["yuji38kwmt "] diff --git a/tests/data/dataclass/project.json b/tests/data/dataclass/project.json index e132ffa1..bed356c2 100644 --- a/tests/data/dataclass/project.json +++ b/tests/data/dataclass/project.json @@ -21,7 +21,8 @@ ], "input_data_max_long_side_length": null, "sampling_inspection_rate": 85, - "sampling_acceptance_rate": 100 + "sampling_acceptance_rate": 100, + "custom_specs_plugin_id": null }, "summary": { "last_tasks_updated_datetime": "2020-10-15T00:28:20.643+09:00" diff --git a/tests/test_local_dataclass.py b/tests/test_dataclass_file.py similarity index 100% rename from tests/test_local_dataclass.py rename to tests/test_dataclass_file.py diff --git a/tests/test_dataclass.py b/tests/test_dataclass_webapi.py similarity index 100% rename from tests/test_dataclass.py rename to tests/test_dataclass_webapi.py