| package response |
| |
| import ( |
| "time" |
| ) |
| |
| // Module is the response structure with the data for a single module version. |
| type Module struct { |
| ID string `json:"id"` |
| |
| //--------------------------------------------------------------- |
| // Metadata about the overall module. |
| |
| Owner string `json:"owner"` |
| Namespace string `json:"namespace"` |
| Name string `json:"name"` |
| Version string `json:"version"` |
| Provider string `json:"provider"` |
| Description string `json:"description"` |
| Source string `json:"source"` |
| PublishedAt time.Time `json:"published_at"` |
| Downloads int `json:"downloads"` |
| Verified bool `json:"verified"` |
| } |
| |
| // ModuleDetail represents a module in full detail. |
| type ModuleDetail struct { |
| Module |
| |
| //--------------------------------------------------------------- |
| // Metadata about the overall module. This is only available when |
| // requesting the specific module (not in list responses). |
| |
| // Root is the root module. |
| Root *ModuleSubmodule `json:"root"` |
| |
| // Submodules are the other submodules that are available within |
| // this module. |
| Submodules []*ModuleSubmodule `json:"submodules"` |
| |
| //--------------------------------------------------------------- |
| // The fields below are only set when requesting this specific |
| // module. They are available to easily know all available versions |
| // and providers without multiple API calls. |
| |
| Providers []string `json:"providers"` // All available providers |
| Versions []string `json:"versions"` // All versions |
| } |
| |
| // ModuleSubmodule is the metadata about a specific submodule within |
| // a module. This includes the root module as a special case. |
| type ModuleSubmodule struct { |
| Path string `json:"path"` |
| Readme string `json:"readme"` |
| Empty bool `json:"empty"` |
| |
| Inputs []*ModuleInput `json:"inputs"` |
| Outputs []*ModuleOutput `json:"outputs"` |
| Dependencies []*ModuleDep `json:"dependencies"` |
| Resources []*ModuleResource `json:"resources"` |
| } |
| |
| // ModuleInput is an input for a module. |
| type ModuleInput struct { |
| Name string `json:"name"` |
| Description string `json:"description"` |
| Default string `json:"default"` |
| } |
| |
| // ModuleOutput is an output for a module. |
| type ModuleOutput struct { |
| Name string `json:"name"` |
| Description string `json:"description"` |
| } |
| |
| // ModuleDep is an output for a module. |
| type ModuleDep struct { |
| Name string `json:"name"` |
| Source string `json:"source"` |
| Version string `json:"version"` |
| } |
| |
| // ModuleProviderDep is the output for a provider dependency |
| type ModuleProviderDep struct { |
| Name string `json:"name"` |
| Version string `json:"version"` |
| } |
| |
| // ModuleResource is an output for a module. |
| type ModuleResource struct { |
| Name string `json:"name"` |
| Type string `json:"type"` |
| } |