Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion annofabapi/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.39.0"
__version__ = "0.40.0"
3 changes: 3 additions & 0 deletions annofabapi/dataclass/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
14 changes: 9 additions & 5 deletions annofabapi/generated_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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]
Expand All @@ -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(
Expand Down Expand Up @@ -1837,7 +1841,7 @@ def delete_project(
authorizations: ProjectOwner


プロジェクトを完全に削除します。 アノテーション仕様、タスク、入力データ、アノテーションなど、プロジェクト配下のリソースがすべて削除されます。 削除されたプロジェクトは元に戻せません。 完了したプロジェクトは削除せず、プロジェクト状態を「停止中」に変更するのをおすすめします。
プロジェクトを完全に削除します。 アノテーション仕様、タスク、入力データ、アノテーションなど、プロジェクト配下のリソースがすべて削除されます。 削除されたプロジェクトは元に戻せません。 完了したプロジェクトは削除せず、プロジェクト状態を「停止中」に変更するのをおすすめします。 本APIを実行すると、バックグラウンドジョブが登録されます。ジョブは [getProjectJob](#operation/getProjectJob) APIで確認できます(ジョブ種別は`delete-project`)。

Args:
project_id (str): プロジェクトID (required)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
15 changes: 12 additions & 3 deletions annofabapi/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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)

"""

Expand Down Expand Up @@ -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)

"""

Expand Down Expand Up @@ -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
新規作成時は未指定、更新時は必須(更新前の日時)

Expand Down
Loading