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
This commit is contained in:
Robert Speicher 2016-10-12 18:38:02 +00:00
commit 58e2b44afe
6 changed files with 65 additions and 0 deletions

View File

@ -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"

View File

@ -48,6 +48,7 @@ following locations:
- [Todos](todos.md)
- [Users](users.md)
- [Validate CI configuration](ci/lint.md)
- [Version](version.md)
### Internal CI API

23
doc/api/version.md Normal file
View File

@ -0,0 +1,23 @@
# 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"
}
```

View File

@ -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)

12
lib/api/version.rb Normal file
View File

@ -0,0 +1,12 @@
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

View File

@ -0,0 +1,27 @@
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