APIs
Production
https://securitylabs.veracode.com
Endpoints
Users
Summaries
GET /api/campaigns/progress?page=0
Lessons
GET /api/lessons/:id/progress?page=0
Roles
GET /api/roles/:id/progress?page=0
Invites
Authentication
Authentication: Header Format
-H "auth: key:secret"
Authentication: Header Example
-H "auth: 486a4f5d52daafac2aff4891156d9993400716e2:1e07a337896d4cbe60d1d143"
Credentials
Generate and manage your API credentials here. You need to include these in every request. See the example on the right.
Errors
| Code | Message | Description |
|---|---|---|
| 404 | missing | credentials not found with your key |
| 401 | rotated | credentials found but secret has been changed |
| 401 | disabled | credentials valid but API is disabled |
| 500 | unknown | an unknown error was handled |
Users
Get Users
Users: Get Users - Request
curl "/api/users?page=0" -H "auth: key:secret"
Users: Get Users - Response Format
{
"nextPage" : String|Null,
"users": [{
"id": String,
"email": String
"isAdmin": Boolean,
"isDisabled": Boolean,
"joined": Boolean,
"lastActive": Number,
"roles": [
String
]
}]
}
Users: Get Users - Response Example
{
"nextPage" : "/api/users?page=1",
"users": [{
"id": "3bd68695e165af6ced227afc",
"isAdmin": true,
"isDisabled": false,
"email": "developer@hunter2.com",
"joined": true,
"lastActive": 1557981546394,
"roles": [
"Developers"
]
}]
}
This endpoint retrieves all users.
Parameters
page(optional - page of users to get)
Errors
| Code | Message | Description |
|---|---|---|
| 500 | unknown | an unknown error was handled |
Get Users Details
curl "/api/users/details?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&sortType=ASC&phrase=Chris&limit=10&page=0" -H "auth: key:secret"
Users: Get Users Details - Response Format
{
"pages": {
"current": Number,
"previous": Number|null,
"next": Number|null,
"limit": Number,
"total": Number,
"currentUrl": String,
"nextUrl": String|null,
"previousUrl": String|null
},
"users": [{
"id": String,
"lastActive": Number|null,
"labsCompleted": Number,
"percentRequiredComplete": Number,
"points": Number,
"name": String,
"roles": [{
"id": String,
"name": String
}]
}]
}
Users: Get Users Details - Response Example
{
"pages": {
"current": 1,
"previous": 0,
"next": 2,
"limit": 10,
"total": 25,
"currentUrl": "/api/onboarding?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=0",
"nextUrl": "/api/onboarding?campaignIds=6f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=1",
"previousUrl": "/api/onboarding?campaignIds=6f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=0"
},
"users": [{
"id": "5f5f18439dad493352660d28",
"lastActive": 1600067617569,
"name": "Chris Traeger",
"labsCompleted": 1,
"percentRequiredComplete": 50,
"points": 10,
"roles": [{
"id": "5f5f184d9dad493352660d29",
"name": "Security"
}]
}]
}
This endpoint retrieves users' details.
Parameters
campaignIds(optional - narrows content)endTime(optional - narrows content)limit(optional - number of users per page)page(optional - page of users to get)phrase(optional - narrows users)roleIds(optional - narrows users)startTime(optional - narrows content)sort(optional - orders users)sortType(optional - orders users)
Pages
Pages represents the pagination of requested resources:
current(number of current page)previous(number of previous page)next(number of next page)limit(number of resources per page)total(total number of resources)currentUrl(full url to current page)nextUrl(full url to next page)previousUrl(full url to previous page)
Errors
| Code | Message | Description |
|---|---|---|
| 400 | Invalid campaign id: String | The provided campaign id is invalid |
| 400 | Invalid role id: String | The provided role id is invalid |
| 404 | Campaign(s) not found by id(s): String |
campaignsIds did not find campaign(s)
|
| 404 | Role(s) not found by id(s): String |
roleIds did not find role(s)
|
| 400 |
startTime is invalid
|
startTime is invalid
|
| 400 |
startTime is undefined
|
endTime was provided without a startTime
|
| 400 |
endTime is invalid
|
endTime is invalid
|
| 400 |
endTime is undefined
|
startTime was provided without an endTime
|
| 400 |
sort is invalid
|
sort value is not allowed
|
| 400 |
sortType is invalid
|
sortType value is not allowed
|
| 400 |
limit is invalid
|
limit is invalid
|
| 400 |
phrase must be less than 50 characters
|
phrase must be less than 50 characters
|
| 500 | Unknown | An unknown error was handled |
Get User Progress
Users: Get User Progress - Request
curl "/api/users/:id/progress" -H "auth: key:secret"
Users: Get User Progress - Response Format
{
"pointsRequired": Number,
"pointsPossible": Number,
"lessons": [{
"module": String,
"lessonId": String,
"lessonName": String,
"lastVisited": String,
"status": String,
"minutes": Number,
"points": Number,
"startRating": Number,
"endRating": Number|null,
}]
}
Users: Get User Progress - Response Example
{
"pointsRequired": 10,
"pointsPossible": 30,
"lessons": [{
"module": "OWASP #1: Injection",
"lessonId": "5a5999d4ca50092ec5345ec4",
"lessonName": "Own the database",
"lastVisited": "3/4/2019",
"status": "Started",
"minutes": 1216.9,
"points": 0,
"startRating": 1,
"endRating": 2
}]
}
This endpoint retrieves progress for a user.
Parameters
page(optional - page of users to get)
Errors
| Code | Message | Description |
|---|---|---|
| 400 | invalid user id | the format of the id is wrong |
| 404 | user not found | no user was found with that id |
| 500 | unknown | an unknown error was handled |
Put User
This endpoint makes it possible to update the following user attributes: email, name, admin, disabled, and roles.
Users: Put User - Request Format
curl -0 -v -X PUT /api/users/:id \
-H "Content-Type: application/json" \
-H "auth: key:secret" \
-d @- <<'EOF'
{
"email": String,
"name": String,
"admin": Boolean,
"disabled": Boolean,
"roleIds": Array
}
EOF
Users: Put User - Request Example
curl -0 -v -X PUT /api/users/:id \
-H "Content-Type: application/json" \
-H "auth: key:secret" \
-d @- <<'EOF'
{
"email": "test@hunter2.com",
"name": "test",
"admin": false,
"disabled": false,
"roleIds": ["4acc432b734d1d55c318ef58"]
}
EOF
Users: Put User - Response Format
{
"email": String,
"name": String,
"admin": Boolean,
"disabled": Boolean,
"roleIds": Array
}
Users: Put User - Response Example
{
"email": "test@hunter2.com",
"name": "test",
"admin": false,
"dsiabled": false,
"roleIds": ["4acc432b734d1d55c318ef58"],
}
Errors
| Code | Message | Description |
|---|---|---|
| 400 | User id is invalid | The user id is invalid |
| 400 | User not found | No user found with the user id |
| 400 | Email is invalid | The email is invalid |
| 400 | Name must be less than 25 characters | Name is too long |
| 400 | Invalid roleIds | Role ids is not an array |
| 500 | unknown | an unknown error was handled |
Delete User
This endpoint deletes a user and all their resources.
Users: Delete User - Request
curl -X "DELETE" /api/users/:id
Users: Delete User - Response Format
{}
Users: Delete User - Response Example
{}
Errors
| Code | Message | Description |
|---|---|---|
| 400 | User id is invalid | The user id is invalid |
| 400 | User not found | No user found with the user id |
| 500 | unknown | an unknown error was handled |
Summaries
Get Onboarding
Summaries: Get Onboarding - Request
curl "/api/onboarding?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&sortType=ASC&phrase=Chris&limit=10&page=0" -H "auth: key:secret"
Summaries: Get Onboarding - Response Format
{
"milestones": {
"total": Number,
"finished": Number,
"notStarted": Number,
"notSignedUp": Number,
"started": Number
},
"pages": {
"current": Number,
"previous": Number|null,
"next": Number|null,
"limit": Number,
"total": Number,
"currentUrl": String,
"nextUrl": String|null,
"previousUrl": String|null
},
"users": [{
"id": String,
"lastActive": Number|null,
"milestone": String,
"name": String,
"roles": [{
"id": String,
"name": String
}]
}]
}
Summaries: Get Onboarding - Response Example
{
"milestones": {
"total": 1,
"finished": 1,
"notStarted": 0,
"notSignedUp": 0,
"started": 0
},
"pages": {
"current": 1,
"previous": 0,
"next": 2,
"limit": 10,
"total": 25,
"currentUrl": "/api/onboarding?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=0",
"nextUrl": "/api/onboarding?campaignIds=6f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=1",
"previousUrl": "/api/onboarding?campaignIds=6f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=0"
},
"users": [{
"id": "5f5f18439dad493352660d28",
"lastActive": 1600067617569,
"name": "Chris Traeger",
"milestone": "finished",
"roles": [{
"id": "5f5f184d9dad493352660d29",
"name": "Security"
}]
}]
}
This endpoint provides onboarding analytics.
Parameters
campaignIds(optional - narrows content)endTime(optional - narrows content)limit(optional - number of users per page)page(optional - page of users to get)phrase(optional - narrows users)roleIds(optional - narrows users)startTime(optional - narrows content)sort(optional - orders users)sortType(optional - orders users)
Milestones
The milestones below represent number of users:
total(all milestones combined; all users)finished(finished a lab)notStarted(not started a lab)notSignedUp(not signed up)started(started a lab)
Pages
Pages represents the pagination of requested resources:
current(number of current page)previous(number of previous page)next(number of next page)limit(number of resources per page)total(total number of resources)currentUrl(full url to current page)nextUrl(full url to next page)previousUrl(full url to previous page)
Errors
| Code | Message | Description |
|---|---|---|
| 400 | Invalid campaign id: String | The provided campaign id is invalid |
| 400 | Invalid role id: String | The provided role id is invalid |
| 404 | Campaign(s) not found by id(s): String |
campaignsIds did not find campaign(s)
|
| 404 | Role(s) not found by id(s): String |
roleIds did not find role(s)
|
| 400 |
startTime is invalid
|
startTime is invalid
|
| 400 |
startTime is undefined
|
endTime was provided without a startTime
|
| 400 |
endTime is invalid
|
endTime is invalid
|
| 400 |
endTime is undefined
|
startTime was provided without an endTime
|
| 400 |
sort is invalid
|
sort value is not allowed
|
| 400 |
sortType is invalid
|
sortType value is not allowed
|
| 400 |
limit is invalid
|
limit is invalid
|
| 400 |
phrase must be less than 50 characters
|
phrase must be less than 50 characters
|
| 500 | Unknown | An unknown error was handled |
Get Campaigns Progress
Summaries: Get Campaigns Progress - Request
curl "/api/campaigns/progress?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&sort=name&sortType=ASC&phrase=Chris&limit=10&page=0" -H "auth: key:secret"
Summaries: Get Campaigns Progress - Response Format
{
"milestones": {
"total": Number,
"finished": Number,
"notStarted": Number,
"started": Number
},
"assignments": [{
"title": String,
"labs": [{
"title": String,
"milestones" : {
"total": Number,
"finished": Number,
"notStarted": Number,
"started": Number
}
}]
}],
"pages": {
"current": Number,
"previous": Number|null,
"next": Number|null,
"limit": Number,
"total": Number,
"currentUrl": String,
"nextUrl": String|null,
"previousUrl": String|null
},
"users": [{
"id": String,
"lastActive": Number|null,
"milestone": String,
"name": String,
"roles": [{
"id": String,
"name": String
}]
}]
}
Summaries: Get Campaigns Progress - Response Example
{
"milestones": {
"total": 1,
"finished": 1,
"notStarted": 0,
"started": 0
},
"assignments": [{
"title": "OWASP",
"labs": [{
"title": "SQLI",
"milestones" : {
"total": 1,
"finished": 1,
"notStarted": 0,
"started": 0
}
}]
}],
"pages": {
"current": 1,
"previous": 0,
"next": 2,
"limit": 10,
"total": 25,
"currentUrl": "/api/onboarding?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=0",
"nextUrl": "/api/onboarding?campaignIds=6f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=1",
"previousUrl": "/api/onboarding?campaignIds=6f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d&startTime=1600067874107&endTime=1600067881636&sort=name&phrase=Chris&limit=10&page=0"
},
"users": [{
"id": "5f5f18439dad493352660d28",
"lastActive": 1600067617569,
"name": "Chris Traeger",
"milestone": "finished",
"roles": [{
"id": "5f5f184d9dad493352660d29",
"name": "Security"
}]
}]
}
This endpoint provides progress at the campaign or assignment level.
Parameters
assignmentIds(optional - narrows content)campaignIds(optional - narrows content)includeOptionalLabs(optional - widens content)limit(optional - number of users per page)page(optional - page of users to get)phrase(optional - narrows users)roleIds(optional - narrows users)sort(optional - orders users)sortType(optional - orders users)
Milestones
The milestones below represent number of users:
total(all milestones combined; all users)finished(finished all lab)notStarted(not started a lab)started(started a lab)
Pages
Pages represents the pagination of requested resources:
current(number of current page)previous(number of previous page)next(number of next page)limit(number of resources per page)total(total number of resources)currentUrl(full url to current page)nextUrl(full url to next page)previousUrl(full url to previous page)
Errors
| Code | Message | Description |
|---|---|---|
| 400 |
assignmentIds and campaignIds are mutually exclusive
|
Either assignmentIds or campaignIds can be present, not both
|
| 400 | Invalid assignment id: String | The provided assignment id is invalid |
| 400 | Invalid campaign id: String | The provided campaign id is invalid |
| 400 | Invalid role id: String | The provided role id is invalid |
| 404 | Campaign(s) not found by id(s): String |
campaignsIds did not find campaign(s)
|
| 404 | Role(s) not found by id(s): String |
roleIds did not find role(s)
|
| 400 |
sort is invalid
|
sort value is not allowed
|
| 400 |
sortType is invalid
|
sortType value is not allowed
|
| 400 |
limit is invalid
|
limit is invalid
|
| 400 |
phrase must be less than 50 characters
|
phrase must be less than 50 characters
|
| 500 | Unknown | An unknown error was handled |
Get Engagement Time
Summaries: Get Engagement Time - Request
curl "/api/engagement/time?campaignIds=5f5f18ff9dad493352660d2a,5f5f19099dad493352660d2b&roleIds=5f5f190f9dad493352660d2c,5f5f19159dad493352660d2d" -H "auth: key:secret"
Summaries: Get Engagement Time - Response Format
{
"duration" : Number
}
Summaries: Get Engagement Time - Response Example
{
"duration" : 1800000
}
This endpoint returns the median time users spend on labs.
Parameters
assignmentIds(optional - narrows content)campaignIds(optional - narrows content)roleIds(optional - narrows users)
Duration
Duration is the median time users spend on labs in milliseconds.
Errors
| Code | Message | Description |
|---|---|---|
| 400 |
assignmentIds and campaignIds are mutually exclusive
|
Either assignmentIds or campaignIds can be present, not both
|
| 400 | Invalid assignment id: String | The provided assignment id is invalid |
| 400 | Invalid campaign id: String | The provided campaign id is invalid |
| 400 | Invalid role id: String | The provided role id is invalid |
| 404 | Assignments(s) not found by id(s): String |
assignmentIds did not find assignments(s)
|
| 404 | Campaign(s) not found by id(s): String |
campaignsIds did not find campaign(s)
|
| 404 | Role(s) not found by id(s): String |
roleIds did not find role(s)
|
| 500 | Unknown | An unknown error was handled |
Get Progress
Summaries: Get Progress - Request
curl "/api/progress?page=0" -H "auth: key:secret"
Summaries: Get Progress - Response Format
{
"nextPage": String|Null,
"users": [{
"id": String,
"email": String,
"name": String,
"labsCompleted": Number,
"lastActive": Number,
"totalPoints": Number,
"labsStarted": Number,
"accountDisabled": Boolean,
"requiredCompletionPercent": Number,
"pointsRequired" : Number,
"pointsPossible" : Number,
"lessons": [{
"lessonId": String,
"lessonName": String,
"module": String,
"startTime": Number,
"endTime": String|null,
"startRating": Number,
"endRating": Number|null,
"lastStepReached": Number,
"status": String,
"points": Number
}],
"roles": [
String
]
}]
}
Summaries: Get Progress - Response Example
{
"nextPage": "/api/progress?page=1",
"users": [{
"id": "3bd68695e165af6ced227afc",
"email": "test@hunter2.com",
"name": "Test User",
"labsCompleted": 1,
"lastActive": "3/6/2019",
"totalPoints": 10,
"labsStarted": 2,
"disabled": false,
"requiredCompletionPercent": 14,
"pointsRequired" : 10,
"pointsPossible" : 30,
"lessons": [{
"lessonId": "5a5999d4ca50092ec5345ec4",
"lessonName": "Own the database",
"module": "OWASP #1: Injection",
"startTime": 1551673334046,
"endTime": 1551673334047,
"startRating": 1,
"endRating": 2,
"lastStepReached": 1,
"status": "Finished"
}]
"roles": [
"Developers"
]
}]
}
This endpoint retrieves progress for an entire team.
Parameters
page(optional - page of users to get)
Errors
| Code | Message | Description |
|---|---|---|
| 500 | unknown | an unknown error was handled |
Lessons
Get Lessons
Lessons: Get Lessons - Request
curl "/api/lessons?page=0" -H "auth: key:secret"
Lessons: Get Lessons - Response Format
{
"nextPage": String|Null,
"lessons": [{
"id": String,
"title": String,
"module": String,
"points": Number,
"roles": [
String
]
}]
}
Lessons: Get Lessons - Response Example
{
"nextPage": "/api/lessons?page=1",
"lessons": [{
"id": "5a5999d4ca50092ec5345ec4",
"title": "Own the database",
"module": "OWASP #1: Injection",
"points": 20,
"roles": [
"Developers"
]
}]
}
This endpoint retrieves a team's lessons.
Parameters
page(optional - page of users to get)
Errors
| Code | Message | Description |
|---|---|---|
| 500 | unknown | an unknown error was handled |
Get Lesson Progress
Lessons: Get Lesson Progress - Request
curl "/api/lessons/:id/progress?page=0" -H "auth: key:secret"
Lessons: Get Lesson Progress - Response Format
{
"nextPage": String|Null,
"id": String,
"title": String,
"module": String,
"points": Number,
"roles": [
String
],
"users": [{
"id": String,
"startTime": Number|null,
"endTime": String|null,
"startRating": Number|null,
"endRating": Number|null,
"lastStepReached": Number|null,
"status": String
}]
}
Lessons: Get Lesson Progress - Response Example
{
"nextPage": "/api/lessons/5a5999d4ca50092ec5345ec4/progress?page=1",
"id": "5a5999d4ca50092ec5345ec4",
"title": "Own the database",
"module": "OWASP #1: Injection",
"points": 30,
"roles": [
"Developers"
],
"users": [{
"id": "3bd68695e165af6ced227afc",
"startTime": 1551673334046,
"endTime": 1551673334047,
"startRating": 1,
"endRating": 4,
"lastStepReached": 1,
"status": "Started"
}]
}
This endpoint retrieves user progress for a lesson.
Parameters
page(optional - page of users to get)
Errors
| Code | Message | Description |
|---|---|---|
| 400 | invalid lesson id | the format of the id is wrong |
| 404 | lesson not found | no lesson was found with that id |
| 500 | unknown | an unknown error was handled |
Get Lesson By Topic
Lessons: Get Lesson By Topic - Request
curl "/api/lessons/search?phrase=XSS" -H "auth: key:secret"
Lessons: Get Lesson By Topic - Response Format
{
"pages": {
"current": Number,
"previous": Number,
"next": Number|null,
"limit": Number,
"currentUrl": String,
"nextUrl": String|null,
"previousUrl": String|null,
"total": Number
},
"lessons": [
{
"challenge": Boolean,
"description": String,
"stack": String,
"tags": Array,
"title": String,
"topic": String,
"url": String
}
]
}
Lessons: Get Lesson By Topic - Response Example
{
"pages": {
"current": 1,
"previous": 0,
"next": null,
"limit": 10,
"currentUrl": '/api/lessons/search?limit=10&page=1',
"nextUrl": null,
"previousUrl": null ,
"total": 1
},
"lessons": [
{
"challenge": false,
"description": 'Decrypt cookies and hijack another user account.',
"stack": 'node',
"tags": ['Node.js'],
"title": 'Bad Cookie',
"topic": 'secure cookies for user sessions',
"url": '/lesson/bad-cookie'
}
]
}
This endpoint retrieves lessons given a phrase which will be used to search tags. If no phrase is given all lessons will be returned. Tags are topics and technologies covered by the lab, such as "OWASP #8", "CWE-601", or "Python".
Parameters
limit(optional - number of lessons per page)page(optional - page of lessons to get)phrase(optional - string to search lessons by tags)
Errors
| Code | Message | Description |
|---|---|---|
| 400 | invalid phrase | must be a string between 0 and 300 [characters in length] |
| 500 | unknown | an unknown error was handled |
Roles
Get Roles
This endpoint retrieves a team's roles.
Roles: Get Roles - Request
curl "/api/roles" -H "auth: key:secret"
Roles: Get Roles - Response Format
[{
"id": String,
"name": String,
"default": Boolean,
"public": Boolean,
"users": [
String
],
"invitedUsers": [
String
]
}]
Roles: Get Roles - Response Example
[{
"id": "4bd68695e165af6ced227afz",
"name": "Developers",
"default": true,
"public": false,
"users": [
"3bd68695e165af6ced227afc"
],
"invitedUsers": [
"5ce34b1b0e5f930030014122"
]
}]
Errors
| Code | Message | Description |
|---|---|---|
| 500 | unknown | an unknown error was handled |
Get Role Progress
Roles: Get Role Progress - Request
curl "/api/roles/:id/progress?page=0" -H "auth: key:secret"
Roles: Get Role Progress - Response Format
[{
"nextPage": String|Null,
"id": String,
"name": String,
"users": [{
"id": String,
"email": String,
"name": String,
"percentComplete": Number,
"percentRequiredComplete": Number
}]
}]
Roles: Get Role Progress - Response Example
[{
"nextPage": "/api/roles/4bd68695e165af6ced227afz/progress?page=1",
"id": "4bd68695e165af6ced227afz",
"name": "Developers",
"users": [{
"id": "3bd68695e165af6ced227afc",
"email": "test@hunter2.com",
"name": "Test User",
"percentComplete": 50,
"percentRequiredComplete": 100
}]
}]
This endpoint retrieves progress for a team role.
Parameters
page(optional - page of users to get)
Errors
| Code | Message | Description |
|---|---|---|
| 500 | unknown | an unknown error was handled |
| 404 | Role not found | could not find role with given id |
| 403 | Role does not belong to team | role does not belong to team |
Invites
Post Invites
This endpoint can be used to invite users to a team. Invited users will be automatically assigned to the team associated with the API credentials. Upon invite creation, any default role(s) will be assigned to the invited user as well.
Invites: Post Invites - Request Format
curl -0 -v POST /api/invites \
-H "Content-Type: application/json" \
-H "auth: key:secret" \
-d @- <<'EOF'
{
"email": String,
"senderId": String,
"roleIds": Array,
"admin": Boolean,
"sendEmail": Boolean
}
EOF
Invites: Post Invites - Request Example
curl -0 -v POST /api/invites \
-H "Content-Type: application/json" \
-H "auth: key:secret" \
-d @- <<'EOF'
{
"email": "test@hunter2.com",
"senderId": "cb4f412c59ef801d0e6de1c6",
"roleIds": ["4acc432b734d1d55c318ef58"],
"admin": false,
"sendEmail": true
}
EOF
Invites: Post Invites - Response Format
{
"email": String,
"admin": Boolean,
"roleIds": Array,
"senderId": String
}
Invites: Post Invites - Response Example
{
"email": "test@hunter2.com",
"senderId": "cb4f412c59ef801d0e6de1c6",
"roleIds": ["4acc432b734d1d55c318ef58"],
"admin": false,
}
Errors
| Code | Message | Description |
|---|---|---|
| 400 | Email is invalid | The posted invite email is invalid |
| 400 | Role ids are invalid | The posted role ids is not an array |
| 400 | Sender id is invalid | The id of the user to send the email is invalid |
| 400 | Sender not found | The user to send the email could not be found |
| 400 | Invite already exists | An invite for that email and team exists |
| 500 | unknown | an unknown error was handled |