René's URL Explorer Experiment


Title: Generates duplicate types and wrong references to enums · Issue #899 · oapi-codegen/oapi-codegen · GitHub

Open Graph Title: Generates duplicate types and wrong references to enums · Issue #899 · oapi-codegen/oapi-codegen

X Title: Generates duplicate types and wrong references to enums · Issue #899 · oapi-codegen/oapi-codegen

Description: Hi, I am trying to generate a client with the following config: package: "adguardhome" generate: models: true embedded-spec: true client: true output: pkg/go-adguard-home/client.go output-options: skip-prune: false client-type-name: Adgu...

Open Graph Description: Hi, I am trying to generate a client with the following config: package: "adguardhome" generate: models: true embedded-spec: true client: true output: pkg/go-adguard-home/client.go output-options: ...

X Description: Hi, I am trying to generate a client with the following config: package: "adguardhome" generate: models: true embedded-spec: true client: true output: pkg/go-adguard-home/client.go output...

Opengraph URL: https://github.com/oapi-codegen/oapi-codegen/issues/899

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Generates duplicate types and wrong references to enums","articleBody":"Hi,\r\n\r\nI am trying to generate a client with the following config:\r\n\r\n```yaml\r\npackage: \"adguardhome\"\r\ngenerate:\r\n  models: true\r\n  embedded-spec: true\r\n  client: true\r\noutput: pkg/go-adguard-home/client.go\r\noutput-options:\r\n  skip-prune: false\r\n  client-type-name: AdguardHomeClient\r\n```\r\n\r\nwith this openapi\r\n\r\nhttps://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/openapi/openapi.yaml\r\n\r\nBut have some minor issues:\r\n\r\n1. Duplicate Types\r\n```golang\r\n// AccessListResponse Client and host access list.  Each of the lists should contain only unique elements.  In addition, allowed and disallowed lists cannot contain the same elements.\r\ntype AccessListResponse = AccessList\r\n\r\n// ClientsFindResponse Client search results.\r\ntype ClientsFindResponse = []ClientsFindEntry\r\n\r\n...\r\n\r\ntype AccessListResponse struct {\r\n\tBody         []byte\r\n\tHTTPResponse *http.Response\r\n        // Think this reference to self is \"wrong\" and the other type should be used\r\n\tJSON200      *AccessListResponse\r\n}\r\n\r\ntype ClientsFindResponse struct {\r\n\tBody         []byte\r\n\tHTTPResponse *http.Response\r\n         // Think this reference to self is \"wrong\" and the other type should be used\r\n\tJSON200      *ClientsFindResponse\r\n}\r\n```\r\n\r\nI think this collision is unintended and only because the \"schema\" that is referenced has the same name as the generated type for the answer of the get request.\r\n\r\nFor the second type collision x-go-name rewrite works, for the first it does not\r\n\r\n```yaml\r\n    'AccessListResponse':\r\n      'x-go-name': 'AccessListResponseType'\r\n      '$ref': '#/components/schemas/AccessList'\r\n    'AccessSetRequest':\r\n      '$ref': '#/components/schemas/AccessList'\r\n    'AccessList':\r\n      'description': >\r\n        Client and host access list.  Each of the lists should contain only\r\n        unique elements.  In addition, allowed and disallowed lists cannot\r\n        contain the same elements.\r\n      'properties':\r\n``` \r\nthis does not work,\r\n\r\n```yaml\r\n  'ClientsFindResponse':\r\n      'x-go-name': 'ClientsFindResponseType'\r\n      'type': 'array'\r\n      'description': 'Client search results.'\r\n      'items':\r\n        '$ref': '#/components/schemas/ClientsFindEntry\r\n```\r\nthis works as expected\r\n\r\n2. Wrong references for enums\r\n\r\n```golang\r\n// Defines values for DNSConfigBlockingMode.\r\nconst (\r\n\tCustomIp DNSConfigBlockingMode = \"custom_ip\"\r\n\tDefault  DNSConfigBlockingMode = \"default\"\r\n\tNullIp   DNSConfigBlockingMode = \"null_ip\"\r\n\tNxdomain DNSConfigBlockingMode = \"nxdomain\"\r\n\tRefused  DNSConfigBlockingMode = \"refused\"\r\n)\r\n\r\n... \r\n\r\ntype DnsInfoResponse struct {\r\n\tBody         []byte\r\n\tHTTPResponse *http.Response\r\n\tJSON200      *struct {\r\n\t\tBlockingIpv4 *string           `json:\"blocking_ipv4,omitempty\"`\r\n\t\tBlockingIpv6 *string           `json:\"blocking_ipv6,omitempty\"`\r\n                // think this should be DNSConfigBlockingMode, as there is no other blocking mode in the openapi.yaml\r\n\t\tBlockingMode *N200BlockingMode `json:\"blocking_mode,omitempty\"`\r\n```\r\n\r\nthe openapi lines matching this seem to be\r\n\r\n```yaml\r\n  '/dns_info':\r\n    'get':\r\n      'tags':\r\n      - 'global'\r\n      'operationId': 'dnsInfo'\r\n      'summary': 'Get general DNS parameters'\r\n      'responses':\r\n        '200':\r\n          'description': 'OK'\r\n          'content':\r\n            'application/json':\r\n              'schema':\r\n                'allOf':\r\n                - '$ref': '#/components/schemas/DNSConfig'\r\n                - 'type': 'object'\r\n                  'properties':\r\n```\r\n\r\nand\r\n\r\n```yaml\r\n    'DNSConfig':\r\n      'type': 'object'\r\n      'description': 'Query log configuration'\r\n      'properties':\r\n        'bootstrap_dns':\r\n          'type': 'array'\r\n          'description': >\r\n            Bootstrap servers, port is optional after colon.  Empty value will\r\n            reset it to default values.\r\n          'items':\r\n            'type': 'string'\r\n          'example':\r\n          - '8.8.8.8:53'\r\n          - '1.1.1.1:53'\r\n        'upstream_dns':\r\n          'type': 'array'\r\n          'description': >\r\n            Upstream servers, port is optional after colon.  Empty value will\r\n            reset it to default values.\r\n          'items':\r\n            'type': 'string'\r\n          'example':\r\n          - 'tls://1.1.1.1'\r\n          - 'tls://1.0.0.1'\r\n        'upstream_dns_file':\r\n          'type': 'string'\r\n        'protection_enabled':\r\n          'type': 'boolean'\r\n        'dhcp_available':\r\n          'type': 'boolean'\r\n        'ratelimit':\r\n          'type': 'integer'\r\n        'blocking_mode':\r\n          'type': 'string'\r\n          'enum':\r\n          - 'default'\r\n          - 'refused'\r\n          - 'nxdomain'\r\n          - 'null_ip'\r\n          - 'custom_ip'\r\n```\r\n\r\nsomehow this isn't resolved correctly\r\nAs I am new into openapi and generating clients, I don't know if it something that I should solve via config - or a bug (in oapi-codegen - or the openapi yaml). Would be great if I could get some input on this issues.","author":{"url":"https://github.com/markussiebert","@type":"Person","name":"markussiebert"},"datePublished":"2022-12-13T20:28:21Z","url":"https://github.com/oapi-codegen/oapi-codegen/issues/899"}

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:ae7d6036-f397-75ce-24de-965430bcaf65
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id82E6:33A683:2BCF616:398199A:6AF9C1FC
html-safe-nonce075b9992fc7a1386e1b24c98b33826a498f5009f1226a43fa748294e30d801a6
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MkU2OjMzQTY4MzoyQkNGNjE2OjM5ODE5OUE6NkFGOUMxRkMiLCJ2aXNpdG9yX2lkIjoiNzA3NTg5NjMwNjI3NDI1NTM1NiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac7c42edc87c69518b0c567309684d36a208af4ad75353c4efb7f9843d180956e9
hovercard-subject-tagissue:1495099128
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/oapi-codegen/oapi-codegen/899/issue_layout
twitter:imagehttps://opengraph.githubassets.com/fc269dceefee761f1def07e9c1029c4193c8e066e187e3347a742d2e5773ed78/oapi-codegen/oapi-codegen/issues/899
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/fc269dceefee761f1def07e9c1029c4193c8e066e187e3347a742d2e5773ed78/oapi-codegen/oapi-codegen/issues/899
og:image:altHi, I am trying to generate a client with the following config: package: "adguardhome" generate: models: true embedded-spec: true client: true output: pkg/go-adguard-home/client.go output-options: ...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamemarkussiebert
hostnamegithub.com
expected-hostnamegithub.com
None612d3e6ffd693e7ea8d9fcf452370995872baef31d825b1fedef704cd3d24ac7
turbo-cache-controlno-preview
go-importgithub.com/oapi-codegen/oapi-codegen git https://github.com/oapi-codegen/oapi-codegen.git
octolytics-dimension-user_id142752710
octolytics-dimension-user_loginoapi-codegen
octolytics-dimension-repository_id173009358
octolytics-dimension-repository_nwooapi-codegen/oapi-codegen
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id173009358
octolytics-dimension-repository_network_root_nwooapi-codegen/oapi-codegen
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release072e34035c13c31543fba9f025cbbbda4210dae4
ui-targetfull
theme-color#1e2327
color-schemelight dark
react-app-nameissues

