@@ -345,7 +345,7 @@ def to_schema_dict(self) -> dict[str, Any]:
345345class SchemaRootAPI (BaseModel ):
346346 model_config = ConfigDict (use_enum_values = True )
347347
348- version : str
348+ main : str | None = None
349349 generics : list [GenericSchemaAPI ] = Field (default_factory = list )
350350 nodes : list [NodeSchemaAPI ] = Field (default_factory = list )
351351 profiles : list [ProfileSchemaAPI ] = Field (default_factory = list )
@@ -360,23 +360,29 @@ class BranchSchema(BaseModel):
360360
361361 @classmethod
362362 def from_api_response (cls , data : MutableMapping [str , Any ]) -> Self :
363+ """
364+ Convert an API response from /api/schema into a BranchSchema object.
365+ """
366+ return cls .from_schema_root_api (data = SchemaRootAPI (** data ))
367+
368+ @classmethod
369+ def from_schema_root_api (cls , data : SchemaRootAPI ) -> Self :
370+ """
371+ Convert a SchemaRootAPI object to a BranchSchema object.
372+ """
363373 nodes : MutableMapping [str , GenericSchemaAPI | NodeSchemaAPI | ProfileSchemaAPI | TemplateSchemaAPI ] = {}
364- for node_schema in data .get ("nodes" , []):
365- node = NodeSchemaAPI (** node_schema )
374+ for node in data .nodes :
366375 nodes [node .kind ] = node
367376
368- for generic_schema in data .get ("generics" , []):
369- generic = GenericSchemaAPI (** generic_schema )
377+ for generic in data .generics :
370378 nodes [generic .kind ] = generic
371379
372- for profile_schema in data .get ("profiles" , []):
373- profile = ProfileSchemaAPI (** profile_schema )
380+ for profile in data .profiles :
374381 nodes [profile .kind ] = profile
375382
376- for template_schema in data .get ("templates" , []):
377- template = TemplateSchemaAPI (** template_schema )
383+ for template in data .templates :
378384 nodes [template .kind ] = template
379385
380- schema_hash = data .get ( " main" , "" )
386+ schema_hash = data .main or ""
381387
382388 return cls (hash = schema_hash , nodes = nodes )
0 commit comments