ecosyste-ms-cli 1.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ecosyste_ms_cli-1.3.2.dist-info/METADATA +133 -0
- ecosyste_ms_cli-1.3.2.dist-info/RECORD +84 -0
- ecosyste_ms_cli-1.3.2.dist-info/WHEEL +5 -0
- ecosyste_ms_cli-1.3.2.dist-info/entry_points.txt +2 -0
- ecosyste_ms_cli-1.3.2.dist-info/licenses/LICENSE +21 -0
- ecosyste_ms_cli-1.3.2.dist-info/top_level.txt +1 -0
- ecosystems_cli/__init__.py +3 -0
- ecosystems_cli/__main__.py +4 -0
- ecosystems_cli/apis/__init__.py +0 -0
- ecosystems_cli/apis/advisories.openapi.yaml +347 -0
- ecosystems_cli/apis/archives.openapi.yaml +193 -0
- ecosystems_cli/apis/commits.openapi.yaml +391 -0
- ecosystems_cli/apis/dependabot.openapi.yaml +887 -0
- ecosystems_cli/apis/diff.openapi.yaml +90 -0
- ecosystems_cli/apis/docker.openapi.yaml +534 -0
- ecosystems_cli/apis/issues.openapi.yaml +839 -0
- ecosystems_cli/apis/licenses.openapi.yaml +80 -0
- ecosystems_cli/apis/opencollective.openapi.yaml +247 -0
- ecosystems_cli/apis/packages.openapi.yaml +2522 -0
- ecosystems_cli/apis/parser.openapi.yaml +97 -0
- ecosystems_cli/apis/registries.yaml +155 -0
- ecosystems_cli/apis/repos.openapi.yaml +1521 -0
- ecosystems_cli/apis/resolve.openapi.yaml +130 -0
- ecosystems_cli/apis/sbom.openapi.yaml +79 -0
- ecosystems_cli/apis/sponsors.openapi.yaml +283 -0
- ecosystems_cli/apis/summary.openapi.yaml +239 -0
- ecosystems_cli/apis/timeline.openapi.yaml +91 -0
- ecosystems_cli/cli.py +213 -0
- ecosystems_cli/commands/__init__.py +1 -0
- ecosystems_cli/commands/advisories.py +109 -0
- ecosystems_cli/commands/archives.py +5 -0
- ecosystems_cli/commands/commits.py +5 -0
- ecosystems_cli/commands/decorators.py +101 -0
- ecosystems_cli/commands/dependabot.py +5 -0
- ecosystems_cli/commands/diff.py +144 -0
- ecosystems_cli/commands/docker.py +5 -0
- ecosystems_cli/commands/execution.py +99 -0
- ecosystems_cli/commands/generator.py +127 -0
- ecosystems_cli/commands/handlers/__init__.py +45 -0
- ecosystems_cli/commands/handlers/advisories.py +73 -0
- ecosystems_cli/commands/handlers/archives.py +40 -0
- ecosystems_cli/commands/handlers/base.py +38 -0
- ecosystems_cli/commands/handlers/commits.py +76 -0
- ecosystems_cli/commands/handlers/default.py +40 -0
- ecosystems_cli/commands/handlers/dependabot.py +205 -0
- ecosystems_cli/commands/handlers/diff.py +72 -0
- ecosystems_cli/commands/handlers/docker.py +142 -0
- ecosystems_cli/commands/handlers/factory.py +60 -0
- ecosystems_cli/commands/handlers/issues.py +87 -0
- ecosystems_cli/commands/handlers/licenses.py +52 -0
- ecosystems_cli/commands/handlers/opencollective.py +86 -0
- ecosystems_cli/commands/handlers/packages.py +103 -0
- ecosystems_cli/commands/handlers/parser.py +57 -0
- ecosystems_cli/commands/handlers/repos.py +97 -0
- ecosystems_cli/commands/handlers/resolve.py +68 -0
- ecosystems_cli/commands/handlers/sbom.py +52 -0
- ecosystems_cli/commands/handlers/sponsors.py +52 -0
- ecosystems_cli/commands/handlers/summary.py +81 -0
- ecosystems_cli/commands/handlers/timeline.py +45 -0
- ecosystems_cli/commands/issues.py +5 -0
- ecosystems_cli/commands/licenses.py +135 -0
- ecosystems_cli/commands/mcp.py +54 -0
- ecosystems_cli/commands/opencollective.py +5 -0
- ecosystems_cli/commands/packages.py +151 -0
- ecosystems_cli/commands/parser.py +135 -0
- ecosystems_cli/commands/repos.py +5 -0
- ecosystems_cli/commands/resolve.py +160 -0
- ecosystems_cli/commands/sbom.py +135 -0
- ecosystems_cli/commands/sponsors.py +5 -0
- ecosystems_cli/commands/summary.py +5 -0
- ecosystems_cli/commands/timeline.py +5 -0
- ecosystems_cli/constants.py +92 -0
- ecosystems_cli/exceptions.py +149 -0
- ecosystems_cli/helpers/click_params.py +49 -0
- ecosystems_cli/helpers/flatten_dict.py +15 -0
- ecosystems_cli/helpers/format_value.py +30 -0
- ecosystems_cli/helpers/get_domain.py +68 -0
- ecosystems_cli/helpers/load_api_spec.py +31 -0
- ecosystems_cli/helpers/print_error.py +15 -0
- ecosystems_cli/helpers/print_operations.py +73 -0
- ecosystems_cli/helpers/print_output.py +183 -0
- ecosystems_cli/helpers/purl_parser.py +121 -0
- ecosystems_cli/mcp_server.py +267 -0
- ecosystems_cli/openapi_client.py +461 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ecosyste_ms_cli
|
|
3
|
+
Version: 1.3.2
|
|
4
|
+
Summary: CLI for ecosyste.ms API
|
|
5
|
+
Author-email: Sebastian Schürmann <sebs@2xs.org>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/ecosyste-ms/ecosyste_ms_cli
|
|
8
|
+
Project-URL: Repository, https://github.com/ecosyste-ms/ecosyste_ms_cli
|
|
9
|
+
Keywords: ecosystems,package-manager,dependencies,security,cli
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Software Development
|
|
20
|
+
Classifier: Topic :: Utilities
|
|
21
|
+
Requires-Python: >=3.9
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Requires-Dist: click~=8.3.1
|
|
25
|
+
Requires-Dist: requests~=2.32.5
|
|
26
|
+
Requires-Dist: pyyaml~=6.0.3
|
|
27
|
+
Requires-Dist: rich~=14.3.3
|
|
28
|
+
Requires-Dist: mcp~=1.26.0
|
|
29
|
+
Requires-Dist: openapi-core~=0.23.0
|
|
30
|
+
Requires-Dist: packageurl-python~=0.17.6
|
|
31
|
+
Requires-Dist: importlib-resources; python_version < "3.9"
|
|
32
|
+
Provides-Extra: dev
|
|
33
|
+
Requires-Dist: pytest~=9.0.2; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-asyncio~=1.3.0; extra == "dev"
|
|
35
|
+
Requires-Dist: black~=26.3.1; extra == "dev"
|
|
36
|
+
Requires-Dist: isort~=8.0.1; extra == "dev"
|
|
37
|
+
Requires-Dist: flake8~=7.3.0; extra == "dev"
|
|
38
|
+
Requires-Dist: bandit~=1.9.4; extra == "dev"
|
|
39
|
+
Requires-Dist: complexipy~=5.2.0; extra == "dev"
|
|
40
|
+
Requires-Dist: tomli~=2.3.0; python_version < "3.11" and extra == "dev"
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
|
|
43
|
+
# Ecosystems CLI
|
|
44
|
+
|
|
45
|
+
> The cli is still in a development phase. Some aspects of documentation or dev-x are lacking and some aspects of this software might have bugs.
|
|
46
|
+
|
|
47
|
+
[](https://github.com/ecosyste-ms/ecosyste_ms_cli/actions/workflows/build-test-lint.yml)
|
|
48
|
+
[](https://github.com/ecosyste-ms/ecosyste_ms_cli/releases/latest)
|
|
49
|
+
[](https://opensource.org/licenses/MIT)
|
|
50
|
+
|
|
51
|
+
A command-line interface for interacting with ecosyste.ms APIs.
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
Requirements:
|
|
56
|
+
- Python >= 3.9
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Clone the repository
|
|
60
|
+
git clone git@github.com:ecosyste-ms/ecosyste_ms_cli.git
|
|
61
|
+
cd ecosyste_ms_cli
|
|
62
|
+
|
|
63
|
+
# Set up virtual environment and install dependencies
|
|
64
|
+
make setup
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Usage
|
|
68
|
+
|
|
69
|
+
Each command includes helpful examples in its help text. Use `--help` with any command to see usage examples.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Show available commands
|
|
73
|
+
ecosystems --help
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Global Options
|
|
77
|
+
|
|
78
|
+
- `--timeout`: Set the timeout in seconds for all HTTP requests (default: 20 seconds)
|
|
79
|
+
- `--format`: Set the output format (default: table). Available formats: table, json, tsv, jsonl
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## Output Formats
|
|
83
|
+
|
|
84
|
+
The CLI supports multiple output formats:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Example: Set a 30-second timeout for all requests
|
|
88
|
+
ecosystems --timeout 30 repos topics
|
|
89
|
+
|
|
90
|
+
# Example: Get output in JSON format
|
|
91
|
+
ecosystems --format json repos topics
|
|
92
|
+
|
|
93
|
+
# Example: Get output in TSV format (tab-separated values)
|
|
94
|
+
ecosystems --format tsv repos topics
|
|
95
|
+
|
|
96
|
+
# Example: Get output in JSONL format (JSON Lines)
|
|
97
|
+
ecosystems --format jsonl repos topics
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Available Commands
|
|
101
|
+
|
|
102
|
+
The CLI provides access to various [ecosyste.ms APIs](https://ecosyste.ms/api). Each command group corresponds to an API endpoint:
|
|
103
|
+
|
|
104
|
+
- **`advisories`** - Security advisories and vulnerability data
|
|
105
|
+
- **`archives`** - Package archive analysis
|
|
106
|
+
- **`commits`** - Repository commit data
|
|
107
|
+
- **`dependabot`** - Dependabot integration data
|
|
108
|
+
- **`diff`** - File and archive comparison
|
|
109
|
+
- **`docker`** - Docker image metadata
|
|
110
|
+
- **`issues`** - Repository issues and pull requests
|
|
111
|
+
- **`licenses`** - License detection and analysis
|
|
112
|
+
- **`opencollective`** - Open Collective funding data
|
|
113
|
+
- **`packages`** - Package registry information
|
|
114
|
+
- **`parser`** - Dependency file parsing
|
|
115
|
+
- **`repos`** - Repository data and metadata
|
|
116
|
+
- **`resolve`** - Dependency resolution
|
|
117
|
+
- **`sbom`** - Software Bill of Materials generation
|
|
118
|
+
- **`sponsors`** - GitHub Sponsors data
|
|
119
|
+
- **`summary`** - Aggregated summaries
|
|
120
|
+
- **`timeline`** - Event timeline data
|
|
121
|
+
|
|
122
|
+
Use `--help` with any command for detailed usage and examples.
|
|
123
|
+
|
|
124
|
+
## Examples
|
|
125
|
+
|
|
126
|
+
* ecosystems packages package npmjs.org react --format json | jq '.name'
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
## Documentation
|
|
130
|
+
|
|
131
|
+
- [Development Guide](docs/DEVELOPMENT.md) - Information about development, testing, and release processes
|
|
132
|
+
- [MCP Server](docs/MCP.md) - **[Experimental]** Model Context Protocol server for AI assistants
|
|
133
|
+
- [License](LICENSE) - MIT License details
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
ecosyste_ms_cli-1.3.2.dist-info/licenses/LICENSE,sha256=5ogoagwqYLkuCEV6iBk861YCHBivAbh4WoMAmKHBLxY,1077
|
|
2
|
+
ecosystems_cli/__init__.py,sha256=YjBd_BJaPxsJIESF2XVzF_9piAQy8Knnks1cT9t-78E,88
|
|
3
|
+
ecosystems_cli/__main__.py,sha256=Py4GUO6KRiXQ6dZ1QHGR7yAlvsy99fTMnFPwtnMb38E,91
|
|
4
|
+
ecosystems_cli/cli.py,sha256=eYqKtKuJbNS_UeJnl575Sm1R4jJCsthGyca4Fzpbsqc,7384
|
|
5
|
+
ecosystems_cli/constants.py,sha256=vj1FgYL7TEBq3eB76O14inBzB7uWK_P3Z1ERpTjPmIA,3288
|
|
6
|
+
ecosystems_cli/exceptions.py,sha256=uvcH8BxtGJ8MfHF2Y5GHNjkPC1tyLdO_ah-S96sGXss,4228
|
|
7
|
+
ecosystems_cli/mcp_server.py,sha256=Yi74Iptx03ksXnk9Ma6QEXRuXs9U61zKajwnrr8NT_A,10801
|
|
8
|
+
ecosystems_cli/openapi_client.py,sha256=0bH4TAsvAuDITto4W2MQwlbRVeFuy3hF6Cteg5fKyAQ,16318
|
|
9
|
+
ecosystems_cli/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
ecosystems_cli/apis/advisories.openapi.yaml,sha256=7RUX7hvFS6-cwWMKOVME_AHqwpxjJLFyDaAUEVUrJwA,8841
|
|
11
|
+
ecosystems_cli/apis/archives.openapi.yaml,sha256=e0KZLaAmS_OiDsRJtWGxl5uw6ulF5eNh2j5WjdxIxLc,5448
|
|
12
|
+
ecosystems_cli/apis/commits.openapi.yaml,sha256=0LyYVT5I7zQaxojXgNmzfWpKBeDlN4VfsDJks9CUzeA,9601
|
|
13
|
+
ecosystems_cli/apis/dependabot.openapi.yaml,sha256=MFLshbnRHUCWNFpaLlyKqA5AgpEKbL77DRnYwK1M134,23049
|
|
14
|
+
ecosystems_cli/apis/diff.openapi.yaml,sha256=BC5teVOh4LeUJp9v2jOLYmBZQtWBJcBeoLTTj9Wr0QQ,2081
|
|
15
|
+
ecosystems_cli/apis/docker.openapi.yaml,sha256=8QBjDEmcYy8O6iNOibdn02eDsSPo59SN-5rytUJ2pPA,13054
|
|
16
|
+
ecosystems_cli/apis/issues.openapi.yaml,sha256=H378feXRtZlFCS8agiP1I9qME_IINvJAjmeijZH-vMk,21413
|
|
17
|
+
ecosystems_cli/apis/licenses.openapi.yaml,sha256=Mte2GZdNGI4yf6hVqrqsFWzUh8eDteyTnpLkgQC2WlI,1841
|
|
18
|
+
ecosystems_cli/apis/opencollective.openapi.yaml,sha256=RwEj_mHQnoePTSR9cL6fmNv-C6kL3p2omJYGMC2zmfw,5771
|
|
19
|
+
ecosystems_cli/apis/packages.openapi.yaml,sha256=iFt3kbwpT3fkvq4bC2NX8NS_t4qDtCNLAFWdiLi2k_g,63765
|
|
20
|
+
ecosystems_cli/apis/parser.openapi.yaml,sha256=PvVPkzySMI-NTb7bG0VQdqZKrkHmfr-M1iQqHp1crLQ,2285
|
|
21
|
+
ecosystems_cli/apis/registries.yaml,sha256=cayUQ8-iMkQ1QNp2wRnHUJV6l2L3vQHvIGhJT_meTQo,3784
|
|
22
|
+
ecosystems_cli/apis/repos.openapi.yaml,sha256=GlN4Kt96hIrSjMqgX2i89QZ6fUm3gGXQ98DqF8fzV8E,37956
|
|
23
|
+
ecosystems_cli/apis/resolve.openapi.yaml,sha256=vKKiM6SuS0tOkHNKeByunp3L7gqwT99AuAEaeBMQUgY,3104
|
|
24
|
+
ecosystems_cli/apis/sbom.openapi.yaml,sha256=dtgtFnLPS-HWM4izkUPuopS1VwnvvQ8woW29VbKHbmM,1800
|
|
25
|
+
ecosystems_cli/apis/sponsors.openapi.yaml,sha256=Kup0a9aQRwZRzTmD_8oLSTJPFfuC71mTMyRpu4J6_tU,7931
|
|
26
|
+
ecosystems_cli/apis/summary.openapi.yaml,sha256=ppQf0LDAdpPgHUWvGMrBH9dvZeuX61Cu26aaCg0l4Fg,5512
|
|
27
|
+
ecosystems_cli/apis/timeline.openapi.yaml,sha256=YuDJXMRhFpFX7Tm4F0dm_Z9xcw2ZmyrR6RSO9uJMuac,2182
|
|
28
|
+
ecosystems_cli/commands/__init__.py,sha256=7PP7iUSTDMTjBjS6CgJ7eICAjKJIx8CPATAqfztDitM,43
|
|
29
|
+
ecosystems_cli/commands/advisories.py,sha256=SVDscI7LSNcOxpcK53bLO7O7UBaK1vKEVr56l6YIlAw,4306
|
|
30
|
+
ecosystems_cli/commands/archives.py,sha256=hfbKoeuKbQCT3tWfL3onogHl7pUbs2bc1Vhw1lhs4Cg,165
|
|
31
|
+
ecosystems_cli/commands/commits.py,sha256=p0oLkJNdezjWnuHKNvFnu0PqOIQUSFMyRg55hfwW4hk,162
|
|
32
|
+
ecosystems_cli/commands/decorators.py,sha256=xhya_ZyuNEDBFBPNryB01cc5FyuNcZMqiQ-Sc4DAhtI,3129
|
|
33
|
+
ecosystems_cli/commands/dependabot.py,sha256=_NtGB13tzMcG-PffyqbMHQUcwDHVYHajSowwcspYdoA,171
|
|
34
|
+
ecosystems_cli/commands/diff.py,sha256=zXhaXg27GISTjmBAdqipB987W3-7Bb43F95MXlugNCI,5414
|
|
35
|
+
ecosystems_cli/commands/docker.py,sha256=Lj5-hhPAsWwgGKVa_BD02vT321guaSy2gcqyf-PFJNo,159
|
|
36
|
+
ecosystems_cli/commands/execution.py,sha256=tgnajXaEuph-bHnCjo1tv9zZ-Z_QNrJghn1F-ztDwyI,3748
|
|
37
|
+
ecosystems_cli/commands/generator.py,sha256=N0F7E73ijGNl2uKzsdEKV34V-5bHmOnunenJshlsvoA,5149
|
|
38
|
+
ecosystems_cli/commands/issues.py,sha256=d1r5zObqPtzjTVJoZjXPwbciAtm7L7sxDxQK-ET-nII,159
|
|
39
|
+
ecosystems_cli/commands/licenses.py,sha256=F0Flxk5rb7ZUa7kmIipeCdpNN6YeqGPbtvD1C8H2HHE,5278
|
|
40
|
+
ecosystems_cli/commands/mcp.py,sha256=UAQdEzvHO5db_LnzEt81CHuzQU3sIJ_tiagnxGsDDh0,1852
|
|
41
|
+
ecosystems_cli/commands/opencollective.py,sha256=2bip6C9Ocvu__q15cI28d7uTKS8IhV8Ns6qmnOH6iz8,183
|
|
42
|
+
ecosystems_cli/commands/packages.py,sha256=_q3YSltCu4ao2Bsc_8Bh2N7Pv0PCPbsy4kzUz1Vl8sE,5823
|
|
43
|
+
ecosystems_cli/commands/parser.py,sha256=oP2nrZBpK1_PFhEbFRo0svB0oydXmm0kvg3kCCJHmvk,5252
|
|
44
|
+
ecosystems_cli/commands/repos.py,sha256=1l6kazji7FPv8fIkkxh1RH0EHa-ETgzesTWtmgEOK1c,156
|
|
45
|
+
ecosystems_cli/commands/resolve.py,sha256=F_qRkL638R5jiBi7mK0JiRtnug-UXxfcfkTNyBLEfao,5956
|
|
46
|
+
ecosystems_cli/commands/sbom.py,sha256=FzuqXpCYEfCIrm4wDWt6SClLPV71fVPca8ZPp5GV16Q,5226
|
|
47
|
+
ecosystems_cli/commands/sponsors.py,sha256=qCg22hxQN1dhBquEFNgUUtSn-bwLeHqcZ-aVu55QxIE,165
|
|
48
|
+
ecosystems_cli/commands/summary.py,sha256=m3RnBt9k62C-63sfw7SsKtyh1icsY2DxZbQeahZ7XNM,162
|
|
49
|
+
ecosystems_cli/commands/timeline.py,sha256=iKxKs7qdvG4DYyvMJJJDL7j2HufXV6sowl4Mc6yMsOI,165
|
|
50
|
+
ecosystems_cli/commands/handlers/__init__.py,sha256=z2sAlxp-luU3F2OtU_N6t9GnpHJB6z0FowkvopzSqBo,1590
|
|
51
|
+
ecosystems_cli/commands/handlers/advisories.py,sha256=ObDSRHD_JsbfqrwHmQQI-R-9goCKWZl0_As7Fwbjv9g,2862
|
|
52
|
+
ecosystems_cli/commands/handlers/archives.py,sha256=UpaQlJ2mhY666eGTO5ys_l6IFP6GfFRans_7p36Nbws,1363
|
|
53
|
+
ecosystems_cli/commands/handlers/base.py,sha256=ej26pvmlQMlz2GT_f8JqHjxm18-IVg2y5GI9RsETPw0,1206
|
|
54
|
+
ecosystems_cli/commands/handlers/commits.py,sha256=45VAll0YXpjDMTNLrV9HICfLuM1np-IWIPcoRWLsk6s,2779
|
|
55
|
+
ecosystems_cli/commands/handlers/default.py,sha256=xpGOtNsS8DqcH6oRhIOWBJXZkzwBu1a23NvSiiApGlY,1443
|
|
56
|
+
ecosystems_cli/commands/handlers/dependabot.py,sha256=X6VfSC1b9u-2HUXuG2hgel-WVftQjVokBENPeLu3vvI,8065
|
|
57
|
+
ecosystems_cli/commands/handlers/diff.py,sha256=FsF0QaSDm6tEHebq6wEf69Aka8hywQHbUICZ_X00fWE,2373
|
|
58
|
+
ecosystems_cli/commands/handlers/docker.py,sha256=7axx4u-F-y00L-WLxwqUe73qFrcmZJqxKbzRPdRCLJw,5710
|
|
59
|
+
ecosystems_cli/commands/handlers/factory.py,sha256=g8vxkEOomG_y2cSw_rMYWxh_yrQGdZuOZ1RZJcjl_Hg,2215
|
|
60
|
+
ecosystems_cli/commands/handlers/issues.py,sha256=5SilFCq7PtvQ8iK6857kjesmANZHAcGkjpMuVxGEw-Q,3399
|
|
61
|
+
ecosystems_cli/commands/handlers/licenses.py,sha256=V_EcOvgIEgRDD-YSf4XKTn_oJ_cCe7IMHHPyVPdMc_k,1667
|
|
62
|
+
ecosystems_cli/commands/handlers/opencollective.py,sha256=s3s-q0Gu9taxiXg_al3N-9IxE3MaRRJOTlPe5Q5A-qw,3188
|
|
63
|
+
ecosystems_cli/commands/handlers/packages.py,sha256=fWFMZUotnUgcR0kt_bUjvG9JpGVbaGS3zroP9US_14o,4676
|
|
64
|
+
ecosystems_cli/commands/handlers/parser.py,sha256=SILjJVLIEEL68If3LuTviEi5O1tOBFmafg_-EsmB0aI,1885
|
|
65
|
+
ecosystems_cli/commands/handlers/repos.py,sha256=8b549T0vi4jkPP7nuqEoj3_X2dSv8i4CSDsisT09fYk,4327
|
|
66
|
+
ecosystems_cli/commands/handlers/resolve.py,sha256=-2Y7diDgYTapLidR6SyqL4j-vNJXB3PawrO7x9G_bps,2281
|
|
67
|
+
ecosystems_cli/commands/handlers/sbom.py,sha256=oQaWqcYMrCr4EOrEd1cbiQ012yBpMRy2hkDW0vWN7aM,1651
|
|
68
|
+
ecosystems_cli/commands/handlers/sponsors.py,sha256=LcRAltHxRmcxwyE1Ow0MBh0uwfz--qtjsQvjuyESa2M,1720
|
|
69
|
+
ecosystems_cli/commands/handlers/summary.py,sha256=Z0Q927qIUKZ50QygOHZAYKgOnZWVTCeDaRTpcPb3-0U,2949
|
|
70
|
+
ecosystems_cli/commands/handlers/timeline.py,sha256=I3D4k7iHrmzjLbGqYuNHnd_UKnpAZYhE6pEFnHdB108,1668
|
|
71
|
+
ecosystems_cli/helpers/click_params.py,sha256=GtWz6ynZnMKPDjzi-vto4d3nn-Nm-mDRwl0ZVdEy7Kg,1565
|
|
72
|
+
ecosystems_cli/helpers/flatten_dict.py,sha256=bXCTm8_IqRJ66dBp-URJQB8cnrOmEuac3KSLF0zpJyg,565
|
|
73
|
+
ecosystems_cli/helpers/format_value.py,sha256=ZLluYL_c4xYiwPTzElQ1xr7mQmpgRjkVUkDiWtNsecE,1053
|
|
74
|
+
ecosystems_cli/helpers/get_domain.py,sha256=0LFmqBkHuciQh4lds4yprjyhOjmi0WY5PZjG2X70hxQ,2120
|
|
75
|
+
ecosystems_cli/helpers/load_api_spec.py,sha256=3wzdEiFuWsfGai10uEqb31rCAZP-Gv3qozT7U3UV5nM,1178
|
|
76
|
+
ecosystems_cli/helpers/print_error.py,sha256=-wtrH1iUGq0cmLh1bqfNZroEA3hjr7L96KoWtVhRrJ4,476
|
|
77
|
+
ecosystems_cli/helpers/print_operations.py,sha256=MFgM1KFMz2Jr-IMD5mo5AKEpBpK9F--iEfCOlcv93Y0,2561
|
|
78
|
+
ecosystems_cli/helpers/print_output.py,sha256=FNSw8XSZ3WZj_cLxsmmPBCVPZ0z-dFkhquCoKGyVipw,6675
|
|
79
|
+
ecosystems_cli/helpers/purl_parser.py,sha256=1P9KPWvXbryJTwZR8LH5KARSTdTZaXAZER1zaRDhaP0,4244
|
|
80
|
+
ecosyste_ms_cli-1.3.2.dist-info/METADATA,sha256=AKTjv5opcF2j8R1WgbPDfX_eqHbz4clghlEIWfj40ws,4756
|
|
81
|
+
ecosyste_ms_cli-1.3.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
82
|
+
ecosyste_ms_cli-1.3.2.dist-info/entry_points.txt,sha256=DaalemcSflsffpe-ZAUGhP7t7y4t6V1b7qh_tmFDTkw,55
|
|
83
|
+
ecosyste_ms_cli-1.3.2.dist-info/top_level.txt,sha256=hDyXgOtTvKXSFnU8CSpQRBlOudo3Kb2siOKU_lNL_zY,15
|
|
84
|
+
ecosyste_ms_cli-1.3.2.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Sebastian Schürmann
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ecosystems_cli
|
|
File without changes
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
---
|
|
2
|
+
openapi: 3.0.1
|
|
3
|
+
info:
|
|
4
|
+
title: 'Ecosyste.ms: Advisories'
|
|
5
|
+
description: An open API service providing security vulnerability metadata for many
|
|
6
|
+
open source software ecosystems.
|
|
7
|
+
contact:
|
|
8
|
+
name: Ecosyste.ms
|
|
9
|
+
email: support@ecosyste.ms
|
|
10
|
+
url: https://ecosyste.ms
|
|
11
|
+
version: 1.0.0
|
|
12
|
+
license:
|
|
13
|
+
name: CC-BY-SA-4.0
|
|
14
|
+
url: https://creativecommons.org/licenses/by-sa/4.0/
|
|
15
|
+
externalDocs:
|
|
16
|
+
description: GitHub Repository
|
|
17
|
+
url: https://github.com/ecosyste-ms/advisories
|
|
18
|
+
servers:
|
|
19
|
+
- url: https://advisories.ecosyste.ms/api/v1
|
|
20
|
+
paths:
|
|
21
|
+
"/advisories":
|
|
22
|
+
get:
|
|
23
|
+
summary: list advisories
|
|
24
|
+
operationId: getAdvisories
|
|
25
|
+
tags:
|
|
26
|
+
- advisories
|
|
27
|
+
parameters:
|
|
28
|
+
- name: ecosystem
|
|
29
|
+
in: query
|
|
30
|
+
description: Ecosystem to filter by
|
|
31
|
+
required: false
|
|
32
|
+
schema:
|
|
33
|
+
type: string
|
|
34
|
+
- name: package_name
|
|
35
|
+
in: query
|
|
36
|
+
description: Package to filter by
|
|
37
|
+
required: false
|
|
38
|
+
schema:
|
|
39
|
+
type: string
|
|
40
|
+
- name: severity
|
|
41
|
+
in: query
|
|
42
|
+
description: Severity to filter by
|
|
43
|
+
required: false
|
|
44
|
+
schema:
|
|
45
|
+
type: string
|
|
46
|
+
- name: repository_url
|
|
47
|
+
in: query
|
|
48
|
+
description: Repository URL to filter by
|
|
49
|
+
required: false
|
|
50
|
+
schema:
|
|
51
|
+
type: string
|
|
52
|
+
- name: source
|
|
53
|
+
in: query
|
|
54
|
+
description: Source to filter by (e.g. github, erlef)
|
|
55
|
+
required: false
|
|
56
|
+
schema:
|
|
57
|
+
type: string
|
|
58
|
+
- name: page
|
|
59
|
+
in: query
|
|
60
|
+
description: pagination page number
|
|
61
|
+
required: false
|
|
62
|
+
schema:
|
|
63
|
+
type: integer
|
|
64
|
+
- name: per_page
|
|
65
|
+
in: query
|
|
66
|
+
description: Number of records to return
|
|
67
|
+
required: false
|
|
68
|
+
schema:
|
|
69
|
+
type: integer
|
|
70
|
+
- name: created_after
|
|
71
|
+
in: query
|
|
72
|
+
description: filter by created_at after given time
|
|
73
|
+
required: false
|
|
74
|
+
schema:
|
|
75
|
+
type: string
|
|
76
|
+
format: date-time
|
|
77
|
+
- name: updated_after
|
|
78
|
+
in: query
|
|
79
|
+
description: filter by updated_at after given time
|
|
80
|
+
required: false
|
|
81
|
+
schema:
|
|
82
|
+
type: string
|
|
83
|
+
format: date-time
|
|
84
|
+
- name: sort
|
|
85
|
+
in: query
|
|
86
|
+
description: field to order results by
|
|
87
|
+
required: false
|
|
88
|
+
schema:
|
|
89
|
+
type: string
|
|
90
|
+
- name: order
|
|
91
|
+
in: query
|
|
92
|
+
description: direction to order results by
|
|
93
|
+
required: false
|
|
94
|
+
schema:
|
|
95
|
+
type: string
|
|
96
|
+
responses:
|
|
97
|
+
200:
|
|
98
|
+
description: OK
|
|
99
|
+
content:
|
|
100
|
+
application/json:
|
|
101
|
+
schema:
|
|
102
|
+
type: array
|
|
103
|
+
items:
|
|
104
|
+
"$ref": "#/components/schemas/Advisory"
|
|
105
|
+
"/advisories/packages":
|
|
106
|
+
get:
|
|
107
|
+
summary: list packages that have advisories
|
|
108
|
+
operationId: getAdvisoriesPackages
|
|
109
|
+
tags:
|
|
110
|
+
- advisories
|
|
111
|
+
responses:
|
|
112
|
+
200:
|
|
113
|
+
description: OK
|
|
114
|
+
content:
|
|
115
|
+
application/json:
|
|
116
|
+
schema:
|
|
117
|
+
type: array
|
|
118
|
+
items:
|
|
119
|
+
"$ref": "#/components/schemas/Package"
|
|
120
|
+
"/advisories/lookup":
|
|
121
|
+
get:
|
|
122
|
+
summary: lookup advisories by Package URL (PURL)
|
|
123
|
+
operationId: lookupAdvisoriesByPurl
|
|
124
|
+
description: Lookup security advisories for a package using Package URL (PURL)
|
|
125
|
+
specification. Supports multiple ecosystems including npm, pypi, rubygems,
|
|
126
|
+
maven, nuget, go, and cargo.
|
|
127
|
+
tags:
|
|
128
|
+
- advisories
|
|
129
|
+
parameters:
|
|
130
|
+
- name: purl
|
|
131
|
+
in: query
|
|
132
|
+
description: 'Package URL (PURL) to lookup advisories for. Format: pkg:type/namespace/name@version'
|
|
133
|
+
required: true
|
|
134
|
+
schema:
|
|
135
|
+
type: string
|
|
136
|
+
example: pkg:npm/lodash@4.17.20
|
|
137
|
+
responses:
|
|
138
|
+
200:
|
|
139
|
+
description: List of advisories for the specified package
|
|
140
|
+
content:
|
|
141
|
+
application/json:
|
|
142
|
+
schema:
|
|
143
|
+
type: array
|
|
144
|
+
items:
|
|
145
|
+
"$ref": "#/components/schemas/Advisory"
|
|
146
|
+
400:
|
|
147
|
+
description: Bad Request - Invalid or missing PURL parameter
|
|
148
|
+
content:
|
|
149
|
+
application/json:
|
|
150
|
+
schema:
|
|
151
|
+
type: object
|
|
152
|
+
properties:
|
|
153
|
+
error:
|
|
154
|
+
type: string
|
|
155
|
+
example: PURL parameter is required
|
|
156
|
+
"/advisories/{advisoryUUID}":
|
|
157
|
+
get:
|
|
158
|
+
summary: get a advisories by uuid
|
|
159
|
+
operationId: getAdvisory
|
|
160
|
+
tags:
|
|
161
|
+
- advisories
|
|
162
|
+
parameters:
|
|
163
|
+
- in: path
|
|
164
|
+
name: advisoryUUID
|
|
165
|
+
schema:
|
|
166
|
+
type: string
|
|
167
|
+
required: true
|
|
168
|
+
description: uuid of the advisory
|
|
169
|
+
responses:
|
|
170
|
+
200:
|
|
171
|
+
description: OK
|
|
172
|
+
content:
|
|
173
|
+
application/json:
|
|
174
|
+
schema:
|
|
175
|
+
"$ref": "#/components/schemas/Advisory"
|
|
176
|
+
"/sources":
|
|
177
|
+
get:
|
|
178
|
+
summary: list advisory sources
|
|
179
|
+
operationId: getSources
|
|
180
|
+
tags:
|
|
181
|
+
- sources
|
|
182
|
+
responses:
|
|
183
|
+
200:
|
|
184
|
+
description: OK
|
|
185
|
+
content:
|
|
186
|
+
application/json:
|
|
187
|
+
schema:
|
|
188
|
+
type: array
|
|
189
|
+
items:
|
|
190
|
+
"$ref": "#/components/schemas/Source"
|
|
191
|
+
"/sources/{sourceKind}":
|
|
192
|
+
get:
|
|
193
|
+
summary: get a source by kind
|
|
194
|
+
operationId: getSource
|
|
195
|
+
tags:
|
|
196
|
+
- sources
|
|
197
|
+
parameters:
|
|
198
|
+
- in: path
|
|
199
|
+
name: sourceKind
|
|
200
|
+
schema:
|
|
201
|
+
type: string
|
|
202
|
+
required: true
|
|
203
|
+
description: kind of the source (e.g. github, erlef)
|
|
204
|
+
responses:
|
|
205
|
+
200:
|
|
206
|
+
description: OK
|
|
207
|
+
content:
|
|
208
|
+
application/json:
|
|
209
|
+
schema:
|
|
210
|
+
"$ref": "#/components/schemas/Source"
|
|
211
|
+
components:
|
|
212
|
+
schemas:
|
|
213
|
+
Advisory:
|
|
214
|
+
type: object
|
|
215
|
+
properties:
|
|
216
|
+
uuid:
|
|
217
|
+
type: string
|
|
218
|
+
url:
|
|
219
|
+
type: string
|
|
220
|
+
title:
|
|
221
|
+
type: string
|
|
222
|
+
description:
|
|
223
|
+
type: string
|
|
224
|
+
origin:
|
|
225
|
+
type: string
|
|
226
|
+
severity:
|
|
227
|
+
type: string
|
|
228
|
+
published_at:
|
|
229
|
+
type: string
|
|
230
|
+
withdrawn_at:
|
|
231
|
+
type: string
|
|
232
|
+
classification:
|
|
233
|
+
type: string
|
|
234
|
+
cvss_score:
|
|
235
|
+
type: number
|
|
236
|
+
cvss_vector:
|
|
237
|
+
type: string
|
|
238
|
+
references:
|
|
239
|
+
type: array
|
|
240
|
+
items:
|
|
241
|
+
type: string
|
|
242
|
+
source_kind:
|
|
243
|
+
type: string
|
|
244
|
+
identifiers:
|
|
245
|
+
type: array
|
|
246
|
+
items:
|
|
247
|
+
type: string
|
|
248
|
+
repository_url:
|
|
249
|
+
type: string
|
|
250
|
+
blast_radius:
|
|
251
|
+
type: number
|
|
252
|
+
packages:
|
|
253
|
+
type: array
|
|
254
|
+
items:
|
|
255
|
+
"$ref": "#/components/schemas/PackageWithDetails"
|
|
256
|
+
created_at:
|
|
257
|
+
type: string
|
|
258
|
+
updated_at:
|
|
259
|
+
type: string
|
|
260
|
+
epss_percentage:
|
|
261
|
+
type: number
|
|
262
|
+
epss_percentile:
|
|
263
|
+
type: number
|
|
264
|
+
api_url:
|
|
265
|
+
type: string
|
|
266
|
+
description: API URL for this advisory
|
|
267
|
+
html_url:
|
|
268
|
+
type: string
|
|
269
|
+
description: HTML URL for this advisory
|
|
270
|
+
related_advisories:
|
|
271
|
+
type: array
|
|
272
|
+
description: Advisories from other sources for the same vulnerability (matched
|
|
273
|
+
by CVE)
|
|
274
|
+
items:
|
|
275
|
+
"$ref": "#/components/schemas/RelatedAdvisory"
|
|
276
|
+
RelatedAdvisory:
|
|
277
|
+
type: object
|
|
278
|
+
properties:
|
|
279
|
+
uuid:
|
|
280
|
+
type: string
|
|
281
|
+
source_kind:
|
|
282
|
+
type: string
|
|
283
|
+
url:
|
|
284
|
+
type: string
|
|
285
|
+
Source:
|
|
286
|
+
type: object
|
|
287
|
+
properties:
|
|
288
|
+
id:
|
|
289
|
+
type: integer
|
|
290
|
+
name:
|
|
291
|
+
type: string
|
|
292
|
+
kind:
|
|
293
|
+
type: string
|
|
294
|
+
url:
|
|
295
|
+
type: string
|
|
296
|
+
advisories_count:
|
|
297
|
+
type: integer
|
|
298
|
+
created_at:
|
|
299
|
+
type: string
|
|
300
|
+
updated_at:
|
|
301
|
+
type: string
|
|
302
|
+
Package:
|
|
303
|
+
type: object
|
|
304
|
+
properties:
|
|
305
|
+
ecosystem:
|
|
306
|
+
type: string
|
|
307
|
+
package_name:
|
|
308
|
+
type: string
|
|
309
|
+
PackageWithDetails:
|
|
310
|
+
type: object
|
|
311
|
+
properties:
|
|
312
|
+
ecosystem:
|
|
313
|
+
type: string
|
|
314
|
+
package_name:
|
|
315
|
+
type: string
|
|
316
|
+
purl:
|
|
317
|
+
type: string
|
|
318
|
+
description: Package URL (PURL) for this package
|
|
319
|
+
example: pkg:npm/lodash
|
|
320
|
+
versions:
|
|
321
|
+
type: array
|
|
322
|
+
items:
|
|
323
|
+
type: object
|
|
324
|
+
properties:
|
|
325
|
+
vulnerable_version_range:
|
|
326
|
+
type: string
|
|
327
|
+
first_patched_version:
|
|
328
|
+
type: string
|
|
329
|
+
statistics:
|
|
330
|
+
type: object
|
|
331
|
+
properties:
|
|
332
|
+
dependent_packages_count:
|
|
333
|
+
type: integer
|
|
334
|
+
dependent_repos_count:
|
|
335
|
+
type: integer
|
|
336
|
+
downloads:
|
|
337
|
+
type: integer
|
|
338
|
+
downloads_period:
|
|
339
|
+
type: string
|
|
340
|
+
affected_versions:
|
|
341
|
+
type: array
|
|
342
|
+
items:
|
|
343
|
+
type: string
|
|
344
|
+
unaffected_versions:
|
|
345
|
+
type: array
|
|
346
|
+
items:
|
|
347
|
+
type: string
|