Мой URL-адрес ниже
https://tiation.eu2.portal.cloudappsecurity.com/api/v1/discovery/discovered_apps
Это возвращает JSON-ответ API защитника:
{
"data": [
{
"_id": "5ee1ee8ad68d0eb7d71cc7ac",
"_tid": 85526804,
"appId": 11394,
]
}
],
"hasNext": true,
"total": 11902
}
Это hasnext, который прекрасен и тотален. Но я не получаю следующий URL-адрес или следующую ссылку.
Я пробовал несколько вещей, таких как ?page=, ?offset=100&limit=1.
Не удалось получить документацию по подкачке в этом API.
Может ли кто-нибудь предложить лучшую идею?
У меня есть скрипт Python, который говорит:
# -*- coding: utf-8 -*-
import json
import sys
import requests
import msal
msal_tenant_id = '' ### Paste your tenant ID here
msal_client_id = '' ### Paste your Application ID here
msal_client_secret = '' ### Paste your Application key here
global_token_cache = msal.TokenCache()
msal_authority = f"https://login.microsoftonline.com/{msal_tenant_id}"
msal_scope = ["05a65629-4c1b-48c1-a78b-804c4abdd4af/.default"]
global_app = msal.ConfidentialClientApplication(
msal_client_id, authority=msal_authority,
client_credential=msal_client_secret,
token_cache=global_token_cache, # Let this app (re)use an existing token cache.
# If absent, ClientApplication will create its own empty token cache
)
result = global_app.acquire_token_for_client(scopes=msal_scope)
if "access_token" in result:
print("Token was obtained from:", result["token_source"])
headers = {
'Authorization': f'Bearer {result["access_token"]}',
}
filters = {
# optionally, edit to match your filters
}
request_data = {
'filters': filters,
'limit' : 1,
'streamId' : '<stream-id>'
}
APPLICATIONS_URL = f'https://<tenant-name>.<tenant-region>.portal.cloudappsecurity.com/api/v1/discovery/discovered_apps/'
records = []
has_next = False
while has_next:
content = json.loads(requests.post(APPLICATIONS_URL, json=request_data, headers=headers).content)
response_data = content.get('data', [])
records += response_data
print('Got {} more records'.format(len(response_data)))
has_next = content.get('hasNext', False)
request_data['filters'] = content.get('nextQueryFilters')
print('Got {} records in total'.format(len(records)))
print(records)
else:
print("Token acquisition failed")
sys.exit(0)
Но и тут nextQueryFilters никуда не попал в ответ. Так кто-нибудь может помочь? (Кстати, я использую Postman и буду писать код на Java, а выше — из Postman Response).
Обновлять:
Пагинация вообще не работает.
Попробовал следующее изменение Пропустить:
{
"limit": 100,
"streamId": "5ee1ecbb862d7370de23c481",
"sortDirection":"asc",
"skip": 100
}
Все еще терпит неудачу





Это работало как параметр запроса:
И самое плохое: я получил все примеры в виде тела запроса, будь то Python или PowerShell.
Так что это был просто удар и испытание