github.com/rvichery/terraform@v0.11.10/registry/response/module.go (about)

     1  package response
     2  
     3  import (
     4  	"time"
     5  )
     6  
     7  // Module is the response structure with the data for a single module version.
     8  type Module struct {
     9  	ID string `json:"id"`
    10  
    11  	//---------------------------------------------------------------
    12  	// Metadata about the overall module.
    13  
    14  	Owner       string    `json:"owner"`
    15  	Namespace   string    `json:"namespace"`
    16  	Name        string    `json:"name"`
    17  	Version     string    `json:"version"`
    18  	Provider    string    `json:"provider"`
    19  	Description string    `json:"description"`
    20  	Source      string    `json:"source"`
    21  	PublishedAt time.Time `json:"published_at"`
    22  	Downloads   int       `json:"downloads"`
    23  	Verified    bool      `json:"verified"`
    24  }
    25  
    26  // ModuleDetail represents a module in full detail.
    27  type ModuleDetail struct {
    28  	Module
    29  
    30  	//---------------------------------------------------------------
    31  	// Metadata about the overall module. This is only available when
    32  	// requesting the specific module (not in list responses).
    33  
    34  	// Root is the root module.
    35  	Root *ModuleSubmodule `json:"root"`
    36  
    37  	// Submodules are the other submodules that are available within
    38  	// this module.
    39  	Submodules []*ModuleSubmodule `json:"submodules"`
    40  
    41  	//---------------------------------------------------------------
    42  	// The fields below are only set when requesting this specific
    43  	// module. They are available to easily know all available versions
    44  	// and providers without multiple API calls.
    45  
    46  	Providers []string `json:"providers"` // All available providers
    47  	Versions  []string `json:"versions"`  // All versions
    48  }
    49  
    50  // ModuleSubmodule is the metadata about a specific submodule within
    51  // a module. This includes the root module as a special case.
    52  type ModuleSubmodule struct {
    53  	Path   string `json:"path"`
    54  	Readme string `json:"readme"`
    55  	Empty  bool   `json:"empty"`
    56  
    57  	Inputs       []*ModuleInput    `json:"inputs"`
    58  	Outputs      []*ModuleOutput   `json:"outputs"`
    59  	Dependencies []*ModuleDep      `json:"dependencies"`
    60  	Resources    []*ModuleResource `json:"resources"`
    61  }
    62  
    63  // ModuleInput is an input for a module.
    64  type ModuleInput struct {
    65  	Name        string `json:"name"`
    66  	Description string `json:"description"`
    67  	Default     string `json:"default"`
    68  }
    69  
    70  // ModuleOutput is an output for a module.
    71  type ModuleOutput struct {
    72  	Name        string `json:"name"`
    73  	Description string `json:"description"`
    74  }
    75  
    76  // ModuleDep is an output for a module.
    77  type ModuleDep struct {
    78  	Name    string `json:"name"`
    79  	Source  string `json:"source"`
    80  	Version string `json:"version"`
    81  }
    82  
    83  // ModuleProviderDep is the output for a provider dependency
    84  type ModuleProviderDep struct {
    85  	Name    string `json:"name"`
    86  	Version string `json:"version"`
    87  }
    88  
    89  // ModuleResource is an output for a module.
    90  type ModuleResource struct {
    91  	Name string `json:"name"`
    92  	Type string `json:"type"`
    93  }