feat: refonte métadonnées API + UX dossiers et import
- Nouveau schéma api_entries : convention+name, version X.X.X, provider, contacts splitées (name/entity/email), suppression des anciens champs - Formulaire upload étape 2 : convention+nom, version 3 champs, fournisseur, contacts métier et technique obligatoires ; type détecté auto → select désactivé - Validation YAML : redocly.yaml (extends: spec), support noms avec espaces, extraction métadonnées (name, version, description) depuis info YAML - Dossiers : modale création avec champ Emplacement pré-initialisé depuis le contexte de navigation, options └ avec indentation par profondeur - Import depuis un dossier : pré-sélection de la catégorie via queryParam - Recherche étendue : name, provider, description, contacts - Résolution @datacat/shared via workspace:* + compilation CJS avant NestJS Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
@@ -23,16 +23,20 @@ export class ApiService {
|
||||
}
|
||||
|
||||
update(id: string, data: {
|
||||
title?: string;
|
||||
version?: string;
|
||||
description?: string;
|
||||
convention?: string;
|
||||
name?: string;
|
||||
provider?: string;
|
||||
versionMajor?: number;
|
||||
versionMinor?: number;
|
||||
versionPatch?: number;
|
||||
description?: string | null;
|
||||
categoryId?: string | null;
|
||||
functionalDoc?: string | null;
|
||||
technicalDoc?: string | null;
|
||||
externalDocUrl?: string | null;
|
||||
contactFunctional?: string | null;
|
||||
contactTechnical?: string | null;
|
||||
accessRights?: string | null;
|
||||
contactFunctionalName?: string;
|
||||
contactFunctionalEntity?: string;
|
||||
contactFunctionalEmail?: string;
|
||||
contactTechnicalName?: string;
|
||||
contactTechnicalEntity?: string;
|
||||
contactTechnicalEmail?: string;
|
||||
}): Observable<ApiEntry> {
|
||||
return this.http.patch<ApiEntry>(`${this.baseUrl}/${id}`, data);
|
||||
}
|
||||
@@ -53,8 +57,10 @@ export class ApiService {
|
||||
valid: boolean;
|
||||
type: 'ASYNCAPI' | 'OPENAPI' | null;
|
||||
mainFile: string | null;
|
||||
title: string | null;
|
||||
version: string | null;
|
||||
name: string | null;
|
||||
versionMajor: number | null;
|
||||
versionMinor: number | null;
|
||||
versionPatch: number | null;
|
||||
description: string | null;
|
||||
errors: Array<{ file: string; message: string }>;
|
||||
}> {
|
||||
@@ -62,8 +68,10 @@ export class ApiService {
|
||||
valid: boolean;
|
||||
type: 'ASYNCAPI' | 'OPENAPI' | null;
|
||||
mainFile: string | null;
|
||||
title: string | null;
|
||||
version: string | null;
|
||||
name: string | null;
|
||||
versionMajor: number | null;
|
||||
versionMinor: number | null;
|
||||
versionPatch: number | null;
|
||||
description: string | null;
|
||||
errors: Array<{ file: string; message: string }>;
|
||||
}>('/api/uploads/validate', formData);
|
||||
|
||||
Reference in New Issue
Block a user