Add global API parameters to the docs; Add API troubleshooting section

This commit is contained in:
Michael Friedrich 2018-04-12 19:44:58 +02:00
parent b53685db59
commit c58caf3550
2 changed files with 49 additions and 1 deletions

View File

@ -103,7 +103,7 @@ The output will be sent back as a JSON object:
> **Tip** > **Tip**
> >
> You can use the `pretty` parameter to beautify the JSON response with Icinga v2.9+. > You can use the [pretty](12-icinga2-api.md#icinga2-api-parameters-global) parameter to beautify the JSON response with Icinga v2.9+.
You can also use [jq](https://stedolan.github.io/jq/) or `python -m json.tool` You can also use [jq](https://stedolan.github.io/jq/) or `python -m json.tool`
in combination with curl on the CLI. in combination with curl on the CLI.
@ -272,6 +272,27 @@ Here are the exact same query parameters as a JSON object:
The [match function](18-library-reference.md#global-functions-match) is available as global function The [match function](18-library-reference.md#global-functions-match) is available as global function
in Icinga 2. in Icinga 2.
### Global Parameters <a id="icinga2-api-parameters-global"></a>
Name | Description
----------------|--------------------
pretty | Pretty-print the JSON response.
verbose | Add verbose debug information inside the `diagnostic_information` key into the response if available. This helps with troubleshooting failing requests.
Example as URL parameter:
```
/v1/objects/hosts?pretty=1
```
Example as JSON object:
```
{ "pretty": true }
```
Both parameters have been added in Icinga 2 v2.9.
### Request Method Override <a id="icinga2-api-requests-method-override"></a> ### Request Method Override <a id="icinga2-api-requests-method-override"></a>
`GET` requests do not allow you to send a request body. In case you cannot pass everything as URL `GET` requests do not allow you to send a request body. In case you cannot pass everything as URL

View File

@ -702,6 +702,33 @@ Look into the log and check whether the feature logs anything specific for this
grep GraphiteWriter /var/log/icinga2/icinga2.log grep GraphiteWriter /var/log/icinga2/icinga2.log
``` ```
## REST API Troubleshooting <a id="troubleshooting-api"></a>
In order to analyse errors on API requests, you can explicitly enable the [verbose parameter](12-icinga2-api.md#icinga2-api-parameters-global).
```
$ curl -k -s -u root:icinga -H 'Accept: application/json' -X DELETE 'https://localhost:5665/v1/objects/hosts/example-cmdb?pretty=1&verbose=1'
{
"diagnostic_information": "Error: Object does not exist.\n\n ....",
"error": 404.0,
"status": "No objects found."
}
```
## REST API Troubleshooting: No Objects Found <a id="troubleshooting-api-no-objects-found"></a>
Please note that the `404` status with no objects being found can also originate
from missing or too strict object permissions for the authenticated user.
This is a security feature to disable object name guessing. If this would not be the
case, restricted users would be able to get a list of names of your objects just by
trying every character combination.
In order to analyse and fix the problem, please check the following:
- use an administrative account with full permissions to check whether the objects are actually there.
- verify the permissions on the affected ApiUser object and fix them.
## Certificate Troubleshooting <a id="troubleshooting-certificate"></a> ## Certificate Troubleshooting <a id="troubleshooting-certificate"></a>