Commit 58e2b44a authored by Robert Speicher's avatar Robert Speicher

Merge branch 'api-version' into 'master'

API: Version information

## What does this MR do?

Adds a new endpoint to retrieve the version information.

## Why was this MR needed?

Clients can now use this information to enable/disable certain API features depending on the version.  

## What are the relevant issue numbers?

Closes #22608, https://gitlab.com/gitlab-org/gitlab-ce/issues/23148

See merge request !6822
parents 5aa7b13c b998479c
......@@ -32,6 +32,7 @@ v 8.13.0 (unreleased)
- Cache rendered markdown in the database, rather than Redis
- Avoid database queries on Banzai::ReferenceParser::BaseParser for nodes without references
- Simplify Mentionable concern instance methods
- API: Ability to retrieve version information (Robert Schilling)
- Fix permission for setting an issue's due date
- API: Multi-file commit !6096 (mahcsig)
- Revert "Label list shows all issues (opened or closed) with that label"
......
......@@ -48,6 +48,7 @@ following locations:
- [Todos](todos.md)
- [Users](users.md)
- [Validate CI configuration](ci/lint.md)
- [Version](version.md)
### Internal CI API
......
# Version API
>**Note:** This feature was introduced in GitLab 8.13
Retrieve version information for this GitLab instance. Responds `200 OK` for
authenticated users.
```
GET /version
```
```bash
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/version
```
Example response:
```json
{
"version": "8.13.0-pre",
"revision": "4e963fe"
}
```
......@@ -72,6 +72,7 @@ module API
mount ::API::Triggers
mount ::API::Users
mount ::API::Variables
mount ::API::Version
route :any, '*path' do
error!('404 Not Found', 404)
......
module API
class Version < Grape::API
before { authenticate! }
desc 'Get the version information of the GitLab instance.' do
detail 'This feature was introduced in GitLab 8.13.'
end
get '/version' do
{ version: Gitlab::VERSION, revision: Gitlab::REVISION }
end
end
end
require 'spec_helper'
describe API::API, api: true do
include ApiHelpers
describe 'GET /version' do
context 'when unauthenticated' do
it 'returns authentication error' do
get api('/version')
expect(response).to have_http_status(401)
end
end
context 'when authenticated' do
let(:user) { create(:user) }
it 'returns the version information' do
get api('/version', user)
expect(response).to have_http_status(200)
expect(json_response['version']).to eq(Gitlab::VERSION)
expect(json_response['revision']).to eq(Gitlab::REVISION)
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment