Des2Code 作成
メソッド
REST方式とする。
HTTPメソッド
POST: Des2Code request を trigger
命名規則
query parameter と node の naming を統一して readability を高めるため、request の URI/JSON node は snake_case を使用する。
リクエストとレスポンス
ヘッダー
meta information は response body ではなく HTTP header に設定する。
リクエストヘッダー
Authorization(Bearer session token)Content-TypeAcceptAccept-language
レスポンスヘッダー
Content-Type
Des2Code リクエスト
URI
リクエストボディ
request body は strict JSON です。
リクエストパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| design_id | string | 必須 | 1-500 文字。alphanumeric、_, :, - のみ |
project/organization override、model、prompt、index ID、matching bound は 受け付けません。backend は authorized PostgreSQL design row から scope を 解決します。unknown body field は reject します。
レスポンス
response は JSON(HTTP status: 202 Accepted)です。
{
"message": "Des2Code request queued successfully",
"designId": "42_hDDA9BNori9OTXSClduXqR_40002029:37033",
"requestId": "0192a3b4-c5d6-7e8f-9a0b-1c2d3e4f5a6b"
}
レスポンスフィールド
| 名前 | 型 | 説明 |
|---|---|---|
| message | string | queue acknowledgement |
| designId | string | authorized design ID |
| requestId | string | UUIDv7 correlation/artifact identity |
認証
protected user route で Bearer session token を検証します。authenticated subject は design project への access を持つ必要があります。
例外処理
| 説明 | Status Code | Status Name |
|---|---|---|
| invalid design ID/body または required field missing | 400 | Bad Request |
| Bearer token missing/invalid | 401 | Unauthorized |
| design not found または user から不可視 | 404 | Not Found |
| design import が completed ではない | 409 | Conflict (DESIGN_IMPORT_NOT_READY) |
AI-v2 current code_index が missing または ready ではない |
409 | Conflict (CODE_INDEX_NOT_READY) |
| internal server error | 500 | Internal Server Error |
| SQS unavailable | 503 | Service Unavailable |
処理フロー
- strict
design_idrequest body を validate する。 - PostgreSQL design と project/organization を読み、user access を enforce する。
- design status に
completedを要求する。 - organization scope 付き AI-v2
GET /internal/projects/{project_id}/code-indexを読み、current DocumentDB index にreadyを要求する。 - UUIDv7
requestIdを生成する。 design_id,project_id,organization_id,request_idだけを含む flatdes2codeSQS message を送る。- non-empty SQS message ID を要求して
202 Acceptedを返す。
詳細フローチャート
flowchart TD
Start([POST /v1/des2code]) --> Route[Route Handler]
Route --> ValidateToken[Bearer session 検証]
ValidateToken --> TokenValid{Valid?}
TokenValid -->|NG| Err401[401 Unauthorized]
TokenValid -->|OK| ExtractDesignId[strict design_id validation]
ExtractDesignId --> ValidateFormat{Format valid?}
ValidateFormat -->|NG| Err400[400 Bad Request]
ValidateFormat -->|OK| CheckDesign[design + project scope load]
CheckDesign --> DesignExists{Exists and authorized?}
DesignExists -->|No| Err404[404 Not Found]
DesignExists -->|Yes| DesignReady{Design completed?}
DesignReady -->|No| Err409Design[409 DESIGN_IMPORT_NOT_READY]
DesignReady -->|Yes| CheckIndex[AI-v2 current code_index read]
CheckIndex --> IndexReady{status = ready?}
IndexReady -->|No| Err409Index[409 CODE_INDEX_NOT_READY]
IndexReady -->|Yes| GenerateRequestId[UUIDv7 requestId]
GenerateRequestId --> SQSSend[flat des2code SQS message]
SQSSend --> SQSOK{MessageId present?}
SQSOK -->|NG| Err503[503 Service Unavailable]
SQSOK -->|OK| Success[202 Accepted]
非同期処理
この endpoint は queue への投入だけを行います。worker は success を
{organization_id}/{project_id}/des2code/{design_id}/{request_id}.json、failure
を同 filename の -failed に保存し、backend AI-status webhook を POST します。
webhook は design scope を validate/log しますが Des2Code PostgreSQL run row は
作成・更新しません。
trigger ごとに新しい request ID を発行し、その trigger の SQS retry は同じ artifact key を再利用します。client は GET を poll し、GET は authorized design prefix の最新 contract-valid request artifact を返します。
SQSエラーハンドリング
SQS send failure または empty MessageId の場合、202 acknowledgement 前に失敗
します。backend は sanitized design ID/request ID を log し、queue unavailable を
service error response に map します。