Skip to content
GitLab Next
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • GitLab FOSS GitLab FOSS
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 1
    • Merge requests 1
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Code review
    • Insights
    • Issue
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • GitLab.orgGitLab.org
  • GitLab FOSSGitLab FOSS
  • Issues
  • #67541
Closed (moved) (moved)
Open
Issue created Nov 26, 2019 by Matt Callaghan@mcallaghan-bsm

Gitlab API for environments name/search filtering not working

Summary

The gitlab REST API for querying environments by name or search does not work.

Steps to reproduce

See https://forum.gitlab.com/t/gitlab-api-for-environments-name-search-filtering-not-working/31983

consider a desire to find an environment ID by name

PRIVATE_TOKEN="..."
PROJECT_URI="https://..."
PROJECT_ID="XX"

As per this the documentation describes precisely what I want. https://docs.gitlab.com/ee/api/environments.html#list-environments ?name= & ?search=

experimenting with the basic query, I can see my environments in the BULK get

curl --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" ${PROJECT_URI}/api/v4/projects/${PROJECT_ID}/environments?per_page=100 | jq '.[] | .name' | grep master/
(snip)
"master/3524"
"master/3525"
"master/3526"

✔

but my goal is to get the ID of a specific environment, by a specific name, so lets say I want “master/3524”

$ curl --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" ${PROJECT_URI}/api/v4/projects/${PROJECT_ID}/environments?name=master%2F3524 | jq '.[] | .name' 
(SNIP)
...
lists ALL environments!!
...

❗

it doesn’t match, in the documentation example, it is quite clear that / needs to be %2F (verified https://en.wikipedia.org/wiki/Percent-encoding) , i tried / directly, … but of course this doesn’t work because / is a reserved character, it needs to be % encoded

tried the search filter as well, same problem

curl --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" ${PROJECT_URI}/api/v4/projects/${PROJECT_ID}/environments?search=3524 | jq '.[] | .name'
...
lists ALL environments!!
...

❗

(tried various other attempts/combinations, see the forum post)

Example Project

(did not do)

What is the current bug behavior?

The API query to "List environments" works without any parameters (lists all environments). However the query to specify an environment by name or by search does not work.

What is the expected correct behavior?

curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/1/environments?name=review%2Ffix-foo

, per the documentation: https://docs.gitlab.com/ee/api/environments.html#list-environments

Should work.

Relevant logs and/or screenshots

N/A

Output of checks

see above

Results of GitLab environment info

gitlab instance version 11.11.2

Results of GitLab application Check

(skipped)

Possible fixes

WORKAROUND I found was to list ALL environments, and filter using jq. https://forum.gitlab.com/t/gitlab-api-for-environments-name-search-filtering-not-working/31983/2

curl --silent --header "PRIVATE-TOKEN: ${PRIVATE_TOKEN}" ${PROJECT_URI}/api/v4/projects/${PROJECT_ID}/environments?per_page=100 | jq '.[] | select(.name == "master/3526")'  | jq '.id'
904
Assignee
Assign to
Time tracking