{"id":46064145,"url":"https://github.com/nspcc-dev/neofs-rest-gw","last_synced_at":"2026-03-01T12:01:54.250Z","repository":{"id":59045451,"uuid":"477656674","full_name":"nspcc-dev/neofs-rest-gw","owner":"nspcc-dev","description":"NeoFS REST Gateway for using NeoFS via REST API","archived":false,"fork":false,"pushed_at":"2026-02-18T07:29:24.000Z","size":1681,"stargazers_count":3,"open_issues_count":9,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-02-18T12:23:41.704Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/nspcc-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"2022-04-04T10:45:11.000Z","updated_at":"2026-02-18T07:29:27.000Z","dependencies_parsed_at":"2023-12-29T14:23:55.464Z","dependency_job_id":"3a2bbeff-c632-4c9d-8f30-161b8ce5b1e3","html_url":"https://github.com/nspcc-dev/neofs-rest-gw","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/nspcc-dev/neofs-rest-gw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-rest-gw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-rest-gw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-rest-gw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-rest-gw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nspcc-dev","download_url":"https://codeload.github.com/nspcc-dev/neofs-rest-gw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-rest-gw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29969243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T11:43:06.159Z","status":"ssl_error","status_checked_at":"2026-03-01T11:43:03.887Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-03-01T12:01:53.534Z","updated_at":"2026-03-01T12:01:54.244Z","avatar_url":"https://github.com/nspcc-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"./.github/logo.svg\" width=\"500px\" alt=\"NeoFS\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  REST server to interact with \u003ca href=\"https://fs.neo.org\"\u003eNeoFS\u003c/a\u003e.\n\u003c/p\u003e\n\n---\n[![Report](https://goreportcard.com/badge/github.com/nspcc-dev/neofs-rest-gw)](https://goreportcard.com/report/github.com/nspcc-dev/neofs-rest-gw)\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nspcc-dev/neofs-rest-gw?sort=semver)\n![License](https://img.shields.io/github/license/nspcc-dev/neofs-rest-gw.svg?style=popout)\n\n# neofs-rest-gw\n\nNeoFS REST Gateway bridges NeoFS internal protocol and REST API server.\n\n## Installation\n\n### Building\n\nBefore building make sure you have the following tools:\n\n* go\n* make\n* git\n* curl\n* docker\n\nFirst clone this repository:\n\n```shell\n$ git clone https://github.com/nspcc-dev/neofs-rest-gw\n```\n\nThen run make to build `bin/neofs-rest-gw` binary:\n\n```shell\n$ make\n```\n\nOr you can build it using docker:\n\n```shell\n$ make docker/all\n```\n\n#### Generate openapi boilerplate code\n\nIf you change the [spec file](./spec/rest.yaml) you have to re-generate server code.\n\nYou have several approaches:\n\n1. Run make. It automatically downloads `oapi-codegen` and generates boilerplate.\n\n```shell\n$ make\n```\n\n2. Generate code separately:\n\n```shell\n$ make generate-server\n```\n\n#### Other targets\n\nNotable make targets:\n\n```\ndep             Check and ensure dependencies\nimage           Build clean docker image\nimage-dirty     Build dirty docker image with host-built binaries\nformats         Run all code formatters\nlint            Run linters\nversion         Show current version\ngenerate-server Generate boilerplate by spec\n```\n\n### Docker\n\nOr you can also use a [Docker image](https://hub.docker.com/r/nspccdev/neofs-rest-gw) provided for released\n(and occasionally unreleased) versions of gateway (`:latest` points to the latest stable release).\n\n## Execution\n\nREST gateway itself is not a NeoFS node, so to access NeoFS it uses node's gRPC interface and you need to provide some\nnode that it will connect to. This can be done either via `-p` parameter or via `REST_GW_POOL_PEERS_\u003cN\u003e_ADDRESS` and\n`REST_GW_POOL_PEERS_\u003cN\u003e_WEIGHT` environment variables (the gate supports multiple NeoFS nodes with weighted load balancing).\n\nIf you're launching REST gateway in bundle with [neofs-dev-env](https://github.com/nspcc-dev/neofs-dev-env), you can get\nan IP address of the node in output of `make hosts` command\n(with s0*.neofs.devenv name).\n\nThese two commands are functionally equivalent, they run the gate with one backend node (and otherwise default\nsettings):\n\n```shell\n$ neofs-rest-gw -p 192.168.130.72:8080\n$ REST_GW_POOL_PEERS_0_ADDRESS=192.168.130.72:8080 neofs-rest-gw\n```\n\nIt's also possible to specify uri scheme (grpc or grpcs) when using `-p`:\n\n```shell\n$ neofs-rest-gw -p grpc://192.168.130.72:8080\n$ REST_GW_POOL_PEERS_0_ADDRESS=grpcs://192.168.130.72:8080 neofs-rest-gw\n```\n\n## Configuration\n\nIn general, everything available as CLI parameter can also be specified via environment variables, so they're not\nspecifically mentioned in most cases (see `--help` also). If you prefer a config file you can use it in yaml format.\nSee [config](./config/config.yaml) and [defaults](./docs/gate-configuration.md) for example.\n\n```shell\n$ neofs-rest-gw --config config.yaml\n```\n\n## Docs\n\nYou can see swagger specification using the following url\n(suppose you ran rest-gw on `localhost:8090`):\n\n* http://localhost:8090/v1/docs\n\n## Known issues\n\nUsing `%` in path parameters [leads to error](https://github.com/nspcc-dev/neofs-rest-gw/issues/195). For instance, getting object by attribute:\n* /v1/get_by_attribute/A9pnctophx5PFt4eUd8d2aa6otjgnQZNzyvt3HCeygFD/cat%25jpeg/cat%25jpeg\n\n\u003e cat%25jpeg - already URL escaped string, original value is cat%jpeg.\n\nAlso, when you run rest-gw, you will see a line similar to:\n```shell\n...\n2024/02/12 13:21:31 Serving neofs rest gw at http://192.168.130.72:8080\n```\nYou will find an auto-redirect to the specification page via this link.\n\n### Migrating from HTTP gateway\n\nSee [docs/migration-from-http.md](./docs/migration-from-http.md).\n\n### Migrating  Object search from V1 to V2\n\nSee [docs/migration-to-search-v2](./docs/migration-to-search-v2.md).\n\n### Migrating to V2 authentication API\n\nSee [docs/migration-to-auth-v2.md](./docs/migration-to-auth-v2.md).\n\n## Contributing\n\nFeel free to contribute to this project after reading the [contributing guidelines](CONTRIBUTING.md).\n\nBefore starting to work on a certain topic, create a new issue first, describing\nthe feature/topic you are going to implement.\n\n## License\n\nThis project is licensed under the GNU GPL v3 License -\nsee the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnspcc-dev%2Fneofs-rest-gw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnspcc-dev%2Fneofs-rest-gw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnspcc-dev%2Fneofs-rest-gw/lists"}