diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6aad72d..e2b6fee 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1 @@ -# Code ownership for openapi -# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners - -* @zoobzio +* @zoobzio @wintermute-zbz diff --git a/.github/settings.yml b/.github/settings.yml index e472cc2..a379af7 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -1,7 +1,7 @@ repository: name: openapi - description: OpenAPI 3.1 as native Go types - homepage: https://github.com/zoobzio/openapi + description: OpenAPI 3.1 specification as native Go types + homepage: https://openapi.zoobz.io has_wiki: true has_downloads: true default_branch: main @@ -9,6 +9,15 @@ repository: allow_merge_commit: false allow_rebase_merge: false delete_branch_on_merge: true + topics: + - go + - golang + - zoobzio + - openapi + - api + - specification + - json-schema + - rest branches: - name: main diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c2a0e10..0ce2348 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,6 @@ jobs: strategy: matrix: go-version: ['1.24', '1.25'] - steps: - uses: actions/checkout@v4 @@ -22,14 +21,8 @@ jobs: with: go-version: ${{ matrix.go-version }} - - name: Test openapi - run: go test -v -race -coverprofile=coverage.txt -covermode=atomic ./... - - - name: Upload coverage - if: matrix.go-version == '1.25' - uses: codecov/codecov-action@v4 - with: - file: ./coverage.txt + - name: Test + run: make test lint: name: Lint @@ -43,22 +36,17 @@ jobs: go-version: '1.25' - name: golangci-lint - uses: golangci/golangci-lint-action@v8 + uses: golangci/golangci-lint-action@v7 with: version: v2.7.2 args: --config=.golangci.yml --timeout=5m - - name: Security Report - if: always() - run: | - golangci-lint run --config=.golangci.yml --output.formats=json > lint-report.json || true - echo "### Security Scan Summary" >> $GITHUB_STEP_SUMMARY - echo "Linters with findings:" >> $GITHUB_STEP_SUMMARY - jq -r '.Issues[] | .FromLinter' lint-report.json 2>/dev/null | sort | uniq -c | sort -nr >> $GITHUB_STEP_SUMMARY || echo "No issues found ✅" >> $GITHUB_STEP_SUMMARY - - benchmark: - name: Benchmark + security: + name: Security runs-on: ubuntu-latest + permissions: + contents: read + security-events: write steps: - uses: actions/checkout@v4 @@ -67,26 +55,21 @@ jobs: with: go-version: '1.25' - - name: Run benchmarks - run: | - echo "### OpenAPI Library Benchmarks" | tee benchmark_results.txt - go test -bench=. -benchmem -benchtime=1s ./... | tee -a benchmark_results.txt + - name: Run Gosec + uses: securego/gosec@master + with: + args: '-fmt sarif -out gosec-results.sarif --no-fail ./...' - - name: Upload benchmark results - uses: actions/upload-artifact@v4 + - name: Upload SARIF + uses: github/codeql-action/upload-sarif@v3 + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + continue-on-error: true with: - name: benchmark-results - path: benchmark_results.txt + sarif_file: gosec-results.sarif ci-complete: name: CI Complete + needs: [test, lint, security] runs-on: ubuntu-latest - if: always() - needs: [test, lint, benchmark] steps: - - name: Check results - run: | - if [[ "${{ needs.test.result }}" != "success" || "${{ needs.lint.result }}" != "success" || "${{ needs.benchmark.result }}" != "success" ]]; then - echo "One or more CI jobs failed" - exit 1 - fi + - run: echo "CI complete" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 112bb7c..a8d5a63 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -5,9 +5,6 @@ on: branches: [ main, master ] pull_request: branches: [ main, master ] - schedule: - # Run at 3:17 AM UTC every Monday - - cron: '17 3 * * 1' permissions: actions: read @@ -18,63 +15,22 @@ jobs: analyze: name: Analyze runs-on: ubuntu-latest - timeout-minutes: 360 - - strategy: - fail-fast: false - matrix: - language: [ 'go' ] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 + - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.25' - cache: true - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: - languages: ${{ matrix.language }} - queries: +security-extended,security-and-quality + languages: go + queries: security-and-quality - name: Autobuild uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{ matrix.language }}" - upload: true - output: codeql-results - - - name: Upload CodeQL results - uses: actions/upload-artifact@v4 - with: - name: codeql-results-${{ matrix.language }} - path: codeql-results/ - retention-days: 7 - - - name: Security Summary - if: always() - run: | - echo "### CodeQL Security Analysis Complete" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Language:** ${{ matrix.language }}" >> $GITHUB_STEP_SUMMARY - echo "**Status:** Analysis completed" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "Results will be available in the Security tab of your repository." >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "#### What CodeQL Checks:" >> $GITHUB_STEP_SUMMARY - echo "- SQL injection vulnerabilities" >> $GITHUB_STEP_SUMMARY - echo "- Path traversal vulnerabilities" >> $GITHUB_STEP_SUMMARY - echo "- Cross-site scripting (XSS)" >> $GITHUB_STEP_SUMMARY - echo "- Insecure randomness" >> $GITHUB_STEP_SUMMARY - echo "- Hard-coded credentials" >> $GITHUB_STEP_SUMMARY - echo "- Command injection" >> $GITHUB_STEP_SUMMARY - echo "- And many more security patterns..." >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 18bac69..9de4fb4 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -6,152 +6,35 @@ on: pull_request: branches: [ main, master ] -permissions: - contents: read - checks: write - pull-requests: write - jobs: coverage: - name: Test Coverage Analysis + name: Coverage runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 + - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.25' - cache: true - - - name: Install dependencies - run: | - go mod download - go install github.com/boumenot/gocover-cobertura@latest - name: Run tests with coverage - run: | - echo "=== Testing openapi library ===" - go test -v -race -coverprofile=coverage.out -covermode=atomic ./... - - # Generate coverage report - go tool cover -func=coverage.out > coverage-summary.txt - echo "Coverage Summary:" - tail -1 coverage-summary.txt + run: go test -tags testing -coverprofile=coverage.out -covermode=atomic ./... - # Generate HTML report - go tool cover -html=coverage.out -o coverage.html - - # Convert to Cobertura format for better PR integration - gocover-cobertura < coverage.out > coverage.xml - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 + - name: Upload to Codecov + uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./coverage.out - flags: unit - name: openapi-coverage + flags: unittests + name: codecov-openapi fail_ci_if_error: false verbose: true - - name: Generate coverage badge - run: | - # Extract coverage percentage - COVERAGE=$(go tool cover -func=coverage.out | tail -1 | grep -oE '[0-9]+\.[0-9]+' | tail -1) - echo "Coverage: $COVERAGE%" - echo "COVERAGE=$COVERAGE" >> $GITHUB_ENV - - # Determine badge color - if awk "BEGIN {exit !($COVERAGE >= 80)}"; then - COLOR="green" - elif awk "BEGIN {exit !($COVERAGE >= 60)}"; then - COLOR="yellow" - else - COLOR="red" - fi - echo "COVERAGE_COLOR=$COLOR" >> $GITHUB_ENV - - - name: Create coverage comment (PR only) - if: github.event_name == 'pull_request' - uses: actions/github-script@v7 - with: - script: | - const fs = require('fs'); - - // Read coverage summary - const summary = fs.readFileSync('coverage-summary.txt', 'utf8'); - const lines = summary.split('\n').filter(line => line.trim()); - - // Extract key metrics - const totalLine = lines[lines.length - 1]; - const coverage = totalLine.match(/(\d+\.\d+)%/)?.[1] || 'N/A'; - - // Create comment body - const body = `## 📊 Coverage Report - - **Total Coverage:** ${coverage}% - - ### Coverage by Package - \`\`\` - ${lines.slice(0, -1).join('\n')} - \`\`\` - - --- - *Coverage report generated by [Codecov](https://codecov.io)*`; - - // Post or update comment - const { data: comments } = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - }); - - const botComment = comments.find(comment => - comment.user.type === 'Bot' && comment.body.includes('📊 Coverage Report') - ); - - if (botComment) { - await github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: botComment.id, - body: body - }); - } else { - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: body - }); - } - continue-on-error: true - - - name: Upload coverage artifacts - uses: actions/upload-artifact@v4 - with: - name: coverage-reports - path: | - coverage.* - coverage-summary.txt - retention-days: 30 - - - name: Coverage summary + - name: Coverage Summary run: | - echo "### 📊 Test Coverage Summary" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Coverage:** ${{ env.COVERAGE }}%" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "#### Coverage by Package" >> $GITHUB_STEP_SUMMARY + go tool cover -func=coverage.out | tail -1 + echo "## Coverage Report" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - head -n -1 coverage-summary.txt >> $GITHUB_STEP_SUMMARY + go tool cover -func=coverage.out >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "#### Coverage Reports" >> $GITHUB_STEP_SUMMARY - echo "- 📄 [HTML Report](coverage.html) - Download from artifacts" >> $GITHUB_STEP_SUMMARY - echo "- 📊 [Codecov Dashboard](https://codecov.io/gh/zoobzio/openapi) - View online" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 781987b..3f3123c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,142 +7,68 @@ on: permissions: contents: write - packages: write - id-token: write jobs: validate: - name: Validate Module + name: Validate runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 + - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.25' + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.25' - - name: Validate go.mod - run: | - go mod tidy - git diff --exit-code go.mod || (echo "go.mod needs updating" && exit 1) + - name: Run tests + run: make test - - name: Run tests - run: go test -v -race -coverprofile=coverage.txt -covermode=atomic ./... + - name: Run linter + run: | + go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.7.2 + make lint - - name: Run linting - uses: golangci/golangci-lint-action@v8 - with: - version: v2.7.2 - args: --config=.golangci.yml --timeout=5m + - name: Verify go.mod is tidy + run: | + go mod tidy + git diff --exit-code go.mod go.sum release: - name: Create Release + name: Release needs: validate runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.25' - - - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v6 - with: - version: latest - install-only: true - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v6 - with: - version: latest - args: release --clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Upload Release Assets - uses: actions/upload-artifact@v4 - with: - name: release-artifacts - path: dist/ - retention-days: 7 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.25' + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v6 + with: + distribution: goreleaser + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} verify: - name: Verify Release + name: Verify needs: release runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.25' - - - name: Get release version - id: version - run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - - name: Verify module can be fetched - run: | - sleep 10 - mkdir -p /tmp/test-openapi - cd /tmp/test-openapi - go mod init test - go get github.com/zoobzio/openapi@${{ steps.version.outputs.VERSION }} - go list -m github.com/zoobzio/openapi - - - name: Create release summary - run: | - echo "### Release ${{ steps.version.outputs.VERSION }} Published Successfully! 🎉" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "#### Installation" >> $GITHUB_STEP_SUMMARY - echo '```bash' >> $GITHUB_STEP_SUMMARY - echo "go get github.com/zoobzio/openapi@${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "#### Release Notes" >> $GITHUB_STEP_SUMMARY - echo "View the full release notes at: https://github.com/zoobzio/openapi/releases/tag/${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY - - notify: - name: Notify Release - needs: verify - runs-on: ubuntu-latest - if: success() - steps: - - name: Get release version - id: version - run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - - name: Create issue for release notes review - uses: actions/github-script@v7 - with: - script: | - const version = '${{ steps.version.outputs.VERSION }}'; - const issue = await github.rest.issues.create({ - owner: context.repo.owner, - repo: context.repo.repo, - title: `Release ${version} - Post-Release Checklist`, - body: `## Release ${version} has been published! 🎉 - - ### Post-Release Checklist - - [ ] Verify the release appears correctly on GitHub - - [ ] Test installation with \`go get github.com/zoobzio/openapi@${version}\` - - [ ] Consider announcing the release if it contains significant changes - - [ ] Close any issues/PRs that were addressed in this release - - ### Release URL - https://github.com/zoobzio/openapi/releases/tag/${version} - - --- - This issue was automatically created by the release workflow.`, - labels: ['release', 'documentation'] - }); - console.log(`Created issue #${issue.data.number}`); - continue-on-error: true + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.25' + + - name: Verify module + run: | + sleep 60 + TAG=${GITHUB_REF#refs/tags/} + go install github.com/zoobz-io/openapi@$TAG || echo "Module verification pending proxy sync" + continue-on-error: true diff --git a/.gitignore b/.gitignore index c422e28..ffb1609 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,6 @@ tmp/ # Coverage tools *.coverprofile + +# Claude +.claude/ diff --git a/.goreleaser.yml b/.goreleaser.yml index 38339b2..877c798 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -78,7 +78,7 @@ changelog: # Release configuration release: github: - owner: zoobzio + owner: zoobz-io name: openapi name_template: "{{ .ProjectName }} v{{ .Version }}" @@ -94,7 +94,7 @@ release: ### Installation ```bash - go get github.com/zoobzio/openapi@v{{ .Version }} + go get github.com/zoobz-io/openapi@v{{ .Version }} ``` ### Requirements @@ -103,7 +103,7 @@ release: footer: | --- - **Full Documentation:** https://github.com/zoobzio/openapi/blob/v{{ .Version }}/README.md + **Full Documentation:** https://github.com/zoobz-io/openapi/blob/v{{ .Version }}/README.md Thanks to all contributors! diff --git a/Makefile b/Makefile index b03191f..d33afdc 100644 --- a/Makefile +++ b/Makefile @@ -1,84 +1,52 @@ -.PHONY: test bench lint coverage clean all help check ci install-tools install-hooks +.PHONY: test test-unit lint lint-fix security coverage clean help check ci install-tools install-hooks -# Default target -all: test lint +.DEFAULT_GOAL := help -# Display help -help: +help: ## Display available commands @echo "openapi Development Commands" - @echo "============================" - @echo "" - @echo "Testing & Quality:" - @echo " make test - Run all tests with race detector" - @echo " make bench - Run benchmarks" - @echo " make lint - Run linters" - @echo " make lint-fix - Run linters with auto-fix" - @echo " make coverage - Generate coverage report (HTML)" - @echo " make check - Run tests and lint (quick check)" - @echo "" - @echo "Setup:" - @echo " make install-tools - Install required development tools" - @echo " make install-hooks - Install git pre-commit hook" - @echo "" - @echo "Other:" - @echo " make clean - Clean generated files" - @echo " make ci - Run full CI simulation" - @echo " make all - Run tests and lint (default)" + @echo "==============================" + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-18s\033[0m %s\n", $$1, $$2}' -# Run tests with race detector -test: - @echo "Running tests..." - @go test -v -race ./... +test: ## Run all tests with race detector + @go test -v -race -tags testing ./... -# Run benchmarks -bench: - @echo "Running benchmarks..." - @go test -bench=. -benchmem -benchtime=1s . +test-unit: ## Run unit tests only (short mode) + @go test -v -race -tags testing -short ./... -# Run linters -lint: - @echo "Running linters..." +lint: ## Run linters @golangci-lint run --config=.golangci.yml --timeout=5m -# Run linters with auto-fix -lint-fix: - @echo "Running linters with auto-fix..." +lint-fix: ## Run linters with auto-fix @golangci-lint run --config=.golangci.yml --fix -# Generate coverage report -coverage: - @echo "Generating coverage report..." - @go test -coverprofile=coverage.out ./... +security: ## Run security scanner + @gosec -quiet ./... + +coverage: ## Generate coverage report (HTML) + @go test -tags testing -coverprofile=coverage.out ./... @go tool cover -html=coverage.out -o coverage.html @go tool cover -func=coverage.out | tail -1 - @echo "Coverage report generated: coverage.html" + @echo "Coverage report: coverage.html" -# Clean generated files -clean: - @echo "Cleaning..." +clean: ## Remove generated files @rm -f coverage.out coverage.html coverage.txt @find . -name "*.test" -delete @find . -name "*.prof" -delete @find . -name "*.out" -delete -# Install development tools -install-tools: - @echo "Installing development tools..." +install-tools: ## Install development tools @go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.7.2 + @go install github.com/securego/gosec/v2/cmd/gosec@latest -# Install git pre-commit hook -install-hooks: - @echo "Installing git hooks..." +install-hooks: ## Install git pre-commit hook @mkdir -p .git/hooks @echo '#!/bin/sh' > .git/hooks/pre-commit @echo 'make check' >> .git/hooks/pre-commit @chmod +x .git/hooks/pre-commit @echo "Pre-commit hook installed" -# Quick check - run tests and lint -check: test lint +check: lint test security ## Run lint, tests, and security scan @echo "All checks passed!" -# CI simulation - what CI runs -ci: clean lint test coverage bench +ci: clean check coverage ## Full CI simulation @echo "CI simulation complete!" diff --git a/README.md b/README.md index 72c8d42..cf72596 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # OpenAPI -[![CI Status](https://github.com/zoobzio/openapi/workflows/CI/badge.svg)](https://github.com/zoobzio/openapi/actions/workflows/ci.yml) -[![codecov](https://codecov.io/gh/zoobzio/openapi/graph/badge.svg?branch=main)](https://codecov.io/gh/zoobzio/openapi) -[![Go Report Card](https://goreportcard.com/badge/github.com/zoobzio/openapi)](https://goreportcard.com/report/github.com/zoobzio/openapi) -[![CodeQL](https://github.com/zoobzio/openapi/workflows/CodeQL/badge.svg)](https://github.com/zoobzio/openapi/security/code-scanning) -[![Go Reference](https://pkg.go.dev/badge/github.com/zoobzio/openapi.svg)](https://pkg.go.dev/github.com/zoobzio/openapi) -[![License](https://img.shields.io/github/license/zoobzio/openapi)](LICENSE) -[![Go Version](https://img.shields.io/github/go-mod/go-version/zoobzio/openapi)](go.mod) -[![Release](https://img.shields.io/github/v/release/zoobzio/openapi)](https://github.com/zoobzio/openapi/releases) +[![CI Status](https://github.com/zoobz-io/openapi/workflows/CI/badge.svg)](https://github.com/zoobz-io/openapi/actions/workflows/ci.yml) +[![codecov](https://codecov.io/gh/zoobz-io/openapi/graph/badge.svg?branch=main)](https://codecov.io/gh/zoobz-io/openapi) +[![Go Report Card](https://goreportcard.com/badge/github.com/zoobz-io/openapi)](https://goreportcard.com/report/github.com/zoobz-io/openapi) +[![CodeQL](https://github.com/zoobz-io/openapi/workflows/CodeQL/badge.svg)](https://github.com/zoobz-io/openapi/security/code-scanning) +[![Go Reference](https://pkg.go.dev/badge/github.com/zoobz-io/openapi.svg)](https://pkg.go.dev/github.com/zoobz-io/openapi) +[![License](https://img.shields.io/github/license/zoobz-io/openapi)](LICENSE) +[![Go Version](https://img.shields.io/github/go-mod/go-version/zoobz-io/openapi)](go.mod) +[![Release](https://img.shields.io/github/v/release/zoobz-io/openapi)](https://github.com/zoobz-io/openapi/releases) OpenAPI 3.1 as native Go types. Build, read, and write API specifications with full type safety. @@ -46,7 +46,7 @@ No wrapper functions. No builder patterns. Just the specification as data. ## Install ```bash -go get github.com/zoobzio/openapi +go get github.com/zoobz-io/openapi ``` Requires Go 1.24 or higher. @@ -61,7 +61,7 @@ import ( "fmt" "os" - "github.com/zoobzio/openapi" + "github.com/zoobz-io/openapi" "gopkg.in/yaml.v3" ) diff --git a/docs/2.quickstart.md b/docs/2.quickstart.md index 0cf969d..469fbd4 100644 --- a/docs/2.quickstart.md +++ b/docs/2.quickstart.md @@ -19,7 +19,7 @@ Construct specs using struct literals. Start with the root `OpenAPI` type and po package main import ( - "github.com/zoobzio/openapi" + "github.com/zoobz-io/openapi" ) func main() { diff --git a/docs/3.types.md b/docs/3.types.md index e5c9e77..a9332f9 100644 --- a/docs/3.types.md +++ b/docs/3.types.md @@ -11,7 +11,7 @@ tags: # Types -This document outlines the type hierarchy. For complete field documentation, see [pkg.go.dev](https://pkg.go.dev/github.com/zoobzio/openapi). +This document outlines the type hierarchy. For complete field documentation, see [pkg.go.dev](https://pkg.go.dev/github.com/zoobz-io/openapi). ## Root Object diff --git a/go.mod b/go.mod index 6a949a2..a33e3a3 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/zoobzio/openapi +module github.com/zoobz-io/openapi go 1.24