Miridia
Portal
Integrations

Product integration

Product-related integration endpoints

Base URL: https://api.miridia.io. Read Authentication and Conventions before you call these operations.

MethodPathOperation
POST/api/v1/integration/productsCreate product
PUT/api/v1/integration/productsUpdate product

Create product

POST/api/v1/integration/products

Access. Send a bearer token or an API key. The caller needs the Products modify permission.

Request body

Send JSON with the shape CreateProductIntegrationCommand. The incoming request to import a product family from an external integration. One endpoint covers all cases: a single "default variant" (one variant, no group), a multi-variant family (the backend materializes a group), or an incremental sync that attaches a variant to an existing family.

FieldTypeRequiredDescription
groupIntegrationProductGroupRequestNo
variantsIntegrationProductVariantRequest[]Yes

Response

200. Returns a SingleResult envelope. The data field is ProductFamilyResponse.

Request
curl -X POST "https://api.miridia.io/api/v1/integration/products" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "group": {
    "externalGroupId": "string",
    "name": "string",
    "optionAxes": [
      "string"
    ]
  },
  "variants": [
    {
      "product": {},
      "context": {},
      "optionValues": {
        "key": "string"
      },
      "isPrimary": true
    }
  ]
}'
Response
{
  "message": "string",
  "messages": [
    {
      "title": "string",
      "message": "string",
      "level": "Standard",
      "icon": "SyncAlert",
      "code": "string"
    }
  ],
  "data": {
    "group": {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "name": "string",
      "description": "string",
      "optionAxes": [
        "string"
      ],
      "primaryProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "externalGroupId": "string",
      "members": [
        {}
      ],
      "dateCreated": "2026-09-29T08:00:00Z"
    },
    "products": [
      {}
    ]
  },
  "statusCode": "OK",
  "canRead": true,
  "canEdit": true,
  "canDelete": true
}

Update product

PUT/api/v1/integration/products

Access. Send a bearer token or an API key. The caller needs the Products modify permission.

Request body

Send JSON with the shape UpdateProductIntegrationCommand. Updates the sync state of an existing product integration link. Detects price/quantity deltas, records observed values, and. When PriceSyncEnabled is configured on the provider. Upserts the price into the channel's assigned price list. NEVER writes to canonical price history directly.

FieldTypeRequiredDescription
productCreateProductRequestYes
contextIntegrationContextRequestYes

Response

200. Returns a SingleResult envelope. The data field is ProductResponse.

Request
curl -X PUT "https://api.miridia.io/api/v1/integration/products" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "product": {
    "sku": "string",
    "title": "string",
    "description": "string",
    "body": "string",
    "price": {
      "subTotal": 0,
      "totalPrice": 0,
      "totalTax": 0,
      "totalDiscount": 0,
      "discount": 0,
      "discountType": "Percentage",
      "taxIncluded": true,
      "taxRate": 0,
      "taxType": "Sales"
    },
    "geometry": {
      "weight": 0,
      "width": 0,
      "length": 0,
      "height": 0,
      "lengthType": "Centimeter",
      "weightType": "Kilogram"
    },
    "productType": "FinishedGood",
    "status": "Active",
    "unit": "Each",
    "barcode": "string",
    "upc": "string",
    "ean": "string",
    "mpn": "string",
    "purchasable": true,
    "isSellable": true,
    "isPurchasable": true,
    "isTaxable": true,
    "requiresShipping": true,
    "tags": [
      "string"
    ],
    "imageIds": [
      "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    ],
    "imageUrls": [
      "string"
    ],
    "defaultImageUrl": "string",
    "groupAssignment": {
      "groupId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "optionValues": {
        "key": "string"
      },
      "position": 0
    },
    "supplierId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "dateCreated": "2026-09-29T08:00:00Z",
    "metadata": {
      "key": "string"
    }
  },
  "context": {
    "configuredProviderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "id": "string",
    "idType": "Long",
    "content": "string",
    "metadata": {
      "key": "string"
    },
    "reportedQuantity": 0,
    "dateCreated": "2026-09-29T08:00:00Z"
  }
}'

Models

The operations on this page use these object types. Select a type to see its fields.

ActionMessage

Action messages surface to the API and provide more detailed user feedback for handled exceptions or errors.

