Files
ozon-api-client/ozon/fbo.go
2023-03-13 21:00:28 +03:00

167 lines
4.4 KiB
Go

package ozon
import (
"net/http"
"time"
core "github.com/diphantxm/ozon-api-client"
)
type GetFBOShipmentsListParams struct {
// Sorting direction
Direction string `json:"dir"`
// Shipment search filter
Filter GetFBOShipmentsListFilter `json:"filter"`
// Number of values in the response. Maximum is 1000, minimum is 1
Limit int64 `json:"limit"`
// Number of elements that will be skipped in the response. For example, if offset=10, the response will start with the 11th element found
Offset int64 `json:"offset"`
// true if the address transliteration from Cyrillic to Latin is enabled
Translit bool `json:"translit"`
// Additional fields to add to the response
With GetFBOShipmentsListWith `json:"with"`
}
// Shipment search filter
type GetFBOShipmentsListFilter struct {
// Period start in YYYY-MM-DD format
Since time.Time `json:"since"`
// Shipment status
Status string `json:"status"`
// Period end in YYYY-MM-DD format
To time.Time `json:"to"`
}
// Additional fields to add to the response
type GetFBOShipmentsListWith struct {
// Specify true to add analytics data to the response
AnalyticsData bool `json:"analytics_data"`
// Specify true to add financial data to the response
FinancialData bool `json:"financial_data"`
}
type GetFBOShipmentsListResponse struct {
core.CommonResponse
// Shipments list
Result []struct {
// Additional data for shipment list
AdditionalData []struct {
Key string `json:"key"`
Value string `json:"value"`
} `json:"additional_data"`
// Analytical data
AnalyticsData struct {
// Delivery city
City string `json:"city"`
// Delivery method
DeliveryType string `json:"delivery_type"`
// Indication that the recipient is a legal person
// * true — a legal person,
// * false — a natural person.
IsLegal bool `json:"is_legal"`
// Premium subscription
IsPremium bool `json:"is_premium"`
// Payment method
PaymentTypeGroupName string `json:"payment_type_group_name"`
// Delivery region
Region string `json:"region"`
// Warehouse identifier
WarehouseId int64 `json:"warehouse_id"`
// Name of the warehouse from which the order is shipped
WarehouseName string `json:"warehouse_name"`
} `json:"analytics_data"`
// Shipment cancellation reason identifier
CancelReasonId int64 `json:"cancel_reason_id"`
// Date and time of shipment creation
CreatedAt time.Time `json:"created_at"`
// Financial data
FinancialData struct {
// Identifier of the cluster, where the shipment is sent from
ClusterFrom string `json:"cluster_from"`
// Identifier of the cluster, where the shipment is delivered to
ClusterTo string `json:"cluster_to"`
// Services
PostingServices MarketplaceServices `json:"posting_services"`
// Products list
Products []FinancialDataProduct `json:"products"`
} `json:"financial_data"`
// Date and time of shipment processing start
InProccessAt time.Time `json:"in_process_at"`
// Identifier of the order to which the shipment belongs
OrderId int64 `json:"order_id"`
// Number of the order to which the shipment belongs
OrderNumber string `json:"order_number"`
// Shipment number
PostingNumber string `json:"posting_number"`
// Number of products in the shipment
Products []struct {
// Activation codes for services and digital products
DigitalCodes []string `json:"digital_codes"`
// Currency of your prices. It matches the currency set in the personal account settings
CurrencyCode string `json:"currency_code"`
// Product name
Name string `json:"name"`
// Product identifier in the seller's system
OfferId string `json:"offer_id"`
// Product price
Price string `json:"price"`
// Quantity of products in the shipment
Quantity int64 `json:"quantity"`
// Product identifier in the Ozon system, SKU
SKU int64 `json:"sku"`
} `json:"products"`
// Shipment status
Status string `json:"status"`
} `json:"result"`
}
// Returns a list of shipments for a specified period of time. You can additionally filter the shipments by their status
func (c Client) GetFBOShipmentsList(params *GetFBOShipmentsListParams) (*GetFBOShipmentsListResponse, error) {
url := "/v1/product/import/prices"
resp := &GetFBOShipmentsListResponse{}
response, err := c.client.Request(http.MethodPost, url, params, resp)
if err != nil {
return nil, err
}
response.CopyCommonResponse(&resp.CommonResponse)
return resp, nil
}