Справочник по API представления цен находится здесь, и я приложил скриншот:


Я зарегистрировал свою заправочную станцию и пытаюсь использовать API для отправки изменений цен на топливо в тестовой среде.
Мне удалось запросить и получить токен доступа, но когда я пытаюсь опубликовать некоторые данные о ценах на топливо с приведенной ниже полезной нагрузкой (я удалил site_id, я получаю статус ответа 400).
Код: Выделить всё
{
"source_type": "API",
"stations": [
{
"site_id": "************",
"price_submission_timestamp": "2026-01-22 13:41:00",
"price_change_effective_timestamp": "2026-01-22 13:41:00",
"reported_within_30_min": true,
"prices": [
{
"fuel_type": "E10",
"price": 137.9
},
{
"fuel_type": "B7",
"price": 123.7
}
]
}
]
}
Код: Выделить всё
HEADERS: {'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJraW5kIjoic2VjcmV0IiwiY2xpZW50X2lkIjoiWjljNzRXTXBkTlk2TXppNnF1bTA5VDZXYkJYSldFcngiLCJtZnRfaWQiOiIzYWU0NTlmOS05YjY5LTQzNWYtOGM1ZS1hZGRmMzUxZDc5ZjgiLCJzdWIiOiJaOWM3NFdNcGROWTZNemk2cXVtMDlUNldiQlhKV0VyeCIsImF1ZCI6Im9hdXRoIiwiaWF0IjoxNzY5MTU1OTUyLCJleHAiOjE3NjkxNTk1NTJ9.lIKHbI0aNxld5j_8wRgdip48FgMu1Uv2nEc9eVquCzw'}
Status: 400
Response: {"success":false,"data":{"success":false,"data":{"success":false,"statusCode":400,"error":["Request payload contains one or more invalid fields."]},"message":["Request payload contains one or more invalid fields."],"error":{"code":400,"details":["Request payload contains one or more invalid fields."]}},"message":{"code":400,"details":["Request payload contains one or more invalid fields."]},"error":{"code":400,"details":{"code":400,"details":["Request payload contains one or more invalid fields."]}}}
Код: Выделить всё
Traceback (most recent call last):
File "G:\My Drive\Pycharm Projects\CMA Fuel Finder\oauth2_work.py", line 82, in
price_update = submit_prices(token["data"]["access_token"])
File "G:\My Drive\Pycharm Projects\CMA Fuel Finder\oauth2_work.py", line 70, in submit_prices
response.raise_for_status()
~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\Gary\AppData\Local\Programs\Python\Python313\Lib\site-packages\requests\models.py", line 1026, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://stg.fuel-finder.ics.gov.uk/api/v1/pfs/fuel-prices
Код: Выделить всё
import os
import requests
import json
import gt_functions2 as gtf
from colorama import Fore
from colorama import just_fix_windows_console
just_fix_windows_console()
# Get data API authentication details
TOKEN_URL = "https://stg.fuel-finder.ics.gov.uk/api/v1/oauth/generate_secret_token"
PRICE_UPDATE_URL = "https://stg.fuel-finder.ics.gov.uk/api/v1/pfs/fuel-prices"
def get_access_token():
data = {
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
}
response = requests.post(TOKEN_URL, json=data)
response.raise_for_status() # raises an error for bad responses
token_data = response.json()
#return token_data["data"]["access_token"]
return token_data
def submit_prices(access_token):
data = {
"source_type": "API",
"stations": [
{
"site_id": FUEL_FINDER_ID,
"price_submission_timestamp": gtf.get_fuelfinder_timestamp(),
#"price_submission_timestamp": "2025-11-30T11:33:59Z",
"price_change_effective_timestamp": gtf.get_fuelfinder_timestamp(),
#"price_change_effective_timestamp": "2025-11-30T11:33:59Z",
"reported_within_30_min": True,
"prices": [
{"fuel_type": "E10", "price": 137.9},
{"fuel_type": "B7", "price": 123.7}
]
}
]
}
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
response = requests.post(PRICE_UPDATE_URL, json=data, headers=headers)
print("PAYLOAD:", json.dumps(data, indent=2))
print("HEADERS:", headers)
print("Status:", response.status_code)
print("Response:", response.text)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
print()
print(Fore.YELLOW + "Requesting access token...")
print()
token = get_access_token()
if token["success"]:
print("Received token OK")
price_update = submit_prices(token["data"]["access_token"])
Я пытался обратиться к издателю API за поддержкой, однако
все, что я получаю, это автоматические электронные письма с подтверждением билетов, но больше ничего.
Подробнее здесь: https://stackoverflow.com/questions/798 ... finder-api
Мобильная версия