FieldTypeDescription
titlestring
messagestring
levelenum NotificationLevelOne of: Standard, Info, Warning, Error, Success, Recommendation.
iconenum MdiIconOne of: None, SyncAlert, Autorenew, Check, CheckMarkedCircle, AlertCircle, TruckDeliveryOutline, TruckFastOutline, PackageCheck, Warehouse, SwapHorizontal, AccountCheck, AccountRemove, AccountCancel, Delete.
codestringThe Notification code / Suggestion code for this suggestion
AddressResponse
FieldTypeDescription
idstring (uuid)
placeIdstring
namestring
websitestring
fullAddressstring
streetstring
suburbstring
citystring
countrystring
postcodestring
unitstring
numberstring
provincestring
latitudenumber (double)
longitudenumber (double)
ContactResponse
FieldTypeDescription
idstring (uuid)
titlestring
descriptionstring
firstNamestring
lastNamestring
emailstring
phoneNumberstring
mobileNumberstring
CreateProductPriceRequest
FieldTypeDescription
subTotalnumber (double)Limits: minimum 0.
totalPricenumber (double)Limits: minimum 0.
totalTaxnumber (double)Limits: minimum 0.
totalDiscountnumber (double)Limits: minimum 0.
discountnumber (double)Limits: minimum 0.
discountTypeenum DiscountTypeOne of: None, Percentage, FixedValue.
taxIncludedboolean
taxRatenumber (double)Limits: minimum 0, maximum 100.
taxTypeenum TaxTypeOne of: None, Sales, Vat, Gst, Pst, Hst, Qst, Ist, Ust, Cst.
CreateProductRequest
FieldTypeDescription
skustring
titlestringLimits: maximum 100 characters.
descriptionstringProvides a summary of the product Limits: maximum 1000 characters.
bodystring
priceCreateProductPriceRequest
geometryProductDimensionRequest
productTypeenum ProductTypeOne of: FinishedGood, RawMaterial, Component, Consumable, Service.
statusenum ProductStatusOne of: Active, Inactive, Discontinued.
unitenum UnitOfMeasureOne of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet.
barcodestring
upcstring
eanstring
mpnstring
purchasableboolean
isSellableboolean
isPurchasableboolean
isTaxableboolean
requiresShippingboolean
tagsstring[]
imageIdsstring (uuid)[]Images which have been uploaded via the FileController.
imageUrlsstring[]
defaultImageUrlstring
groupAssignmentProductGroupAssignmentRequest
supplierIdstring (uuid)
dateCreatedstring (date-time)When the product was created. Optional; defaults to now. Lets seeded/synthetic catalogs show products appearing over time rather than all on seed day.
metadatamap<string, string>
CurrencyResponse
FieldTypeDescription
iso4217string
utf8Symbolstring
currencyCodeenum CurrencyCodeOne of: Invalid, Eur, Usd, Gbp, Zar, Zmw.
DimensionPresetResponse
FieldTypeDescription
idstring (uuid)
vendorstringLimits: maximum 100 characters.
fulfillmentTypeenum FulfillmentTypeOne of: Unknown, Package, Pallet, Container, Miscellaneous.
titlestringLimits: maximum 200 characters.
weightnumber (double)The weight property acts as a limit for this specific box size.
lengthnumber (double)
widthnumber (double)
heightnumber (double)
defaultOptionbooleanevery business can have one package size preset set as the default option
lengthTypeenum LengthTypeOne of: Unknown, Centimeter, Meter, Inch, Foot.
weightTypeenum WeightTypeOne of: Unknown, Kilogram, Tonne, Pound, Stone, UsTon, ImperialTon, Gram.
countryCodeenum CountryCodeOne of: Invalid, Global, FallbackZa, Be, De, Lu, Nl, Za, Zw, Gb, Us, Zm.
dimensionTypeGeometryFieldSymbol
GeometryAndCountryMetadata
FieldTypeDescription
currencyCodeenum CurrencyCodeOne of: Invalid, Eur, Usd, Gbp, Zar, Zmw.
countryCodeenum CountryCodeOne of: Invalid, Global, FallbackZa, Be, De, Lu, Nl, Za, Zw, Gb, Us, Zm.
weightTypeenum WeightTypeOne of: Unknown, Kilogram, Tonne, Pound, Stone, UsTon, ImperialTon, Gram.
lengthTypeenum LengthTypeOne of: Unknown, Centimeter, Meter, Inch, Foot.
GeometryFieldSymbol
FieldTypeDescription
weightTypeenum WeightTypeOne of: Unknown, Kilogram, Tonne, Pound, Stone, UsTon, ImperialTon, Gram.
lengthTypeenum LengthTypeOne of: Unknown, Centimeter, Meter, Inch, Foot.
lengthSymbolstring
weightSymbolstring
IntegrationContextRequest
FieldTypeDescription
configuredProviderIdstring (uuid)
idstring
idTypeenum UidTypeOne of: Unknown, Long, Guid, String.
contentstringCan be used to store the raw data received from the external system. Maps to SerializedData...
metadatamap<string, string>Additional metadata related to the integration object.
reportedQuantityinteger (int32)The available-to-sell quantity the provider reports for this product. Null when the provider does not report a quantity.
dateCreatedstring (date-time)
IntegrationProductGroupRequest

