import requests import yaml from log import log from discordNotifications import sendDiscordNotification from sentNotifications import isInboundShipmentPlanIDInSentNotifications, updateSentNotifications from timeOperations import isInboundShipmentPlanWithinSpecifiedDelta SETTINGS = yaml.safe_load(open('settings.yaml')) def getAccessToken(settings=SETTINGS): accessToken = requests.post( 'https://api.amazon.com/auth/o2/token', { 'grant_type': 'refresh_token', 'refresh_token': settings['REFRESH_TOKEN'], 'client_id': settings['CLIENT_ID'], 'client_secret': settings['CLIENT_SECRET'], } ) return accessToken.json()['access_token'] def getProductName(MSKU, settings=SETTINGS): product = requests.get( settings['SPAPI_ENDPOINT'] + '/listings/2021-08-01/items/' + settings['SELLER_ID'] + f'/{MSKU}', headers = { 'x-amz-access-token': getAccessToken(), }, params = { 'marketplaceIds': settings['MARKETPLACE_ID'] }, ) return product.json()['summaries'][0]['itemName'] def getInboundShipmentPlans(settings=SETTINGS): inboundShipmentPlans = requests.get( settings['SPAPI_ENDPOINT'] + '/inbound/fba/2024-03-20/inboundPlans?pageSize=10&sortBy=CREATION_TIME&sortOrder=DESC&status=SHIPPED', headers = { 'x-amz-access-token': getAccessToken(), } ) return inboundShipmentPlans.json()['inboundPlans'] def getInboundShipmentPlan(inboundShipmentPlanID, settings=SETTINGS): inboundShipmentPlan = requests.get( settings['SPAPI_ENDPOINT'] + f'/inbound/fba/2024-03-20/inboundPlans/{inboundShipmentPlanID}/items', headers = { 'x-amz-access-token': getAccessToken(), } ) return inboundShipmentPlan.json() def getInboundShipmentData(inboundPlanId, settings=SETTINGS): inboundShipmentData = {inboundPlanId: {'destinations': [], 'shipmentIDs': []}} inboundPlanShipmentData = requests.get( settings['SPAPI_ENDPOINT'] + f'/inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/placementOptions', headers = { 'x-amz-access-token': getAccessToken(), } ) for shipmentID in inboundPlanShipmentData.json()['placementOptions'][0]['shipmentIds']: individualShipmentData = requests.get( settings['SPAPI_ENDPOINT'] + f'/inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/shipments/{shipmentID}', headers = { 'x-amz-access-token': getAccessToken(), } ) inboundShipmentData[inboundPlanId]['shipmentIDs'].append(individualShipmentData.json()['shipmentConfirmationId']) inboundShipmentData[inboundPlanId]['destinations'].append(individualShipmentData.json()['destination']['warehouseId']) return inboundShipmentData