Links:

Skip to contenthttps://github.com/oapi-codegen/oapi-codegen/issues/899#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Foapi-codegen%2Foapi-codegen%2Fissues%2F899
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Foapi-codegen%2Foapi-codegen%2Fissues%2F899
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=oapi-codegen%2Foapi-codegen
Reloadhttps://github.com/oapi-codegen/oapi-codegen/issues/899
Reloadhttps://github.com/oapi-codegen/oapi-codegen/issues/899
Reloadhttps://github.com/oapi-codegen/oapi-codegen/issues/899
oapi-codegenhttps://github.com/oapi-codegen
oapi-codegenhttps://github.com/oapi-codegen/oapi-codegen
Codehttps://github.com/oapi-codegen/oapi-codegen
Issues228 (228)https://github.com/oapi-codegen/oapi-codegen/issues
Pull requests70 (70)https://github.com/oapi-codegen/oapi-codegen/pulls
Discussionshttps://github.com/oapi-codegen/oapi-codegen/discussions
Actionshttps://github.com/oapi-codegen/oapi-codegen/actions
Projectshttps://github.com/oapi-codegen/oapi-codegen/projects
Security and quality11 (11)https://github.com/oapi-codegen/oapi-codegen/security
Insightshttps://github.com/oapi-codegen/oapi-codegen/pulse
https://github.com/oapi-codegen/oapi-codegen
New issuehttps://github.com/login?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/899
New issuehttps://github.com/login?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/899
Generates duplicate types and wrong references to enumshttps://github.com/oapi-codegen/oapi-codegen/issues/899#top
https://github.com/markussiebert
markussieberthttps://github.com/markussiebert
on Dec 13, 2022https://github.com/oapi-codegen/oapi-codegen/issues/899#issue-1495099128
https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/openapi/openapi.yamlhttps://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/openapi/openapi.yaml
https://github.com/Moomboh
Moombohhttps://github.com/Moomboh
on Dec 19, 2022https://github.com/oapi-codegen/oapi-codegen/issues/899#issuecomment-1357552128
https://github.com/Moomboh/mre-oapi-codegen-type-collisionshttps://github.com/Moomboh/mre-oapi-codegen-type-collisions
@markussieberthttps://github.com/markussiebert
https://github.com/filinvadim
filinvadimhttps://github.com/filinvadim
on Oct 4, 2023https://github.com/oapi-codegen/oapi-codegen/issues/899#issuecomment-1747490085
mromaszewiczhttps://github.com/mromaszewicz
on Feb 11, 2026https://github.com/oapi-codegen/oapi-codegen/issues/899#event-22690761507
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/5924b701ddd66057b8dda4e45c617b2312abcd6d
5924b70https://github.com/mromaszewicz/oapi-codegen/commit/5924b701ddd66057b8dda4e45c617b2312abcd6d
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/0fb61ed3cf6a08bc449ff1485b3142999d2b3dcf
0fb61edhttps://github.com/mromaszewicz/oapi-codegen/commit/0fb61ed3cf6a08bc449ff1485b3142999d2b3dcf
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/f0cb472bca86853e93710eb59a2c5641f5ef2dc1
f0cb472https://github.com/mromaszewicz/oapi-codegen/commit/f0cb472bca86853e93710eb59a2c5641f5ef2dc1
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/76dab994de3bf2bceafca76aaf1fa4d087056660
76dab99https://github.com/mromaszewicz/oapi-codegen/commit/76dab994de3bf2bceafca76aaf1fa4d087056660
mromaszewiczhttps://github.com/mromaszewicz
on Feb 22, 2026https://github.com/oapi-codegen/oapi-codegen/issues/899#event-22986772698
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/504869b3fe4fdb77592931091a68289229771dff
504869bhttps://github.com/mromaszewicz/oapi-codegen/commit/504869b3fe4fdb77592931091a68289229771dff
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/ecdceaa14855c5f31a17a3126a238b6294b1c2f8
ecdceaahttps://github.com/mromaszewicz/oapi-codegen/commit/ecdceaa14855c5f31a17a3126a238b6294b1c2f8
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/16f9c4eaef7cb3bcb65484db2985f263710baa1d
16f9c4ehttps://github.com/mromaszewicz/oapi-codegen/commit/16f9c4eaef7cb3bcb65484db2985f263710baa1d
feat: multi-pass type name resolutionhttps://github.com/mromaszewicz/oapi-codegen/commit/914bfd73ab98010b1be71ba89663ef8e0a35af35
914bfd7https://github.com/mromaszewicz/oapi-codegen/commit/914bfd73ab98010b1be71ba89663ef8e0a35af35
feat: multi-pass type name resolution (#2213)https://github.com/oapi-codegen/oapi-codegen/commit/3a5f803e489c96de22c2b9155b8298b85e667ec8
#2213https://github.com/oapi-codegen/oapi-codegen/pull/2213
3a5f803https://github.com/oapi-codegen/oapi-codegen/commit/3a5f803e489c96de22c2b9155b8298b85e667ec8
https://github.com/mromaszewicz
mromaszewiczhttps://github.com/mromaszewicz
on Mar 2, 2026https://github.com/oapi-codegen/oapi-codegen/issues/899#issuecomment-3986312242
#2213https://github.com/oapi-codegen/oapi-codegen/pull/2213
mromaszewiczhttps://github.com/mromaszewicz
completedhttps://github.com/oapi-codegen/oapi-codegen/issues?q=is%3Aissue%20state%3Aclosed%20archived%3Afalse%20reason%3Acompleted
on Mar 2, 2026https://github.com/oapi-codegen/oapi-codegen/issues/899#event-23203006963
Sign up for freehttps://github.com/signup?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/899
Sign in to commenthttps://github.com/login?return_to=https://github.com/oapi-codegen/oapi-codegen/issues/899
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.