lablup / lablup/backend.ai

GraphQL API Metadata and Validation Enhancement

Open
#8,101 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
670
Forks
183
Avg merge
17h 7m
Merged PRs (30d)
358

Description

## Overview

Enhance GraphQL API with structured metadata management and unified input validation.

## Scope

### BEP-1031: GraphQL API Field Metadata Extension

- Define `backend_ai_field()`, `backend_ai_type()`, `backend_ai_input()` wrappers
- Integrate `BackendAIAPIMeta` with Strawberry GraphQL
- Enable automatic version prefix in descriptions
- Support deprecation_reason from metadata

### BEP-1032: Unified Input Validation for REST and GraphQL

- Share Pydantic models between REST and GraphQL
- Use `strawberry.experimental.pydantic.input()` for GraphQL inputs
- Centralize validation logic in `data/{domain}/specs.py`

## Goals

- Consistent API metadata management across REST and GraphQL
- Programmatic access to version information for documentation
- Single source of truth for input validation
- Reduced code duplication between API layers

## Related BEPs

- BEP-1022: Pydantic Field Metadata Annotation
- BEP-1031: GraphQL API Field Metadata Extension
- BEP-1032: Unified Input Validation

JIRA Issue: BA-3928

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.