API V3 to API V4
Since GitLab 9.0, API V4 is the preferred version to be used.
API V3 was unsupported from GitLab 9.5, released on August 22, 2017. API v3 was removed in GitLab 11.0. The V3 API documentation is still available.
Below are the changes made between V3 and V4.
8.17
- Removed
GET /projects/:search
(use:GET /projects?search=x
) !8877 -
iid
filter has been removed fromGET /projects/:id/issues
!8967 -
GET /projects/:id/merge_requests?iid[]=x&iid[]=y
array filter has been renamed toiids
!8793 - Endpoints under
GET /projects/merge_request/:id
have been removed (use:GET /projects/merge_requests/:id
) !8793 - Project snippets do not return deprecated field
expires_at
!8723 - Endpoints under
GET /projects/:id/keys
have been removed (useGET /projects/:id/deploy_keys
) !8716
9.0
- Status 409 returned for
POST /projects/:id/members
when a member already exists !9093 - Moved
DELETE /projects/:id/star
toPOST /projects/:id/unstar
!9328 - Removed the following deprecated Templates endpoints (these are still accessible with
/templates
prefix) !8853/licenses
/licenses/:key
/gitignores
/gitlab_ci_ymls
/dockerfiles
/gitignores/:key
/gitlab_ci_ymls/:key
/dockerfiles/:key
- Moved
POST /projects/fork/:id
toPOST /projects/:id/fork
!8940 - Moved
DELETE /todos
toPOST /todos/mark_as_done
andDELETE /todos/:todo_id
toPOST /todos/:todo_id/mark_as_done
!9410 - Project filters are no longer available as
GET /projects/foo
, but asGET /projects?foo=true
instead !8962-
GET /projects/visible
&GET /projects/all
are consolidated intoGET /projects
and can be used with or without authorization -
GET /projects/owned
moved toGET /projects?owned=true
-
GET /projects/starred
moved toGET /projects?starred=true
-
-
GET /projects
returns all projects visible to current user, even if the user is not a member !9674- To get projects the user is a member of, use
GET /projects?membership=true
- To get projects the user is a member of, use
- Return pagination headers for all endpoints that return an array !8606
- Added
POST /environments/:environment_id/stop
to stop an environment !8808 - Removed
DELETE /projects/:id/deploy_keys/:key_id/disable
. UseDELETE /projects/:id/deploy_keys/:key_id
instead !9366 - Moved
PUT /users/:id/(block|unblock)
toPOST /users/:id/(block|unblock)
!9371 - Make subscription API more RESTful. Use
POST /projects/:id/:subscribable_type/:subscribable_id/subscribe
to subscribe andPOST /projects/:id/:subscribable_type/:subscribable_id/unsubscribe
to unsubscribe from a resource. !9325 - Labels filter on
GET /projects/:id/issues
andGET /issues
now matches only issues containing all labels (i.e.: Logical AND, not OR) !8849 - Renamed parameter
branch_name
tobranch
on the following endpoints !8936POST /projects/:id/repository/branches
POST /projects/:id/repository/commits
POST/PUT/DELETE :id/repository/files
- Renamed the
merge_when_build_succeeds
parameter tomerge_when_pipeline_succeeds
on the following endpoints: !9335PUT /projects/:id/merge_requests/:merge_request_id/merge
POST /projects/:id/merge_requests/:merge_request_id/cancel_merge_when_pipeline_succeeds
POST /projects
POST /projects/user/:user_id
PUT /projects/:id
- Renamed
branch_name
tobranch
onDELETE /projects/:id/repository/branches/:branch
response !8936 - Remove
public
parameter from create and edit actions of projects !8736 - Remove
subscribed
field from responses returning list of issues or merge requests. Fetch individual issues or merge requests to obtain the value ofsubscribed
!9661 - Use
visibility
as string parameter everywhere !9337 - Notes do not return deprecated field
upvote
anddownvote
!9384 - Return HTTP status code
400
for all validation errors when creating or updating a member instead of sometimes422
error. !9523 - Remove
GET /groups/owned
. UseGET /groups?owned=true
instead !9505 - Return 202 with JSON body on async removals on V4 API (
DELETE /projects/:id/repository/merged_branches
andDELETE /projects/:id
) !9449 -
GET /projects/:id/milestones?iid[]=x&iid[]=y
array filter has been renamed toiids
!9096 - Return basic information about pipeline in
GET /projects/:id/pipelines
!8875 - Renamed all
build
references tojob
!9463 - Drop
GET /projects/:id/repository/commits/:sha/jobs
!9463 - Rename Build Triggers to be Pipeline Triggers API !9713
-
POST /projects/:id/trigger/builds
toPOST /projects/:id/trigger/pipeline
- Require description when creating a new trigger
POST /projects/:id/triggers
-
- Simplify project payload exposed on Environment endpoints !9675
- API uses merge request
IID
s (internal ID, as in the web UI) rather thanID
s. This affects the merge requests, award emoji, to-dos, and time tracking APIs. !9530 - API uses issue
IID
s (internal ID, as in the web UI) rather thanID
s. This affects the issues, award emoji, to-dos, and time tracking APIs. !9530 - Change initial page from
0
to1
onGET /projects/:id/repository/commits
(like on the rest of the API) !9679 - Return correct
Link
header data forGET /projects/:id/repository/commits
!9679 - Update endpoints for repository files !9637
- Moved
GET /projects/:id/repository/files?file_path=:file_path
toGET /projects/:id/repository/files/:file_path
(:file_path
should be URL-encoded) -
GET /projects/:id/repository/blobs/:sha
now returns JSON attributes for the blob identified by:sha
, instead of finding the commit identified by:sha
and returning the raw content of the blob in that commit identified by the required?filepath=:filepath
- Moved
GET /projects/:id/repository/commits/:sha/blob?file_path=:file_path
andGET /projects/:id/repository/blobs/:sha?file_path=:file_path
toGET /projects/:id/repository/files/:file_path/raw?ref=:sha
-
GET /projects/:id/repository/tree
parameterref_name
has been renamed toref
for consistency
- Moved
-
confirm
parameter forPOST /users
has been deprecated in favor ofskip_confirmation
parameter