---
title: "Contributing"
description: "Bugs, spec-drift oddities, generator quirks: open an issue on the main code repo — ValeryVerkhoturov/wb-api-client/issues."
lang: en-US
source: https://valeryverkhoturov.github.io/wb-api-client-docs/en/guides/contributing
---

# Contributing

## Reporting issues

Bugs, spec-drift oddities, generator quirks: open an issue on the main code repo — [`ValeryVerkhoturov/wb-api-client/issues`](https://github.com/ValeryVerkhoturov/wb-api-client/issues).

Include:

- Which language client (Python / TypeScript / Go / Java / PHP / OneScript / C# / Rust)
- Which sub-module (`items`, `orders_fbs`, `analytics`, …)
- Version string from the manifest (`1.YYYYMMDD.N`)
- Minimal reproduction — one API call, one exception, one expected-vs-actual

Docs-site issues (typos, missing content, broken examples) go on the docs repo: [`ValeryVerkhoturov/wb-api-client-docs/issues`](https://github.com/ValeryVerkhoturov/wb-api-client-docs/issues).

## Do NOT hand-edit generated code

Every file under `clients/` in the main repo is generated. Editing there gets overwritten on the next daily-check run — the PR check will also flag it before merge.

If you find something wrong in generated output, the fix goes in one of:

- **`scripts/pipeline/specs/postprocess.py`** — a new pass, if the fix applies to the spec before generation.
- **`scripts/pipeline/generation/secrets.py`** — if the fix is in the generated `Configuration` / `ApiClient` boilerplate.
- **`generator-configs/*.yaml`** — if it's an openapi-generator option toggle.
- **`templates/{lang}/*`** — if it's in the top-level manifest.

The [architecture reference](https://valeryverkhoturov.github.io/wb-api-client-docs/en/guides/architecture) has the full pipeline map.

## Local development

```bash
git clone --recurse-submodules https://github.com/ValeryVerkhoturov/wb-api-client
cd wb-api-client

pip install -r scripts/requirements.txt       # ruamel.yaml, markdownify, requests, black, flask
./scripts/download-specs.py                # pull upstream (may 498 locally)
python  scripts/process-specs.py               # -> swaggers/processed/
./scripts/generate-clients.py 1.20260920.0            # -> clients/{python,typescript,go,java,php,onescript,csharp,rust}
make verify                                    # build + format check every language
```

`generate-clients.py` always regenerates all eight languages. For per-language iteration during debugging, comment out the other `queue_generation` calls rather than adding a flag. The `OPENAPI_GENERATOR_THREADS` environment variable controls generation concurrency (default: 2).

Formatting runs inside Docker so contributors don't need language runtimes installed. `make verify-<lang>` and `make {black,prettier,gofmt,spotless,php-cs-fixer,dotnet-format}` are individual targets. OneScript has no formatter, so `make verify-onescript` compiles every module with `oscript -check` and loads the package instead. `make help` lists everything.

The pipeline itself lives in `scripts/pipeline/`, organized by bounded context (see [architecture](https://valeryverkhoturov.github.io/wb-api-client-docs/en/guides/architecture)); the flat `scripts/*.py` files are just CLI shims. Changes under `scripts/` are additionally gated by `make scripts-check` (kernel smoke checks, no `#` comments, no docstrings), and black covers `scripts/` too, not just `clients/python`.

## PR flow

1. Fork the main repo.
2. Make your change to `scripts/`, `templates/`, `generator-configs/`, or a workflow.
3. Regenerate locally so `clients/` matches.
4. Commit `swaggers/`, `clients/`, and your source changes together.
5. Open a PR. The PR-check workflow will regenerate from scratch and fail if `git diff` is non-empty against your commit — that catches non-determinism.

## Contributing to the docs site

This site lives in [`ValeryVerkhoturov/wb-api-client-docs`](https://github.com/ValeryVerkhoturov/wb-api-client-docs).

```bash
git clone https://github.com/ValeryVerkhoturov/wb-api-client-docs
cd wb-api-client-docs

npm install
npm run docs:dev
# → http://localhost:5173/wb-api-client-docs/
```

Push to `main`; the deploy workflow builds and publishes to GitHub Pages automatically.

## License

Both repos are Apache 2.0. Contributions are assumed to be under the same license.

<p align="center">
  <img src="/pics/blueberry-laptop-ascii-animated.webp" style="height: 200px; width: auto; max-width: 100%; object-fit: contain" alt="wb-api-client mascot">
</p>
