Hints Endpoints¶
CTFd Version: 3.7.0
Last Updated: 30/3/2024
Endpoints¶
GET /hints
¶
This endpoint is only accessible to admins.
Endpoint to get hints in bulk. Can be filtered by type
, challenge_id
, content
and cost
Query Parameters¶
Name | Type | Description |
---|---|---|
type |
string |
The type of hint to get, seems to always be "standard" |
challenge_id |
int |
The ID of the challenge to get hints for |
content |
string |
The content of the hint to match |
cost |
int |
The cost of the hint to match |
q |
string |
A search query to match against the given field . If this is specified, field must also be specified |
field |
string |
The field to search against, can be either type or content . If this is specified, q must also be specified. |
Response¶
-
200 OK
- The hints were successfully retrievedlist[
LockedHint
]
{ "success": true, "data": [ { "id": 1, "type": "string", "challenge": 1, "challenge_id": 1, "cost": 1 } ] }
-
400 Bad Request
- An error occurred processing the provided or stored dataapplication/json
{ "success": false, "errors": [ "string" ] }
-
403 Forbidden
- You are not allowed to access this endpointapplication/json
{ "message": "string" }
Return Values¶
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
cost |
int |
The cost of the hint |
POST /hints
¶
This endpoint is only accessible to admins.
Endpoint to create a new hint.
JSON Parameters¶
Name | Type | Description |
---|---|---|
type |
string |
The type of the hint, seems to always be "standard" |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
cost |
int |
The cost of the hint |
requirements (Optional) |
dict |
The hint's requirements. This dictionary has a single item, prerequisites , which is a list of hint IDs required to unlock before this one. |
Response¶
-
200 OK
- The hint was successfully createdHint
{ "success": true, "data": { "id": 1, "type": "string", "challenge": 1, "challenge_id": 1, "content": "string", "html": "string", "cost": 1, "requirements": { "prerequisites": [ 1 ] } } }
-
403 Forbidden
- You are not allowed to access this endpointapplication/json
{ "message": "string" }
Return Values¶
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
html |
string |
The HTML content of the hint |
cost |
int |
The cost of the hint |
requirements |
dict |
The hint's requirements. This dictionary has a single item, prerequisites , which is a list of hint IDs required to unlock before this one. (Optional) |
GET /hints/{hint_id}
¶
Endpoint to get a hint by its ID.
Response¶
-
200 OK
- The hint was successfully retrieved{ "success": true, "data": { "id": 1, "type": "string", "challenge": 1, "challenge_id": 1, "content": "string", "html": "string", "cost": 1, "requirements": { "prerequisites": [ 1 ] } } }
{ "success": true, "data": { "id": 1, "type": "string", "challenge": 1, "challenge_id": 1, "cost": 1 } }
{ "success": true, "data": { "id": 1, "type": "string", "challenge": 1, "challenge_id": 1, "content": "string", "html": "string", "cost": 1 } }
-
403 Forbidden
- You are not allowed to view that hintapplication/json
{ "success": false, "errors": [ {} ] }
-
404 Not Found
- The hint was not foundapplication/json
{ "message": "string" }
Return Values¶
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
html |
string |
The HTML content of the hint |
cost |
int |
The cost of the hint |
requirements |
dict |
The hint's requirements. This dictionary has a single item, prerequisites , which is a list of hint IDs required to unlock before this one. (Optional) |
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
cost |
int |
The cost of the hint |
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
html |
string |
The HTML content of the hint |
cost |
int |
The cost of the hint |
PATCH /hints/{hint_id}
¶
This endpoint is only accessible to admins.
Endpoint to update a hint by its ID.
JSON Parameters¶
Danger
The effect of changing the values for type
and challenge_id
is unknown. Changing these values is not recommended.
Name | Type | Description |
---|---|---|
type |
string |
The type of the hint, seems to always be "standard" |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
cost |
int |
The cost of the hint |
requirements (Optional) |
dict |
The hint's requirements. This dictionary has a single item, prerequisites , which is a list of hint IDs required to unlock before this one. |
Response¶
-
200 OK
- The hint was successfully updatedHint
{ "success": true, "data": { "id": 1, "type": "string", "challenge": 1, "challenge_id": 1, "content": "string", "html": "string", "cost": 1, "requirements": { "prerequisites": [ 1 ] } } }
-
400 Bad Request
- An error occurred processing the provided or stored dataapplication/json
{ "success": false, "errors": [ "string" ] }
-
403 Forbidden
- You are not allowed to access this endpointapplication/json
{ "message": "string" }
-
404 Not Found
- The hint was not foundapplication/json
{ "message": "string" }
Return Values¶
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
html |
string |
The HTML content of the hint |
cost |
int |
The cost of the hint |
requirements |
dict |
The hint's requirements. This dictionary has a single item, prerequisites , which is a list of hint IDs required to unlock before this one. (Optional) |
DELETE /hints/{hint_id}
¶
This endpoint is only accessible to admins.
Endpoint to delete a hint by its ID.
Response¶
-
200 OK
- The hint was successfully deletedapplication/json
{ "success": true }
-
403 Forbidden
- You are not allowed to access this endpointapplication/json
{ "message": "string" }
-
404 Not Found
- The hint with the given ID does not existapplication/json
{ "message": "string" }
Models¶
Hint
Model¶
Represents a hint.
{
"id": 1,
"type": "string",
"challenge": 1,
"challenge_id": 1,
"content": "string",
"html": "string",
"cost": 1,
"requirements": {
"prerequisites": [
1
]
}
}
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
html |
string |
The HTML content of the hint |
cost |
int |
The cost of the hint |
requirements |
dict |
The hint's requirements. This dictionary has a single item, prerequisites , which is a list of hint IDs required to unlock before this one. (Optional) |
LockedHint
Model¶
Represents a hint locked for the current user.
{
"id": 1,
"type": "string",
"challenge": 1,
"challenge_id": 1,
"cost": 1
}
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
cost |
int |
The cost of the hint |
UnlockedHint
Model¶
Represents a hint unlocked for the current user.
{
"id": 1,
"type": "string",
"challenge": 1,
"challenge_id": 1,
"content": "string",
"html": "string",
"cost": 1
}
Name | Type | Description |
---|---|---|
id |
int |
The ID of the hint |
type |
string |
The type of the hint, seems to always be "standard" |
challenge |
int |
The ID of the challenge the hint is for (I'm not sure why this field exists) |
challenge_id |
int |
The ID of the challenge the hint is for |
content |
string |
The content of the hint |
html |
string |
The HTML content of the hint |
cost |
int |
The cost of the hint |