Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
e7d9fcc1
Commit
e7d9fcc1
authored
Jul 12, 2016
by
Robert Schilling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
API: Expose due_date for issues
parent
3ca92534
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
53 additions
and
13 deletions
+53
-13
CHANGELOG
CHANGELOG
+1
-0
doc/api/issues.md
doc/api/issues.md
+20
-9
lib/api/entities.rb
lib/api/entities.rb
+1
-0
lib/api/issues.rb
lib/api/issues.rb
+6
-4
spec/requests/api/issues_spec.rb
spec/requests/api/issues_spec.rb
+25
-0
No files found.
CHANGELOG
View file @
e7d9fcc1
...
...
@@ -35,6 +35,7 @@ v 8.10.0 (unreleased)
- Add notification settings dropdown for groups
- Wildcards for protected branches. !4665
- Allow importing from Github using Personal Access Tokens. (Eric K Idema)
- API: Expose `due_date` for issues (Robert Schilling)
- API: Todos !3188 (Robert Schilling)
- API: Expose shared groups for projects and shared projects for groups !5050 (Robert Schilling)
- Add "Enabled Git access protocols" to Application Settings
...
...
doc/api/issues.md
View file @
e7d9fcc1
...
...
@@ -78,7 +78,8 @@ Example response:
"iid"
:
6
,
"labels"
:
[],
"subscribed"
:
false
,
"user_notes_count"
:
1
"user_notes_count"
:
1
,
"due_date"
:
"2016-07-22"
}
]
```
...
...
@@ -154,7 +155,8 @@ Example response:
"updated_at"
:
"2016-01-04T15:31:46.176Z"
,
"created_at"
:
"2016-01-04T15:31:46.176Z"
,
"subscribed"
:
false
,
"user_notes_count"
:
1
"user_notes_count"
:
1
,
"due_date"
:
null
}
]
```
...
...
@@ -232,7 +234,8 @@ Example response:
"updated_at"
:
"2016-01-04T15:31:46.176Z"
,
"created_at"
:
"2016-01-04T15:31:46.176Z"
,
"subscribed"
:
false
,
"user_notes_count"
:
1
"user_notes_count"
:
1
,
"due_date"
:
"2016-07-22"
}
]
```
...
...
@@ -295,7 +298,8 @@ Example response:
"updated_at"
:
"2016-01-04T15:31:46.176Z"
,
"created_at"
:
"2016-01-04T15:31:46.176Z"
,
"subscribed"
:
false
,
"user_notes_count"
:
1
"user_notes_count"
:
1
,
"due_date"
:
null
}
```
...
...
@@ -320,6 +324,7 @@ POST /projects/:id/issues
|
`milestone_id`
| integer | no | The ID of a milestone to assign issue |
|
`labels`
| string | no | Comma-separated label names for an issue |
|
`created_at`
| string | no | Date time string, ISO 8601 formatted, e.g.
`2016-03-11T03:45:40Z`
|
|
`due_date`
| string | no | Date time string in the format YEAR-MONTH-DAY, e.g.
`2016-03-11`
|
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/4/issues?title
=
Issues%20with%20auth&labels
=
bug
...
...
@@ -351,7 +356,8 @@ Example response:
"updated_at"
:
"2016-01-07T12:44:33.959Z"
,
"milestone"
:
null
,
"subscribed"
:
true
,
"user_notes_count"
:
0
"user_notes_count"
:
0
,
"due_date"
:
null
}
```
...
...
@@ -379,6 +385,7 @@ PUT /projects/:id/issues/:issue_id
|
`labels`
| string | no | Comma-separated label names for an issue |
|
`state_event`
| string | no | The state event of an issue. Set
`close`
to close the issue and
`reopen`
to reopen it |
|
`updated_at`
| string | no | Date time string, ISO 8601 formatted, e.g.
`2016-03-11T03:45:40Z`
|
|
`due_date`
| string | no | Date time string in the format YEAR-MONTH-DAY, e.g.
`2016-03-11`
|
```
bash
curl
-X
PUT
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/4/issues/85?state_event
=
close
...
...
@@ -410,7 +417,8 @@ Example response:
"assignee"
:
null
,
"milestone"
:
null
,
"subscribed"
:
true
,
"user_notes_count"
:
0
"user_notes_count"
:
0
,
"due_date"
:
"2016-07-22"
}
```
...
...
@@ -487,7 +495,8 @@ Example response:
"state"
:
"active"
,
"avatar_url"
:
"http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80&d=identicon"
,
"web_url"
:
"https://gitlab.example.com/u/solon.cremin"
}
},
"due_date"
:
null
}
```
...
...
@@ -541,7 +550,8 @@ Example response:
"state"
:
"active"
,
"avatar_url"
:
"http://www.gravatar.com/avatar/7a190fecbaa68212a4b68aeb6e3acd10?s=80&d=identicon"
,
"web_url"
:
"https://gitlab.example.com/u/solon.cremin"
}
},
"due_date"
:
null
}
```
...
...
@@ -596,7 +606,8 @@ Example response:
"avatar_url"
:
"http://www.gravatar.com/avatar/5224fd70153710e92fb8bcf79ac29d67?s=80&d=identicon"
,
"web_url"
:
"https://gitlab.example.com/u/orville"
},
"subscribed"
:
false
"subscribed"
:
false
,
"due_date"
:
null
}
```
...
...
lib/api/entities.rb
View file @
e7d9fcc1
...
...
@@ -186,6 +186,7 @@ module API
end
expose
:user_notes_count
expose
:upvotes
,
:downvotes
expose
:due_date
end
class
ExternalIssue
<
Grape
::
Entity
...
...
lib/api/issues.rb
View file @
e7d9fcc1
...
...
@@ -152,12 +152,13 @@ module API
# milestone_id (optional) - The ID of a milestone to assign issue
# labels (optional) - The labels of an issue
# created_at (optional) - Date time string, ISO 8601 formatted
# due_date (optional) - Date time string in the format YEAR-MONTH-DAY
# Example Request:
# POST /projects/:id/issues
post
":id/issues"
do
post
':id/issues'
do
required_attributes!
[
:title
]
keys
=
[
:title
,
:description
,
:assignee_id
,
:milestone_id
]
keys
=
[
:title
,
:description
,
:assignee_id
,
:milestone_id
,
:due_date
]
keys
<<
:created_at
if
current_user
.
admin?
||
user_project
.
owner
==
current_user
attrs
=
attributes_for_keys
(
keys
)
...
...
@@ -201,12 +202,13 @@ module API
# labels (optional) - The labels of an issue
# state_event (optional) - The state event of an issue (close|reopen)
# updated_at (optional) - Date time string, ISO 8601 formatted
# due_date (optional) - Date time string in the format YEAR-MONTH-DAY
# Example Request:
# PUT /projects/:id/issues/:issue_id
put
":id/issues/:issue_id"
do
put
':id/issues/:issue_id'
do
issue
=
user_project
.
issues
.
find
(
params
[
:issue_id
])
authorize!
:update_issue
,
issue
keys
=
[
:title
,
:description
,
:assignee_id
,
:milestone_id
,
:state_event
]
keys
=
[
:title
,
:description
,
:assignee_id
,
:milestone_id
,
:state_event
,
:due_date
]
keys
<<
:updated_at
if
current_user
.
admin?
||
user_project
.
owner
==
current_user
attrs
=
attributes_for_keys
(
keys
)
...
...
spec/requests/api/issues_spec.rb
View file @
e7d9fcc1
...
...
@@ -503,6 +503,20 @@ describe API::API, api: true do
])
end
context
'with due date'
do
it
'creates a new project issue'
do
due_date
=
2
.
weeks
.
from_now
.
strftime
(
'%Y-%m-%d'
)
post
api
(
"/projects/
#{
project
.
id
}
/issues"
,
user
),
title:
'new issue'
,
due_date:
due_date
expect
(
response
).
to
have_http_status
(
201
)
expect
(
json_response
[
'title'
]).
to
eq
(
'new issue'
)
expect
(
json_response
[
'description'
]).
to
be_nil
expect
(
json_response
[
'due_date'
]).
to
eq
(
due_date
)
end
end
context
'when an admin or owner makes the request'
do
it
'accepts the creation date to be set'
do
creation_time
=
2
.
weeks
.
ago
...
...
@@ -683,6 +697,17 @@ describe API::API, api: true do
end
end
describe
'PUT /projects/:id/issues/:issue_id to update due date'
do
it
'creates a new project issue'
do
due_date
=
2
.
weeks
.
from_now
.
strftime
(
'%Y-%m-%d'
)
put
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
"
,
user
),
due_date:
due_date
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
[
'due_date'
]).
to
eq
(
due_date
)
end
end
describe
"DELETE /projects/:id/issues/:issue_id"
do
it
"rejects a non member from deleting an issue"
do
delete
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
"
,
non_member
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment