I'm trying to use @semantic-release/github to auto-release to Codeberg releases. It works when there are no release assets, but when there are assets, it gets a 400 from the POST /repos/{owner}/{repo}/releases/{id}/assets endpoint, saying Missing 'name' parameter.
The code that performs this API call is here, and the details dumped in the error message are:
...: RequestError [HttpError]: Missing 'name' parameter
...
{
status: 400,
request: {
method: 'POST',
url: 'https://codeberg.org/api/v1/repos/pbrisbin/man-pages-lint/releases/4573864/assets',
headers: {
accept: 'application/vnd.github.v3+json',
'user-agent': '@semantic-release/github v11.0.0 octokit-core.js/6.1.2 Node.js/20.19.5 (linux; x64)',
'content-type': 'application/gzip',
'content-length': 1358651,
authorization: 'token [REDACTED]'
},
body: <Buffer 1f 8b 08 00 00 00 00 00 00 03 e4 dc 0b 74 1c d5 79 07 f0 6b d9 92 e5 17 16 7e 0a 63 83 30 d8 08 83 a5 5d 3d d7 e6 b5 18 83 65 83 41 18 1b 1c a0 ac 67 ... 1358601 more bytes>,
request: { agent: undefined, hook: [Function: bound bound register] }
},
response: {
url: 'https://codeberg.org/api/v1/repos/pbrisbin/man-pages-lint/releases/4573864/assets',
status: 400,
headers: {
'alt-svc': 'h3=":443"; ma=2592000,h3=":443"; ma=2592000',
'cache-control': 'max-age=0, private, must-revalidate, no-transform',
connection: 'close',
'content-length': '80',
'content-type': 'application/json;charset=utf-8',
date: '2025年9月11日 19:08:28 GMT',
'permissions-policy': 'interest-cohort=()',
'strict-transport-security': 'max-age=63072000; includeSubDomains; preload',
vary: 'Origin',
via: '1.1 Caddy',
'x-content-type-options': 'nosniff',
'x-frame-options': 'SAMEORIGIN'
},
data: {
message: "Missing 'name' parameter",
url: 'https://codeberg.org/api/swagger'
}
},
pluginName: '@semantic-release/github'
}
::error::HttpError: Missing 'name' parameter
I'm shocked getting a GitHub plugin to talk to a Forgejo API works as well as it does, so I'm not at all surprised there is some kind of mismatch here, but I'm unclear on what to do about it. The Swagger spec for this endpoint shows name as optional.
The Pull Request where I'm trying this out is here.
### Comment
I'm trying to use `@semantic-release/github` to auto-release to Codeberg releases. It works when there are no release assets, but when there are assets, it gets a 400 from the `POST /repos/{owner}/{repo}/releases/{id}/assets` endpoint, saying `Missing 'name' parameter`.
The code that performs this API call is [here](https://github.com/semantic-release/github/blob/ed9069805ceb823c65d4b674614e5e320138bb1f/lib/publish.js#L131-L152), and the details dumped in the error message are:
```
...: RequestError [HttpError]: Missing 'name' parameter
...
{
status: 400,
request: {
method: 'POST',
url: 'https://codeberg.org/api/v1/repos/pbrisbin/man-pages-lint/releases/4573864/assets',
headers: {
accept: 'application/vnd.github.v3+json',
'user-agent': '@semantic-release/github v11.0.0 octokit-core.js/6.1.2 Node.js/20.19.5 (linux; x64)',
'content-type': 'application/gzip',
'content-length': 1358651,
authorization: 'token [REDACTED]'
},
body: <Buffer 1f 8b 08 00 00 00 00 00 00 03 e4 dc 0b 74 1c d5 79 07 f0 6b d9 92 e5 17 16 7e 0a 63 83 30 d8 08 83 a5 5d 3d d7 e6 b5 18 83 65 83 41 18 1b 1c a0 ac 67 ... 1358601 more bytes>,
request: { agent: undefined, hook: [Function: bound bound register] }
},
response: {
url: 'https://codeberg.org/api/v1/repos/pbrisbin/man-pages-lint/releases/4573864/assets',
status: 400,
headers: {
'alt-svc': 'h3=":443"; ma=2592000,h3=":443"; ma=2592000',
'cache-control': 'max-age=0, private, must-revalidate, no-transform',
connection: 'close',
'content-length': '80',
'content-type': 'application/json;charset=utf-8',
date: '2025年9月11日 19:08:28 GMT',
'permissions-policy': 'interest-cohort=()',
'strict-transport-security': 'max-age=63072000; includeSubDomains; preload',
vary: 'Origin',
via: '1.1 Caddy',
'x-content-type-options': 'nosniff',
'x-frame-options': 'SAMEORIGIN'
},
data: {
message: "Missing 'name' parameter",
url: 'https://codeberg.org/api/swagger'
}
},
pluginName: '@semantic-release/github'
}
::error::HttpError: Missing 'name' parameter
```
I'm shocked getting a GitHub plugin to talk to a Forgejo API works as well as it does, so I'm not at all surprised there is some kind of mismatch here, but I'm unclear on what to do about it. The Swagger spec for this endpoint shows `name` as optional.
The Pull Request where I'm trying this out is [here](https://codeberg.org/pbrisbin/man-pages-lint/pulls/3).
- [.releaserc.yaml](https://codeberg.org/pbrisbin/man-pages-lint/src/branch/rc/semantic-release/.releaserc.yaml) configuration
- [release.yml](https://codeberg.org/pbrisbin/man-pages-lint/src/branch/rc/semantic-release/.forgejo/workflows/release.yml) workflow
- Most recent attempt at time of writing is [here](https://codeberg.org/pbrisbin/man-pages-lint/actions/runs/24)