Как перейти на следующую страницу (нумерация страниц) API Microsoft Defender (MSAL)?

Мой 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
}

Все еще терпит неудачу

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это работало как параметр запроса:

https://tie.com/api/v1/discovery/discovered_apps?limit=1000&streamId=5ee1ecbb862d7370de23c80&sortDirection=asc&skip=0

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

Так что это был просто удар и испытание

Другие вопросы по теме

AzureAD OIDC: access_token из https://sts.windows.net/ не является токеном JWT
Как получить токен управления Azure и вызвать HTTP в .NET для проверки доступности доменного имени Azure B2C?
Приложения Azure MSAL React используют одну и ту же аутентификацию/пользователя в нескольких приложениях
MSAL AcquireTokenInteractive перенаправляет браузер на недоступный локальный хост
Android MsalClientException BrowserTabActivity отсутствует
Невозможно пройти аутентификацию с помощью единого входа между несколькими веб-приложениями с помощью Azure B2C и MSAL.js Angular
Пользовательские утверждения для пользователя от любого клиента
Ошибки токена (доступа) при подключении к MS SQL Server из блокнотов Python DataBricks через драйвер JDBC PySPark с использованием субъекта службы Azure и MSAL
Невозможно получить подписки Azure с помощью msal и запросов на Python через REST API
Как я могу использовать пользователя, вошедшего в систему tEdge, для входа в приложение React?