Release notes for version 1.3.7 were skipped due to a customer-specific deployment. Changes from version 1.3.7 are included in these notes.
✨ New
Central document management API
Added the ability to upload and manage documents attached to products, variants, sellers, or customers. File type and file size are validated when a document is uploaded.
Use the following mutations to manage documents through the API:
documentAdd
documentRemove
Proforma invoice API
Made the following API changes to support generating a proforma invoice:
- The
InvoiceRequest
mutation has been updated to support generating a proforma invoice, by passingdocumentType: 4
in the request input.mutation {
invoiceRequest(
documentType: 4,
orderId: T3JkZXI6NTI4)
{
invoice {
url
status
number
}
invoiceErrors {
code
field
message
}
}
} - Added the "Sold tax inclusive" label to the proforma invoice and invoice document types, which will now appear on generated documents when appropriate.
- Added "Discount" and "Volume Discount" sections to the proforma invoice and invoice document types, which will now appear on generated documents when appropriate.
Delivered state for orders
Added a new DELIVERED
order state to the OrderStatus
enum.
Also added the orderMarkAsDelivered
mutation, to move a fulfilled order to the DELIVERED
state.
mutation {
orderMarkAsDelivered(id: "T3JkZXI6NTI4") {
order {
status
paymentStatus
seller {
companyName
}
}
orderErrors {
message
}
}
}
If a fulfillment is cancelled on an order already in the delivered state, the status will revert back to PARTIALLY_FULFILLED
or UNFULFILLED
, as appropriate.
💎 Changed
Query performance optimizations
Various performance improvements have been made to improve query speeds.
Include allocations in stock quantity update
A new includeAllocations
boolean field is available as part of StockInput
in mutations for updating stock levels. This field determines how the quantity
input provided in the mutation will be used to update the stock quantity:
- When
true
, thequantity
you provide in the mutation will be added to the number of units in thequantityAllocated
. The new stockquantity
will be the sum of these values. - When
false
(default), thequantity
you provide in the mutation will simply update thequantity
field.quantityAllocated
will not be taken into account.
- includeAllocations = true
- includeAllocations = false
Mutation
mutation {
productVariantStocksUpdate(
variantId: "ABC=="
stocks: {
quantity: 20
includeAllocations: true
warehouse: "ABC=="
}
) {
productVariant {
name
stocks {
warehouse {
name
}
quantity
quantityAvailable
quantityAllocated
}
}
bulkStockErrors {
message
}
}
}
Response
{
"data": {
"productVariantStocksUpdate": {
"productVariant": {
"name": "A-Line Dress in Red",
"stocks": [
{
"warehouse": {
"name": "Oceania"
},
"quantity": 32,
"quantityAvailable": 20,
"quantityAllocated": 12
}
]
},
"bulkStockErrors": []
}
}
}
Mutation
mutation {
productVariantStocksUpdate(
variantId: "ABC=="
stocks: {
quantity: 20
includeAllocations: false
warehouse: "ABC=="
}
) {
productVariant {
name
stocks {
warehouse {
name
}
quantity
quantityAvailable
quantityAllocated
}
}
bulkStockErrors {
message
}
}
}
Response
{
"data": {
"productVariantStocksUpdate": {
"productVariant": {
"name": "A-Line Dress in Red",
"stocks": [
{
"warehouse": {
"name": "Oceania"
},
"quantity": 20,
"quantityAvailable": 8,
"quantityAllocated": 12
}
]
},
"bulkStockErrors": []
}
}
}
Quantity available at warehouse
The quantityAvailable
field is now available on the stock
object to reflect the amount of variant stock at the warehouse that is available for purchase and is not allocated to an order.
This field is automatically calculated as the difference between the quantity
and quantityAllocated
.
quantityAvailable
will be sent in all relevant webhook payloads.
Metadata fields on warehouse
The privateMetadata
and metadata
fields are now available on the warehouse
object.
Product location kind API
Added the locationKind
field to the location
object, supporting options from the LocationKindEnum
.
Updated attributes query
The attributes
query has been updated to add inProductSearch
and inVariantSearch
filter options.
Marketplace order number added to seller order email payloads
The nauticalorder.id
field has been added to seller order related SendGrid email payloads for a reference to the marketplace order number. For example, payloads will include the following:
"nauticalorder" :
{
"id": 626
}
Stripe API version
You can now specify the Stripe API version in your Stripe app settings. The API version defaults to 2022-08-01
, which is the latest supported version.
🪲 Fixed
- Fixed an issue where the
fulfilledByMarketplace
field remains enabled after disabling it with theupdateSellerSettings
mutation - Fixed an issue with master product marketplaces where variant images could in place of the master product images. To fix this issue, a new marketplace setting is introduced for
strict_product_image_handling
. Contact Nautical support to request this setting. - Fixed an issue where certain apps could be activated in the app marketplace without valid credentials.
- Fixed an issue where variant update webhooks triggered after changing the
minimal_variant_price_amount
field returned the previous price in the webhook payload instead of the updated value. - Fixed an issue with multiple customer accounts being created in Stripe for the same buyer when the "Store customer cards" setting was enabled .