task_id: task_create_api_register_user entity_id: api_register_user generated_at: '2025-12-19T06:08:12.143531' workflow_version: v001 target: type: api definition: id: api_register_user method: POST path: /api/auth/register summary: Register a new user description: Create a new user account with email and password tags: - auth path_params: [] query_params: [] request_body: content_type: application/json schema: type: object properties: - name: email type: string required: true validations: - email description: User email address - name: name type: string required: true validations: - min:1 - max:100 description: User display name - name: password type: string required: true validations: - min:8 description: Password (min 8 characters) example: email: user@example.com name: John Doe password: securepass123 responses: - status: 201 description: User created successfully schema: type: object properties: - name: id type: uuid - name: email type: string - name: name type: string - name: created_at type: datetime example: id: 550e8400-e29b-41d4-a716-446655440000 email: user@example.com name: John Doe created_at: '2024-12-19T06:00:00Z' - status: 400 description: Validation error schema: type: object properties: - name: error type: string example: error: Invalid email or password too short - status: 409 description: Email already exists schema: type: object properties: - name: error type: string example: error: Email already registered depends_on_models: - model_user depends_on_apis: [] auth: required: false roles: [] rate_limit: requests: 10 window: 1h related: models: - id: model_user definition: &id001 id: model_user name: User description: Application user account with email/password authentication table_name: users fields: - name: id type: uuid constraints: - primary_key description: Unique user identifier - name: email type: string constraints: - unique - not_null - indexed description: User email address for login - name: name type: string constraints: - not_null description: User's display name - name: password_hash type: string constraints: - not_null description: Bcrypt hashed password relations: [] indexes: - fields: - email unique: true name: idx_users_email timestamps: true soft_delete: false validations: - field: email rule: email message: Invalid email format - field: name rule: min:1 message: Name is required - field: password_hash rule: min:60 message: Invalid password hash external: false apis: [] components: [] dependencies: entity_ids: - model_user definitions: - id: model_user type: model definition: *id001 external: false files: to_create: - app/api/auth/register/route.ts reference: [] acceptance: - criterion: POST /api/auth/register returns success response verification: curl -X POST /api/auth/register - criterion: Request validation implemented verification: Test with invalid data - criterion: Error responses match contract verification: Test error scenarios