gitlab:api ยท diff

git:20260302.1ad6742 to git:20260310.bf6ad1e

7 added, 0 removed. Audit A to A.

---
name: gitlab:api
description: GitLab REST and GraphQL API access via glab. Use when making API requests, querying project data, or automating GitLab operations.
---
# GitLab API
REST and GraphQL API access via `glab api`.
## Placeholders
Auto-resolve to current project values:
- `:fullpath` - Full project path (e.g., `group/project`)
- `:id` - Project ID
- `:branch` - Current branch
- `:user` / `:username` - Current user
```bash
glab api projects/:fullpath/merge_requests
```
## REST
```bash
glab api projects/:id/issues # GET
glab api projects/:id/issues -X POST -f title="..." # POST with field
glab api projects/:id/issues --paginate # All pages
```
**Pagination pitfall**: `--paginate` concatenates JSON arrays across pages as `][`, producing invalid JSON (e.g., `[{...}][{...}]`). Fix by replacing `][` with `,` before parsing: `.replace(/\]\s*\[/g, ",")`.
+ **Nested fields**: `-f` and `--raw-field` silently drop bracket-nested keys like `position[base_sha]=...`. For nested objects, write JSON to a file and use `--input`:
+
+ ```bash
+ echo '{"position":{"base_sha":"abc","head_sha":"def","old_path":"file.ts","new_path":"file.ts","position_type":"text","new_line":10}}' > /tmp/payload.json
+ glab api projects/:id/merge_requests/:iid/discussions -X POST -H "Content-Type: application/json" --input /tmp/payload.json
+ ```
+
## GraphQL
```bash
glab api graphql -f query='{ currentUser { username } }'
```
For pagination, accept `$endCursor` variable and fetch `pageInfo { hasNextPage, endCursor }`.
## Output
- `--output json` (default) - Pretty-printed JSON
- `--output ndjson` - Newline-delimited, works with `jq` streaming
## Documentation
- REST endpoints: `/api/` in [GitLab docs](https://docs.gitlab.com/api/)
- GraphQL schema: `/api/graphql/reference/`