diff --git a/docs/design/ad-api/.pages b/docs/design/ad-api/.pages
index 35fd5a113be..dffbeb8be8b 100644
--- a/docs/design/ad-api/.pages
+++ b/docs/design/ad-api/.pages
@@ -1,2 +1,3 @@
nav:
- index.md
+ - prototyping
diff --git a/docs/design/ad-api/prototyping/.pages b/docs/design/ad-api/prototyping/.pages
new file mode 100644
index 00000000000..200613097c0
--- /dev/null
+++ b/docs/design/ad-api/prototyping/.pages
@@ -0,0 +1,3 @@
+nav:
+ - api
+ - type
diff --git a/docs/design/ad-api/prototyping/api/.pages b/docs/design/ad-api/prototyping/api/.pages
new file mode 100644
index 00000000000..ca691f467ca
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/.pages
@@ -0,0 +1,3 @@
+collapse: true
+nav:
+ - list.md
diff --git a/docs/design/ad-api/prototyping/api/external/get/command/selected/control.md b/docs/design/ad-api/prototyping/api/external/get/command/selected/control.md
new file mode 100644
index 00000000000..a09fe9062a2
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/command/selected/control.md
@@ -0,0 +1,14 @@
+# /api/external/get/command/selected/control
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/ControlCommandStamped
+
+## Description
+
+車両にて受け付けた最新の制御コマンドを取得する。
+
+## Requirement
+
+車両が受け付けた local/remote いずれかの制御コマンドを提供すること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/command/selected/vehicle.md b/docs/design/ad-api/prototyping/api/external/get/command/selected/vehicle.md
new file mode 100644
index 00000000000..f2c8b01a2bf
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/command/selected/vehicle.md
@@ -0,0 +1,14 @@
+# /api/external/get/command/selected/vehicle
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/ControlCommandStamped
+
+## Description
+
+車両に送信している最新の制御コマンドを取得する。
+
+## Requirement
+
+車両に送信している各種処理を行った最終的な制御コマンドを提供すること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/diagnostics.md b/docs/design/ad-api/prototyping/api/external/get/diagnostics.md
new file mode 100644
index 00000000000..087c7e4bbee
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/diagnostics.md
@@ -0,0 +1,14 @@
+# /api/external/get/diagnostics
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/ClassifiedDiagnostics
+
+## Description
+
+車両の各種診断情報を取得する。
+
+## Requirement
+
+現在の車両の状態に応じて分類した各種診断情報を提供すること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/door.md b/docs/design/ad-api/prototyping/api/external/get/door.md
new file mode 100644
index 00000000000..5b7882f94f2
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/door.md
@@ -0,0 +1,14 @@
+# /api/external/get/door
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/DoorStatus
+
+## Description
+
+車両のドア状態を取得する。
+
+## Requirement
+
+車両のドア状態を提供すること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/emergency.md b/docs/design/ad-api/prototyping/api/external/get/emergency.md
new file mode 100644
index 00000000000..2fea9813997
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/emergency.md
@@ -0,0 +1,14 @@
+# /api/external/get/emergency
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Emergency
+
+## Description
+
+車両を外部指示緊急停止状態を取得する。
+
+## Requirement
+
+車両の停止が完了しているかに関わらず、外部指示緊急停止状態が取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/engage.md b/docs/design/ad-api/prototyping/api/external/get/engage.md
new file mode 100644
index 00000000000..c6205da0717
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/engage.md
@@ -0,0 +1,14 @@
+# /api/external/get/engage
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/EngageStatus
+
+## Description
+
+エンゲージ状態を取得する。
+
+## Requirement
+
+現在のエンゲージ状態が取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/map/info/hash.md b/docs/design/ad-api/prototyping/api/external/get/map/info/hash.md
new file mode 100644
index 00000000000..9b92b3ac04c
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/map/info/hash.md
@@ -0,0 +1,14 @@
+# /api/external/get/map/info/hash
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/MapHash
+
+## Description
+
+現在設定されている地図のハッシュを取得する。
+
+## Requirement
+
+地図データを保持するファイルのハッシュ値(SHA-256)を取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/map/lanelet/xml.md b/docs/design/ad-api/prototyping/api/external/get/map/lanelet/xml.md
new file mode 100644
index 00000000000..1be8f821d19
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/map/lanelet/xml.md
@@ -0,0 +1,14 @@
+# /api/external/get/map/lanelet/xml
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/GetTextFile
+
+## Description
+
+地図情報を Lanelet の XML(OSM) 形式で取得する。
+
+## Requirement
+
+必要に応じて地図フォーマットの変換を行い、地図情報が Lanelet の XML(OSM) 形式で取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/metadata/packages.md b/docs/design/ad-api/prototyping/api/external/get/metadata/packages.md
new file mode 100644
index 00000000000..2b0037fb823
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/metadata/packages.md
@@ -0,0 +1,14 @@
+# /api/external/get/metadata/packages
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/GetMetadataPackages
+
+## Description
+
+Autoware の実装バージョンを特定するための各種情報を取得する。
+
+## Requirement
+
+Autoware を構成する各パッケージが本 API 向けの情報を提供している場合、パッケージ名をキーとする辞書形式で情報が取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/observer.md b/docs/design/ad-api/prototyping/api/external/get/observer.md
new file mode 100644
index 00000000000..c77a8b2e7ad
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/observer.md
@@ -0,0 +1,14 @@
+# /api/external/get/observer
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Observer
+
+## Description
+
+車両の監視を行う対象を取得する。
+
+## Requirement
+
+現在車両の監視を行っている対象を取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/operator.md b/docs/design/ad-api/prototyping/api/external/get/operator.md
new file mode 100644
index 00000000000..b966ca4bf6d
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/operator.md
@@ -0,0 +1,14 @@
+# /api/external/get/operator
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Operator
+
+## Description
+
+車両の操作を行う対象を取得する。
+
+## Requirement
+
+現在車両の操作を行っている対象を取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/route.md b/docs/design/ad-api/prototyping/api/external/get/route.md
new file mode 100644
index 00000000000..29af3d12947
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/route.md
@@ -0,0 +1,14 @@
+# /api/external/get/route
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Route
+
+## Description
+
+車両の運行ルートを取得する。
+
+## Requirement
+
+[[/api/external/set/route]]により設定された運行ルートを取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/service.md b/docs/design/ad-api/prototyping/api/external/get/service.md
new file mode 100644
index 00000000000..70ec77cd79e
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/service.md
@@ -0,0 +1,14 @@
+# /api/external/get/service
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Service
+
+## Description
+
+車両のサービス提供状態を取得する。
+
+## Requirement
+
+[[/api/external/set/engage]]により設定されたサービス状態を取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/vehicle/status.md b/docs/design/ad-api/prototyping/api/external/get/vehicle/status.md
new file mode 100644
index 00000000000..e27b8331923
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/vehicle/status.md
@@ -0,0 +1,14 @@
+# /api/external/get/vehicle/status
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/VehicleStatusStamped
+
+## Description
+
+車両制御に関する情報を取得する。
+
+## Requirement
+
+車両の速度、ステア、ウィンカー、ギアに関する情報を取得できること。
diff --git a/docs/design/ad-api/prototyping/api/external/get/version.md b/docs/design/ad-api/prototyping/api/external/get/version.md
new file mode 100644
index 00000000000..4ff1f9c4c37
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/get/version.md
@@ -0,0 +1,18 @@
+# /api/external/get/version
+
+## Classification
+
+- Behavior: Service
+- DataType: autoware_external_api_msgs/srv/GetVersion
+
+## Description
+
+Autoware External API のバージョン情報を取得する。
+
+## Requirement
+
+以下の規則に従ったバージョン文字列`major.minor.patch`が取得できること。
+
+- major: 全体に関わる大規模な変更があったとき。
+- minor: 互換性の失われる変更があったとき。
+- patch: 互換性の維持される変更があったとき。
diff --git a/docs/design/ad-api/prototyping/api/external/set/clear_route.md b/docs/design/ad-api/prototyping/api/external/set/clear_route.md
new file mode 100644
index 00000000000..c3e4e8fb530
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/clear_route.md
@@ -0,0 +1,14 @@
+# /api/external/set/clear_route
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/ClearRoute
+
+## Description
+
+車両の運行ルートを取り消す。
+
+## Requirement
+
+[[/api/external/set/route]]により設定された運行ルートを取り消すこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/local/control.md b/docs/design/ad-api/prototyping/api/external/set/command/local/control.md
new file mode 100644
index 00000000000..e8d2bfff10e
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/local/control.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/local/control
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/ControlCommandStamped
+
+## Description
+
+車両のアクセル・ブレーキ・ステアリングを制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/local/gear_shift.md b/docs/design/ad-api/prototyping/api/external/set/command/local/gear_shift.md
new file mode 100644
index 00000000000..5bec0fe30c9
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/local/gear_shift.md
@@ -0,0 +1,15 @@
+# /api/external/set/command/local/gear_shift
+
+## Classification
+
+- Category: Optional
+- Behavior: Topic
+- DataType: autoware_external_api_msgs/msg/GearShiftStamped
+
+## Description
+
+車両の変速機を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/local/heartbeat.md b/docs/design/ad-api/prototyping/api/external/set/command/local/heartbeat.md
new file mode 100644
index 00000000000..285750f9ebf
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/local/heartbeat.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/local/heartbeat
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Heartbeat
+
+## Description
+
+車両との通信状態を確認するための信号を送信する。
+
+## Requirement
+
+この信号が途切れた場合、車両は監視されていない状態になったとして適切な制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/local/shift.md b/docs/design/ad-api/prototyping/api/external/set/command/local/shift.md
new file mode 100644
index 00000000000..10a04d3c6b5
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/local/shift.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/local/shift
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/GearShiftStamped
+
+## Description
+
+車両の変速機を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/local/turn_signal.md b/docs/design/ad-api/prototyping/api/external/set/command/local/turn_signal.md
new file mode 100644
index 00000000000..533c00ca78d
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/local/turn_signal.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/local/turn_signal
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/TurnSignalStamped
+
+## Description
+
+車両の方向指示器を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/remote/control.md b/docs/design/ad-api/prototyping/api/external/set/command/remote/control.md
new file mode 100644
index 00000000000..84d2c8205f3
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/remote/control.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/remote/control
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/ControlCommandStamped
+
+## Description
+
+車両のアクセル・ブレーキ・ステアリングを制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/remote/gear_shift.md b/docs/design/ad-api/prototyping/api/external/set/command/remote/gear_shift.md
new file mode 100644
index 00000000000..43954b5ace8
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/remote/gear_shift.md
@@ -0,0 +1,15 @@
+# /api/external/set/command/remote/gear_shift
+
+## Classification
+
+- Category: Optional
+- Behavior: Topic
+- DataType: autoware_external_api_msgs/msg/GearShiftStamped
+
+## Description
+
+車両の変速機を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/remote/heartbeat.md b/docs/design/ad-api/prototyping/api/external/set/command/remote/heartbeat.md
new file mode 100644
index 00000000000..bd5317574c2
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/remote/heartbeat.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/remote/heartbeat
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/Heartbeat
+
+## Description
+
+車両との通信状態を確認するための信号を送信する。
+
+## Requirement
+
+この信号が途切れた場合、車両は監視されていない状態になったとして適切な制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/remote/shift.md b/docs/design/ad-api/prototyping/api/external/set/command/remote/shift.md
new file mode 100644
index 00000000000..5c86c8656d3
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/remote/shift.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/remote/shift
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/GearShiftStamped
+
+## Description
+
+車両の変速機を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/command/remote/turn_signal.md b/docs/design/ad-api/prototyping/api/external/set/command/remote/turn_signal.md
new file mode 100644
index 00000000000..9bda77f3642
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/command/remote/turn_signal.md
@@ -0,0 +1,14 @@
+# /api/external/set/command/remote/turn_signal
+
+## Classification
+
+- Behavior: Topic
+- DataType: tier4_external_api_msgs/msg/TurnSignalStamped
+
+## Description
+
+車両の方向指示器を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/door.md b/docs/design/ad-api/prototyping/api/external/set/door.md
new file mode 100644
index 00000000000..3ac05e14f1a
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/door.md
@@ -0,0 +1,14 @@
+# /api/external/set/door
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetDoor
+
+## Description
+
+車両のドア開閉を行う。
+
+## Requirement
+
+車両のドア操作を行うこと。車両にドアがない場合は常に失敗として応答すること。
diff --git a/docs/design/ad-api/prototyping/api/external/set/emergency.md b/docs/design/ad-api/prototyping/api/external/set/emergency.md
new file mode 100644
index 00000000000..8b4a9d3c513
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/emergency.md
@@ -0,0 +1,14 @@
+# /api/external/set/emergency
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetEmergency
+
+## Description
+
+車両を外部指示緊急停止状態に設定する。
+
+## Requirement
+
+現在の車両の状態を考慮した適切な緊急停止の制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/engage.md b/docs/design/ad-api/prototyping/api/external/set/engage.md
new file mode 100644
index 00000000000..d7f110390b5
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/engage.md
@@ -0,0 +1,14 @@
+# /api/external/set/engage
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/Engage
+
+## Description
+
+車両の停止保持状態を設定・解除する。自律制御開始時、または、停留所や荷物の積み下ろし中など、何らかのユーザー操作が行われるまで車両の停止を継続させる。
+
+## Requirement
+
+エンゲージ状態が true に設定されていない場合、車両が停止保持するように制御信号を出力すること。
diff --git a/docs/design/ad-api/prototyping/api/external/set/initialize_pose.md b/docs/design/ad-api/prototyping/api/external/set/initialize_pose.md
new file mode 100644
index 00000000000..d4e91393300
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/initialize_pose.md
@@ -0,0 +1,14 @@
+# /api/external/set/initialize_pose
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/InitializePose
+
+## Description
+
+指定した位置姿勢をもとに、車両の位置姿勢を初期化・再設定する。
+
+## Requirement
+
+位置姿勢に関する事前状態を考慮せず、指定した位置姿勢のみを用いて車両の位置姿勢を初期化・再設定する。
diff --git a/docs/design/ad-api/prototyping/api/external/set/initialize_pose_auto.md b/docs/design/ad-api/prototyping/api/external/set/initialize_pose_auto.md
new file mode 100644
index 00000000000..f237852301f
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/initialize_pose_auto.md
@@ -0,0 +1,14 @@
+# /api/external/set/initialize_pose_auto
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/InitializePoseAuto
+
+## Description
+
+GNSS による位置姿勢をもとに、車両の位置姿勢を初期化・再設定する。
+
+## Requirement
+
+位置姿勢に関する事前状態を考慮せず、GNSS による位置姿勢のみを用いて車両の位置姿勢を初期化・再設定する。
diff --git a/docs/design/ad-api/prototyping/api/external/set/observer.md b/docs/design/ad-api/prototyping/api/external/set/observer.md
new file mode 100644
index 00000000000..4e60a34bc32
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/observer.md
@@ -0,0 +1,14 @@
+# /api/external/set/observer
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetObserver
+
+## Description
+
+車両の監視を行う対象を設定する。
+
+## Requirement
+
+指定された対象が車両を監視できる状態か確認して切り替えを行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/operator.md b/docs/design/ad-api/prototyping/api/external/set/operator.md
new file mode 100644
index 00000000000..14cff2a1f5b
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/operator.md
@@ -0,0 +1,14 @@
+# /api/external/set/operator
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetOperator
+
+## Description
+
+車両の操作を行う対象を設定する。
+
+## Requirement
+
+指定された対象が車両を操作できる状態か確認して切り替えを行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/pause_driving.md b/docs/design/ad-api/prototyping/api/external/set/pause_driving.md
new file mode 100644
index 00000000000..c5c235de80f
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/pause_driving.md
@@ -0,0 +1,14 @@
+# /api/external/set/pause_driving
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/PauseDriving
+
+## Description
+
+車両を停止状態に設定する。
+
+## Requirement
+
+現在の車両の状態を考慮した適切な停止の制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/external/set/route.md b/docs/design/ad-api/prototyping/api/external/set/route.md
new file mode 100644
index 00000000000..d9a559ccb26
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/route.md
@@ -0,0 +1,14 @@
+# /api/external/set/route
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetRoute
+
+## Description
+
+車両の運行ルートを設定する。
+
+## Requirement
+
+指定された運行ルートを用いて車両の走行経路を設定すること。
diff --git a/docs/design/ad-api/prototyping/api/external/set/service.md b/docs/design/ad-api/prototyping/api/external/set/service.md
new file mode 100644
index 00000000000..7bd66d08535
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/service.md
@@ -0,0 +1,14 @@
+# /api/external/set/service
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetService
+
+## Description
+
+車両のサービス提供状態を設定する。
+
+## Requirement
+
+指定されたサービス状態を保持すること。
diff --git a/docs/design/ad-api/prototyping/api/external/set/velocity_limit.md b/docs/design/ad-api/prototyping/api/external/set/velocity_limit.md
new file mode 100644
index 00000000000..4053544fb69
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/external/set/velocity_limit.md
@@ -0,0 +1,14 @@
+# /api/external/set/velocity_limit
+
+## Classification
+
+- Behavior: Service
+- DataType: tier4_external_api_msgs/srv/SetVelocityLimit
+
+## Description
+
+車両の制限速度を設定する。
+
+## Requirement
+
+指定された制限速度以下になるように車両の制御を行うこと。現在の速度が制限速度を超えている場合、車両の状態を考慮して適切に制限速度以下になるような制御を行うこと。
diff --git a/docs/design/ad-api/prototyping/api/list.md b/docs/design/ad-api/prototyping/api/list.md
new file mode 100644
index 00000000000..3d5c256d55d
--- /dev/null
+++ b/docs/design/ad-api/prototyping/api/list.md
@@ -0,0 +1,41 @@
+# List of Autoware API
+
+## External API
+
+| Type | Name | Data |
+| ------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
+| service | [/api/external/get/version](../../api/external/get/version) | [autoware_external_api_msgs/srv/GetVersion](../../type/autoware_external_api_msgs/srv/GetVersion) |
+| service | [/api/external/get/metadata/packages](../../api/external/get/metadata/packages) | [tier4_external_api_msgs/srv/GetMetadataPackages](../../type/tier4_external_api_msgs/srv/GetMetadataPackages) |
+| service | [/api/external/set/service](../../api/external/set/service) | [tier4_external_api_msgs/srv/SetService](../../type/tier4_external_api_msgs/srv/SetService) |
+| topic | [/api/external/get/service](../../api/external/get/service) | [tier4_external_api_msgs/msg/Service](../../type/tier4_external_api_msgs/msg/Service) |
+| topic | [/api/external/get/diagnostics](../../api/external/get/diagnostics) | [tier4_external_api_msgs/msg/ClassifiedDiagnostics](../../type/tier4_external_api_msgs/msg/ClassifiedDiagnostics) |
+| service | [/api/external/set/engage](../../api/external/set/engage) | [tier4_external_api_msgs/srv/Engage](../../type/tier4_external_api_msgs/srv/Engage) |
+| topic | [/api/external/get/engage](../../api/external/get/engage) | [tier4_external_api_msgs/msg/EngageStatus](../../type/tier4_external_api_msgs/msg/EngageStatus) |
+| service | [/api/external/set/emergency](../../api/external/set/emergency) | [tier4_external_api_msgs/srv/SetEmergency](../../type/tier4_external_api_msgs/srv/SetEmergency) |
+| topic | [/api/external/get/emergency](../../api/external/get/emergency) | [tier4_external_api_msgs/msg/Emergency](../../type/tier4_external_api_msgs/msg/Emergency) |
+| service | [/api/external/set/door](../../api/external/set/door) | [tier4_external_api_msgs/srv/SetDoor](../../type/tier4_external_api_msgs/srv/SetDoor) |
+| topic | [/api/external/get/door](../../api/external/get/door) | [tier4_external_api_msgs/msg/DoorStatus](../../type/tier4_external_api_msgs/msg/DoorStatus) |
+| topic | [/api/external/get/vehicle/status](../../api/external/get/vehicle/status) | [tier4_external_api_msgs/msg/VehicleStatusStamped](../../type/tier4_external_api_msgs/msg/VehicleStatusStamped) |
+| service | [/api/external/set/initialize_pose](../../api/external/set/initialize_pose) | [tier4_external_api_msgs/srv/InitializePose](../../type/tier4_external_api_msgs/srv/InitializePose) |
+| service | [/api/external/set/initialize_pose_auto](../../api/external/set/initialize_pose_auto) | [tier4_external_api_msgs/srv/InitializePoseAuto](../../type/tier4_external_api_msgs/srv/InitializePoseAuto) |
+| service | [/api/external/set/route](../../api/external/set/route) | [tier4_external_api_msgs/srv/SetRoute](../../type/tier4_external_api_msgs/srv/SetRoute) |
+| topic | [/api/external/get/route](../../api/external/get/route) | [tier4_external_api_msgs/msg/Route](../../type/tier4_external_api_msgs/msg/Route) |
+| service | [/api/external/set/clear_route](../../api/external/set/clear_route) | [tier4_external_api_msgs/srv/ClearRoute](../../type/tier4_external_api_msgs/srv/ClearRoute) |
+| service | [/api/external/set/operator](../../api/external/set/operator) | [tier4_external_api_msgs/srv/SetOperator](../../type/tier4_external_api_msgs/srv/SetOperator) |
+| topic | [/api/external/get/operator](../../api/external/get/operator) | [tier4_external_api_msgs/msg/Operator](../../type/tier4_external_api_msgs/msg/Operator) |
+| service | [/api/external/set/observer](../../api/external/set/observer) | [tier4_external_api_msgs/srv/SetObserver](../../type/tier4_external_api_msgs/srv/SetObserver) |
+| topic | [/api/external/get/observer](../../api/external/get/observer) | [tier4_external_api_msgs/msg/Observer](../../type/tier4_external_api_msgs/msg/Observer) |
+| topic | [/api/external/get/map/info/hash](../../api/external/get/map/info/hash) | [tier4_external_api_msgs/msg/MapHash](../../type/tier4_external_api_msgs/msg/MapHash) |
+| service | [/api/external/get/map/lanelet/xml](../../api/external/get/map/lanelet/xml) | [tier4_external_api_msgs/srv/GetTextFile](../../type/tier4_external_api_msgs/srv/GetTextFile) |
+| service | [/api/external/set/pause_driving](../../api/external/set/pause_driving) | [tier4_external_api_msgs/srv/PauseDriving](../../type/tier4_external_api_msgs/srv/PauseDriving) |
+| service | [/api/external/set/velocity_limit](../../api/external/set/velocity_limit) | [tier4_external_api_msgs/srv/SetVelocityLimit](../../type/tier4_external_api_msgs/srv/SetVelocityLimit) |
+| topic | [/api/external/set/command/local/control](../../api/external/set/command/local/control) | [tier4_external_api_msgs/msg/ControlCommandStamped](../../type/tier4_external_api_msgs/msg/ControlCommandStamped) |
+| topic | [/api/external/set/command/local/shift](../../api/external/set/command/local/shift) | [tier4_external_api_msgs/msg/GearShiftStamped](../../type/tier4_external_api_msgs/msg/GearShiftStamped) |
+| topic | [/api/external/set/command/local/turn_signal](../../api/external/set/command/local/turn_signal) | [tier4_external_api_msgs/msg/TurnSignalStamped](../../type/tier4_external_api_msgs/msg/TurnSignalStamped) |
+| topic | [/api/external/set/command/local/heartbeat](../../api/external/set/command/local/heartbeat) | [tier4_external_api_msgs/msg/Heartbeat](../../type/tier4_external_api_msgs/msg/Heartbeat) |
+| topic | [/api/external/set/command/remote/control](../../api/external/set/command/remote/control) | [tier4_external_api_msgs/msg/ControlCommandStamped](../../type/tier4_external_api_msgs/msg/ControlCommandStamped) |
+| topic | [/api/external/set/command/remote/shift](../../api/external/set/command/remote/shift) | [tier4_external_api_msgs/msg/GearShiftStamped](../../type/tier4_external_api_msgs/msg/GearShiftStamped) |
+| topic | [/api/external/set/command/remote/turn_signal](../../api/external/set/command/remote/turn_signal) | [tier4_external_api_msgs/msg/TurnSignalStamped](../../type/tier4_external_api_msgs/msg/TurnSignalStamped) |
+| topic | [/api/external/set/command/remote/heartbeat](../../api/external/set/command/remote/heartbeat) | [tier4_external_api_msgs/msg/Heartbeat](../../type/tier4_external_api_msgs/msg/Heartbeat) |
+| topic | [/api/external/get/command/selected/control](../../api/external/get/command/selected/control) | [tier4_external_api_msgs/msg/ControlCommandStamped](../../type/tier4_external_api_msgs/msg/ControlCommandStamped) |
+| topic | [/api/external/get/command/selected/vehicle](../../api/external/get/command/selected/vehicle) | [tier4_external_api_msgs/msg/ControlCommandStamped](../../type/tier4_external_api_msgs/msg/ControlCommandStamped) |
diff --git a/docs/design/ad-api/prototyping/type/.pages b/docs/design/ad-api/prototyping/type/.pages
new file mode 100644
index 00000000000..e2d5ae91273
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/.pages
@@ -0,0 +1 @@
+hide: true
diff --git a/docs/design/ad-api/prototyping/type/autoware_external_api_msgs/srv/GetVersion.md b/docs/design/ad-api/prototyping/type/autoware_external_api_msgs/srv/GetVersion.md
new file mode 100644
index 00000000000..dbf46ed1dde
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/autoware_external_api_msgs/srv/GetVersion.md
@@ -0,0 +1,7 @@
+# GetVersion
+
+```txt
+---
+tier4_external_api_msgs/ResponseStatus status
+string version
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/ClassifiedDiagnostics.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/ClassifiedDiagnostics.md
new file mode 100644
index 00000000000..de62d37484a
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/ClassifiedDiagnostics.md
@@ -0,0 +1,6 @@
+# ClassifiedDiagnostics
+
+```txt
+builtin_interfaces/Time stamp
+diagnostic_msgs/DiagnosticStatus[] diagnostics_notice
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/ControlCommandStamped.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/ControlCommandStamped.md
new file mode 100644
index 00000000000..ba24d373539
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/ControlCommandStamped.md
@@ -0,0 +1,6 @@
+# ControlCommandStamped
+
+```txt
+builtin_interfaces/Time stamp
+tier4_external_api_msgs/ControlCommand control
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/DoorStatus.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/DoorStatus.md
new file mode 100644
index 00000000000..58fbfd40c77
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/DoorStatus.md
@@ -0,0 +1,15 @@
+# DoorStatus
+
+```txt
+# constants
+int8 NOT_SUPPORTED = -1
+int8 UNKNOWN = 0
+int8 OPENED = 1
+int8 CLOSED = 2
+int8 OPENING = 3
+int8 CLOSING = 4
+
+# fields
+builtin_interfaces/Time stamp
+int8 status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Emergency.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Emergency.md
new file mode 100644
index 00000000000..fda0d327a20
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Emergency.md
@@ -0,0 +1,6 @@
+# Emergency
+
+```txt
+builtin_interfaces/Time stamp
+bool emergency
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/EngageStatus.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/EngageStatus.md
new file mode 100644
index 00000000000..d0f5537e458
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/EngageStatus.md
@@ -0,0 +1,6 @@
+# EngageStatus
+
+```txt
+builtin_interfaces/Time stamp
+bool engage
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/GearShiftStamped.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/GearShiftStamped.md
new file mode 100644
index 00000000000..c688fdcf349
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/GearShiftStamped.md
@@ -0,0 +1,6 @@
+# GearShiftStamped
+
+```txt
+builtin_interfaces/Time stamp
+tier4_external_api_msgs/GearShift gear_shift
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Heartbeat.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Heartbeat.md
new file mode 100644
index 00000000000..4bfdcabb7e7
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Heartbeat.md
@@ -0,0 +1,5 @@
+# Heartbeat
+
+```txt
+builtin_interfaces/Time stamp
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/MapHash.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/MapHash.md
new file mode 100644
index 00000000000..0cbc5593935
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/MapHash.md
@@ -0,0 +1,6 @@
+# MapHash
+
+```txt
+string lanelet
+string pcd
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Observer.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Observer.md
new file mode 100644
index 00000000000..4f5f0023881
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Observer.md
@@ -0,0 +1,11 @@
+# Observer
+
+```txt
+# constants
+# uint8 NONE=1 (reserved)
+uint8 LOCAL=2
+uint8 REMOTE=3
+
+# fields
+uint8 mode
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Operator.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Operator.md
new file mode 100644
index 00000000000..755755e147d
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Operator.md
@@ -0,0 +1,11 @@
+# Operator
+
+```txt
+# constants
+uint8 DRIVER=1
+uint8 AUTONOMOUS=2
+uint8 OBSERVER=3
+
+# fields
+uint8 mode
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Route.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Route.md
new file mode 100644
index 00000000000..51bef10cf46
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Route.md
@@ -0,0 +1,6 @@
+# Route
+
+```txt
+geometry_msgs/PoseStamped goal_pose
+tier4_external_api_msgs/RouteSection[] route_sections
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Service.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Service.md
new file mode 100644
index 00000000000..4989ef86277
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/Service.md
@@ -0,0 +1,10 @@
+# Service
+
+```txt
+# constants
+uint8 NOT_IN_SERVICE=1
+uint8 IN_SERVICE=2
+
+# fields
+uint8 mode
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/TurnSignalStamped.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/TurnSignalStamped.md
new file mode 100644
index 00000000000..bf3a6deb2a6
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/TurnSignalStamped.md
@@ -0,0 +1,6 @@
+# TurnSignalStamped
+
+```txt
+builtin_interfaces/Time stamp
+tier4_external_api_msgs/TurnSignal turn_signal
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/VehicleStatusStamped.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/VehicleStatusStamped.md
new file mode 100644
index 00000000000..16e635f08cd
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/msg/VehicleStatusStamped.md
@@ -0,0 +1,6 @@
+# VehicleStatusStamped
+
+```txt
+builtin_interfaces/Time stamp
+tier4_external_api_msgs/VehicleStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/ClearRoute.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/ClearRoute.md
new file mode 100644
index 00000000000..429a66ac262
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/ClearRoute.md
@@ -0,0 +1,6 @@
+# ClearRoute
+
+```txt
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/Engage.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/Engage.md
new file mode 100644
index 00000000000..946e29fd686
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/Engage.md
@@ -0,0 +1,7 @@
+# Engage
+
+```txt
+bool engage
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/GetMetadataPackages.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/GetMetadataPackages.md
new file mode 100644
index 00000000000..5999a0def05
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/GetMetadataPackages.md
@@ -0,0 +1,7 @@
+# GetMetadataPackages
+
+```txt
+---
+tier4_external_api_msgs/ResponseStatus status
+tier4_external_api_msgs/MetadataPackages metadata
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/GetTextFile.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/GetTextFile.md
new file mode 100644
index 00000000000..26e4c5ed56b
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/GetTextFile.md
@@ -0,0 +1,7 @@
+# GetTextFile
+
+```txt
+---
+tier4_external_api_msgs/ResponseStatus status
+tier4_external_api_msgs/TextFile file
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/InitializePose.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/InitializePose.md
new file mode 100644
index 00000000000..34b5a22e328
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/InitializePose.md
@@ -0,0 +1,7 @@
+# InitializePose
+
+```txt
+geometry_msgs/PoseWithCovarianceStamped pose
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/InitializePoseAuto.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/InitializePoseAuto.md
new file mode 100644
index 00000000000..af9d3f2c559
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/InitializePoseAuto.md
@@ -0,0 +1,6 @@
+# InitializePoseAuto
+
+```txt
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/PauseDriving.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/PauseDriving.md
new file mode 100644
index 00000000000..59700260934
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/PauseDriving.md
@@ -0,0 +1,7 @@
+# PauseDriving
+
+```txt
+bool pause
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetDoor.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetDoor.md
new file mode 100644
index 00000000000..d3c3dd57961
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetDoor.md
@@ -0,0 +1,7 @@
+# SetDoor
+
+```txt
+bool open
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetEmergency.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetEmergency.md
new file mode 100644
index 00000000000..49aa3a228c2
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetEmergency.md
@@ -0,0 +1,7 @@
+# SetEmergency
+
+```txt
+bool emergency
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetObserver.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetObserver.md
new file mode 100644
index 00000000000..f26e2598cc1
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetObserver.md
@@ -0,0 +1,7 @@
+# SetObserver
+
+```txt
+tier4_external_api_msgs/Observer mode
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetOperator.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetOperator.md
new file mode 100644
index 00000000000..2f27a4abaad
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetOperator.md
@@ -0,0 +1,7 @@
+# SetOperator
+
+```txt
+tier4_external_api_msgs/Operator mode
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetRoute.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetRoute.md
new file mode 100644
index 00000000000..52169be6636
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetRoute.md
@@ -0,0 +1,7 @@
+# SetRoute
+
+```txt
+tier4_external_api_msgs/Route route
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetService.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetService.md
new file mode 100644
index 00000000000..a7fab9e6833
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetService.md
@@ -0,0 +1,7 @@
+# SetService
+
+```txt
+tier4_external_api_msgs/Service mode
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetVelocityLimit.md b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetVelocityLimit.md
new file mode 100644
index 00000000000..1e08ecd4b17
--- /dev/null
+++ b/docs/design/ad-api/prototyping/type/tier4_external_api_msgs/srv/SetVelocityLimit.md
@@ -0,0 +1,7 @@
+# SetVelocityLimit
+
+```txt
+float32 velocity
+---
+tier4_external_api_msgs/ResponseStatus status
+```
diff --git a/tools/autoware_api_document/CMakeLists.txt b/tools/autoware_api_document/CMakeLists.txt
new file mode 100644
index 00000000000..796eca827f6
--- /dev/null
+++ b/tools/autoware_api_document/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 3.8)
+project(autoware_api_document)
+
+find_package(ament_cmake_auto REQUIRED)
+ament_auto_find_build_dependencies()
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_python_install_package(${PROJECT_NAME} PACKAGE_DIR python)
+
+install(
+ PROGRAMS script/generate
+ DESTINATION lib/${PROJECT_NAME}
+)
+
+ament_auto_package(INSTALL_TO_SHARE resource)
diff --git a/tools/autoware_api_document/package.xml b/tools/autoware_api_document/package.xml
new file mode 100644
index 00000000000..72ce87f65a6
--- /dev/null
+++ b/tools/autoware_api_document/package.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ autoware_api_document
+ 0.0.0
+ The autoware_api_document package
+ Takagi, Isamu
+ Apache License 2.0
+
+ ament_cmake_auto
+ ament_cmake_python
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+
+
diff --git a/tools/autoware_api_document/python/__init__.py b/tools/autoware_api_document/python/__init__.py
new file mode 100644
index 00000000000..c77c8001c20
--- /dev/null
+++ b/tools/autoware_api_document/python/__init__.py
@@ -0,0 +1,106 @@
+# Copyright 2021 Tier IV, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import argparse
+import pathlib
+from ament_index_python.packages import get_package_share_directory
+from .specification import AutowareAPI
+from .specification import TypeDefinition
+from .markdown import MarkdownTable
+
+
+def generate():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('path', default='docs/design/ad-api/prototyping', nargs='?')
+ args = parser.parse_args()
+
+ target = pathlib.Path(args.path)
+ if not target.exists():
+ raise Exception('target is not found')
+
+ groups = [
+ ('external', 'autoware_api_document', 'resource/tier4.yaml'),
+ ]
+ groups = [(data[0], list(AutowareAPI.Load(*data[1:]))) for data in groups]
+
+ # create list
+ generate_list(target, groups)
+
+ # create page
+ for _, specs in groups:
+ for spec in specs:
+ if spec.page:
+ generate_page(target, spec)
+
+ # create type
+ for definition in TypeDefinition.definitions.values():
+ if definition.page:
+ generate_type(target, definition)
+
+
+def generate_list(target, groups):
+ with target.joinpath('api/list.md').open('w') as fp:
+ fp.write('# List of Autoware API\n\n')
+ for group, specs in groups:
+ table = MarkdownTable('Type', 'Name', 'Data')
+ for spec in specs:
+ spec_name = make_page_link(spec)
+ type_name = make_type_link(spec)
+ table.line(spec.behavior, spec_name, type_name)
+ fp.write('## {} API\n\n'.format(group.capitalize()))
+ fp.write(table.text() + '\n')
+
+
+def make_page_link(spec : AutowareAPI):
+ if spec.page is None:
+ return spec.spec_name
+ spec_link = '../..' + spec.spec_name
+ return '[{}]({})'.format(spec.spec_name, spec_link)
+
+
+def make_type_link(spec : AutowareAPI):
+ if spec.typedef.page is None:
+ return spec.data_type
+ data_link = '../../type/' + spec.data_type
+ return '[{}]({})'.format(spec.data_type, data_link)
+
+
+def generate_page(target, spec):
+ lines = [
+ '# ' + spec.spec_name,
+ '',
+ '## Classification',
+ '',
+ '- Behavior: ' + spec.behavior.capitalize(),
+ '- DataType: ' + spec.data_type,
+ '',
+ spec.page,
+ ]
+ path = target.joinpath(spec.spec_name.strip('/')).with_suffix('.md')
+ path.parent.mkdir(parents=True, exist_ok=True)
+ path.write_text('\n'.join(lines) + '\n')
+
+
+def generate_type(target, definition):
+ # use html tag to enable hyperlink in code block
+ lines = [
+ '# ' + definition.name,
+ '',
+ '```txt',
+ definition.page,
+ '```',
+ ]
+ path = target.joinpath('type', definition.path).with_suffix('.md')
+ path.parent.mkdir(parents=True, exist_ok=True)
+ path.write_text('\n'.join(lines) + '\n')
diff --git a/tools/autoware_api_document/python/markdown.py b/tools/autoware_api_document/python/markdown.py
new file mode 100644
index 00000000000..6c463efd36a
--- /dev/null
+++ b/tools/autoware_api_document/python/markdown.py
@@ -0,0 +1,36 @@
+# Copyright 2021 Tier IV, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+class MarkdownTable(object):
+
+ def __init__(self, *header):
+ self.header = header
+ self.table = []
+
+ def line(self, *values):
+ self.table.append(values)
+
+ def text(self):
+ return '\n'.join('| {} |'.format(line) for line in self.texts())
+
+ def texts(self):
+ width = map(len, self.header)
+ for line in self.table:
+ width = map(max, width, map(len, line))
+ width = list(width)
+ yield ' | '.join(s.ljust(w) for s, w in zip(self.header, width))
+ yield ' | '.join('-' * w for w in width)
+ for line in self.table:
+ yield ' | '.join(s.ljust(w) for s, w in zip(line, width))
diff --git a/tools/autoware_api_document/python/specification.py b/tools/autoware_api_document/python/specification.py
new file mode 100644
index 00000000000..559bfd6c521
--- /dev/null
+++ b/tools/autoware_api_document/python/specification.py
@@ -0,0 +1,125 @@
+# Copyright 2021 Tier IV, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import pathlib
+import re
+import yaml
+from ament_index_python.packages import get_package_share_directory
+
+
+class TypeDefinition(object):
+
+ definitions = {}
+ my_packages = {
+ 'autoware_external_api_msgs',
+ 'tier4_external_api_msgs'
+ }
+
+ def __init__(self, path):
+ self._path = path
+ self._page = self.__load_page(self._path)
+
+ def __load_page(self, name):
+ name = name.split('/')
+ path = pathlib.Path(get_package_share_directory(name[0]))
+ path = path.joinpath(*name[1:]).with_suffix('.' + name[1])
+ return path.read_text().strip() if path.exists() else None
+
+ """
+ def __load_page(self, name):
+ name = name.split('/')
+ if name[0] not in self.my_packages:
+ return None
+ path = pathlib.Path(get_package_share_directory(name[0]))
+ path = path.joinpath(*name[1:]).with_suffix('.' + name[1])
+ return self.__highlight(path.read_text().strip()) if path.exists() else None
+
+ def __highlight(self, text):
+ code = ''
+ for line in text.split('\n'):
+ match = re.match(R'^([\w/]*)(.*)$', line)
+ names = match.group(1).split('/')
+ other = match.group(2)
+ if names[0] in self.my_packages:
+ data = names.copy()
+ data.insert(-1, 'msg')
+ data = TypeDefinition.Get('/'.join(data))
+ line = '{}{}'.format(data.path, '/'.join(names), other)
+ code += line + '\n'
+ return code
+ """
+
+ @property
+ def name(self):
+ return self._path.split('/')[-1]
+
+ @property
+ def path(self):
+ return self._path
+
+ @property
+ def page(self):
+ return self._page
+
+ @classmethod
+ def Get(cls, name):
+ definition = cls.definitions.get(name)
+ if not definition:
+ definition = TypeDefinition(name)
+ cls.definitions[name] = definition
+ return definition
+
+class AutowareAPI(object):
+
+ def __init__(self, name, data):
+ self._name = name.strip('/').split('/')
+ self._data = data
+ self._page = self.__load_page(name)
+ self._type = self.__load_type(data['type'])
+
+ def __load_page(self, name):
+ name = name.split('/')
+ path = pathlib.Path(get_package_share_directory('autoware_api_document'))
+ path = path.joinpath('resource/page', name[0], '-'.join(name[1:])).with_suffix('.md')
+ return path.read_text().strip() if path.exists() else None
+
+ def __load_type(self, name):
+ return TypeDefinition.Get(name)
+
+ @property
+ def spec_name(self):
+ return '/api/' + '/'.join(self._name)
+
+ @property
+ def data_type(self):
+ return self._data.get('type', '---')
+
+ @property
+ def behavior(self):
+ return self._data['behavior']
+
+ @property
+ def page(self):
+ return self._page
+
+ @property
+ def typedef(self):
+ return self._type
+
+ @staticmethod
+ def Load(package: str, path : str):
+ package = get_package_share_directory(package)
+ path = pathlib.Path(package, path)
+ for name, data in yaml.safe_load(path.read_text()).items():
+ yield AutowareAPI(name, data)
diff --git a/tools/autoware_api_document/resource/page/external/get-command-selected-control.md b/tools/autoware_api_document/resource/page/external/get-command-selected-control.md
new file mode 100644
index 00000000000..010df5e8abc
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-command-selected-control.md
@@ -0,0 +1,7 @@
+## Description
+
+車両にて受け付けた最新の制御コマンドを取得する。
+
+## Requirement
+
+車両が受け付けた local/remote いずれかの制御コマンドを提供すること。
diff --git a/tools/autoware_api_document/resource/page/external/get-command-selected-vehicle.md b/tools/autoware_api_document/resource/page/external/get-command-selected-vehicle.md
new file mode 100644
index 00000000000..020c173be4f
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-command-selected-vehicle.md
@@ -0,0 +1,7 @@
+## Description
+
+車両に送信している最新の制御コマンドを取得する。
+
+## Requirement
+
+車両に送信している各種処理を行った最終的な制御コマンドを提供すること。
diff --git a/tools/autoware_api_document/resource/page/external/get-diagnostics.md b/tools/autoware_api_document/resource/page/external/get-diagnostics.md
new file mode 100644
index 00000000000..1d481474041
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-diagnostics.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の各種診断情報を取得する。
+
+## Requirement
+
+現在の車両の状態に応じて分類した各種診断情報を提供すること。
diff --git a/tools/autoware_api_document/resource/page/external/get-door.md b/tools/autoware_api_document/resource/page/external/get-door.md
new file mode 100644
index 00000000000..6e8f22120da
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-door.md
@@ -0,0 +1,7 @@
+## Description
+
+車両のドア状態を取得する。
+
+## Requirement
+
+車両のドア状態を提供すること。
diff --git a/tools/autoware_api_document/resource/page/external/get-emergency.md b/tools/autoware_api_document/resource/page/external/get-emergency.md
new file mode 100644
index 00000000000..9004c7d287a
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-emergency.md
@@ -0,0 +1,7 @@
+## Description
+
+車両を外部指示緊急停止状態を取得する。
+
+## Requirement
+
+車両の停止が完了しているかに関わらず、外部指示緊急停止状態が取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-engage.md b/tools/autoware_api_document/resource/page/external/get-engage.md
new file mode 100644
index 00000000000..1ad8d3f55a9
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-engage.md
@@ -0,0 +1,7 @@
+## Description
+
+エンゲージ状態を取得する。
+
+## Requirement
+
+現在のエンゲージ状態が取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-map-info-hash.md b/tools/autoware_api_document/resource/page/external/get-map-info-hash.md
new file mode 100644
index 00000000000..5c4522fcb6b
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-map-info-hash.md
@@ -0,0 +1,7 @@
+## Description
+
+現在設定されている地図のハッシュを取得する。
+
+## Requirement
+
+地図データを保持するファイルのハッシュ値(SHA-256)を取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-map-lanelet-xml.md b/tools/autoware_api_document/resource/page/external/get-map-lanelet-xml.md
new file mode 100644
index 00000000000..af29b3d3957
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-map-lanelet-xml.md
@@ -0,0 +1,7 @@
+## Description
+
+地図情報を Lanelet の XML(OSM) 形式で取得する。
+
+## Requirement
+
+必要に応じて地図フォーマットの変換を行い、地図情報が Lanelet の XML(OSM) 形式で取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-metadata-packages.md b/tools/autoware_api_document/resource/page/external/get-metadata-packages.md
new file mode 100644
index 00000000000..dd70a96719b
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-metadata-packages.md
@@ -0,0 +1,7 @@
+## Description
+
+Autoware の実装バージョンを特定するための各種情報を取得する。
+
+## Requirement
+
+Autoware を構成する各パッケージが本 API 向けの情報を提供している場合、パッケージ名をキーとする辞書形式で情報が取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-observer.md b/tools/autoware_api_document/resource/page/external/get-observer.md
new file mode 100644
index 00000000000..6e360513b56
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-observer.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の監視を行う対象を取得する。
+
+## Requirement
+
+現在車両の監視を行っている対象を取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-operator.md b/tools/autoware_api_document/resource/page/external/get-operator.md
new file mode 100644
index 00000000000..af45fd5cd00
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-operator.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の操作を行う対象を取得する。
+
+## Requirement
+
+現在車両の操作を行っている対象を取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-route.md b/tools/autoware_api_document/resource/page/external/get-route.md
new file mode 100644
index 00000000000..e2c416cbc85
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-route.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の運行ルートを取得する。
+
+## Requirement
+
+[[/api/external/set/route]]により設定された運行ルートを取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-service.md b/tools/autoware_api_document/resource/page/external/get-service.md
new file mode 100644
index 00000000000..17cc50e2f75
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-service.md
@@ -0,0 +1,7 @@
+## Description
+
+車両のサービス提供状態を取得する。
+
+## Requirement
+
+[[/api/external/set/engage]]により設定されたサービス状態を取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-vehicle-status.md b/tools/autoware_api_document/resource/page/external/get-vehicle-status.md
new file mode 100644
index 00000000000..c3e1b6d356d
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-vehicle-status.md
@@ -0,0 +1,7 @@
+## Description
+
+車両制御に関する情報を取得する。
+
+## Requirement
+
+車両の速度、ステア、ウィンカー、ギアに関する情報を取得できること。
diff --git a/tools/autoware_api_document/resource/page/external/get-version.md b/tools/autoware_api_document/resource/page/external/get-version.md
new file mode 100644
index 00000000000..d5cf4a9fece
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/get-version.md
@@ -0,0 +1,11 @@
+## Description
+
+Autoware External API のバージョン情報を取得する。
+
+## Requirement
+
+以下の規則に従ったバージョン文字列`major.minor.patch`が取得できること。
+
+- major: 全体に関わる大規模な変更があったとき。
+- minor: 互換性の失われる変更があったとき。
+- patch: 互換性の維持される変更があったとき。
diff --git a/tools/autoware_api_document/resource/page/external/set-clear_route.md b/tools/autoware_api_document/resource/page/external/set-clear_route.md
new file mode 100644
index 00000000000..dd28cb712dc
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-clear_route.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の運行ルートを取り消す。
+
+## Requirement
+
+[[/api/external/set/route]]により設定された運行ルートを取り消すこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-local-control.md b/tools/autoware_api_document/resource/page/external/set-command-local-control.md
new file mode 100644
index 00000000000..e9f37ea7e41
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-local-control.md
@@ -0,0 +1,7 @@
+## Description
+
+車両のアクセル・ブレーキ・ステアリングを制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-local-heartbeat.md b/tools/autoware_api_document/resource/page/external/set-command-local-heartbeat.md
new file mode 100644
index 00000000000..ba3d1a3316b
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-local-heartbeat.md
@@ -0,0 +1,7 @@
+## Description
+
+車両との通信状態を確認するための信号を送信する。
+
+## Requirement
+
+この信号が途切れた場合、車両は監視されていない状態になったとして適切な制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-local-shift.md b/tools/autoware_api_document/resource/page/external/set-command-local-shift.md
new file mode 100644
index 00000000000..8cbe8aeb3db
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-local-shift.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の変速機を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-local-turn_signal.md b/tools/autoware_api_document/resource/page/external/set-command-local-turn_signal.md
new file mode 100644
index 00000000000..934345389cf
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-local-turn_signal.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の方向指示器を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-remote-control.md b/tools/autoware_api_document/resource/page/external/set-command-remote-control.md
new file mode 100644
index 00000000000..e9f37ea7e41
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-remote-control.md
@@ -0,0 +1,7 @@
+## Description
+
+車両のアクセル・ブレーキ・ステアリングを制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-remote-heartbeat.md b/tools/autoware_api_document/resource/page/external/set-command-remote-heartbeat.md
new file mode 100644
index 00000000000..ba3d1a3316b
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-remote-heartbeat.md
@@ -0,0 +1,7 @@
+## Description
+
+車両との通信状態を確認するための信号を送信する。
+
+## Requirement
+
+この信号が途切れた場合、車両は監視されていない状態になったとして適切な制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-remote-shift.md b/tools/autoware_api_document/resource/page/external/set-command-remote-shift.md
new file mode 100644
index 00000000000..8cbe8aeb3db
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-remote-shift.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の変速機を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-command-remote-turn_signal.md b/tools/autoware_api_document/resource/page/external/set-command-remote-turn_signal.md
new file mode 100644
index 00000000000..934345389cf
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-command-remote-turn_signal.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の方向指示器を制御するコマンドを送信する。
+
+## Requirement
+
+現在の車両状態を考慮し、指定されたコマンドを可能な限り反映した制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-door.md b/tools/autoware_api_document/resource/page/external/set-door.md
new file mode 100644
index 00000000000..e3b435ee871
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-door.md
@@ -0,0 +1,7 @@
+## Description
+
+車両のドア開閉を行う。
+
+## Requirement
+
+車両のドア操作を行うこと。車両にドアがない場合は常に失敗として応答すること。
diff --git a/tools/autoware_api_document/resource/page/external/set-emergency.md b/tools/autoware_api_document/resource/page/external/set-emergency.md
new file mode 100644
index 00000000000..f4567d5392c
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-emergency.md
@@ -0,0 +1,7 @@
+## Description
+
+車両を外部指示緊急停止状態に設定する。
+
+## Requirement
+
+現在の車両の状態を考慮した適切な緊急停止の制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-engage.md b/tools/autoware_api_document/resource/page/external/set-engage.md
new file mode 100644
index 00000000000..3ead9998ed7
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-engage.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の停止保持状態を設定・解除する。自律制御開始時、または、停留所や荷物の積み下ろし中など、何らかのユーザー操作が行われるまで車両の停止を継続させる。
+
+## Requirement
+
+エンゲージ状態が true に設定されていない場合、車両が停止保持するように制御信号を出力すること。
diff --git a/tools/autoware_api_document/resource/page/external/set-initialize_pose.md b/tools/autoware_api_document/resource/page/external/set-initialize_pose.md
new file mode 100644
index 00000000000..6f04b35f23c
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-initialize_pose.md
@@ -0,0 +1,7 @@
+## Description
+
+指定した位置姿勢をもとに、車両の位置姿勢を初期化・再設定する。
+
+## Requirement
+
+位置姿勢に関する事前状態を考慮せず、指定した位置姿勢のみを用いて車両の位置姿勢を初期化・再設定する。
diff --git a/tools/autoware_api_document/resource/page/external/set-initialize_pose_auto.md b/tools/autoware_api_document/resource/page/external/set-initialize_pose_auto.md
new file mode 100644
index 00000000000..c3fbf7bd1a0
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-initialize_pose_auto.md
@@ -0,0 +1,7 @@
+## Description
+
+GNSS による位置姿勢をもとに、車両の位置姿勢を初期化・再設定する。
+
+## Requirement
+
+位置姿勢に関する事前状態を考慮せず、GNSS による位置姿勢のみを用いて車両の位置姿勢を初期化・再設定する。
diff --git a/tools/autoware_api_document/resource/page/external/set-observer.md b/tools/autoware_api_document/resource/page/external/set-observer.md
new file mode 100644
index 00000000000..6ba45ab877e
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-observer.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の監視を行う対象を設定する。
+
+## Requirement
+
+指定された対象が車両を監視できる状態か確認して切り替えを行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-operator.md b/tools/autoware_api_document/resource/page/external/set-operator.md
new file mode 100644
index 00000000000..fb3c4658881
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-operator.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の操作を行う対象を設定する。
+
+## Requirement
+
+指定された対象が車両を操作できる状態か確認して切り替えを行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-pause_driving.md b/tools/autoware_api_document/resource/page/external/set-pause_driving.md
new file mode 100644
index 00000000000..52d8da3d7bf
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-pause_driving.md
@@ -0,0 +1,7 @@
+## Description
+
+車両を停止状態に設定する。
+
+## Requirement
+
+現在の車両の状態を考慮した適切な停止の制御を行うこと。
diff --git a/tools/autoware_api_document/resource/page/external/set-route.md b/tools/autoware_api_document/resource/page/external/set-route.md
new file mode 100644
index 00000000000..554bda27120
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-route.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の運行ルートを設定する。
+
+## Requirement
+
+指定された運行ルートを用いて車両の走行経路を設定すること。
diff --git a/tools/autoware_api_document/resource/page/external/set-service.md b/tools/autoware_api_document/resource/page/external/set-service.md
new file mode 100644
index 00000000000..60959f1fc5e
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-service.md
@@ -0,0 +1,7 @@
+## Description
+
+車両のサービス提供状態を設定する。
+
+## Requirement
+
+指定されたサービス状態を保持すること。
diff --git a/tools/autoware_api_document/resource/page/external/set-velocity_limit.md b/tools/autoware_api_document/resource/page/external/set-velocity_limit.md
new file mode 100644
index 00000000000..fbebe073e5b
--- /dev/null
+++ b/tools/autoware_api_document/resource/page/external/set-velocity_limit.md
@@ -0,0 +1,7 @@
+## Description
+
+車両の制限速度を設定する。
+
+## Requirement
+
+指定された制限速度以下になるように車両の制御を行うこと。現在の速度が制限速度を超えている場合、車両の状態を考慮して適切に制限速度以下になるような制御を行うこと。
diff --git a/tools/autoware_api_document/resource/tier4.yaml b/tools/autoware_api_document/resource/tier4.yaml
new file mode 100644
index 00000000000..e241f9b5efa
--- /dev/null
+++ b/tools/autoware_api_document/resource/tier4.yaml
@@ -0,0 +1,105 @@
+external/get/version:
+ behavior: service
+ type: autoware_external_api_msgs/srv/GetVersion
+external/get/metadata/packages:
+ behavior: service
+ type: tier4_external_api_msgs/srv/GetMetadataPackages
+external/set/service:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetService
+external/get/service:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Service
+external/get/diagnostics:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/ClassifiedDiagnostics
+external/set/engage:
+ behavior: service
+ type: tier4_external_api_msgs/srv/Engage
+external/get/engage:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/EngageStatus
+external/set/emergency:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetEmergency
+external/get/emergency:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Emergency
+external/set/door:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetDoor
+external/get/door:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/DoorStatus
+external/get/vehicle/status:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/VehicleStatusStamped
+external/set/initialize_pose:
+ behavior: service
+ type: tier4_external_api_msgs/srv/InitializePose
+external/set/initialize_pose_auto:
+ behavior: service
+ type: tier4_external_api_msgs/srv/InitializePoseAuto
+external/set/route:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetRoute
+external/get/route:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Route
+external/set/clear_route:
+ behavior: service
+ type: tier4_external_api_msgs/srv/ClearRoute
+external/set/operator:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetOperator
+external/get/operator:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Operator
+external/set/observer:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetObserver
+external/get/observer:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Observer
+external/get/map/info/hash:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/MapHash
+external/get/map/lanelet/xml:
+ behavior: service
+ type: tier4_external_api_msgs/srv/GetTextFile
+external/set/pause_driving:
+ behavior: service
+ type: tier4_external_api_msgs/srv/PauseDriving
+external/set/velocity_limit:
+ behavior: service
+ type: tier4_external_api_msgs/srv/SetVelocityLimit
+external/set/command/local/control:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/ControlCommandStamped
+external/set/command/local/shift:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/GearShiftStamped
+external/set/command/local/turn_signal:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/TurnSignalStamped
+external/set/command/local/heartbeat:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Heartbeat
+external/set/command/remote/control:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/ControlCommandStamped
+external/set/command/remote/shift:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/GearShiftStamped
+external/set/command/remote/turn_signal:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/TurnSignalStamped
+external/set/command/remote/heartbeat:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/Heartbeat
+external/get/command/selected/control:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/ControlCommandStamped
+external/get/command/selected/vehicle:
+ behavior: topic
+ type: tier4_external_api_msgs/msg/ControlCommandStamped
diff --git a/tools/autoware_api_document/script/generate b/tools/autoware_api_document/script/generate
new file mode 100755
index 00000000000..d43bf69b95a
--- /dev/null
+++ b/tools/autoware_api_document/script/generate
@@ -0,0 +1,19 @@
+#!/usr/bin/python3
+
+# Copyright 2021 Tier IV, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import autoware_api_document
+
+autoware_api_document.generate()