mirror of
https://github.com/go-gitea/gitea.git
synced 2026-09-22 20:53:40 +09:00
enhance(ui): use OpenAPI 3.0 spec in API viewer, add spec buttons (#38478)
Follow-ups from https://github.com/go-gitea/gitea/pull/37038: - Render the OpenAPI 3.0 spec in the API viewer, it is richer than the Swagger 2.0 rendering - Replace the back link with gitea-styled buttons to view both specs and return to Gitea, flowing above swagger-ui on viewports where they would overlap the title - Key `VisibilityModes` by the string enum type, now named `VisibilityString`, removing the `string()` casts at API call sites - Drop the raw visibility strings from the `Service` settings struct in favor of the typed mode fields, which also removes the org default visibility row from the admin config page - Fix two pre-existing issues surfaced in review: an invalid `DEFAULT_USER_VISIBILITY` was silently accepted as public, and the org visibility error message showed the enum zero value instead of the submitted input Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@@ -155,8 +155,6 @@
|
||||
<dt>{{ctx.Locale.Tr "admin.config.default_allow_only_contributors_to_track_time"}}</dt>
|
||||
<dd>{{svg (Iif .Service.DefaultAllowOnlyContributorsToTrackTime "octicon-check" "octicon-x")}}</dd>
|
||||
{{end}}
|
||||
<dt>{{ctx.Locale.Tr "admin.config.default_visibility_organization"}}</dt>
|
||||
<dd>{{.Service.DefaultOrgVisibility}}</dd>
|
||||
|
||||
<dt>{{ctx.Locale.Tr "admin.config.no_reply_address"}}</dt>
|
||||
<dd>{{if .Service.NoReplyAddress}}{{.Service.NoReplyAddress}}{{else}}-{{end}}</dd>
|
||||
|
||||
@@ -4,13 +4,17 @@
|
||||
{{ctx.HeadMetaContentSecurityPolicy}}
|
||||
<title>Gitea API</title>
|
||||
<link rel="stylesheet" href="{{ctx.CurrentWebTheme.PublicAssetURI}}">
|
||||
{{/* HINT: SWAGGER-CSS-IMPORT: load swagger styles ahead to avoid flicker (e.g. the swagger-back-link) */}}
|
||||
{{/* HINT: SWAGGER-CSS-IMPORT: load swagger styles ahead to avoid flicker (e.g. the swagger-page-links) */}}
|
||||
{{AssetCSSLinks "web_src/js/swagger.ts" "web_src/css/swagger-standalone.css"}}
|
||||
</head>
|
||||
<body>
|
||||
{{/* TODO: add Help & Glossary to help users understand the API, and explain some concepts like "Owner" */}}
|
||||
<a class="swagger-back-link" href="{{AppSubUrl}}/">{{svg "octicon-reply"}}{{ctx.Locale.Tr "return_to_gitea"}}</a>
|
||||
<div id="swagger-ui" data-source="{{AppSubUrl}}/swagger.v1.json"></div>
|
||||
<div class="swagger-page-links">
|
||||
<a href="{{AppSubUrl}}/openapi3.v1.json" target="_blank">{{svg "octicon-file-code"}}OpenAPI JSON</a>
|
||||
<a href="{{AppSubUrl}}/swagger.v1.json" target="_blank">{{svg "octicon-file-code"}}Swagger JSON</a>
|
||||
<a href="{{AppSubUrl}}/">{{svg "octicon-reply"}}{{ctx.Locale.Tr "return_to_gitea"}}</a>
|
||||
</div>
|
||||
<div id="swagger-ui" data-source="{{AppSubUrl}}/openapi3.v1.json"></div>
|
||||
<footer class="page-footer"></footer>
|
||||
{{ctx.ScriptImport "web_src/js/swagger.ts" "module"}}
|
||||
</body>
|
||||
|
||||
Generated
+6
-6
@@ -24561,7 +24561,7 @@
|
||||
"limited",
|
||||
"private"
|
||||
],
|
||||
"x-go-enum-desc": "public UserVisibilityPublic\nlimited UserVisibilityLimited\nprivate UserVisibilityPrivate",
|
||||
"x-go-enum-desc": "public VisibilityStringPublic\nlimited VisibilityStringLimited\nprivate VisibilityStringPrivate",
|
||||
"x-go-name": "Visibility"
|
||||
},
|
||||
"website": {
|
||||
@@ -25131,7 +25131,7 @@
|
||||
"limited",
|
||||
"private"
|
||||
],
|
||||
"x-go-enum-desc": "public UserVisibilityPublic\nlimited UserVisibilityLimited\nprivate UserVisibilityPrivate",
|
||||
"x-go-enum-desc": "public VisibilityStringPublic\nlimited VisibilityStringLimited\nprivate VisibilityStringPrivate",
|
||||
"x-go-name": "Visibility"
|
||||
}
|
||||
},
|
||||
@@ -25833,7 +25833,7 @@
|
||||
"limited",
|
||||
"private"
|
||||
],
|
||||
"x-go-enum-desc": "public UserVisibilityPublic\nlimited UserVisibilityLimited\nprivate UserVisibilityPrivate",
|
||||
"x-go-enum-desc": "public VisibilityStringPublic\nlimited VisibilityStringLimited\nprivate VisibilityStringPrivate",
|
||||
"x-go-name": "Visibility"
|
||||
},
|
||||
"website": {
|
||||
@@ -26375,7 +26375,7 @@
|
||||
"limited",
|
||||
"private"
|
||||
],
|
||||
"x-go-enum-desc": "public UserVisibilityPublic\nlimited UserVisibilityLimited\nprivate UserVisibilityPrivate",
|
||||
"x-go-enum-desc": "public VisibilityStringPublic\nlimited VisibilityStringLimited\nprivate VisibilityStringPrivate",
|
||||
"x-go-name": "Visibility"
|
||||
},
|
||||
"website": {
|
||||
@@ -28227,7 +28227,7 @@
|
||||
"limited",
|
||||
"private"
|
||||
],
|
||||
"x-go-enum-desc": "public UserVisibilityPublic\nlimited UserVisibilityLimited\nprivate UserVisibilityPrivate",
|
||||
"x-go-enum-desc": "public VisibilityStringPublic\nlimited VisibilityStringLimited\nprivate VisibilityStringPrivate",
|
||||
"x-go-name": "Visibility"
|
||||
},
|
||||
"website": {
|
||||
@@ -30590,7 +30590,7 @@
|
||||
"limited",
|
||||
"private"
|
||||
],
|
||||
"x-go-enum-desc": "public UserVisibilityPublic\nlimited UserVisibilityLimited\nprivate UserVisibilityPrivate",
|
||||
"x-go-enum-desc": "public VisibilityStringPublic\nlimited VisibilityStringLimited\nprivate VisibilityStringPrivate",
|
||||
"x-go-name": "Visibility"
|
||||
},
|
||||
"website": {
|
||||
|
||||
Generated
+7
-7
@@ -4304,7 +4304,7 @@
|
||||
"visibility": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/UserVisibility"
|
||||
"$ref": "#/components/schemas/VisibilityString"
|
||||
}
|
||||
],
|
||||
"description": "possible values are `public` (default), `limited` or `private`"
|
||||
@@ -4845,7 +4845,7 @@
|
||||
"visibility": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/UserVisibility"
|
||||
"$ref": "#/components/schemas/VisibilityString"
|
||||
}
|
||||
],
|
||||
"description": "User visibility level: public, limited, or private"
|
||||
@@ -5549,7 +5549,7 @@
|
||||
"visibility": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/UserVisibility"
|
||||
"$ref": "#/components/schemas/VisibilityString"
|
||||
}
|
||||
],
|
||||
"description": "possible values are `public`, `limited` or `private`"
|
||||
@@ -6075,7 +6075,7 @@
|
||||
"visibility": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/UserVisibility"
|
||||
"$ref": "#/components/schemas/VisibilityString"
|
||||
}
|
||||
],
|
||||
"description": "User visibility level: public, limited, or private"
|
||||
@@ -7949,7 +7949,7 @@
|
||||
"visibility": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/UserVisibility"
|
||||
"$ref": "#/components/schemas/VisibilityString"
|
||||
}
|
||||
],
|
||||
"description": "The visibility level of the organization (public, limited, private)"
|
||||
@@ -10343,7 +10343,7 @@
|
||||
"visibility": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/UserVisibility"
|
||||
"$ref": "#/components/schemas/VisibilityString"
|
||||
}
|
||||
],
|
||||
"description": "User visibility level option: public, limited, private"
|
||||
@@ -10496,7 +10496,7 @@
|
||||
"type": "object",
|
||||
"x-go-package": "gitea.dev/modules/structs"
|
||||
},
|
||||
"UserVisibility": {
|
||||
"VisibilityString": {
|
||||
"enum": [
|
||||
"public",
|
||||
"limited",
|
||||
|
||||
Reference in New Issue
Block a user