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 }