{"id":13570990,"url":"https://github.com/lanrat/czds","last_synced_at":"2025-12-30T00:03:08.642Z","repository":{"id":43326278,"uuid":"142787429","full_name":"lanrat/czds","owner":"lanrat","description":"golang API and tools to interact with czds.icann.org","archived":false,"fork":false,"pushed_at":"2025-10-22T16:27:28.000Z","size":3437,"stargazers_count":79,"open_issues_count":0,"forks_count":15,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-10-22T18:27:10.943Z","etag":null,"topics":["czds","czds-requests","dns","icann","zone-file","zone-files","zones"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/lanrat/czds","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lanrat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-07-29T18:55:13.000Z","updated_at":"2025-10-22T16:27:18.000Z","dependencies_parsed_at":"2024-01-14T03:48:28.737Z","dependency_job_id":"7977a3e7-be6b-4c58-9a54-836d4319eafe","html_url":"https://github.com/lanrat/czds","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/lanrat/czds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanrat%2Fczds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanrat%2Fczds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanrat%2Fczds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanrat%2Fczds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lanrat","download_url":"https://codeload.github.com/lanrat/czds/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lanrat%2Fczds/sbom","scorecard":{"id":578646,"data":{"date":"2025-08-11","repo":{"name":"github.com/lanrat/czds","commit":"d25d3eb5551e0bf3c76c7aa615b77386f3cf8c0d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/docker.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/docker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/lanrat/czds/docker.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:2","Warn: containerImage not pinned by hash: Dockerfile:14: pin your Docker image by updating alpine to alpine@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T18:33:16.192Z","repository_id":43326278,"created_at":"2025-08-20T18:33:16.192Z","updated_at":"2025-08-20T18:33:16.192Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28122313,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-29T02:00:07.021Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["czds","czds-requests","dns","icann","zone-file","zone-files","zones"],"created_at":"2024-08-01T14:00:57.290Z","updated_at":"2025-12-30T00:03:08.637Z","avatar_url":"https://github.com/lanrat.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# CZDS\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/lanrat/czds)](https://goreportcard.com/report/lanrat/czds)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/lanrat/czds)](https://pkg.go.dev/github.com/lanrat/czds)\n[![docker](https://github.com/lanrat/czds/actions/workflows/docker.yml/badge.svg)](https://github.com/lanrat/czds/actions/workflows/docker.yml)\n\nA utility and Go library implementing a client to the [CZDS REST API](https://github.com/icann/czds-api-client-java/blob/master/docs/ICANN_CZDS_api.pdf),\nusing both the documented and undocumented API endpoints.\n\n## [CZDS API](https://pkg.go.dev/github.com/lanrat/czds)\n\nThe Go API allows you to perform almost any action available in the web interface. See the [API documentation](https://pkg.go.dev/github.com/lanrat/czds) for details.\n\n## CZDS CLI\n\nA unified command-line interface that provides all functionality through subcommands:\n\n- `download` (alias: `dl`) - Download zone files from [czds.icann.org](https://czds.icann.org)\n- `request` (alias: `req`) - Submit new zone requests or modify existing ones\n- `status` (alias: `st`) - View information about zone file requests\n- `version` - Print version information\n\n### Features\n\n- Can be used as a standalone client or embedded as a library in other applications\n- Automatically refreshes authorization token if expired during download\n- Can save downloaded zones as named by `Content-Disposition` or URL name\n- Can compare local and remote file size and modification time to skip redownloading unchanged zones\n- Can download multiple zones in parallel\n- [Docker](#docker) image available\n\n### Usage\n\n```console\nczds - CZDS (Centralized Zone Data Service) client\n\nUsage:\n  czds \u003ccommand\u003e [options]\n\nAvailable Commands:\n  download, dl    Download zone files from CZDS\n  request, req    Request access to zones, extensions, cancellations\n  status, st      Check status of zone requests and generate reports\n  version         Print version information\n  help            Show this help message\n\nUse \"czds \u003ccommand\u003e -h\" for more information about a command.\n\nGlobal Options:\n  -username string    Username to authenticate with (or set CZDS_USERNAME env var)\n  -password string    Password to authenticate with (or set CZDS_PASSWORD env var)\n  -verbose            Enable verbose logging\n\nExamples:\n  czds download -parallel 10 com org\n  czds request -request-all -reason \"Research project\"\n  czds status -zone com\n```\n\n### Authentication\n\nThe czds command supports multiple authentication methods:\n\n1. **Command-line flags**: `-username` and `-password`\n2. **Environment variables**: `CZDS_USERNAME` and `CZDS_PASSWORD`\n\nEnvironment variables are checked first and used as defaults if the corresponding flags are not provided.\n\n## Download Subcommand\n\nDownload zone files from CZDS in parallel.\n\nZones can be specified either using the `-zones` flag with a comma-separated list, or as positional arguments.\n\n### Download Usage\n\n```console\nUsage: czds download [OPTIONS] [zones...]\n\nDownload zone files from CZDS\n\nOptions:\n  -exclude string\n     don't fetch these zones\n  -force\n     force redownloading the zone even if it already exists on local disk with same size and modification date\n  -out string\n     path to save downloaded zones to (default \"zones\")\n  -parallel uint\n     number of zones to download in parallel (default 5)\n  -password string\n     password to authenticate with (or set CZDS_PASSWORD env var)\n  -progress\n     show download progress for large files (\u003e50MB)\n  -quiet\n     suppress progress printing\n  -redownload\n     redownload zones that are newer on the remote server than local copy\n  -retries uint\n     max retry attempts per zone file download (default 3)\n  -urlname\n     use the filename from the url link as the saved filename instead of the file header\n  -username string\n     username to authenticate with (or set CZDS_USERNAME env var)\n  -verbose\n     enable verbose logging\n  -zones string\n     comma separated list of zones to download, defaults to all\n```\n\n### Download Examples\n\n```shell\nczds download                                # Download all available zones\nczds download -zones com,org                 # Download specific zones\nczds download -parallel 10 -out ./zones     # Download with 10 parallel workers\nczds download -force -zones com              # Force redownload of com zone\nczds download -exclude com,net               # Download all except com and net\nczds download -progress -zones com           # Download with progress reporting\n\n# Zones can also be specified as positional arguments:\nczds download com org net                    # Download com, org, and net zones\n\n# Using environment variables:\nexport CZDS_USERNAME=\"your_username\"\nexport CZDS_PASSWORD=\"your_password\"\nczds download -verbose\n```\n\n## Request Subcommand\n\nSubmit a new zone request or modify an existing CZDS request. Be sure to view and accept the terms and conditions with the `-terms` flag.\n\n### Request Usage\n\n```text\nUsage: czds request [OPTIONS]\n\nRequest access to zones, extensions, cancellations\n\nOptions:\n  -cancel string\n     comma separated list of zones to cancel outstanding requests for\n  -exclude string\n     comma separated list of zones to exclude from request-all or extend-all\n  -extend string\n     comma separated list of zones to request extensions\n  -extend-all\n     extend all possible zones\n  -password string\n     password to authenticate with (or set CZDS_PASSWORD env var)\n  -reason string\n     reason to request zone access\n  -request string\n     comma separated list of zones to request\n  -request-all\n     request all available zones\n  -status\n     print status of zones\n  -terms\n     print CZDS Terms \u0026 Conditions\n  -username string\n     username to authenticate with (or set CZDS_USERNAME env var)\n  -verbose\n     enable verbose logging\n```\n\n### Request Examples\n\n```text\nczds request -terms                              # Print terms and conditions\nczds request -status                             # Show TLD status\nczds request -request com,org -reason \"Research\" # Request specific TLDs\nczds request -request-all -reason \"Research\"     # Request all available TLDs\nczds request -extend com,org                     # Extend specific TLDs\nczds request -extend-all                         # Extend all possible TLDs\nczds request -cancel com,org                     # Cancel requests for TLDs\n\n# View zones able to be requested:\nczds request -status | grep -v pending | grep -v approved\n```\n\n## Status Subcommand\n\nView information about current zone file requests\n\n### Status Usage\n\nBy default the status subcommand prints high-level information about all CZDS requests, like the [reports page](https://czds.icann.org/zone-requests/all) on CZDS.\nDetailed information about a particular zone can be displayed with the `-zone` or `-id` flag.\n\n```text\nUsage: czds status [OPTIONS]\n\nCheck status of zone requests and generate reports\n\nOptions:\n  -id string\n     ID of specific zone request to lookup, defaults to printing all\n  -password string\n     password to authenticate with (or set CZDS_PASSWORD env var)\n  -progress\n     show download progress for CSV reports\n  -report string\n     filename to save report CSV to, '-' for stdout\n  -username string\n     username to authenticate with (or set CZDS_USERNAME env var)\n  -verbose\n     enable verbose logging\n  -zone string\n     same as -id, but prints the request by zone name\n```\n\n### Status Examples\n\n```text\nczds status                          # List all requests\nczds status -zone com                # Show details for com zone\nczds status -id REQUEST_ID           # Show details for specific request\nczds status -report report.csv       # Generate CSV report\nczds status -report report.csv -progress # Generate CSV with progress\n```\n\nShow all requests:\n\n```text\n$ czds status\nTLD     ID      UnicodeTLD      Status  Created Updated Expires SFTP\nxn--mxtq1m e59839f1-d69d-4970-9a15-7b49f3592065 政府 Approved Wed Jan 30 08:00:42 2019 Wed Jan 30 08:53:41 2019 Sat Jan 12 08:53:41 2030 false\naigo c6886423-b67d-43b6-828f-9d5a6cb3e6a3 aigo Pending Wed Jan 30 08:00:41 2019 Wed Jan 30 08:01:38 2019  false\nbarclaycard fa6d9c14-17ac-4b15-baf6-2d10g8e806fe barclaycard Pending Wed Jan 30 08:00:41 2019 Wed Jan 30 08:01:38 2019  false\nfans 977d8589-9cec-41ef-b62e-0d3f0cf863e0 fans Pending Wed Jan 30 08:00:41 2019 Wed Jan 30 08:01:38 2019  false\nlive 8c95ccae-ae4d-4028-8997-655b132f542d live Approved Wed Jan 30 08:00:41 2019 Wed Jan 30 16:40:15 2019 Sat Jan 12 16:40:13 2030 false\nonyourside 259aa66b-ac77-43db-a09a-9d3f57cf0e6b onyourside Pending Wed Jan 30 08:00:41 2019 Wed Jan 30 08:02:16 2019  false\nwtc 67f5b31d-19f0-4071-a176-25ff71f509f7 wtc Pending Wed Jan 30 08:00:41 2019 Wed Jan 30 08:02:55 2019  false\nxn--d1acj3b 69929632-ed92-437a-b140-fff4b0d771a7 дети Approved Wed Jan 30 08:00:41 2019 Wed Jan 30 10:55:03 2019 Tue Apr 30 10:55:03 2019 false\n```\n\nLookup specific request details:\n\n```console\n$ czds status -zone red\nID:     a056b38d-0080-4097-95cb-014b35ed4cb7\nTLD:    red (red)\nStatus: approved\nCreated:        Wed Jan 30 08:00:41 2019\nUpdated:        Thu Jan 31 20:51:22 2019\nExpires:        Sun Jan 13 20:51:20 2030\nRequest IP:     123.456.789.123\nFTP IPs:         []\nReason: ...\nHistory:\n        Wed Jan 30 08:00:41 2019        Request submitted\n        Wed Jan 30 08:02:16 2019        Request status change to Pending\n        Thu Jan 31 20:51:22 2019        Request status change to Approved\n```\n\n## Building\n\nJust run make!\n\n```console\nmake\n```\n\n## [Docker](https://github.com/lanrat/czds/pkgs/container/czds)\n\nUsing command-line flags:\n\n```console\ndocker run --rm -v /path/to/zones/:/zones ghcr.io/lanrat/czds download -out /zones -username \"$USERNAME\" -password \"$PASSWORD\"\n```\n\nUsing environment variables:\n\n```console\ndocker run --rm -v /path/to/zones/:/zones -e CZDS_USERNAME=\"$USERNAME\" -e CZDS_PASSWORD=\"$PASSWORD\" ghcr.io/lanrat/czds -out /zones download\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flanrat%2Fczds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flanrat%2Fczds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flanrat%2Fczds/lists"}