bitbucket_rest_api 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # BitBucketAPI
2
2
 
3
- [Wiki](https://bitbucket.com/vongrippen/bitbucket/wiki) | [RDocs](http://rubydoc.info/github/vongrippen/bitbucket/master/frames)
3
+ [![Gem Version](https://badge.fury.io/rb/bitbucket_rest_api.png)](http://badge.fury.io/rb/bitbucket_rest_api)
4
+
5
+ [Wiki](https://github.com/vongrippen/bitbucket/wiki) | [RDocs](http://rubydoc.info/github/vongrippen/bitbucket/master/frames)
4
6
 
5
7
  A Ruby wrapper for the BitBucket REST API.
6
8
 
@@ -32,7 +34,7 @@ At this stage you can also supply various configuration parameters, such as `:us
32
34
  bitbucket = BitBucket.new oauth_token: 'request_token', oauth_secret: 'request_secret'
33
35
  ```
34
36
 
35
- Alternatively, you can configure the BitBucket settings by passing a block, for instance, with custom enteprise endpoint like
37
+ Alternatively, you can configure the BitBucket settings by passing a block:
36
38
 
37
39
  ```ruby
38
40
  bitbucket = BitBucket.new do |config|
@@ -74,7 +74,10 @@ module BitBucket
74
74
 
75
75
  :Repos => 'repos',
76
76
  #:Error => 'error',
77
- :Issues => 'issues'
77
+ :Issues => 'issues',
78
+ :User => 'user',
79
+ :Users => 'users'
80
+
78
81
  #:Teams => 'teams',
79
82
  #:PullRequests => 'pull_requests',
80
83
  #:Users => 'users',
@@ -44,9 +44,12 @@ module BitBucket
44
44
  # Many of the resources on the users API provide a shortcut for getting
45
45
  # information about the currently authenticated user.
46
46
  def users(options = {})
47
- raise "Unimplemented"
48
- #@users ||= ApiFactory.new 'Users', options
47
+ @users ||= ApiFactory.new 'Users', options
48
+ end
49
+
50
+ def user_api(options = {})
51
+ @user_api ||= ApiFactory.new 'User', options
49
52
  end
50
53
 
51
54
  end # Client
52
- end # BitBucket
55
+ end # BitBucket
@@ -93,6 +93,23 @@ module BitBucket
93
93
 
94
94
  alias :find :get
95
95
 
96
+ # Delete a single issue
97
+ #
98
+ # = Examples
99
+ # bitbucket = BitBucket.new
100
+ # bitbucket.issues.delete 'user-name', 'repo-name', 'issue-id'
101
+ #
102
+ def delete(user_name, repo_name, issue_id, params={ })
103
+ _update_user_repo_params(user_name, repo_name)
104
+ _validate_user_repo_params(user, repo) unless user? && repo?
105
+ _validate_presence_of issue_id
106
+
107
+ normalize! params
108
+ # _merge_mime_type(:issue, params)
109
+
110
+ delete_request("/repositories/#{user}/#{repo}/issues/#{issue_id}", params)
111
+ end
112
+
96
113
  # Create an issue
97
114
  #
98
115
  # = Inputs
@@ -6,9 +6,11 @@ module BitBucket
6
6
 
7
7
  # Load all the modules after initializing Repos to avoid superclass mismatch
8
8
  autoload_all 'bitbucket_rest_api/repos',
9
- :Changesets => 'changesets',
10
- :Keys => 'keys',
11
- :Following => 'following'
9
+ :Changesets => 'changesets',
10
+ :Keys => 'keys',
11
+ :Services => 'services',
12
+ :Following => 'following',
13
+ :Sources => 'sources'
12
14
 
13
15
  DEFAULT_REPO_OPTIONS = {
14
16
  "website" => "",
@@ -52,6 +54,16 @@ module BitBucket
52
54
  @following ||= ApiFactory.new 'Repos::Following'
53
55
  end
54
56
 
57
+ # Access to Repos::Commits API
58
+ def sources
59
+ @sources ||= ApiFactory.new 'Repos::Sources'
60
+ end
61
+
62
+ # Access to Repos::Services API
63
+ def services
64
+ @services ||= ApiFactory.new 'Repos::Services'
65
+ end
66
+
55
67
  # List branches
56
68
  #
57
69
  # = Examples
@@ -0,0 +1,103 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ class Repos::Services < API
5
+
6
+ REQUIRED_KEY_PARAM_NAMES = %w[ type ].freeze
7
+
8
+ # List services
9
+ #
10
+ # = Examples
11
+ # bitbucket = BitBucket.new
12
+ # bitbucket.repos.services.list 'user-name', 'repo-name'
13
+ # bitbucket.repos.services.list 'user-name', 'repo-name' { |service| ... }
14
+ #
15
+ def list(user_name, repo_name, params={})
16
+ _update_user_repo_params(user_name, repo_name)
17
+ _validate_user_repo_params(user, repo) unless user? && repo?
18
+ normalize! params
19
+
20
+ response = get_request("/repositories/#{user}/#{repo.downcase}/services", params)
21
+ return response unless block_given?
22
+ response.each { |el| yield el }
23
+ end
24
+ alias :all :list
25
+
26
+ # Gets a single service
27
+ #
28
+ # = Examples
29
+ # @bitbucket = BitBucket.new
30
+ # @bitbucket.repos.services.get 'user-name', 'repo-name', 109172378)
31
+ #
32
+ def get(user_name, repo_name, service_id, params={})
33
+ _update_user_repo_params(user_name, repo_name)
34
+ _validate_user_repo_params(user, repo) unless user? && repo?
35
+ _validate_presence_of(service_id)
36
+ normalize! params
37
+
38
+ get_request("/repositories/#{user}/#{repo.downcase}/services/#{service_id}", params)
39
+ end
40
+ alias :find :get
41
+
42
+ # Create a service
43
+ #
44
+ # = Inputs
45
+ # * <tt>:type</tt> - One of the supported services. The type is a case-insensitive value.
46
+ #
47
+ # = Examples
48
+ # bitbucket = BitBucket.new
49
+ # bitbucket.repos.services.create 'user-name', 'repo-name',
50
+ # "type" => "Basecamp",
51
+ # "Password" => "...",
52
+ # "Username" => "...",
53
+ # "Discussion URL" => "..."
54
+ #
55
+ def create(user_name, repo_name, params={})
56
+ _update_user_repo_params(user_name, repo_name)
57
+ _validate_user_repo_params(user, repo) unless user? && repo?
58
+ normalize! params
59
+ assert_required_keys(REQUIRED_KEY_PARAM_NAMES, params)
60
+
61
+ post_request("/repositories/#{user}/#{repo.downcase}/services", params)
62
+ end
63
+
64
+ # Edit a service
65
+ #
66
+ # = Inputs
67
+ # * <tt>:type</tt> - One of the supported services. The type is a case-insensitive value.
68
+ #
69
+ # = Examples
70
+ # bitbucket = BitBucket.new
71
+ # bitbucket.repos.services.edit 'user-name', 'repo-name', 109172378,
72
+ # "type" => "Basecamp",
73
+ # "Password" => "...",
74
+ # "Username" => "...",
75
+ # "Discussion URL" => "..."
76
+ #
77
+ def edit(user_name, repo_name, service_id, params={})
78
+ _update_user_repo_params(user_name, repo_name)
79
+ _validate_user_repo_params(user, repo) unless user? && repo?
80
+ _validate_presence_of(service_id)
81
+
82
+ normalize! params
83
+
84
+ put_request("/repositories/#{user}/#{repo.downcase}/services/#{service_id}", params)
85
+ end
86
+
87
+ # Delete service
88
+ #
89
+ # = Examples
90
+ # @bitbucket = BitBucket.new
91
+ # @bitbucket.repos.services.delete 'user-name', 'repo-name', 109172378
92
+ #
93
+ def delete(user_name, repo_name, service_id, params={})
94
+ _update_user_repo_params(user_name, repo_name)
95
+ _validate_user_repo_params(user, repo) unless user? && repo?
96
+ _validate_presence_of(service_id)
97
+ normalize! params
98
+
99
+ delete_request("/repositories/#{user}/#{repo.downcase}/services/#{service_id}", params)
100
+ end
101
+
102
+ end # Repos::Keys
103
+ end # BitBucket
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ class Repos::Sources < API
5
+
6
+ REQUIRED_COMMENT_PARAMS = %w[
7
+ body
8
+ changeset_id
9
+ line
10
+ path
11
+ position
12
+ ].freeze
13
+
14
+ # Gets a source of repo
15
+ #
16
+ # = Examples
17
+ # @bitbucket = BitBucket.new
18
+ # @bitbucket.repos.sources.get 'user-name', 'repo-name', '6dcb09b5b57875f334f61aebed6', 'app/contorllers/')
19
+ #
20
+ def get(user_name, repo_name, sha, path, params={})
21
+ _update_user_repo_params(user_name, repo_name)
22
+ _validate_user_repo_params(user, repo) unless user? && repo?
23
+ _validate_presence_of sha
24
+ normalize! params
25
+
26
+ get_request("/repositories/#{user}/#{repo.downcase}/src/#{sha}/#{path}", params)
27
+ end
28
+ alias :find :get
29
+
30
+ end # Repos::Sources
31
+ end # BitBucket
@@ -0,0 +1,101 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ class User < API
5
+
6
+
7
+ DEFAULT_USER_OPTIONS = {
8
+ "first_name" => "",
9
+ "last_name" => "",
10
+ "avatar" => ""
11
+ # TODO: can this filed be modified?
12
+ # "resource_uri" => ""
13
+ }.freeze
14
+
15
+ # Creates new User API
16
+ def initialize(options = { })
17
+ super(options)
18
+ end
19
+
20
+ # Gets the basic information associated with an account and
21
+ # a list of all of the repositories owned by the user.
22
+ # See https://confluence.atlassian.com/display/BITBUCKET/user+Endpoint#userEndpoint-GETauserprofile
23
+ #
24
+ # = Examples
25
+ # bitbucket = BitBucket.new
26
+ # bitbucket.user_api.profile
27
+ #
28
+ def profile
29
+ get_request("/user")
30
+ end
31
+
32
+
33
+ # Update a user
34
+
35
+ # = Parameters
36
+ # * <tt>:first_name</tt> Optional string
37
+ # * <tt>:last_name</tt> Optional string
38
+ # * <tt>:avatar</tt> Optional string
39
+ # * <tt>:resource_uri</tt> Optional string
40
+ #
41
+ # = Examples
42
+ #
43
+ # bitbucket = BitBucket.new
44
+ # bitbucket.user_api.update :first_name => 'first-name', :last_name => 'last-name'
45
+ #
46
+
47
+ def update( params={ })
48
+ normalize! params
49
+ filter! DEFAULT_USER_OPTIONS, params
50
+
51
+ put_request("/user", DEFAULT_USER_OPTIONS.merge(params))
52
+
53
+ end
54
+
55
+
56
+ # GET a list of user privileges
57
+ def privileges
58
+ get_request("/user/privileges")
59
+ end
60
+
61
+
62
+
63
+ # GET a list of repositories an account follows
64
+ # Gets the details of the repositories that the individual or team account follows.
65
+ # This call returns the full data about the repositories including
66
+ # if the repository is a fork of another repository.
67
+ # An account always "follows" its own repositories.
68
+ def follows
69
+ get_request("/user/follows")
70
+ end
71
+
72
+
73
+ # GET a list of repositories visible to an account
74
+ # Gets the details of the repositories that the user owns
75
+ # or has at least read access to.
76
+ # Use this if you're looking for a full list of all of the repositories associated with a user.
77
+ def repositories
78
+ get_request("/user/repositories")
79
+ end
80
+
81
+ alias :repos :repositories
82
+
83
+
84
+
85
+ # GET a list of repositories the account is following
86
+ # Gets a list of the repositories the account follows.
87
+ # This is the same list that appears on the Following tab on your account dashboard.
88
+ def overview
89
+ get_request("/user/repositories/overview")
90
+ end
91
+
92
+
93
+
94
+ # GET the list of repositories on the dashboard
95
+ # Gets the repositories list from the account's dashboard.
96
+ def dashboard
97
+ get_request("/user/repositories/dashboard")
98
+ end
99
+
100
+ end # User
101
+ end # BitBucket
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ class Users < API
5
+ extend AutoloadHelper
6
+
7
+ # Load all the modules after initializing Repos to avoid superclass mismatch
8
+ autoload_all 'bitbucket_rest_api/users',
9
+ :Account => 'account'
10
+
11
+
12
+ # Creates new Users API
13
+ def initialize(options = { })
14
+ super(options)
15
+ end
16
+
17
+ # Access to Users::Account API
18
+ def account
19
+ @account ||= ApiFactory.new 'Users::Account'
20
+ end
21
+
22
+
23
+ end # Users
24
+ end # BitBucket
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ class Users::Account < API
5
+
6
+ # API about users/account , please refer to
7
+ # https://confluence.atlassian.com/display/BITBUCKET/account+Resource
8
+ #
9
+
10
+
11
+ # GET the account profile
12
+ #
13
+ def profile(accountname)
14
+ response = get_request("/users/#{accountname}")
15
+ end
16
+
17
+ # GET the account plan
18
+ def plan(accountname)
19
+ response = get_request("/users/#{accountname}/plan")
20
+ end
21
+
22
+ # GET the followers
23
+ def followers(accountname)
24
+ response = get_request("/users/#{accountname}/followers")
25
+ end
26
+
27
+ # GET the events
28
+ def events(accountname)
29
+ response = get_request("/users/#{accountname}/events")
30
+ end
31
+
32
+ end # Users::Account
33
+ end # BitBucket
@@ -4,7 +4,7 @@ module BitBucket
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 1
7
- PATCH = 2
7
+ PATCH = 4
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitbucket_rest_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-23 00:00:00.000000000Z
12
+ date: 2013-08-29 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
16
- requirement: &70328638942480 !ruby/object:Gem::Requirement
16
+ requirement: &70216235124080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.2.0
21
+ version: 2.0.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70328638942480
24
+ version_requirements: *70216235124080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday
27
- requirement: &70328638941900 !ruby/object:Gem::Requirement
27
+ requirement: &70216235121480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.8.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70328638941900
35
+ version_requirements: *70216235121480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: multi_json
38
- requirement: &70328638941380 !ruby/object:Gem::Requirement
38
+ requirement: &70216235110860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,21 +43,21 @@ dependencies:
43
43
  version: '1.3'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70328638941380
46
+ version_requirements: *70216235110860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: faraday_middleware
49
- requirement: &70328638940860 !ruby/object:Gem::Requirement
49
+ requirement: &70216235110340 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.8.1
54
+ version: 0.9.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70328638940860
57
+ version_requirements: *70216235110340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &70328638940400 !ruby/object:Gem::Requirement
60
+ requirement: &70216235109820 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.5.2
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70328638940400
68
+ version_requirements: *70216235109820
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simple_oauth
71
- requirement: &70328638940020 !ruby/object:Gem::Requirement
71
+ requirement: &70216235109320 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70328638940020
79
+ version_requirements: *70216235109320
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &70328638939480 !ruby/object:Gem::Requirement
82
+ requirement: &70216235108660 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70328638939480
90
+ version_requirements: *70216235108660
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: cucumber
93
- requirement: &70328638938900 !ruby/object:Gem::Requirement
93
+ requirement: &70216235108040 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70328638938900
101
+ version_requirements: *70216235108040
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: webmock
104
- requirement: &70328638938340 !ruby/object:Gem::Requirement
104
+ requirement: &70216235107460 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.8.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70328638938340
112
+ version_requirements: *70216235107460
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: vcr
115
- requirement: &70328638937820 !ruby/object:Gem::Requirement
115
+ requirement: &70216235106880 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 2.2.0
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70328638937820
123
+ version_requirements: *70216235106880
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: simplecov
126
- requirement: &70328638937260 !ruby/object:Gem::Requirement
126
+ requirement: &70216235106360 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 0.6.1
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70328638937260
134
+ version_requirements: *70216235106360
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: guard
137
- requirement: &70328638936820 !ruby/object:Gem::Requirement
137
+ requirement: &70216235105920 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70328638936820
145
+ version_requirements: *70216235105920
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: guard-rspec
148
- requirement: &70328638936360 !ruby/object:Gem::Requirement
148
+ requirement: &70216235105360 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ! '>='
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: '0'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70328638936360
156
+ version_requirements: *70216235105360
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: guard-cucumber
159
- requirement: &70328638935780 !ruby/object:Gem::Requirement
159
+ requirement: &70216235104840 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: '0'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *70328638935780
167
+ version_requirements: *70216235104840
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: rake
170
- requirement: &70328638935360 !ruby/object:Gem::Requirement
170
+ requirement: &70216235104420 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ! '>='
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: '0'
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *70328638935360
178
+ version_requirements: *70216235104420
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: bundler
181
- requirement: &70328638934840 !ruby/object:Gem::Requirement
181
+ requirement: &70216235103880 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ! '>='
@@ -186,7 +186,7 @@ dependencies:
186
186
  version: '0'
187
187
  type: :development
188
188
  prerelease: false
189
- version_requirements: *70328638934840
189
+ version_requirements: *70216235103880
190
190
  description: ! ' Ruby wrapper for the BitBucket API supporting OAuth and Basic Authentication '
191
191
  email: mcochran@linux.com
192
192
  executables: []
@@ -229,6 +229,8 @@ files:
229
229
  - lib/bitbucket_rest_api/repos/changesets.rb
230
230
  - lib/bitbucket_rest_api/repos/following.rb
231
231
  - lib/bitbucket_rest_api/repos/keys.rb
232
+ - lib/bitbucket_rest_api/repos/services.rb
233
+ - lib/bitbucket_rest_api/repos/sources.rb
232
234
  - lib/bitbucket_rest_api/repos.rb
233
235
  - lib/bitbucket_rest_api/request/basic_auth.rb
234
236
  - lib/bitbucket_rest_api/request/jsonize.rb
@@ -241,6 +243,9 @@ files:
241
243
  - lib/bitbucket_rest_api/response/xmlize.rb
242
244
  - lib/bitbucket_rest_api/response.rb
243
245
  - lib/bitbucket_rest_api/result.rb
246
+ - lib/bitbucket_rest_api/user.rb
247
+ - lib/bitbucket_rest_api/users/account.rb
248
+ - lib/bitbucket_rest_api/users.rb
244
249
  - lib/bitbucket_rest_api/utils/url.rb
245
250
  - lib/bitbucket_rest_api/validations/format.rb
246
251
  - lib/bitbucket_rest_api/validations/presence.rb