diff --git a/internal/api/docs/openapi.yaml b/internal/api/docs/openapi.yaml index f32c9a76..cb8b4b59 100644 --- a/internal/api/docs/openapi.yaml +++ b/internal/api/docs/openapi.yaml @@ -1192,7 +1192,7 @@ components: properties: bricks: items: - $ref: '#/components/schemas/BrickInstance' + $ref: '#/components/schemas/BrickInstanceListItem' nullable: true type: array type: object @@ -1380,6 +1380,31 @@ components: for backward compatibility.' type: object type: object + BrickInstanceListItem: + properties: + author: + type: string + category: + type: string + config_variables: + items: + $ref: '#/components/schemas/BrickConfigVariable' + type: array + id: + type: string + model: + type: string + name: + type: string + status: + type: string + variables: + additionalProperties: + type: string + description: 'Deprecated: use config_variables instead. This field is kept + for backward compatibility.' + type: object + type: object BrickListItem: properties: author: diff --git a/internal/e2e/client/client.gen.go b/internal/e2e/client/client.gen.go index 496680c9..c6ff34f3 100644 --- a/internal/e2e/client/client.gen.go +++ b/internal/e2e/client/client.gen.go @@ -66,7 +66,7 @@ type AIModelsListResult struct { // AppBrickInstancesResult defines model for AppBrickInstancesResult. type AppBrickInstancesResult struct { - Bricks *[]BrickInstance `json:"bricks"` + Bricks *[]BrickInstanceListItem `json:"bricks"` } // AppDetailedBrick defines model for AppDetailedBrick. @@ -174,6 +174,20 @@ type BrickInstance struct { Variables *map[string]string `json:"variables,omitempty"` } +// BrickInstanceListItem defines model for BrickInstanceListItem. +type BrickInstanceListItem struct { + Author *string `json:"author,omitempty"` + Category *string `json:"category,omitempty"` + ConfigVariables *[]BrickConfigVariable `json:"config_variables,omitempty"` + Id *string `json:"id,omitempty"` + Model *string `json:"model,omitempty"` + Name *string `json:"name,omitempty"` + Status *string `json:"status,omitempty"` + + // Variables Deprecated: use config_variables instead. This field is kept for backward compatibility. + Variables *map[string]string `json:"variables,omitempty"` +} + // BrickListItem defines model for BrickListItem. type BrickListItem struct { Author *string `json:"author,omitempty"` diff --git a/internal/orchestrator/bricks/bricks.go b/internal/orchestrator/bricks/bricks.go index df49c1ec..218f96b5 100644 --- a/internal/orchestrator/bricks/bricks.go +++ b/internal/orchestrator/bricks/bricks.go @@ -71,7 +71,7 @@ func (s *Service) List() (BrickListResult, error) { } func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesResult, error) { - res := AppBrickInstancesResult{BrickInstances: make([]BrickInstance, len(a.Descriptor.Bricks))} + res := AppBrickInstancesResult{BrickInstances: make([]BrickInstanceListItem, len(a.Descriptor.Bricks))} for i, brickInstance := range a.Descriptor.Bricks { brick, found := s.bricksIndex.FindBrickByID(brickInstance.ID) if !found { @@ -80,19 +80,19 @@ func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesRes variablesMap, configVariables := getBrickConfigDetails(brick, brickInstance.Variables) - res.BrickInstances[i] = BrickInstance{ + res.BrickInstances[i] = BrickInstanceListItem{ ID: brick.ID, Name: brick.Name, Author: "Arduino", // TODO: for now we only support our bricks Category: brick.Category, Status: "installed", - RequireModel: brick.RequireModel, ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model? Variables: variablesMap, // TODO: do we want to show also the default value of not explicitly set variables? ConfigVariables: configVariables, } } + return res, nil } diff --git a/internal/orchestrator/bricks/types.go b/internal/orchestrator/bricks/types.go index 1fca898f..acaf57d9 100644 --- a/internal/orchestrator/bricks/types.go +++ b/internal/orchestrator/bricks/types.go @@ -30,7 +30,18 @@ type BrickListItem struct { } type AppBrickInstancesResult struct { - BrickInstances []BrickInstance `json:"bricks"` + BrickInstances []BrickInstanceListItem `json:"bricks"` +} + +type BrickInstanceListItem struct { + ID string `json:"id"` + Name string `json:"name"` + Author string `json:"author"` + Category string `json:"category"` + Status string `json:"status"` + Variables map[string]string `json:"variables,omitempty" description:"Deprecated: use config_variables instead. This field is kept for backward compatibility."` + ConfigVariables []BrickConfigVariable `json:"config_variables,omitempty"` + ModelID string `json:"model,omitempty"` } type BrickInstance struct {