Как получить данные в виде json из запроса к API Озона?

Рейтинг: 2Ответов: 2Опубликовано: 09.02.2023

В документации Ozonа указано, что все запросы POST, но мне нужно получить только данные об отчётах. И что бы на выходе был json.

import requests
import json


def get_data():


headers = {
    "Host": "api-seller.ozon.ru",
    "Client-Id": "XXXX",
    "Api-Key": "XXXX",
    "Content-Type": "application/json"
}

data = {
    "language": "DEFAULT"
}

url = requests.post("https://api-seller.ozon.ru/v1/product/certificate/status/list", headers=headers, data=data)

print(url.text)

При выполнении этого запроса на получение Отчёта об остатках получаю следующий ответ:

{"result":{"code":"XXXX"}}

Каким образом можно получить на запрос ответ с полными данными?

Ответы

▲ 2

Я смог решить свою проблему, следующий код делает то, что мне нужно, получает данные из отчёта:

import requests
import json
import time


def get_data_ozon():
    
    headers = {
        "Host": "api-seller.ozon.ru",
        "Client-Id": "XXXX",
        "Api-Key": "XXXX",
        "Content-Type": "application/json"
    }
    
    get_url = "https://api-seller.ozon.ru/v1/report/stock/create"
    
    json_data = {"language": "DEFAULT"}

    # Получение кода который используется как json для второго запроса
    id_code = requests.post(get_url,headers=headers, json=json_data).json()

    # Поскольку сервер отвечает не моментально необходимо делать задержку перед вторым запросом
    time.sleep(1)

    # Получение информации об отчёте
    resp_data = requests.post("https://api-seller.ozon.ru/v1/report/info", headers=headers, json=id_code["result"]).json()
    # print(resp_data)

    # Файл с необходимыми данными
    # csv_file = requests.get(resp_data["result"]["file"]).text
      
get_data_ozon()
▲ 1

Результат - json в виде словаря словарей

Распарсить ответ можно через метод json:

data = url.json()

А код извлекайте по ключам словаря:

print(data["result"]["code"])