The umbrella family an integration import belongs to. A Miridia product group maps to the provider's product (e.g. a Shopify Product); each variant maps to a member product. Null when the provider has no family concept (a single "default variant" import).

FieldTypeDescription
externalGroupIdstringThe provider's family/product identifier (e.g. Shopify product GID). Drives idempotent re-sync and promotion.
namestringDisplay name for the family. Falls back to the primary variant's title when omitted.
optionAxesstring[]The option axes the family varies along, e.g. ["Size", "Colour"].
IntegrationProductVariantRequest

One variant in a family import: the product to create/attach, its integration context, and its per-axis values. Equivalent to the old single-product integration body plus grouping metadata.

FieldTypeDescription
productCreateProductRequest
contextIntegrationContextRequest
optionValuesmap<string, string>Per-axis values for this variant against the family's option axes, e.g. {"Size":"1L"}.
isPrimarybooleanWhether this variant is the family primary (the umbrella's representative member).
MetadataFileAttachment

Not quite as complete as the normal FileAttachment aggregate.

FieldTypeDescription
idstring (uuid)
typeenum MetadataAttachmentTypeOne of: File, Link.
fileAttachmentIdstring (uuid)Left as Guid.Empty for Link entries.
titlestring
urlstring
contentTypestring
descriptionstring
PrimitiveIntegrationProviderResponse
FieldTypeDescription
configuredProviderIdstring (uuid)
idinteger (int32)
titlestring
descriptionstring
logoUrlstring
ProductCategoryPrimitive
FieldTypeDescription
categorystring
ProductDimensionRequest
FieldTypeDescription
weightnumber (double)Limits: minimum 0.
widthnumber (double)Limits: minimum 0.
lengthnumber (double)Limits: minimum 0.
heightnumber (double)Limits: minimum 0.
lengthTypeenum LengthTypeOne of: Unknown, Centimeter, Meter, Inch, Foot.
weightTypeenum WeightTypeOne of: Unknown, Kilogram, Tonne, Pound, Stone, UsTon, ImperialTon, Gram.
ProductFamilyResponse

Response for a family import. group is null when fewer than two members exist (a single "default variant" stays ungrouped). Each ProductResponse carries its Integrations[].Id so an order sync can reference its line items by ProductIntegrationId.

FieldTypeDescription
groupProductGroupResponse
productsProductResponse[]
ProductGeometryFieldsResponse
FieldTypeDescription
weightnumber (double)
widthnumber (double)
lengthnumber (double)
heightnumber (double)
lengthTypeenum LengthTypeOne of: Unknown, Centimeter, Meter, Inch, Foot.
weightTypeenum WeightTypeOne of: Unknown, Kilogram, Tonne, Pound, Stone, UsTon, ImperialTon, Gram.
weightSymbolstring
lengthSymbolstring
fulfillmentTypeenum FulfillmentTypeOne of: Unknown, Package, Pallet, Container, Miscellaneous.
titlestring
geometrySymbolGeometryFieldSymbol
ProductGroupAssignmentRequest

Create-time membership of a product in an existing product group.

FieldTypeDescription
groupIdstring (uuid)
optionValuesmap<string, string>Per-axis values for this member, e.g. {"Pack Size": "4-pack"}.
positioninteger (int32)Display order within the group; appended (0) when omitted.
ProductGroupMemberResponse
FieldTypeDescription
productIdstring (uuid)
skustring
titlestring
totalAvailableQuantitynumber (double)
currentPriceProductPriceDetailsResponse
optionValuesmap<string, string>
positioninteger (int32)
isPrimaryboolean
ProductGroupResponse
FieldTypeDescription
idstring (uuid)
namestring
descriptionstring
optionAxesstring[]
primaryProductIdstring (uuid)
externalGroupIdstringNull = merchant-owned.
membersProductGroupMemberResponse[]
dateCreatedstring (date-time)
ProductGroupSummaryResponse

Catalog-card summary of a product group (variant family): the umbrella name and how many products it contains. See group.

FieldTypeDescription
idstring (uuid)
namestring
variantCountinteger (int32)
ProductIntegrationProviderResponse
FieldTypeDescription
providerPrimitiveIntegrationProviderResponse
idstring (uuid)Represents the product integration id.
integrationIdstringThe composite integration id in it's original form represented as a string. Refer to ProductService::GetProductResponse()
productProductResponse
ProductPriceDetailsResponse
FieldTypeDescription
subTotalnumber (double)
totalPricenumber (double)
totalTaxnumber (double)
totalDiscountnumber (double)
discountnumber (double)
discountTypeenum DiscountTypeOne of: None, Percentage, FixedValue.
taxIncludedboolean
taxRatenumber (double)
taxTypeenum TaxTypeOne of: None, Sales, Vat, Gst, Pst, Hst, Qst, Ist, Ust, Cst.
currencyCurrencyResponse
idstring (uuid)
purchasableboolean
priceTypeenum PriceTypeOne of: Selling, Purchase, Cost.
sourceenum PriceSourceOne of: Manual, SupplierUpdate, Import, Sync, Migration.
notesstring
effectiveDatestring (date-time)
currencyMetadataCurrencyResponse
priceUnitenum UnitOfMeasureOne of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet.
pricePackQuantitynumber (double)
pricePerUnitnumber (double)
basisenum PriceResolutionBasisOne of: FixedItem, PeggedItem, ListRule.
adjustmentTypeenum PriceAdjustmentTypeOne of: Percentage, Amount.
adjustmentValuenumber (double)
ProductResponse
FieldTypeDescription
idstring (uuid)
codestring
skustring
barcodestring
upcstring
eanstring
mpnstring
titlestring
descriptionstring
bodystring
productLinkstring
productTypeenum ProductTypeOne of: FinishedGood, RawMaterial, Component, Consumable, Service.
statusenum ProductStatusOne of: Active, Inactive, Discontinued.
unitenum UnitOfMeasureOne of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet.
purchasableboolean
isSellableboolean
isPurchasableboolean
isTaxableboolean
requiresShippingboolean
totalAvailableQuantitynumber (double)Available stock derived from the inventory ledger: the sum of (on-hand − reserved) across the product's inventory records at all locations.
totalSoldnumber (double)
totalSoldValuenumber (double)
onSaleboolean
currentPriceProductPriceDetailsResponse
tracesActionMessage[]Get the historical view of changes for this object
defaultImageMetadataFileAttachment
imagesMetadataFileAttachment[]
attachmentsMetadataFileAttachment[]
geometryProductGeometryFieldsResponse
integrationsProductIntegrationProviderResponse[]
localeSymbolicLocaleMetadata
dimensionPresetDimensionPresetResponse
dimensionPresetsDimensionPresetResponse[]
categoriesProductCategoryPrimitive[]
supplierSupplierResponse
groupProductGroupSummaryResponse
tagsstring[]
hasRatingboolean
ratingnumber (double)
metadatamap<string, string>
dateCreatedstring (date-time)
SupplierResponse
FieldTypeDescription
idstring (uuid)
titlestring
descriptionstring
contactContactResponse
addressIdstring (uuid)Reference to the supplier's origin address (business_addresses), if set.
addressAddressResponse
paymentTermsstringFree-text payment terms (e.g. "Net 30"). Display-only.
defaultLeadTimeDaysinteger (int32)Fallback lead time in days for suppliers with no purchase-order history yet.
codestringOptional free-text internal reference code for the supplier (e.g. "SUP-001"). Display-only.
defaultCurrencyenum CurrencyCodeOne of: Invalid, Eur, Usd, Gbp, Zar, Zmw.
SymbolicLocaleMetadata
FieldTypeDescription
currencystring
countrystring
weightstring
lengthstring
businessDefaultTypesGeometryAndCountryMetadata