github.com/tada-team/tdproto@v1.51.57/codegen/openapi/openapi_objects.go (about)

     1  package main
     2  
     3  type openApiRef struct {
     4  	Ref string `json:"$ref,omitempty"`
     5  }
     6  
     7  type openApiServer struct {
     8  	Url         string `json:"url"`
     9  	Description string `json:"description,omitempty"`
    10  }
    11  
    12  type openApiInfo struct {
    13  	Title       string `json:"title"`
    14  	Description string `json:"description,omitempty"`
    15  	Version     string `json:"version"`
    16  }
    17  
    18  type openApiIn string
    19  
    20  const (
    21  	InQuery  openApiIn = "query"
    22  	InHeader openApiIn = "header"
    23  	InPath   openApiIn = "path"
    24  	InCookie openApiIn = "cookie"
    25  )
    26  
    27  type openApiParameter struct {
    28  	Name        string        `json:"name"`
    29  	In          openApiIn     `json:"in,omitempty"`
    30  	Required    bool          `json:"required,omitempty"`
    31  	Description string        `json:"description,omitempty"`
    32  	Schema      openApiSchema `json:"schema"`
    33  }
    34  
    35  type openApiContent struct {
    36  	Schema openApiSchema `json:"schema"`
    37  }
    38  
    39  type openApiContents struct {
    40  	ApplicationJSON               *openApiContent `json:"application/json,omitempty"`
    41  	ApplicationXWWWFormUrlencoded *openApiContent `json:"application/x-www-form-urlencoded,omitempty"`
    42  }
    43  
    44  type openApiRequestBody struct {
    45  	Content openApiContents `json:"content,omitempty"`
    46  }
    47  
    48  type openApiResponse struct {
    49  	Description string          `json:"description"`
    50  	Content     openApiContents `json:"content"`
    51  }
    52  
    53  type openApiOperation struct {
    54  	Tags        []string                   `json:"tags,omitempty"`
    55  	Summary     string                     `json:"summary,omitempty"`
    56  	Description string                     `json:"description,omitempty"`
    57  	Responses   map[string]openApiResponse `json:"responses,omitempty"`
    58  	RequestBody *openApiRequestBody        `json:"requestBody,omitempty"`
    59  	Security    []map[string][]string      `json:"security,omitempty"`
    60  	Parameters  []openApiParameter         `json:"parameters,omitempty"`
    61  }
    62  
    63  type openApiPath struct {
    64  	Parameters []openApiParameter `json:"parameters,omitempty"`
    65  	Summary    string             `json:"summary,omitempty"`
    66  	Get        *openApiOperation  `json:"get,omitempty"`
    67  	Post       *openApiOperation  `json:"post,omitempty"`
    68  	Put        *openApiOperation  `json:"put,omitempty"`
    69  	Delete     *openApiOperation  `json:"delete,omitempty"`
    70  }
    71  
    72  type openApiType string
    73  
    74  const (
    75  	openApiString  openApiType = "string"
    76  	openApiArray   openApiType = "array"
    77  	openApiObject  openApiType = "object"
    78  	openApiBoolean openApiType = "boolean"
    79  	openApiNumber  openApiType = "number"
    80  	openApiInteger openApiType = "integer"
    81  )
    82  
    83  type openApiFormat string
    84  
    85  const (
    86  	openApiUuid     openApiFormat = "uuid"
    87  	openApiBinary   openApiFormat = "binary"
    88  	openApiEmail    openApiFormat = "email"
    89  	openApiInt32    openApiFormat = "int32"
    90  	openApiInt64    openApiFormat = "int64"
    91  	openApiBase64   openApiFormat = "base64"
    92  	openApiDateTime openApiFormat = "date-time"
    93  )
    94  
    95  type openApiSchema struct {
    96  	openApiRef
    97  	Type                 openApiType              `json:"type,omitempty"`
    98  	Format               openApiFormat            `json:"format,omitempty"`
    99  	IsNullable           bool                     `json:"nullable,omitempty"`
   100  	Properties           map[string]openApiSchema `json:"properties,omitempty"`
   101  	Items                *openApiSchema           `json:"items,omitempty"`
   102  	Required             []string                 `json:"required,omitempty"`
   103  	Description          string                   `json:"description,omitempty"`
   104  	Example              interface{}              `json:"example,omitempty"`
   105  	AdditionalProperties *openApiSchema           `json:"additionalProperties,omitempty"`
   106  }
   107  
   108  type openApiComponents struct {
   109  	Schemas         map[string]openApiSchema   `json:"schemas,omitempty"`
   110  	SecuritySchemes map[string]openApiSecurity `json:"securitySchemes,omitempty"`
   111  }
   112  
   113  type openApiSecurityType string
   114  
   115  const (
   116  	openApiSecurityTypeApiKey        openApiSecurityType = "apiKey"
   117  	openApiSecurityTypeHttp          openApiSecurityType = "http"
   118  	openApiSecurityTypeO2Auth        openApiSecurityType = "oauth2"
   119  	openApiSecurityTypeOpenIdConnect openApiSecurityType = "openIdConnect"
   120  )
   121  
   122  type openApiSecurityIn string
   123  
   124  const (
   125  	openApiSecurityInQuery  openApiSecurityIn = "query"
   126  	openApiSecurityInHeader openApiSecurityIn = "header"
   127  	openApiSecurityInCookie openApiSecurityIn = "cookie"
   128  )
   129  
   130  type openApiSecurity struct {
   131  	Type openApiSecurityType `json:"type"`
   132  	Name string              `json:"name"`
   133  	In   openApiSecurityIn   `json:"in"`
   134  	// TODO: add the rest of the field if they are ever requered
   135  }
   136  
   137  type openApiRoot struct {
   138  	OpenApiVersion string                 `json:"openapi"`
   139  	Info           openApiInfo            `json:"info"`
   140  	Servers        []openApiServer        `json:"servers,omitempty"`
   141  	Paths          map[string]openApiPath `json:"paths"`
   142  	Components     openApiComponents      `json:"components"`
   143  	Security       []map[string][]string  `json:"security,omitempty"`
   144  }