{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "SnowBee Public API",
    "description" : "HTTPS/JSON API for SnowBee e-commerce, loyalty-program, and demand-planning integrations.",
    "version" : "latest",
    "summary" : "Integrate external systems with SnowBee"
  },
  "externalDocs" : {
    "description" : "SnowBee developer documentation",
    "url" : "https://docs.snowbee.dev"
  },
  "servers" : [ {
    "url" : "https://api.snowbee.no",
    "description" : "SnowBee Public API"
  } ],
  "tags" : [ ],
  "paths" : {
    "/healthcheck" : {
      "get" : {
        "tags" : [ ],
        "parameters" : [ ],
        "responses" : { },
        "deprecated" : false
      }
    },
    "/oauth2/token" : {
      "post" : {
        "tags" : [ "Authentication" ],
        "summary" : "Create an access token",
        "description" : "Canonical OAuth 2.0 client credentials token endpoint.\n\nSend tenant_id, grant_type, scope, and any scope-specific resource as an application/x-www-form-urlencoded body. Authenticate the API client with HTTP Basic (recommended) or client_id and client_secret in the body.",
        "parameters" : [ ],
        "requestBody" : {
          "content" : {
            "application/x-www-form-urlencoded" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiOAuthTokenRequest"
              }
            },
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiOAuthTokenRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Access token created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiAuthorizeResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid OAuth token request",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiOAuthErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Client authentication failed",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiOAuthErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/v1/tenants/{tenantId}/oauth2/v2.0/token" : {
      "post" : {
        "tags" : [ "Authentication" ],
        "summary" : "Create an access token using the tenant-scoped compatibility endpoint",
        "description" : "Compatibility endpoint for existing SnowBee integrations. New integrations should use POST /oauth2/token.\n\nSupports application/json and application/x-www-form-urlencoded requests with client_secret_post authentication.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/x-www-form-urlencoded" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiAuthorizeRequest"
              }
            },
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiAuthorizeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Access token created",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiAuthorizeResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Invalid OAuth token request",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiOAuthErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Client authentication failed",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiOAuthErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/brands" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for brands",
        "description" : "Detailed overview of all brands associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all brands associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreBrandsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/product_categories" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for product categories",
        "description" : "Detailed overview of all product categories associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all product categories associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductCategoriesResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/main_product_groups" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for main product groups",
        "description" : "Detailed overview of all product groups associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all main product groups associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreMainProductGroupsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/sub_product_groups" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for sub product groups",
        "description" : "Detailed overview of all sub product groups associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all sub product groups associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreSubProductGroupsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/product_concepts" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for product concepts",
        "description" : "Detailed overview of all product concepts associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all product concepts associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductConceptsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/exclusivity_levels" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for exclusivity levels",
        "description" : "Detailed overview of all exclusivity levels associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all exclusivity levels associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreExclusivityLevelsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/main_activities" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for main activities",
        "description" : "Detailed overview of all main activities associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all main activities associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreMainActivitiesResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/product_colors" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for product colors",
        "description" : "Detailed overview of all product colors associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all product colors associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductColorsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/sizes" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for sizes",
        "description" : "Detailed overview of all sizes associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all sizes associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreSizesResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/dynamic_attributes" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for dynamic attributes",
        "description" : "Detailed overview of all dynamic attributes associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all dynamic attributes associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreDynamicAttributesResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/dynamic_attributes_options" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product schema for dynamic attributes options",
        "description" : "Detailed overview of all dynamic attributes options associated with ecom store.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all dynamic attribute options associated with the ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreDynamicAttributeOptionsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/product_schema/unit_of_measures" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get unit of measures",
        "description" : "List of all unit of measures for the tenant",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all unit of measures",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiUnitOfMeasuresResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/products" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "List product IDs",
        "description" : "Returns a list of product IDs in the ecom store's assortment. By default only returns published products (released with at least one published SKU). Use ?includeUnpublished=true to include all products. Fetch individual product details with GET /products/{productId}.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "includeUnpublished",
          "in" : "query",
          "description" : "Set to true to include unpublished products. Defaults to false.",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "boolean",
            "title" : "Boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of product IDs",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiProductIdsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/products/{productId}" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get product",
        "description" : "Gets a single product.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "productId",
          "in" : "path",
          "description" : "The ID of the product",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Retrieves details for a specific product",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Product doesn't exist",
            "headers" : { }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/skus/{skuId}/inventory" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get SKU available inventory",
        "description" : "Returns available ecom inventory for a specific SKU",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "skuId",
          "in" : "path",
          "description" : "The SKU ID or SKU number",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SKU inventory details",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductInventorySkuResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - SKU doesn't exist in ecom store",
            "headers" : { }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/retail_stores" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get retail stores",
        "description" : "List of all retail stores in the same company as the ecom store",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of all retail stores in the same company",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiRetailStoresResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/campaigns" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get campaigns",
        "description" : "Lists all active and planned campaigns for the ecom store with SKUs in the store's assortment. Only includes campaigns that are currently active or scheduled for the future. Each campaign includes SKU details and campaign pricing.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of campaigns with SKUs and pricing",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCampaignsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/products/trigger_events" : {
      "post" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Trigger product events",
        "description" : "Triggers ProductSaved events for all products in the eCom store assortment. Use this after initial product setup to ensure integrations are synchronized.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Events triggered successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiTriggerProductEventsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/inventory/trigger_events" : {
      "post" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Trigger inventory events",
        "description" : "Triggers EcomAvailabilityInventoryChanged events for all SKUs in the eCom store assortment. Use this after initial inventory setup to ensure integrations are synchronized.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Events triggered successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiTriggerInventoryEventsResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/orders" : {
      "post" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Create sales order",
        "description" : "Creates a new sales order for the ecom store with specified line items",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiCreateOrderRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "description" : "Order accepted",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCreateOrderResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request - Invalid input data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - SKU or customer not found",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - Order with same externalOrderId or externalOrderNumber already exists",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/orders/{orderId}" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get sales order",
        "description" : "Retrieves details of a specific sales order by ID or order number, including line items, captures, receipts, refunds, shipments, and vouchers",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "orderId",
          "in" : "path",
          "description" : "The ID or order number of the sales order to retrieve",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Order retrieved successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiGetOrderResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Order not found or does not belong to this ecom store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/customers/{customerId}/orders" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get customer order history",
        "description" : "Retrieves a simplified list of all orders for a specific customer in this ecom store. Returns basic order information without detailed line items.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "customerId",
          "in" : "path",
          "description" : "The ID of the customer whose order history to retrieve",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Order history retrieved successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerOrderHistoryResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request - Invalid customer ID format",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/click_and_collect" : {
      "post" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Create click & collect reservation",
        "description" : "Creates a click & collect reservation at a retail store. Validates the retail store is in the ecom store's click & collect network, creates a cart with the requested SKUs, reserves inventory from the store's warehouse, and parks the cart with the customer's name for later checkout.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Click & collect reservation details including retail store ID, customer name, and line items",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiCreateClickAndCollectRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "description" : "Click & collect reservation accepted",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiClickAndCollectResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request - Invalid input, SKU not found, or insufficient inventory",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Retail store not found or not in click & collect network",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/customers/{customerId}" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get customer",
        "description" : "Retrieves details of a specific B2C customer by ID",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "customerId",
          "in" : "path",
          "description" : "The ID of the customer to retrieve",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Customer retrieved successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Customer not found or not active",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Create or update customer",
        "description" : "Idempotent endpoint - creates a new B2C customer with status RELEASED if it doesn't exist, otherwise updates the existing customer",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "customerId",
          "in" : "path",
          "description" : "The ID of the customer to create or update",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Customer details. All fields are optional - only provided (non-null) fields will be updated.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiUpdateCustomerRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Customer created or updated successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request - Invalid input data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/customers/by_email/{email}" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Get customer by email",
        "description" : "Retrieves details of a specific B2C customer by email address",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "email",
          "in" : "path",
          "description" : "The URL-encoded email address of the customer to retrieve",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Customer retrieved successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Customer not found",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/customers/{customerId}/addresses" : {
      "put" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Update customer addresses",
        "description" : "Updates the customer's delivery and/or invoice address.\n\nBoth fields are optional - only provided addresses will be created or updated:\n- If an address doesn't exist, it will be created as the main address for that type\n- If an address already exists, it will be updated\n- If a field is null or omitted, that address type is not modified\n\nExample: To update only the delivery address, send:\n```json\n{\n  \"deliveryAddress\": {\n    \"street\": \"Storgata 1\",\n    \"postCode\": \"0123\",\n    \"city\": \"Oslo\",\n    \"countryIsoCode\": \"NO\"\n  }\n}\n```",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "customerId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the customer",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Address data. Include deliveryAddress and/or invoiceAddress to update.",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiUpdateCustomerAddressesRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Addresses updated successfully. Returns the full customer object including updated addresses.",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request - Invalid request body or address data (e.g., invalid country code)",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Customer with the specified ID does not exist",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing JWT authentication token",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Token does not have access to this tenant/store",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/push-customer" : {
      "put" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Push customer from eCommerce Auth",
        "description" : "Creates new customer if none exists, or updates existing customer by phone/email.\nIf phone belongs to one customer and email belongs to another, returns 409 Conflict.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "description" : "Customer phone (required) and email (optional, if verified)",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiPushCustomerRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Customer created or updated successfully",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request - Invalid phone number or input data",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - Phone and email belong to different customers",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/orders/{salesOrderId}/captures/{captureId}/payment_capture" : {
      "post" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Update payment capture status",
        "description" : "Updates the payment capture status for a capture. Send CONFIRMED to unblock shipment after successful payment capture, or FAILED if capture failed. A failed capture can be retried by sending a new status. Once confirmed, the capture cannot be changed.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "salesOrderId",
          "in" : "path",
          "description" : "The ID of the sales order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "captureId",
          "in" : "path",
          "description" : "The ID of the capture to update payment capture for",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiPaymentCaptureRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Payment capture status updated successfully",
            "headers" : { }
          },
          "404" : {
            "description" : "Not Found - Capture not found or does not belong to this ecom store's order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict - Payment capture has already been confirmed",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/orders/{salesOrderId}/refunds/{refundId}/confirm" : {
      "post" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Confirm refund",
        "description" : "Confirms that a refund has been processed and marks the credit document financially settled.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "salesOrderId",
          "in" : "path",
          "description" : "The ID of the sales order",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "refundId",
          "in" : "path",
          "description" : "The ID of the refund to confirm",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiRefundRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Refund confirmed successfully",
            "headers" : { }
          },
          "404" : {
            "description" : "Not Found - Refund not found or does not belong to this ecom store's order",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request - Refund is not a return order invoice or is not open",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/barcodes/code128/{value}" : {
      "get" : {
        "tags" : [ "E-commerce" ],
        "summary" : "Generate Code128 barcode SVG",
        "description" : "Generates an SVG image of a Code128 barcode for the given value (e.g. a return ticket number)",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "eComStoreId",
          "in" : "path",
          "description" : "The ID of the eCom Store",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "value",
          "in" : "path",
          "description" : "The value to encode as a Code128 barcode",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "SVG barcode image",
            "headers" : { }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/loyalty_programs/{loyaltyProgramId}/retail_stores" : {
      "get" : {
        "tags" : [ "Loyalty Programs" ],
        "summary" : "Get retail stores for loyalty program",
        "description" : "Returns a list of retail stores that belong to the specified loyalty program. Only stores with RELEASED status are included.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "loyaltyProgramId",
          "in" : "path",
          "description" : "The ID of the Loyalty Program",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of retail stores in the loyalty program",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.SbPublicApiLoyaltyProgramRetailStoresResponse"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found - Loyalty program doesn't exist",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized - Invalid or missing authentication",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden - Access denied",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal server error",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/limits" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "Published upload limits",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nUse these values to size batches instead of hard-coding them.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningLimitsResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/retail_stores" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "List retail stores",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nAll retail stores in the tenant with their store number, the key used in uploads.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningRetailStoresResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/ecom_stores" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "List ecom stores",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nAll ecom stores in the tenant with their store number, the key used in sales forecast uploads.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningEcomStoresResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/sales_forecast_batches/{batchId}" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "Get the status of a batch of sales forecasts",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "batchId",
          "in" : "path",
          "description" : "Client-generated UUID of the batch",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse"
                }
              }
            }
          },
          "404" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "Upload a batch of sales forecasts",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nThe batch id is generated by the client. Retrying the same id with the same payload is safe and returns 200 with the\nexisting status; the same id with a different payload is a 409. The body may be gzip-compressed\n(Content-Encoding: gzip). Format errors are reported as a 400 that lists every problem with its path in the document;\nnothing is stored in that case. Whether stores and SKUs exist is checked when the batch is processed and reported per\nitem in the batch status. Limits are published at GET /limits. A corrected batch is a new run: new batch id, newer\ngeneratedAt, and its own batchIndex/batchTotal (or none). Send batches sequentially; the per-client rate limit makes\nparallel uploads no faster.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "batchId",
          "in" : "path",
          "description" : "Client-generated UUID for this batch",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "Content-Encoding",
          "in" : "header",
          "description" : "gzip when the body is compressed",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiSalesForecastBatchRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "description" : "New batch stored",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse"
                }
              }
            }
          },
          "200" : {
            "description" : "Same batch already stored",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation failed; details is a SbPublicApiValidationErrorDetails",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDetailedErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Batch id already used with a different payload",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "413" : {
            "description" : "A limit was exceeded; details is a SbPublicApiLimitExceededDetails",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDetailedErrorResponse"
                }
              }
            }
          },
          "415" : {
            "description" : "Content-Type must be application/json",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/replenishment_parameter_batches/{batchId}" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "Get the status of a batch of replenishment parameters",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "batchId",
          "in" : "path",
          "description" : "Client-generated UUID of the batch",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse"
                }
              }
            }
          },
          "404" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "Upload a batch of replenishment parameters",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nThe batch id is generated by the client. Retrying the same id with the same payload is safe and returns 200 with the\nexisting status; the same id with a different payload is a 409. The body may be gzip-compressed\n(Content-Encoding: gzip). Format errors are reported as a 400 that lists every problem with its path in the document;\nnothing is stored in that case. Whether stores and SKUs exist is checked when the batch is processed and reported per\nitem in the batch status. Limits are published at GET /limits. A corrected batch is a new run: new batch id, newer\ngeneratedAt, and its own batchIndex/batchTotal (or none). Send batches sequentially; the per-client rate limit makes\nparallel uploads no faster.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "batchId",
          "in" : "path",
          "description" : "Client-generated UUID for this batch",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "Content-Encoding",
          "in" : "header",
          "description" : "gzip when the body is compressed",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiReplenishmentParameterBatchRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "description" : "New batch stored",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse"
                }
              }
            }
          },
          "200" : {
            "description" : "Same batch already stored",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation failed; details is a SbPublicApiValidationErrorDetails",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDetailedErrorResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "Batch id already used with a different payload",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "413" : {
            "description" : "A limit was exceeded; details is a SbPublicApiLimitExceededDetails",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDetailedErrorResponse"
                }
              }
            }
          },
          "415" : {
            "description" : "Content-Type must be application/json",
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/sales_forecasts" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "List the sales forecasts SnowBee currently holds",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nThe current forecast horizon per store and SKU, as applied from processed batches — use it to verify uploads and to\ncompare against your own model. Retail stores come first in store number order, then ecom stores; a page never spans\ntwo stores. generatedAt is the planning run that produced each horizon, so an old value means the forecast is stale.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "retailStoreNumber",
          "in" : "query",
          "description" : "Only this retail store",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "ecomStoreNumber",
          "in" : "query",
          "description" : "Only this ecom store",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "description" : "nextCursor from the previous page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size, default 1000, max 5000",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiSalesForecastsResponse"
                }
              }
            }
          },
          "400" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    },
    "/v1/tenants/{tenantId}/demand_planning/replenishment_parameters" : {
      "get" : {
        "tags" : [ "Demand Planning (experimental)" ],
        "summary" : "List effective replenishment parameters",
        "description" : "EXPERIMENTAL: the contract is final and processing is live -- batches are validated, stored and applied, normally within a few minutes. The label means the API is not yet generally available; request and response shapes will not change without notice to integrated partners.\n\nThe reorder point and maximum inventory Snowbee currently uses for every SKU in every retail store, resolved the way\nreplenishment resolves them: a store-specific line, else the store's local assortment default, else its base\nassortment default. Ordered by retail store number, then SKU number; a page never spans two stores. `locked` is true\nwhen a Snowbee user has fixed the values and uploads for that store and SKU are skipped.",
        "parameters" : [ {
          "name" : "tenantId",
          "in" : "path",
          "description" : "The ID of the SnowBee tenant",
          "required" : true,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "retailStoreNumber",
          "in" : "query",
          "description" : "Only this retail store",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "modifiedSince",
          "in" : "query",
          "description" : "Only lines modified after this ISO 8601 timestamp",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "cursor",
          "in" : "query",
          "description" : "nextCursor from the previous page",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "string",
            "title" : "String"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Page size, default 1000, max 5000",
          "required" : false,
          "deprecated" : false,
          "explode" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "title" : "Int"
          }
        } ],
        "responses" : {
          "200" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiReplenishmentParametersResponse"
                }
              }
            }
          },
          "400" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "401" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          },
          "403" : {
            "headers" : { },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/snowbee.ApiErrorResponse"
                }
              }
            }
          }
        },
        "deprecated" : false,
        "security" : [ {
          "OAuth2" : [ ]
        }, {
          "BearerAuth" : [ ]
        } ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "snowbee.SbPublicApiAuthorizeRequestGrantType" : {
        "type" : "string",
        "description" : "OAuth2 grant type",
        "enum" : [ "client_credentials" ],
        "title" : "SbPublicApiAuthorizeRequestGrantType"
      },
      "kotlin.String" : {
        "type" : "string",
        "description" : "Discount type",
        "enum" : [ "PERCENTAGE", "AMOUNT" ],
        "example" : "PERCENTAGE",
        "title" : "String"
      },
      "snowbee.SbPublicApiOAuthTokenRequest" : {
        "type" : "object",
        "description" : "OAuth 2.0 client credentials token request",
        "properties" : {
          "client_id" : {
            "type" : [ "null", "string" ],
            "description" : "Client ID when using client_secret_post. Omit when using HTTP Basic.",
            "title" : "String"
          },
          "client_secret" : {
            "type" : [ "null", "string" ],
            "description" : "Client secret when using client_secret_post. Omit when using HTTP Basic.",
            "title" : "String"
          },
          "grant_type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiAuthorizeRequestGrantType",
            "description" : "OAuth 2.0 grant type"
          },
          "resource" : {
            "type" : [ "null", "string" ],
            "description" : "eCom store ID for ecom or loyalty program ID for loyalty_programs. Omit for demand_planning.",
            "title" : "String"
          },
          "scope" : {
            "$ref" : "#/components/schemas/kotlin.String",
            "description" : "API scope to request"
          },
          "tenant_id" : {
            "type" : "string",
            "description" : "SnowBee tenant ID",
            "example" : "019c1234-5678-7abc-8def-123456789012",
            "title" : "String"
          }
        },
        "required" : [ "grant_type", "scope", "tenant_id" ],
        "title" : "SbPublicApiOAuthTokenRequest"
      },
      "snowbee.SbPublicApiAuthorizeResponse" : {
        "type" : "object",
        "description" : "OAuth2 token response",
        "properties" : {
          "access_token" : {
            "type" : "string",
            "description" : "JWT access token to use for API requests",
            "example" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
            "title" : "String"
          },
          "expires_in" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Token expiration time in seconds",
            "example" : "3600",
            "title" : "Int"
          },
          "scope" : {
            "type" : "string",
            "description" : "Scope granted to the access token",
            "example" : "ecom",
            "title" : "String"
          },
          "token_type" : {
            "$ref" : "#/components/schemas/kotlin.String",
            "description" : "OAuth 2.0 token type"
          }
        },
        "required" : [ "access_token", "expires_in", "scope", "token_type" ],
        "title" : "SbPublicApiAuthorizeResponse"
      },
      "snowbee.SbPublicApiOAuthErrorResponse" : {
        "type" : "object",
        "description" : "OAuth 2.0 token error response",
        "properties" : {
          "error" : {
            "type" : "string",
            "description" : "OAuth 2.0 error code",
            "example" : "invalid_request",
            "title" : "String"
          },
          "error_description" : {
            "type" : "string",
            "description" : "Human-readable error description",
            "example" : "The tenant_id parameter is required",
            "title" : "String"
          },
          "resolution" : {
            "type" : "string",
            "description" : "Suggested next action",
            "example" : "Add tenant_id to the form-encoded request and retry",
            "title" : "String"
          }
        },
        "required" : [ "error", "error_description", "resolution" ],
        "title" : "SbPublicApiOAuthErrorResponse"
      },
      "snowbee.SbPublicApiAuthorizeRequest" : {
        "type" : "object",
        "description" : "OAuth2 token request",
        "properties" : {
          "client_id" : {
            "type" : "string",
            "description" : "Client ID from your API credentials",
            "example" : "your-client-id",
            "title" : "String"
          },
          "client_secret" : {
            "type" : "string",
            "description" : "Client secret from your API credentials",
            "example" : "your-client-secret",
            "title" : "String"
          },
          "grant_type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiAuthorizeRequestGrantType",
            "description" : "OAuth2 grant type"
          },
          "resource" : {
            "type" : [ "null", "string" ],
            "description" : "Resource identifier: the eCom store ID for the ecom scope, the loyalty program ID for the loyalty_programs scope. Not used by the tenant-wide demand_planning scope.",
            "title" : "String"
          },
          "scope" : {
            "$ref" : "#/components/schemas/kotlin.String",
            "description" : "API scope to request access to"
          }
        },
        "required" : [ "client_id", "client_secret", "grant_type", "scope" ],
        "title" : "SbPublicApiAuthorizeRequest"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesNameEntityResponse" : {
        "type" : "object",
        "description" : "Named entity with localized name",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Entity identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized entity name"
          }
        },
        "required" : [ "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesNameEntityResponse"
      },
      "snowbee.SbPublicApiLocalizedString" : {
        "type" : "object",
        "example" : "{\"NO\":\"Norsk tekststreng\",\"EN\":\"English string\"}",
        "properties" : {
          "value" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        },
        "required" : [ "value" ],
        "title" : "SbPublicApiLocalizedString"
      },
      "snowbee.SbPublicApiEcomStoreBrandsResponse" : {
        "type" : "object",
        "description" : "List of brands",
        "properties" : {
          "brands" : {
            "type" : "array",
            "description" : "Available brands",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesNameEntityResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesNameEntityResponse>"
          }
        },
        "required" : [ "brands" ],
        "title" : "SbPublicApiEcomStoreBrandsResponse"
      },
      "snowbee.ApiErrorResponse" : {
        "type" : "object",
        "description" : "API error response",
        "properties" : {
          "error" : {
            "type" : "string",
            "description" : "Stable error code",
            "example" : "INVALID_REQUEST",
            "title" : "String"
          },
          "message" : {
            "type" : "string",
            "description" : "Human-readable error message",
            "example" : "Invalid customer ID format",
            "title" : "String"
          },
          "resolution" : {
            "type" : "string",
            "description" : "Suggested next action",
            "example" : "Correct the customer ID and retry the request",
            "title" : "String"
          }
        },
        "required" : [ "error", "message", "resolution" ],
        "title" : "ApiErrorResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductCategoryResponse" : {
        "type" : "object",
        "description" : "Product category",
        "properties" : {
          "code" : {
            "type" : [ "null", "string" ],
            "description" : "Product category code",
            "example" : "CAT-001",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Entity identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized entity name"
          }
        },
        "required" : [ "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductCategoryResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductCategoriesResponse" : {
        "type" : "object",
        "description" : "List of product categories",
        "properties" : {
          "productCategories" : {
            "type" : "array",
            "description" : "Product categories",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductCategoryResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductCategoryResponse>"
          }
        },
        "required" : [ "productCategories" ],
        "title" : "SbPublicApiEcomStoreProductCategoriesResponse"
      },
      "snowbee.SbPublicApiEcomStoreMainProductGroupResponse" : {
        "type" : "object",
        "description" : "Main product group",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Group code",
            "example" : "MPG-001",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Group identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized group name"
          },
          "productCategoryId" : {
            "type" : "string",
            "description" : "Product category this group belongs to",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "code", "id", "name", "productCategoryId" ],
        "title" : "SbPublicApiEcomStoreMainProductGroupResponse"
      },
      "snowbee.SbPublicApiEcomStoreMainProductGroupsResponse" : {
        "type" : "object",
        "description" : "List of main product groups",
        "properties" : {
          "mainProductGroups" : {
            "type" : "array",
            "description" : "Main product groups",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreMainProductGroupResponse"
            },
            "title" : "List<SbPublicApiEcomStoreMainProductGroupResponse>"
          }
        },
        "required" : [ "mainProductGroups" ],
        "title" : "SbPublicApiEcomStoreMainProductGroupsResponse"
      },
      "snowbee.SbPublicApiEcomStoreSubProductGroupResponse" : {
        "type" : "object",
        "description" : "Sub product group",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Group code",
            "example" : "SPG-001",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Group identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "mainProductGroupId" : {
            "type" : "string",
            "description" : "Parent main product group",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized group name"
          }
        },
        "required" : [ "code", "id", "mainProductGroupId", "name" ],
        "title" : "SbPublicApiEcomStoreSubProductGroupResponse"
      },
      "snowbee.SbPublicApiEcomStoreSubProductGroupsResponse" : {
        "type" : "object",
        "description" : "List of sub product groups",
        "properties" : {
          "subProductGroups" : {
            "type" : "array",
            "description" : "Sub product groups",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreSubProductGroupResponse"
            },
            "title" : "List<SbPublicApiEcomStoreSubProductGroupResponse>"
          }
        },
        "required" : [ "subProductGroups" ],
        "title" : "SbPublicApiEcomStoreSubProductGroupsResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductConceptsResponse" : {
        "type" : "object",
        "description" : "List of product concepts",
        "properties" : {
          "productConcepts" : {
            "type" : "array",
            "description" : "Product concepts",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesNameEntityResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesNameEntityResponse>"
          }
        },
        "required" : [ "productConcepts" ],
        "title" : "SbPublicApiEcomStoreProductConceptsResponse"
      },
      "snowbee.SbPublicApiEcomStoreExclusivityLevelsResponse" : {
        "type" : "object",
        "description" : "List of exclusivity levels",
        "properties" : {
          "exclusivityLevels" : {
            "type" : "array",
            "description" : "Exclusivity levels",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesNameEntityResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesNameEntityResponse>"
          }
        },
        "required" : [ "exclusivityLevels" ],
        "title" : "SbPublicApiEcomStoreExclusivityLevelsResponse"
      },
      "snowbee.SbPublicApiEcomStoreMainActivitiesResponse" : {
        "type" : "object",
        "description" : "List of main activities",
        "properties" : {
          "mainActivities" : {
            "type" : "array",
            "description" : "Main activities",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesNameEntityResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesNameEntityResponse>"
          }
        },
        "required" : [ "mainActivities" ],
        "title" : "SbPublicApiEcomStoreMainActivitiesResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesProductColorResponse" : {
        "type" : "object",
        "description" : "Product color information",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Color code",
            "example" : "BLK",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Color identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized color name"
          }
        },
        "required" : [ "code", "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesProductColorResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductColorsResponse" : {
        "type" : "object",
        "description" : "List of product colors",
        "properties" : {
          "productColors" : {
            "type" : "array",
            "description" : "Product colors",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesProductColorResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesProductColorResponse>"
          }
        },
        "required" : [ "productColors" ],
        "title" : "SbPublicApiEcomStoreProductColorsResponse"
      },
      "snowbee.SbPublicApiEcomStoreSizeResponse" : {
        "type" : "object",
        "description" : "Product size information",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Size code",
            "example" : "M",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Size identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized size name"
          },
          "sizeGroup" : {
            "type" : "string",
            "description" : "Size group this size belongs to",
            "example" : "CLOTHING",
            "title" : "String"
          },
          "sizeGroupId" : {
            "type" : "string",
            "description" : "Id of size group this size belongs to",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "sortFactor" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Sort order factor",
            "example" : "3",
            "title" : "Int"
          },
          "status" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEntityStatus",
            "description" : "Size status"
          }
        },
        "required" : [ "code", "id", "name", "sizeGroup", "sizeGroupId", "sortFactor", "status" ],
        "title" : "SbPublicApiEcomStoreSizeResponse"
      },
      "snowbee.SbPublicApiEntityStatus" : {
        "type" : "string",
        "description" : "Entity status",
        "enum" : [ "ACTIVE", "INACTIVE" ],
        "title" : "SbPublicApiEntityStatus"
      },
      "snowbee.SbPublicApiEcomStoreSizesResponse" : {
        "type" : "object",
        "description" : "List of sizes",
        "properties" : {
          "sizes" : {
            "type" : "array",
            "description" : "Available sizes",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreSizeResponse"
            },
            "title" : "List<SbPublicApiEcomStoreSizeResponse>"
          }
        },
        "required" : [ "sizes" ],
        "title" : "SbPublicApiEcomStoreSizesResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseBoolean"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseMultiSelect"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseRange"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseSingleSelect"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseText"
        } ],
        "description" : "Dynamic attribute definition",
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseBoolean" : {
        "type" : "object",
        "description" : "Boolean dynamic attribute definition",
        "properties" : {
          "attributeType" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Attribute type"
          },
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized attribute name"
          }
        },
        "required" : [ "attributeType", "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseBoolean"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse" : {
        "type" : "string",
        "enum" : [ "BOOLEAN", "RANGE", "SINGLE_SELECT", "MULTI_SELECT", "TEXT" ],
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseMultiSelect" : {
        "type" : "object",
        "description" : "Multi-select dynamic attribute definition",
        "properties" : {
          "attributeType" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Attribute type"
          },
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized attribute name"
          }
        },
        "required" : [ "attributeType", "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseMultiSelect"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseRange" : {
        "type" : "object",
        "description" : "Range/numeric dynamic attribute definition with min, max and step",
        "properties" : {
          "attributeType" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Attribute type"
          },
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized attribute name"
          },
          "from" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Minimum value",
            "example" : "0.0",
            "title" : "BigDecimalAsString"
          },
          "step" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Step increment",
            "example" : "1.0",
            "title" : "BigDecimalAsString"
          },
          "to" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Maximum value",
            "example" : "100.0",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "attributeType", "from", "id", "name", "step", "to" ],
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseRange"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseSingleSelect" : {
        "type" : "object",
        "description" : "Single-select dynamic attribute definition",
        "properties" : {
          "attributeType" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Attribute type"
          },
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized attribute name"
          }
        },
        "required" : [ "attributeType", "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseSingleSelect"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseText" : {
        "type" : "object",
        "description" : "Text dynamic attribute definition",
        "properties" : {
          "attributeType" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Attribute type"
          },
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized attribute name"
          },
          "contentFormat" : {
            "type" : "string",
            "description" : "Content format: PLAIN or MARKDOWN",
            "example" : "PLAIN",
            "title" : "String"
          }
        },
        "required" : [ "attributeType", "contentFormat", "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponseText"
      },
      "snowbee.SbPublicApiEcomStoreDynamicAttributesResponse" : {
        "type" : "object",
        "description" : "List of dynamic attributes",
        "properties" : {
          "dynamicAttributes" : {
            "type" : "array",
            "description" : "Dynamic attributes",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesDynamicAttributeResponse>"
          }
        },
        "required" : [ "dynamicAttributes" ],
        "title" : "SbPublicApiEcomStoreDynamicAttributesResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeOptionResponse" : {
        "type" : "object",
        "description" : "Dynamic attribute option",
        "properties" : {
          "description" : {
            "type" : [ "null", "string" ],
            "description" : "Option description",
            "example" : "Product is waterproof",
            "title" : "String"
          },
          "dynamicAttributeId" : {
            "type" : "string",
            "description" : "Parent dynamic attribute",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Option identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Option name",
            "example" : "Waterproof",
            "title" : "String"
          }
        },
        "required" : [ "dynamicAttributeId", "id", "name" ],
        "title" : "SbPublicApiEcomStoreProductAttributesDynamicAttributeOptionResponse"
      },
      "snowbee.SbPublicApiEcomStoreDynamicAttributeOptionsResponse" : {
        "type" : "object",
        "description" : "List of dynamic attribute options",
        "properties" : {
          "dynamicAttributeOptions" : {
            "type" : "array",
            "description" : "Dynamic attribute options",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductAttributesDynamicAttributeOptionResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductAttributesDynamicAttributeOptionResponse>"
          }
        },
        "required" : [ "dynamicAttributeOptions" ],
        "title" : "SbPublicApiEcomStoreDynamicAttributeOptionsResponse"
      },
      "snowbee.SbPublicApiUnitOfMeasureResponse" : {
        "type" : "object",
        "description" : "Unit of measure",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Unit code",
            "example" : "PCS",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized unit name"
          }
        },
        "required" : [ "code", "id", "name" ],
        "title" : "SbPublicApiUnitOfMeasureResponse"
      },
      "snowbee.SbPublicApiUnitOfMeasuresResponse" : {
        "type" : "object",
        "description" : "List of units of measure",
        "properties" : {
          "unitOfMeasures" : {
            "type" : "array",
            "description" : "List of available units of measure",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiUnitOfMeasureResponse"
            },
            "title" : "List<SbPublicApiUnitOfMeasureResponse>"
          }
        },
        "required" : [ "unitOfMeasures" ],
        "title" : "SbPublicApiUnitOfMeasuresResponse"
      },
      "snowbee.SbPublicApiProductIdsResponse" : {
        "type" : "object",
        "description" : "List of product IDs in the ecom store assortment",
        "properties" : {
          "productIds" : {
            "type" : "array",
            "description" : "List of product IDs",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          }
        },
        "required" : [ "productIds" ],
        "title" : "SbPublicApiProductIdsResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse" : {
        "anyOf" : [ {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseBoolean"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseMultiSelect"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseRange"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseSingleSelect"
        }, {
          "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseText"
        } ],
        "description" : "Dynamic attribute value for a product",
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValuesResponse"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseBoolean" : {
        "type" : "object",
        "description" : "Boolean dynamic attribute value",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Value type"
          },
          "value" : {
            "type" : "boolean",
            "description" : "Boolean value",
            "example" : "true",
            "title" : "Boolean"
          }
        },
        "required" : [ "id", "type", "value" ],
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseBoolean"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseMultiSelect" : {
        "type" : "object",
        "description" : "Multi-select dynamic attribute value",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Value type"
          },
          "value" : {
            "type" : "array",
            "description" : "List of selected option IDs",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          }
        },
        "required" : [ "id", "type", "value" ],
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseMultiSelect"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseRange" : {
        "type" : "object",
        "description" : "Range/numeric dynamic attribute value",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Value type"
          },
          "value" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Numeric value",
            "example" : "42.5",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "id", "type", "value" ],
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseRange"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseSingleSelect" : {
        "type" : "object",
        "description" : "Single-select dynamic attribute value",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Value type"
          },
          "value" : {
            "type" : [ "null", "string" ],
            "description" : "Selected option ID",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "id", "type" ],
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseSingleSelect"
      },
      "snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseText" : {
        "type" : "object",
        "description" : "Text dynamic attribute value",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Dynamic attribute identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "type" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValueTypeResponse",
            "description" : "Value type"
          },
          "value" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized text value"
          }
        },
        "required" : [ "id", "type", "value" ],
        "title" : "SbPublicApiEcomStoreProductDynamicAttributeValuesResponse.SbPublicApiEcomStoreProductDynamicAttributeValuesResponseText"
      },
      "snowbee.SbPublicApiEcomStoreProductImageResponse" : {
        "type" : "object",
        "description" : "Product image",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Image identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "sortOrder" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Sort order for display",
            "example" : "1",
            "title" : "Int"
          },
          "url" : {
            "type" : "string",
            "description" : "Image URL",
            "example" : "https://cdn.example.com/images/product-001.jpg",
            "title" : "String"
          }
        },
        "required" : [ "id", "sortOrder", "url" ],
        "title" : "SbPublicApiEcomStoreProductImageResponse"
      },
      "snowbee.SbPublicApiProductPrice" : {
        "type" : "object",
        "description" : "Product pricing information",
        "properties" : {
          "campaignPrice" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Campaign/sale price",
            "example" : "249.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "loyaltyMemberPrice" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Loyalty member price",
            "example" : "239.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "price" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Regular price",
            "example" : "299.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "price" ],
        "title" : "SbPublicApiProductPrice"
      },
      "snowbee.SbPublicApiEcomStoreProductSkuResponse" : {
        "type" : "object",
        "description" : "Product SKU (Stock Keeping Unit) variant",
        "properties" : {
          "barcode" : {
            "type" : [ "null", "string" ],
            "description" : "Barcode (EAN/UPC)",
            "example" : "1234567890123",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "SKU identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "productColorId" : {
            "type" : [ "null", "string" ],
            "description" : "Product color identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "published" : {
            "type" : "boolean",
            "description" : "Whether the SKU is published",
            "example" : "true",
            "title" : "Boolean"
          },
          "sizeId" : {
            "type" : [ "null", "string" ],
            "description" : "Size identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "description" : "SKU number/code",
            "example" : "PROD-BLK-M",
            "title" : "String"
          }
        },
        "required" : [ "id", "published", "skuNumber" ],
        "title" : "SbPublicApiEcomStoreProductSkuResponse"
      },
      "snowbee.SbPublicApiUpcomingProductPrice" : {
        "type" : "object",
        "description" : "Upcoming price change",
        "properties" : {
          "activatesAt" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "When this price becomes active",
            "example" : "2025-10-28T12:37:42Z",
            "title" : "ISO8681"
          },
          "campaignPrice" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Campaign/sale price",
            "example" : "269.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "loyaltyMemberPrice" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Loyalty member price",
            "example" : "259.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "price" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Regular price",
            "example" : "319.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "activatesAt", "price" ],
        "title" : "SbPublicApiUpcomingProductPrice"
      },
      "snowbee.SbPublicApiEcomStoreProductResponse" : {
        "type" : "object",
        "description" : "Product information with SKUs, images, and pricing",
        "properties" : {
          "brandId" : {
            "type" : "string",
            "description" : "Brand identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "bundledProductModelIds" : {
            "type" : "array",
            "description" : "IDs of bundled product models",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "dynamicAttributeValues" : {
            "type" : "array",
            "description" : "Dynamic attribute values for this product",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductDynamicAttributeValuesResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductDynamicAttributeValuesResponse>"
          },
          "exclusivityLevelId" : {
            "type" : [ "null", "string" ],
            "description" : "Exclusivity level identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Product identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "images" : {
            "type" : "array",
            "description" : "Product images",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductImageResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductImageResponse>"
          },
          "mainActivityId" : {
            "type" : [ "null", "string" ],
            "description" : "Main activity identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "mainProductGroupId" : {
            "type" : "string",
            "description" : "Main product group identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "newFrom" : {
            "type" : [ "null", "string" ],
            "format" : "date",
            "description" : "Date the product is tagged as new from (inclusive)",
            "example" : "2026-06-01",
            "title" : "LocalDate"
          },
          "newTo" : {
            "type" : [ "null", "string" ],
            "format" : "date",
            "description" : "Date the product is tagged as new until (inclusive)",
            "example" : "2026-08-31",
            "title" : "LocalDate"
          },
          "price" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiProductPrice"
            },
            "description" : "Current prices by currency (key is ISO 4217 currency code)",
            "title" : "Map<String,SbPublicApiProductPrice>"
          },
          "productCategoryId" : {
            "type" : "string",
            "description" : "Product category identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "productConceptId" : {
            "type" : [ "null", "string" ],
            "description" : "Product concept identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "productDescription" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized product description"
          },
          "productFeatures" : {
            "type" : "array",
            "description" : "List of localized product features",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString"
            },
            "title" : "List<SbPublicApiLocalizedString>"
          },
          "productName" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiLocalizedString",
            "description" : "Localized product name"
          },
          "productNumber" : {
            "type" : "string",
            "description" : "Product number/code",
            "example" : "PROD-001",
            "title" : "String"
          },
          "published" : {
            "type" : "boolean",
            "description" : "Whether the product is published",
            "example" : "true",
            "title" : "Boolean"
          },
          "skus" : {
            "type" : "array",
            "description" : "SKU variants for this product",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiEcomStoreProductSkuResponse"
            },
            "title" : "List<SbPublicApiEcomStoreProductSkuResponse>"
          },
          "subProductGroupId" : {
            "type" : "string",
            "description" : "Sub product group identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "upcomingPriceCalendar" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/components/schemas/snowbee.SbPublicApiUpcomingProductPrice"
              },
              "title" : "List<SbPublicApiUpcomingProductPrice>"
            },
            "description" : "Upcoming price changes by currency for the next 30 days",
            "title" : "Map<String,List<SbPublicApiUpcomingProductPrice>>"
          },
          "vatGroupId" : {
            "type" : "string",
            "description" : "VAT group identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "brandId", "bundledProductModelIds", "dynamicAttributeValues", "id", "images", "mainProductGroupId", "price", "productCategoryId", "productDescription", "productFeatures", "productName", "productNumber", "published", "skus", "subProductGroupId", "upcomingPriceCalendar", "vatGroupId" ],
        "title" : "SbPublicApiEcomStoreProductResponse"
      },
      "snowbee.SbPublicApiInventoryByLocation" : {
        "type" : "object",
        "description" : "Inventory quantity at a specific location",
        "properties" : {
          "availableQuantity" : {
            "type" : "string",
            "description" : "Available quantity at this location",
            "example" : "25",
            "title" : "String"
          },
          "id" : {
            "type" : [ "null", "string" ],
            "description" : "Location identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Location name",
            "example" : "Oslo Main Warehouse",
            "title" : "String"
          }
        },
        "required" : [ "availableQuantity", "name" ],
        "title" : "SbPublicApiInventoryByLocation"
      },
      "snowbee.SbPublicApiEcomStoreProductInventorySkuResponse" : {
        "type" : "object",
        "description" : "SKU inventory information",
        "properties" : {
          "availableQuantity" : {
            "type" : "string",
            "description" : "Total available quantity",
            "example" : "100",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "SKU identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "inventoryByLocation" : {
            "type" : "array",
            "description" : "Breakdown of inventory by location",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiInventoryByLocation"
            },
            "title" : "List<SbPublicApiInventoryByLocation>"
          },
          "sizeId" : {
            "type" : [ "null", "string" ],
            "description" : "Size identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "description" : "SKU number/code",
            "example" : "PROD-BLK-M",
            "title" : "String"
          },
          "unitOfMeasure" : {
            "type" : [ "null", "string" ],
            "description" : "Unit of measure code",
            "example" : "PCS",
            "title" : "String"
          }
        },
        "required" : [ "availableQuantity", "id", "inventoryByLocation", "skuNumber" ],
        "title" : "SbPublicApiEcomStoreProductInventorySkuResponse"
      },
      "snowbee.SbPublicApiRetailStoreResponse" : {
        "type" : "object",
        "description" : "Retail store information",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the store",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Store name",
            "example" : "Oslo City Store",
            "title" : "String"
          },
          "number" : {
            "type" : "string",
            "description" : "Store number",
            "example" : "1001",
            "title" : "String"
          },
          "visitAddress" : {
            "description" : "Store visit address",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiRetailStoreAddressResponse"
            } ]
          }
        },
        "required" : [ "id", "name", "number" ],
        "title" : "SbPublicApiRetailStoreResponse"
      },
      "snowbee.SbPublicApiRetailStoreAddressResponse" : {
        "type" : "object",
        "description" : "Address for a retail store",
        "properties" : {
          "city" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Oslo",
            "title" : "String"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "postCode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "0154",
            "title" : "String"
          },
          "street" : {
            "type" : "string",
            "description" : "Street address including number",
            "example" : "Karl Johans gate 1",
            "title" : "String"
          },
          "type" : {
            "type" : "string",
            "description" : "Address type",
            "example" : "VISIT",
            "title" : "String"
          }
        },
        "required" : [ "city", "countryIsoCode", "postCode", "street", "type" ],
        "title" : "SbPublicApiRetailStoreAddressResponse"
      },
      "snowbee.SbPublicApiRetailStoresResponse" : {
        "type" : "object",
        "description" : "List of retail stores",
        "properties" : {
          "retailStores" : {
            "type" : "array",
            "description" : "List of retail stores",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiRetailStoreResponse"
            },
            "title" : "List<SbPublicApiRetailStoreResponse>"
          }
        },
        "required" : [ "retailStores" ],
        "title" : "SbPublicApiRetailStoresResponse"
      },
      "snowbee.SbPublicApiCampaignResponse" : {
        "type" : "object",
        "description" : "Campaign information with pricing for specific SKUs",
        "properties" : {
          "campaignType" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiCampaignType",
            "description" : "The campaign's type, which decides how to read each sku's campaignPrice"
          },
          "code" : {
            "type" : [ "null", "string" ],
            "description" : "Campaign code for reference",
            "example" : "SUMMER2024",
            "title" : "String"
          },
          "currencyIsoCode" : {
            "type" : "string",
            "description" : "ISO 4217 currency code for campaign prices",
            "example" : "NOK",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the campaign",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "loyaltyProgram" : {
            "description" : "Loyalty program associated with this campaign",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCampaignLoyaltyProgramResponse"
            } ]
          },
          "name" : {
            "type" : "string",
            "description" : "Display name of the campaign",
            "example" : "Summer Sale 2024",
            "title" : "String"
          },
          "skus" : {
            "type" : "array",
            "description" : "List of SKUs included in this campaign with their campaign prices",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCampaignSkuResponse"
            },
            "title" : "List<SbPublicApiCampaignSkuResponse>"
          },
          "status" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiCampaignStatus",
            "description" : "Current status of the campaign"
          },
          "validFrom" : {
            "type" : "string",
            "format" : "date",
            "description" : "Start date of the campaign (inclusive)",
            "example" : "2024-06-01",
            "title" : "LocalDate"
          },
          "validTo" : {
            "type" : "string",
            "format" : "date",
            "description" : "End date of the campaign (inclusive)",
            "example" : "2024-08-31",
            "title" : "LocalDate"
          }
        },
        "required" : [ "campaignType", "currencyIsoCode", "id", "name", "skus", "status", "validFrom", "validTo" ],
        "title" : "SbPublicApiCampaignResponse"
      },
      "snowbee.SbPublicApiCampaignType" : {
        "type" : "string",
        "description" : "What kind of campaign this is, matching the campaign type set in SnowBee",
        "enum" : [ "NORMAL", "THREE_FOR_TWO" ],
        "title" : "SbPublicApiCampaignType"
      },
      "snowbee.SbPublicApiCampaignLoyaltyProgramResponse" : {
        "type" : "object",
        "description" : "Loyalty program associated with a campaign",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the loyalty program",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Name of the loyalty program",
            "example" : "Premium Members Club",
            "title" : "String"
          }
        },
        "required" : [ "id", "name" ],
        "title" : "SbPublicApiCampaignLoyaltyProgramResponse"
      },
      "snowbee.SbPublicApiCampaignSkuResponse" : {
        "type" : "object",
        "description" : "SKU pricing within a campaign",
        "properties" : {
          "campaignPrice" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "The price this sku sells at while the campaign runs. For a NORMAL campaign that is the discounted price; for THREE_FOR_TWO the unit price does not change, so it is the sku's normal price and campaignType is what carries the offer",
            "example" : "199.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "loyaltyProgramMembershipRequired" : {
            "type" : "boolean",
            "description" : "Whether loyalty program membership is required to purchase this SKU at the campaign price",
            "example" : "false",
            "title" : "Boolean"
          },
          "skuId" : {
            "type" : "string",
            "description" : "Unique identifier of the SKU",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "campaignPrice", "loyaltyProgramMembershipRequired", "skuId" ],
        "title" : "SbPublicApiCampaignSkuResponse"
      },
      "snowbee.SbPublicApiCampaignStatus" : {
        "type" : "string",
        "description" : "Campaign status",
        "enum" : [ "PLANNED", "ACTIVE" ],
        "title" : "SbPublicApiCampaignStatus"
      },
      "snowbee.SbPublicApiCampaignsResponse" : {
        "type" : "object",
        "description" : "List of campaigns",
        "properties" : {
          "campaigns" : {
            "type" : "array",
            "description" : "List of available campaigns",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCampaignResponse"
            },
            "title" : "List<SbPublicApiCampaignResponse>"
          }
        },
        "required" : [ "campaigns" ],
        "title" : "SbPublicApiCampaignsResponse"
      },
      "snowbee.SbPublicApiTriggerProductEventsResponse" : {
        "type" : "object",
        "description" : "Response for product event trigger operation",
        "properties" : {
          "eventsTriggered" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Number of events triggered",
            "example" : "42",
            "title" : "Int"
          },
          "message" : {
            "type" : "string",
            "description" : "Status message",
            "example" : "Successfully triggered product events",
            "title" : "String"
          }
        },
        "required" : [ "eventsTriggered", "message" ],
        "title" : "SbPublicApiTriggerProductEventsResponse"
      },
      "snowbee.SbPublicApiTriggerInventoryEventsResponse" : {
        "type" : "object",
        "description" : "Response for inventory event trigger operation",
        "properties" : {
          "eventsTriggered" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Number of events triggered",
            "example" : "150",
            "title" : "Int"
          },
          "message" : {
            "type" : "string",
            "description" : "Status message",
            "example" : "Successfully triggered inventory events",
            "title" : "String"
          }
        },
        "required" : [ "eventsTriggered", "message" ],
        "title" : "SbPublicApiTriggerInventoryEventsResponse"
      },
      "snowbee.SbPublicApiDeliveryAddressRequest" : {
        "type" : "object",
        "description" : "Delivery address for an order",
        "properties" : {
          "city" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Oslo",
            "title" : "String"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "description" : "Contact email for delivery notifications",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Recipient name",
            "example" : "Ola Nordmann",
            "title" : "String"
          },
          "phone" : {
            "type" : [ "null", "string" ],
            "description" : "Contact phone for delivery",
            "example" : "+4790123456",
            "title" : "String"
          },
          "postCode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "0123",
            "title" : "String"
          },
          "street" : {
            "type" : "string",
            "description" : "Street address including house number",
            "example" : "Storgata 1",
            "title" : "String"
          }
        },
        "required" : [ "city", "countryIsoCode", "name", "postCode", "street" ],
        "title" : "SbPublicApiDeliveryAddressRequest"
      },
      "snowbee.SbPublicApiFreightInfo" : {
        "type" : "object",
        "description" : "Freight/shipping information for an order",
        "properties" : {
          "carrierAgreementCode" : {
            "type" : "string",
            "description" : "Carrier agreement code",
            "example" : "6838716034162098000",
            "title" : "String"
          },
          "carrierCode" : {
            "type" : "string",
            "description" : "Carrier code",
            "example" : "porterbuddy",
            "title" : "String"
          },
          "carrierName" : {
            "type" : [ "null", "string" ],
            "description" : "Carrier display name",
            "example" : "Porterbuddy",
            "title" : "String"
          },
          "carrierProductCode" : {
            "type" : "string",
            "description" : "Carrier product code",
            "example" : "8747679326213767168",
            "title" : "String"
          },
          "carrierProductName" : {
            "type" : [ "null", "string" ],
            "description" : "Carrier product display name",
            "example" : "Evening delivery",
            "title" : "String"
          },
          "carrierProductPayload" : {
            "description" : "Provider-specific extra data",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCarrierProductPayload"
            } ]
          },
          "freightVatRate" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "VAT rate for freight as a percentage",
            "example" : "25.00",
            "title" : "BigDecimalAsString"
          },
          "netFreightAmount" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Net freight/shipping cost amount (excl. VAT)",
            "example" : "49.00",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "carrierAgreementCode", "carrierCode", "carrierProductCode" ],
        "title" : "SbPublicApiFreightInfo"
      },
      "snowbee.SbPublicApiCarrierProductPayload" : {
        "type" : "object",
        "description" : "Carrier product payload",
        "properties" : {
          "partnerName" : {
            "type" : [ "null", "string" ],
            "description" : "Partner name from provider",
            "title" : "String"
          },
          "partnerNumber" : {
            "type" : [ "null", "string" ],
            "description" : "Partner number from provider",
            "title" : "String"
          }
        },
        "title" : "SbPublicApiCarrierProductPayload"
      },
      "snowbee.SbPublicApiInvoiceAddressRequest" : {
        "type" : "object",
        "description" : "Invoice/billing address for an order",
        "properties" : {
          "city" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Oslo",
            "title" : "String"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "email" : {
            "type" : "string",
            "description" : "Email for invoice delivery",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Recipient name",
            "example" : "Ola Nordmann",
            "title" : "String"
          },
          "postCode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "0123",
            "title" : "String"
          },
          "street" : {
            "type" : "string",
            "description" : "Street address including house number",
            "example" : "Storgata 1",
            "title" : "String"
          }
        },
        "required" : [ "city", "countryIsoCode", "email", "name", "postCode", "street" ],
        "title" : "SbPublicApiInvoiceAddressRequest"
      },
      "snowbee.SbPublicApiOrderLineItemRequest" : {
        "type" : "object",
        "description" : "Line item for an order. Either skuId or skuNumber must be provided.",
        "properties" : {
          "campaignCode" : {
            "type" : [ "null", "string" ],
            "description" : "Code of the campaign this line was sold under, as returned by GET /campaigns. Send it on every line sold under a campaign. For a NORMAL campaign the line must be priced at that SKU's campaignPrice. For a THREE_FOR_TWO, price the line at the basket's answer -- the blended per-unit price after the offer, at most the SKU's normal price -- exactly as a cash register would. Rejected if the code is not a released campaign covering the SKU on the order date, or if the line's price does not bear the campaign out.",
            "example" : "SUMMER24",
            "title" : "String"
          },
          "netUnitOrderDiscountAmount" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Per-unit reduction taken on top of netUnitPrice, such as a gift voucher or a coupon share spread across the order's lines. Not for a campaign price or any other markdown belonging in netUnitPrice: summed into one figure, a campaign markdown and a voucher cannot be told apart afterwards.",
            "example" : "10.00",
            "title" : "BigDecimalAsString"
          },
          "netUnitPrice" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Price of one unit excluding VAT, as charged to the customer. Send the price after any campaign price or markdown -- not a list price. Where the line was sold under a campaign, this must be that campaign's campaignPrice from GET /campaigns.",
            "example" : "299.00",
            "title" : "BigDecimalAsString"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity ordered",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          },
          "skuId" : {
            "type" : [ "null", "string" ],
            "description" : "SKU ID of the product (provide either skuId or skuNumber)",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : [ "null", "string" ],
            "description" : "SKU number/code of the product (provide either skuId or skuNumber)",
            "example" : "PROD-BLK-M",
            "title" : "String"
          },
          "vatRate" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "VAT rate as percentage",
            "example" : "25.00",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "netUnitPrice", "quantity", "vatRate" ],
        "title" : "SbPublicApiOrderLineItemRequest"
      },
      "snowbee.SbPublicApiVoucherRequest" : {
        "type" : "object",
        "description" : "Voucher/discount coupon to apply to an order",
        "properties" : {
          "externalReference" : {
            "type" : "string",
            "description" : "External reference for the voucher (e.g. Trigg promotion UUID)",
            "example" : "abc123-promo-uuid",
            "title" : "String"
          },
          "title" : {
            "type" : [ "null", "string" ],
            "description" : "Display name for the voucher",
            "example" : "Summer Sale 20%",
            "title" : "String"
          },
          "type" : {
            "description" : "Discount type",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/kotlin.String"
            } ]
          },
          "value" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Discount value (percentage 0-100 or fixed amount)",
            "example" : "20.00",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "externalReference" ],
        "title" : "SbPublicApiVoucherRequest"
      },
      "snowbee.SbPublicApiCreateOrderRequest" : {
        "type" : "object",
        "description" : "Request body for creating a new sales order",
        "properties" : {
          "customerId" : {
            "type" : [ "null", "string" ],
            "description" : "Customer ID to associate with the order",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "deliveryAddress" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiDeliveryAddressRequest",
            "description" : "Delivery/shipping address for the order"
          },
          "externalOrderId" : {
            "type" : [ "null", "string" ],
            "description" : "External order ID from your e-commerce platform",
            "example" : "SHOP-ORD-12345",
            "title" : "String"
          },
          "externalOrderNumber" : {
            "type" : [ "null", "string" ],
            "description" : "External order number displayed to customer",
            "example" : "WEB-2024-00123",
            "title" : "String"
          },
          "freight" : {
            "description" : "Optional freight/shipping information",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiFreightInfo"
            } ]
          },
          "invoiceAddress" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiInvoiceAddressRequest",
            "description" : "Invoice/billing address for the order"
          },
          "lineItems" : {
            "type" : "array",
            "description" : "List of items to include in the order",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiOrderLineItemRequest"
            },
            "title" : "List<SbPublicApiOrderLineItemRequest>"
          },
          "vouchers" : {
            "type" : [ "null", "array" ],
            "description" : "Vouchers/discount coupons to apply to the order",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiVoucherRequest"
            },
            "title" : "List<SbPublicApiVoucherRequest>"
          }
        },
        "required" : [ "deliveryAddress", "invoiceAddress", "lineItems" ],
        "title" : "SbPublicApiCreateOrderRequest"
      },
      "snowbee.SbPublicApiCreateOrderResponse" : {
        "type" : "object",
        "description" : "Response after accepting an order, containing full order id",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the created order",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "id" ],
        "title" : "SbPublicApiCreateOrderResponse"
      },
      "snowbee.SbPublicApiCaptureResponse" : {
        "type" : "object",
        "description" : "Payment capture for an order",
        "properties" : {
          "amount" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Captured amount",
            "example" : "747.50",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "createdDate" : {
            "type" : [ "null", "string" ],
            "format" : "date",
            "description" : "Date the capture was created",
            "example" : "2024-06-15",
            "title" : "LocalDate"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "lines" : {
            "type" : "array",
            "description" : "Line items in this capture",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCaptureLineResponse"
            },
            "title" : "List<SbPublicApiCaptureLineResponse>"
          },
          "status" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiCaptureStatus",
            "description" : "Capture status"
          }
        },
        "required" : [ "id", "lines", "status" ],
        "title" : "SbPublicApiCaptureResponse"
      },
      "snowbee.SbPublicApiCaptureLineResponse" : {
        "type" : "object",
        "description" : "Line item in a capture",
        "properties" : {
          "lineItemId" : {
            "type" : "string",
            "description" : "Reference to order line item",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity captured",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "lineItemId", "quantity" ],
        "title" : "SbPublicApiCaptureLineResponse"
      },
      "snowbee.SbPublicApiCaptureStatus" : {
        "type" : "string",
        "description" : "Payment capture status",
        "enum" : [ "PENDING", "CONFIRMED", "FAILED" ],
        "title" : "SbPublicApiCaptureStatus"
      },
      "snowbee.SbPublicApiDeliveryAddressResponse" : {
        "type" : "object",
        "description" : "Delivery address details",
        "properties" : {
          "city" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Oslo",
            "title" : "String"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "description" : "Contact email",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Recipient name",
            "example" : "Ola Nordmann",
            "title" : "String"
          },
          "phone" : {
            "type" : [ "null", "string" ],
            "description" : "Contact phone",
            "example" : "+4790123456",
            "title" : "String"
          },
          "postCode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "0123",
            "title" : "String"
          },
          "street" : {
            "type" : "string",
            "description" : "Street address including house number",
            "example" : "Storgata 1",
            "title" : "String"
          }
        },
        "required" : [ "city", "countryIsoCode", "name", "postCode", "street" ],
        "title" : "SbPublicApiDeliveryAddressResponse"
      },
      "snowbee.SbPublicApiFreightResponse" : {
        "type" : "object",
        "description" : "Freight/shipping information for an order response",
        "properties" : {
          "carrierAgreementCode" : {
            "type" : "string",
            "description" : "Carrier agreement code",
            "example" : "6838716034162098000",
            "title" : "String"
          },
          "carrierCode" : {
            "type" : "string",
            "description" : "Carrier code",
            "example" : "porterbuddy",
            "title" : "String"
          },
          "carrierName" : {
            "type" : [ "null", "string" ],
            "description" : "Carrier display name",
            "example" : "Porterbuddy",
            "title" : "String"
          },
          "carrierProductCode" : {
            "type" : "string",
            "description" : "Carrier product code",
            "example" : "8747679326213767168",
            "title" : "String"
          },
          "carrierProductName" : {
            "type" : [ "null", "string" ],
            "description" : "Carrier product display name",
            "example" : "Evening delivery",
            "title" : "String"
          },
          "carrierProductPayload" : {
            "description" : "Provider-specific extra data",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCarrierProductPayload"
            } ]
          },
          "freightVatRate" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "VAT rate for freight as a percentage",
            "example" : "25.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "netFreightAmount" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Net freight/shipping cost amount (excl. VAT)",
            "example" : "49.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "carrierAgreementCode", "carrierCode", "carrierProductCode" ],
        "title" : "SbPublicApiFreightResponse"
      },
      "snowbee.SbPublicApiInvoiceAddressResponse" : {
        "type" : "object",
        "description" : "Invoice/billing address details",
        "properties" : {
          "city" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Oslo",
            "title" : "String"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "email" : {
            "type" : "string",
            "description" : "Email for invoice delivery",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Recipient name",
            "example" : "Ola Nordmann",
            "title" : "String"
          },
          "postCode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "0123",
            "title" : "String"
          },
          "street" : {
            "type" : "string",
            "description" : "Street address including house number",
            "example" : "Storgata 1",
            "title" : "String"
          }
        },
        "required" : [ "city", "countryIsoCode", "email", "name", "postCode", "street" ],
        "title" : "SbPublicApiInvoiceAddressResponse"
      },
      "snowbee.SbPublicApiOrderLineItemResponse" : {
        "type" : "object",
        "description" : "Order line item with product details and pricing",
        "properties" : {
          "barcode" : {
            "type" : [ "null", "string" ],
            "description" : "Barcode (EAN/GTIN)",
            "example" : "1234567890123",
            "title" : "String"
          },
          "cancelledQuantity" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Quantity cancelled after line closure; null while the line is open or fully shipped",
            "example" : "1.0",
            "title" : "BigDecimalAsString"
          },
          "discount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Discount percentage applied to this line",
            "example" : "0.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "estimatedDeliveryDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Estimated delivery date",
            "example" : "2024-06-20",
            "title" : "LocalDate"
          },
          "fulfilledQuantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity fulfilled/shipped for this line",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          },
          "grossAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Gross amount including VAT",
            "example" : "747.50",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the line item",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "netAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net amount excluding VAT (quantity × netUnitPrice)",
            "example" : "598.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "netUnitOrderDiscountAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net unit order discount amount applied to this line",
            "example" : "10.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "netUnitPrice" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net unit price excluding VAT",
            "example" : "299.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "productName" : {
            "type" : "string",
            "description" : "Product display name",
            "example" : "Classic T-Shirt Black Medium",
            "title" : "String"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity ordered",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          },
          "returnTicketBarcodeUrl" : {
            "type" : [ "null", "string" ],
            "description" : "URL to a Code128 barcode SVG image for this line's exchange label. The last path segment is the base64url encoding of the scannable barcode value \"SO <order number> <line position>\", which is what the barcode encodes, not the return ticket number above",
            "example" : "/v1/tenants/{tenantId}/ecom_stores/{eComStoreId}/barcodes/code128/U08gV0VCNDAwOTkwMyAy",
            "title" : "String"
          },
          "returnTicketNumber" : {
            "type" : "string",
            "description" : "Human readable return ticket number (exchange label code) for this line, the order number followed by the line position",
            "example" : "WEB40099032",
            "title" : "String"
          },
          "skuId" : {
            "type" : "string",
            "description" : "SKU ID of the product",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "description" : "SKU number/code",
            "example" : "PROD-BLK-M",
            "title" : "String"
          },
          "vatAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "VAT amount",
            "example" : "149.50",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "vatRate" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "VAT rate as percentage",
            "example" : "25.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "discount", "estimatedDeliveryDate", "fulfilledQuantity", "grossAmount", "id", "netAmount", "netUnitOrderDiscountAmount", "netUnitPrice", "productName", "quantity", "returnTicketNumber", "skuId", "skuNumber", "vatAmount", "vatRate" ],
        "title" : "SbPublicApiOrderLineItemResponse"
      },
      "snowbee.SbPublicApiOrderStatus" : {
        "type" : "string",
        "description" : "Order status",
        "enum" : [ "PLANNED", "CLOSED", "RELEASED" ],
        "title" : "SbPublicApiOrderStatus"
      },
      "snowbee.SbPublicApiReceiptResponse" : {
        "type" : "object",
        "description" : "Receipt for a sales order",
        "properties" : {
          "createdDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Date the receipt was created",
            "example" : "2024-06-15",
            "title" : "LocalDate"
          },
          "grossAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Gross amount including VAT",
            "example" : "747.50",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "lines" : {
            "type" : "array",
            "description" : "Line items in this receipt",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiReceiptLineResponse"
            },
            "title" : "List<SbPublicApiReceiptLineResponse>"
          },
          "netAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net amount excluding VAT",
            "example" : "598.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "createdDate", "grossAmount", "id", "lines", "netAmount" ],
        "title" : "SbPublicApiReceiptResponse"
      },
      "snowbee.SbPublicApiReceiptLineResponse" : {
        "type" : "object",
        "description" : "Line item in a receipt",
        "properties" : {
          "fulfilledQuantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity fulfilled/picked",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          },
          "lineItemId" : {
            "type" : "string",
            "description" : "Reference to order line item",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity invoiced",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "fulfilledQuantity", "lineItemId", "quantity" ],
        "title" : "SbPublicApiReceiptLineResponse"
      },
      "snowbee.SbPublicApiRefundResponse" : {
        "type" : "object",
        "description" : "Refund for a sales order",
        "properties" : {
          "createdDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Date the refund was created",
            "example" : "2024-06-20",
            "title" : "LocalDate"
          },
          "grossAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Gross refund amount including VAT",
            "example" : "747.50",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "grossReturnFeeAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Gross return fee amount including VAT",
            "example" : "59.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "lines" : {
            "type" : "array",
            "description" : "Line items in this refund",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiRefundLineResponse"
            },
            "title" : "List<SbPublicApiRefundLineResponse>"
          },
          "netAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net refund amount excluding VAT",
            "example" : "598.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "netReturnFeeAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net return fee amount excluding VAT",
            "example" : "47.20",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          },
          "status" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiRefundOrderStatus",
            "description" : "Refund status"
          }
        },
        "required" : [ "createdDate", "grossAmount", "grossReturnFeeAmount", "id", "lines", "netAmount", "netReturnFeeAmount", "status" ],
        "title" : "SbPublicApiRefundResponse"
      },
      "snowbee.SbPublicApiRefundLineResponse" : {
        "type" : "object",
        "description" : "Line item in a refund",
        "properties" : {
          "lineItemId" : {
            "type" : "string",
            "description" : "Reference to order line item",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity refunded",
            "example" : "1.0",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "lineItemId", "quantity" ],
        "title" : "SbPublicApiRefundLineResponse"
      },
      "snowbee.SbPublicApiRefundOrderStatus" : {
        "type" : "string",
        "description" : "Refund status",
        "enum" : [ "OPEN", "CLOSED" ],
        "title" : "SbPublicApiRefundOrderStatus"
      },
      "snowbee.SbPublicApiShipmentResponse" : {
        "type" : "object",
        "description" : "Shipment for a sales order",
        "properties" : {
          "captureId" : {
            "type" : "string",
            "description" : "Reference to the capture (picking list) this shipment originated from",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "createdDate" : {
            "type" : [ "null", "string" ],
            "format" : "date",
            "description" : "Date the shipment was created",
            "example" : "2024-06-16",
            "title" : "LocalDate"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "lines" : {
            "type" : "array",
            "description" : "Line items in this shipment",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiShipmentLineResponse"
            },
            "title" : "List<SbPublicApiShipmentLineResponse>"
          },
          "trackingNumber" : {
            "type" : [ "null", "string" ],
            "description" : "Tracking number",
            "example" : "1Z999AA10123456784",
            "title" : "String"
          },
          "trackingUrl" : {
            "type" : [ "null", "string" ],
            "description" : "Tracking URL",
            "example" : "https://track.example.com/1Z999AA10123456784",
            "title" : "String"
          }
        },
        "required" : [ "captureId", "id", "lines" ],
        "title" : "SbPublicApiShipmentResponse"
      },
      "snowbee.SbPublicApiShipmentLineResponse" : {
        "type" : "object",
        "description" : "Line item in a shipment",
        "properties" : {
          "lineItemId" : {
            "type" : "string",
            "description" : "Reference to order line item",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity shipped",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "lineItemId", "quantity" ],
        "title" : "SbPublicApiShipmentLineResponse"
      },
      "snowbee.SbPublicApiVoucherResponse" : {
        "type" : "object",
        "description" : "Voucher/discount coupon on an order",
        "properties" : {
          "externalReference" : {
            "type" : "string",
            "description" : "External reference for the voucher",
            "example" : "abc123-promo-uuid",
            "title" : "String"
          },
          "title" : {
            "type" : [ "null", "string" ],
            "description" : "Display name for the voucher",
            "example" : "Summer Sale 20%",
            "title" : "String"
          },
          "type" : {
            "type" : [ "null", "string" ],
            "description" : "Discount type",
            "example" : "PERCENTAGE",
            "title" : "String"
          },
          "value" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Discount value",
            "example" : "20.00",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "externalReference" ],
        "title" : "SbPublicApiVoucherResponse"
      },
      "snowbee.SbPublicApiGetOrderResponse" : {
        "type" : "object",
        "description" : "Full GET order response with captures, receipts, refunds, shipments, and vouchers",
        "properties" : {
          "captures" : {
            "type" : "array",
            "description" : "Payment captures",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCaptureResponse"
            },
            "title" : "List<SbPublicApiCaptureResponse>"
          },
          "currencyIsoCode" : {
            "type" : "string",
            "description" : "ISO 4217 currency code",
            "example" : "NOK",
            "title" : "String"
          },
          "customerId" : {
            "type" : "string",
            "description" : "Customer ID associated with the order",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "deliveryAddress" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiDeliveryAddressResponse",
            "description" : "Delivery/shipping address"
          },
          "externalOrderId" : {
            "type" : [ "null", "string" ],
            "description" : "External order ID from your e-commerce platform",
            "example" : "SHOP-123",
            "title" : "String"
          },
          "externalOrderNumber" : {
            "type" : [ "null", "string" ],
            "description" : "External order number displayed to customer",
            "example" : "WEB-2024-00123",
            "title" : "String"
          },
          "freight" : {
            "description" : "Freight/shipping information",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiFreightResponse"
            } ]
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the order",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "invoiceAddress" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiInvoiceAddressResponse",
            "description" : "Invoice/billing address"
          },
          "lineItems" : {
            "type" : "array",
            "description" : "Order line items",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiOrderLineItemResponse"
            },
            "title" : "List<SbPublicApiOrderLineItemResponse>"
          },
          "orderDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Date the order was placed",
            "example" : "2024-06-15",
            "title" : "LocalDate"
          },
          "orderNumber" : {
            "type" : "string",
            "description" : "Human-readable order number",
            "example" : "SO-2024-00123",
            "title" : "String"
          },
          "orderStatus" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiOrderStatus",
            "description" : "Current status of the order"
          },
          "receipts" : {
            "type" : "array",
            "description" : "Receipts",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiReceiptResponse"
            },
            "title" : "List<SbPublicApiReceiptResponse>"
          },
          "refunds" : {
            "type" : "array",
            "description" : "Refunds",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiRefundResponse"
            },
            "title" : "List<SbPublicApiRefundResponse>"
          },
          "shipments" : {
            "type" : "array",
            "description" : "Shipments",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiShipmentResponse"
            },
            "title" : "List<SbPublicApiShipmentResponse>"
          },
          "updatedAt" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "Timestamp when the order was last modified",
            "example" : "2025-10-28T12:37:42Z",
            "title" : "ISO8681"
          },
          "vouchers" : {
            "type" : "array",
            "description" : "Applied vouchers/discount coupons",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiVoucherResponse"
            },
            "title" : "List<SbPublicApiVoucherResponse>"
          }
        },
        "required" : [ "captures", "currencyIsoCode", "customerId", "deliveryAddress", "id", "invoiceAddress", "lineItems", "orderDate", "orderNumber", "orderStatus", "receipts", "refunds", "shipments", "updatedAt", "vouchers" ],
        "title" : "SbPublicApiGetOrderResponse"
      },
      "snowbee.SbPublicApiOrderHistorySummary" : {
        "type" : "object",
        "description" : "Order summary for customer order history",
        "properties" : {
          "currencyIsoCode" : {
            "type" : "string",
            "description" : "ISO 4217 currency code",
            "example" : "NOK",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the order",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "orderDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Date the order was placed",
            "example" : "2024-06-15",
            "title" : "LocalDate"
          },
          "orderNumber" : {
            "type" : "string",
            "description" : "Human-readable order number",
            "example" : "SO-2024-00123",
            "title" : "String"
          },
          "orderStatus" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiOrderStatus",
            "description" : "Current status of the order"
          },
          "totalAmount" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Total order amount including VAT",
            "example" : "598.00",
            "pattern" : "^-?\\d+(\\.\\d{1,2})?$",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "currencyIsoCode", "id", "orderDate", "orderNumber", "orderStatus", "totalAmount" ],
        "title" : "SbPublicApiOrderHistorySummary"
      },
      "snowbee.SbPublicApiCustomerOrderHistoryResponse" : {
        "type" : "object",
        "description" : "Customer's order history",
        "properties" : {
          "orders" : {
            "type" : "array",
            "description" : "List of customer's orders",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiOrderHistorySummary"
            },
            "title" : "List<SbPublicApiOrderHistorySummary>"
          }
        },
        "required" : [ "orders" ],
        "title" : "SbPublicApiCustomerOrderHistoryResponse"
      },
      "snowbee.SbPublicApiClickAndCollectLineItemRequest" : {
        "type" : "object",
        "description" : "Line item for a click & collect reservation",
        "properties" : {
          "netUnitPrice" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Net unit price (excluding VAT)",
            "example" : "299.00",
            "title" : "BigDecimalAsString"
          },
          "quantity" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "Quantity to reserve",
            "example" : "2.0",
            "title" : "BigDecimalAsString"
          },
          "skuId" : {
            "type" : [ "null", "string" ],
            "description" : "SKU ID to reserve (provide either skuId or skuNumber)",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : [ "null", "string" ],
            "description" : "SKU number/code to reserve (provide either skuId or skuNumber)",
            "example" : "PROD-BLK-M",
            "title" : "String"
          },
          "vatRate" : {
            "type" : "string",
            "format" : "BigDecimal",
            "description" : "VAT rate as percentage",
            "example" : "25.00",
            "title" : "BigDecimalAsString"
          }
        },
        "required" : [ "netUnitPrice", "quantity", "vatRate" ],
        "title" : "SbPublicApiClickAndCollectLineItemRequest"
      },
      "snowbee.SbPublicApiCreateClickAndCollectRequest" : {
        "type" : "object",
        "description" : "Request to create a click & collect reservation",
        "properties" : {
          "customerId" : {
            "type" : [ "null", "string" ],
            "description" : "Customer ID (optional, will try to match B2C customer by email/phone if not provided)",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "lineItems" : {
            "type" : "array",
            "description" : "List of SKUs to reserve for click & collect",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiClickAndCollectLineItemRequest"
            },
            "title" : "List<SbPublicApiClickAndCollectLineItemRequest>"
          },
          "reservationEmail" : {
            "type" : [ "null", "string" ],
            "description" : "Reservation email (optional, used to match B2C customer if customerId not set)",
            "example" : "ola@example.com",
            "title" : "String"
          },
          "reservationName" : {
            "type" : "string",
            "description" : "Name for the reservation (typically customer name)",
            "example" : "Ola Nordmann",
            "title" : "String"
          },
          "reservationPhone" : {
            "type" : [ "null", "string" ],
            "description" : "Reservation phone (optional, used to match B2C customer if customerId not set)",
            "example" : "+4712345678",
            "title" : "String"
          },
          "retailStoreId" : {
            "type" : "string",
            "description" : "ID of the retail store where customer will pick up items",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "lineItems", "reservationName", "retailStoreId" ],
        "title" : "SbPublicApiCreateClickAndCollectRequest"
      },
      "snowbee.SbPublicApiClickAndCollectResponse" : {
        "type" : "object",
        "description" : "Response after creating a click & collect reservation",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "ID of the click and collect cart",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "id" ],
        "title" : "SbPublicApiClickAndCollectResponse"
      },
      "snowbee.SbPublicApiCustomerLoyaltyProgramResponse" : {
        "type" : "object",
        "description" : "Loyalty program enrollment status for a customer",
        "properties" : {
          "enrolled" : {
            "type" : "boolean",
            "description" : "Whether the customer is enrolled in this loyalty program",
            "example" : "true",
            "title" : "Boolean"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the loyalty program",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Name of the loyalty program",
            "example" : "Premium Members Club",
            "title" : "String"
          }
        },
        "required" : [ "enrolled", "id", "name" ],
        "title" : "SbPublicApiCustomerLoyaltyProgramResponse"
      },
      "snowbee.SbPublicApiUpdateCustomerRequest" : {
        "type" : "object",
        "description" : "Request body for partially updating a customer. All fields are optional.",
        "properties" : {
          "countryIsoCode" : {
            "type" : [ "null", "string" ],
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "electronicReceipt" : {
            "type" : [ "null", "boolean" ],
            "description" : "Whether the customer wants electronic receipts",
            "example" : "true",
            "title" : "Boolean"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's email address",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "firstName" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's first name",
            "example" : "Ola",
            "title" : "String"
          },
          "languageIsoCode" : {
            "type" : [ "null", "string" ],
            "description" : "ISO 639-2 language code",
            "example" : "NOR",
            "title" : "String"
          },
          "lastName" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's last name",
            "example" : "Nordmann",
            "title" : "String"
          },
          "loyaltyPrograms" : {
            "type" : [ "null", "array" ],
            "description" : "Loyalty program enrollments to set for this customer",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerLoyaltyProgramResponse"
            },
            "title" : "List<SbPublicApiCustomerLoyaltyProgramResponse>"
          },
          "newsletter" : {
            "type" : [ "null", "boolean" ],
            "description" : "Whether the customer subscribes to the newsletter",
            "example" : "false",
            "title" : "Boolean"
          },
          "phone" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's phone number in E.164 format",
            "example" : "+4790123456",
            "title" : "String"
          }
        },
        "title" : "SbPublicApiUpdateCustomerRequest"
      },
      "snowbee.SbPublicApiCustomerAddressData" : {
        "type" : "object",
        "description" : "Address data containing street, postal code, city and country",
        "properties" : {
          "city" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Oslo",
            "title" : "String"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "postCode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "0123",
            "title" : "String"
          },
          "street" : {
            "type" : "string",
            "description" : "Street address including house number",
            "example" : "Storgata 1",
            "title" : "String"
          }
        },
        "required" : [ "city", "countryIsoCode", "postCode", "street" ],
        "title" : "SbPublicApiCustomerAddressData"
      },
      "snowbee.SbPublicApiCustomerResponse" : {
        "type" : "object",
        "description" : "Customer information including personal details, preferences, and addresses",
        "properties" : {
          "countryIsoCode" : {
            "type" : [ "null", "string" ],
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "NO",
            "title" : "String"
          },
          "customerNumber" : {
            "type" : [ "null", "string" ],
            "description" : "Human-readable customer number",
            "example" : "CUST-10042",
            "title" : "String"
          },
          "deliveryAddress" : {
            "description" : "Customer's main delivery address",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerAddressData"
            } ]
          },
          "electronicReceipt" : {
            "type" : "boolean",
            "description" : "Whether the customer wants electronic receipts",
            "example" : "true",
            "title" : "Boolean"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's email address",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "firstName" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's first name",
            "example" : "Ola",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the customer (UUID)",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "invoiceAddress" : {
            "description" : "Customer's main invoice/billing address",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerAddressData"
            } ]
          },
          "languageIsoCode" : {
            "type" : [ "null", "string" ],
            "description" : "ISO 639-2 language code",
            "example" : "NOR",
            "title" : "String"
          },
          "lastName" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's last name",
            "example" : "Nordmann",
            "title" : "String"
          },
          "loyaltyPrograms" : {
            "type" : "array",
            "description" : "List of loyalty programs and the customer's enrollment status",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerLoyaltyProgramResponse"
            },
            "title" : "List<SbPublicApiCustomerLoyaltyProgramResponse>"
          },
          "phone" : {
            "type" : [ "null", "string" ],
            "description" : "Customer's phone number in E.164 format",
            "example" : "+4790123456",
            "title" : "String"
          }
        },
        "required" : [ "electronicReceipt", "id", "loyaltyPrograms" ],
        "title" : "SbPublicApiCustomerResponse"
      },
      "snowbee.SbPublicApiUpdateCustomerAddressesRequest" : {
        "type" : "object",
        "description" : "Request to update customer addresses. Both fields are optional - only provided addresses will be created or updated.",
        "properties" : {
          "deliveryAddress" : {
            "description" : "Delivery address to create or update. If null, delivery address is not changed.",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerAddressData"
            } ]
          },
          "invoiceAddress" : {
            "description" : "Invoice address to create or update. If null, invoice address is not changed.",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiCustomerAddressData"
            } ]
          }
        },
        "title" : "SbPublicApiUpdateCustomerAddressesRequest"
      },
      "snowbee.SbPublicApiPushCustomerRequest" : {
        "type" : "object",
        "description" : "Request to identify or create a customer by phone number. Used for quick customer lookup/creation at checkout.",
        "properties" : {
          "email" : {
            "type" : [ "null", "string" ],
            "description" : "Email address (optional). Only provide if verified.",
            "example" : "ola.nordmann@example.com",
            "title" : "String"
          },
          "phone" : {
            "type" : "string",
            "description" : "Phone number in E.164 format. Will be normalized automatically.",
            "example" : "+4790123456",
            "title" : "String"
          }
        },
        "required" : [ "phone" ],
        "title" : "SbPublicApiPushCustomerRequest"
      },
      "snowbee.SbPublicApiPaymentCaptureStatus" : {
        "type" : "string",
        "description" : "Payment capture status",
        "enum" : [ "CONFIRMED", "FAILED" ],
        "example" : "CONFIRMED",
        "title" : "SbPublicApiPaymentCaptureStatus"
      },
      "snowbee.SbPublicApiPaymentCaptureRequest" : {
        "type" : "object",
        "description" : "Request body for updating payment capture status",
        "properties" : {
          "capturedAmount" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Amount captured, if applicable",
            "example" : "1499.00",
            "title" : "BigDecimalAsString"
          },
          "status" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiPaymentCaptureStatus",
            "description" : "Payment capture status"
          }
        },
        "required" : [ "status" ],
        "title" : "SbPublicApiPaymentCaptureRequest"
      },
      "snowbee.SbPublicApiRefundStatus" : {
        "type" : "string",
        "description" : "Refund status",
        "enum" : [ "CONFIRMED", "FAILED" ],
        "example" : "CONFIRMED",
        "title" : "SbPublicApiRefundStatus"
      },
      "snowbee.SbPublicApiRefundRequest" : {
        "type" : "object",
        "description" : "Request body for confirming a refund on a return invoice",
        "properties" : {
          "refundedAmount" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "description" : "Amount refunded, if applicable",
            "example" : "299.00",
            "title" : "BigDecimalAsString"
          },
          "status" : {
            "$ref" : "#/components/schemas/snowbee.SbPublicApiRefundStatus",
            "description" : "Refund status"
          }
        },
        "required" : [ "status" ],
        "title" : "SbPublicApiRefundRequest"
      },
      "snowbee.SbPublicApiLoyaltyProgramRetailStoreResponse" : {
        "type" : "object",
        "description" : "Retail store associated with a loyalty program",
        "properties" : {
          "addresses" : {
            "type" : "array",
            "description" : "List of store addresses",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiRetailStoreAddressResponse"
            },
            "title" : "List<SbPublicApiRetailStoreAddressResponse>"
          },
          "email" : {
            "type" : [ "null", "string" ],
            "description" : "Store email address",
            "example" : "oslo.city@example.com",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Unique identifier of the store",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Store name",
            "example" : "Oslo City Store",
            "title" : "String"
          },
          "number" : {
            "type" : "string",
            "description" : "Store number/code",
            "example" : "STORE-001",
            "title" : "String"
          },
          "phone" : {
            "type" : [ "null", "string" ],
            "description" : "Store phone number",
            "example" : "+4722123456",
            "title" : "String"
          },
          "webAddress" : {
            "type" : [ "null", "string" ],
            "description" : "Store website URL",
            "example" : "https://store.example.com",
            "title" : "String"
          }
        },
        "required" : [ "addresses", "id", "name", "number" ],
        "title" : "SbPublicApiLoyaltyProgramRetailStoreResponse"
      },
      "snowbee.SbPublicApiLoyaltyProgramRetailStoresResponse" : {
        "type" : "object",
        "description" : "List of retail stores for a loyalty program",
        "properties" : {
          "retailStores" : {
            "type" : "array",
            "description" : "List of retail stores",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.SbPublicApiLoyaltyProgramRetailStoreResponse"
            },
            "title" : "List<SbPublicApiLoyaltyProgramRetailStoreResponse>"
          }
        },
        "required" : [ "retailStores" ],
        "title" : "SbPublicApiLoyaltyProgramRetailStoresResponse"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningLimitsResponse" : {
        "type" : "object",
        "description" : "Published limits for demand planning batch uploads. Requests above a hard limit are rejected with 413.",
        "properties" : {
          "maxBodyBytes" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Maximum request body size in bytes as sent over the wire",
            "example" : "10485760",
            "title" : "Long"
          },
          "maxCompressionRatio" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum ratio between decompressed and compressed body size",
            "example" : "100",
            "title" : "Int"
          },
          "maxDecimals" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum decimals in quantities and replenishment parameters",
            "example" : "4",
            "title" : "Int"
          },
          "maxDecompressedBodyBytes" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Maximum request body size in bytes after gzip decompression",
            "example" : "52428800",
            "title" : "Long"
          },
          "maxHorizonDays" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum number of days in a sales forecast horizon",
            "example" : "62",
            "title" : "Int"
          },
          "maxInlineRejectedItems" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum number of rejected items listed in a batch status",
            "example" : "500",
            "title" : "Int"
          },
          "maxInlineValidationErrors" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum number of validation errors listed in a 400 response",
            "example" : "100",
            "title" : "Int"
          },
          "maxItemsPerBatch" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum number of items per batch",
            "example" : "20000",
            "title" : "Int"
          },
          "recommendedBodyBytes" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Recommended request body size in bytes as sent over the wire, assuming gzip. A 5,000-item forecast batch is ~1.3 MB uncompressed and ~0.2 MB gzipped.",
            "example" : "1048576",
            "title" : "Long"
          },
          "recommendedHorizonDays" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Recommended number of days in a sales forecast horizon",
            "example" : "30",
            "title" : "Int"
          },
          "recommendedItemsPerBatch" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Recommended number of items per batch",
            "example" : "5000",
            "title" : "Int"
          }
        },
        "required" : [ "maxBodyBytes", "maxCompressionRatio", "maxDecimals", "maxDecompressedBodyBytes", "maxHorizonDays", "maxInlineRejectedItems", "maxInlineValidationErrors", "maxItemsPerBatch", "recommendedBodyBytes", "recommendedHorizonDays", "recommendedItemsPerBatch" ],
        "title" : "SbPublicApiDemandPlanningLimitsResponse"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningRetailStoreResponse" : {
        "type" : "object",
        "description" : "One retail store, for mapping retailStoreNumber in uploads",
        "properties" : {
          "companyId" : {
            "type" : "string",
            "description" : "Company identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Retail store identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Retail store name",
            "example" : "Bjørklund Storo",
            "title" : "String"
          },
          "number" : {
            "type" : "string",
            "description" : "Retail store number, the key used in uploads",
            "example" : "1001",
            "title" : "String"
          },
          "status" : {
            "type" : [ "null", "string" ],
            "description" : "Lifecycle status. Uploads are only applied for RELEASED stores.",
            "example" : "RELEASED",
            "title" : "String"
          },
          "warehouseId" : {
            "type" : [ "null", "string" ],
            "description" : "Warehouse the store sells from",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "companyId", "id", "name", "number" ],
        "title" : "SbPublicApiDemandPlanningRetailStoreResponse"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningRetailStoresResponse" : {
        "type" : "object",
        "description" : "List of retail stores",
        "properties" : {
          "retailStores" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningRetailStoreResponse"
            },
            "title" : "List<SbPublicApiDemandPlanningRetailStoreResponse>"
          }
        },
        "required" : [ "retailStores" ],
        "title" : "SbPublicApiDemandPlanningRetailStoresResponse"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningEcomStoreResponse" : {
        "type" : "object",
        "description" : "One ecom store, for mapping ecomStoreNumber in uploads",
        "properties" : {
          "companyId" : {
            "type" : "string",
            "description" : "Company identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "id" : {
            "type" : "string",
            "description" : "Ecom store identifier",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          },
          "name" : {
            "type" : "string",
            "description" : "Ecom store name",
            "example" : "bjorklund.no",
            "title" : "String"
          },
          "number" : {
            "type" : "string",
            "description" : "Ecom store number, the key used in uploads",
            "example" : "9001",
            "title" : "String"
          },
          "status" : {
            "type" : [ "null", "string" ],
            "description" : "Lifecycle status. Uploads are only applied for RELEASED stores.",
            "example" : "RELEASED",
            "title" : "String"
          },
          "warehouseId" : {
            "type" : "string",
            "description" : "Warehouse the store ships from",
            "example" : "01234567-89ab-cdef-0123-456789abcdef",
            "title" : "String"
          }
        },
        "required" : [ "companyId", "id", "name", "number", "warehouseId" ],
        "title" : "SbPublicApiDemandPlanningEcomStoreResponse"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningEcomStoresResponse" : {
        "type" : "object",
        "description" : "List of ecom stores",
        "properties" : {
          "ecomStores" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningEcomStoreResponse"
            },
            "title" : "List<SbPublicApiDemandPlanningEcomStoreResponse>"
          }
        },
        "required" : [ "ecomStores" ],
        "title" : "SbPublicApiDemandPlanningEcomStoresResponse"
      },
      "snowbee.publicapi.SbPublicApiSalesForecastItem" : {
        "type" : "object",
        "description" : "Sales forecast for one store and SKU. The item replaces the whole forecast held for that store and SKU.",
        "properties" : {
          "ecomStoreNumber" : {
            "type" : [ "null", "string" ],
            "description" : "Ecom store number. Exactly one of retailStoreNumber and ecomStoreNumber must be set.",
            "example" : "9001",
            "title" : "String"
          },
          "ext" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "object",
              "title" : "Any"
            },
            "description" : "Partner-owned fields. Never interpreted by Snowbee.",
            "title" : "Map<String,Any>"
          },
          "horizonEndDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Last forecast day, an ISO 8601 calendar date. Must equal horizonStartDate plus quantities.length - 1 days; catches horizons of the wrong length.",
            "example" : "2026-09-30",
            "title" : "LocalDate"
          },
          "horizonStartDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "First forecast day, an ISO 8601 calendar date. No earlier than 7 days ago.",
            "example" : "2026-09-01",
            "title" : "LocalDate"
          },
          "quantities" : {
            "type" : "array",
            "description" : "Expected gross sales quantity per day from horizonStartDate to horizonEndDate inclusive, as decimal strings with at most 4 decimals. quantities[i] is the forecast for horizonStartDate plus i days.",
            "example" : "[\"4.7\", \"3.1\", \"0\", \"5.25\"]",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "retailStoreNumber" : {
            "type" : [ "null", "string" ],
            "description" : "Retail store number. Exactly one of retailStoreNumber and ecomStoreNumber must be set.",
            "example" : "1001",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "description" : "SKU number",
            "example" : "10025",
            "title" : "String"
          }
        },
        "required" : [ "horizonEndDate", "horizonStartDate", "quantities", "skuNumber" ],
        "title" : "SbPublicApiSalesForecastItem"
      },
      "snowbee.publicapi.SbPublicApiSalesForecastBatchRequest" : {
        "type" : "object",
        "description" : "A batch of sales forecasts from one planning run",
        "properties" : {
          "batchIndex" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "description" : "1-based position of this batch within the run. Set together with batchTotal or not at all.",
            "example" : "12",
            "title" : "Int"
          },
          "batchTotal" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "description" : "Number of batches in the run",
            "example" : "140",
            "title" : "Int"
          },
          "ext" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "object",
              "title" : "Any"
            },
            "description" : "Partner-owned fields. Never interpreted by Snowbee.",
            "title" : "Map<String,Any>"
          },
          "generatedAt" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "Timestamp of the planning run that produced every item in the batch. Identical for all batches of one run; a later run must have a later value.",
            "example" : "2026-08-28T03:12:00Z",
            "title" : "ISO8681"
          },
          "itemCount" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Must equal the length of items",
            "example" : "5000",
            "title" : "Int"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiSalesForecastItem"
            },
            "title" : "List<SbPublicApiSalesForecastItem>"
          }
        },
        "required" : [ "generatedAt", "itemCount", "items" ],
        "title" : "SbPublicApiSalesForecastBatchRequest"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningBatchKind" : {
        "type" : "string",
        "description" : "Kind of demand planning batch",
        "enum" : [ "SALES_FORECAST", "REPLENISHMENT_PARAMETERS" ],
        "title" : "SbPublicApiDemandPlanningBatchKind"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningBatchCounts" : {
        "type" : "object",
        "description" : "Item counts after processing",
        "properties" : {
          "applied" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Items written to Snowbee",
            "example" : "4996",
            "title" : "Int"
          },
          "items" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Items in the batch",
            "example" : "5000",
            "title" : "Int"
          },
          "locked" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Items skipped because the line is locked in Snowbee (replenishment parameters only)",
            "example" : "0",
            "title" : "Int"
          },
          "rejected" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Items not applied; listed in rejectedItems",
            "example" : "4",
            "title" : "Int"
          },
          "superseded" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Items skipped because a newer generatedAt was already applied for the same key",
            "example" : "0",
            "title" : "Int"
          }
        },
        "required" : [ "applied", "items", "locked", "rejected", "superseded" ],
        "title" : "SbPublicApiDemandPlanningBatchCounts"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningBatchProgress" : {
        "type" : "string",
        "description" : "Processing progress of a batch",
        "enum" : [ "PENDING", "PROCESSING", "COMPLETED", "COMPLETED_WITH_REJECTED_ITEMS", "FAILED" ],
        "title" : "SbPublicApiDemandPlanningBatchProgress"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningRejectedItem" : {
        "type" : "object",
        "description" : "An item that was not applied",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "One of: UNKNOWN_RETAIL_STORE, RETAIL_STORE_NOT_RELEASED, UNKNOWN_ECOM_STORE, ECOM_STORE_NOT_RELEASED, UNKNOWN_SKU, SKU_NOT_IN_ASSORTMENT, REPLENISHMENT_TYPE_MANUAL",
            "example" : "UNKNOWN_SKU",
            "title" : "String"
          },
          "ecomStoreNumber" : {
            "type" : [ "null", "string" ],
            "example" : "9001",
            "title" : "String"
          },
          "index" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "0-based index into items",
            "example" : "17",
            "title" : "Int"
          },
          "message" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          },
          "retailStoreNumber" : {
            "type" : [ "null", "string" ],
            "example" : "1001",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : [ "null", "string" ],
            "example" : "10025",
            "title" : "String"
          }
        },
        "required" : [ "code", "index" ],
        "title" : "SbPublicApiDemandPlanningRejectedItem"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningWarning" : {
        "type" : "object",
        "description" : "A non-fatal observation about the batch",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "UNKNOWN_FIELD: a field Snowbee does not know and did not apply",
            "example" : "UNKNOWN_FIELD",
            "title" : "String"
          },
          "count" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "description" : "How many times the observation occurred",
            "example" : "5000",
            "title" : "Int"
          },
          "field" : {
            "type" : [ "null", "string" ],
            "description" : "Path of the field, with [] for array elements",
            "example" : "items[].campaignQuantity",
            "title" : "String"
          },
          "message" : {
            "type" : [ "null", "string" ],
            "title" : "String"
          }
        },
        "required" : [ "code" ],
        "title" : "SbPublicApiDemandPlanningWarning"
      },
      "snowbee.publicapi.SbPublicApiDemandPlanningBatchStatusResponse" : {
        "type" : "object",
        "description" : "Status of a demand planning batch",
        "properties" : {
          "batchId" : {
            "type" : "string",
            "description" : "Client-generated batch id",
            "example" : "0192a3b4-5c6d-7e8f-9012-3456789abcde",
            "title" : "String"
          },
          "batchIndex" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "example" : "12",
            "title" : "Int"
          },
          "batchKind" : {
            "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchKind",
            "description" : "Kind of demand planning batch"
          },
          "batchTotal" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "example" : "140",
            "title" : "Int"
          },
          "completedTime" : {
            "type" : [ "null", "string" ],
            "format" : "ISO 8681 timestamp",
            "description" : "When processing finished",
            "example" : "2025-10-28T12:37:42Z",
            "title" : "ISO8681"
          },
          "counts" : {
            "description" : "Null until the batch has been processed",
            "oneOf" : [ {
              "type" : "null"
            }, {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchCounts"
            } ]
          },
          "errorMessage" : {
            "type" : [ "null", "string" ],
            "description" : "Why the batch FAILED",
            "title" : "String"
          },
          "generatedAt" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "example" : "2026-08-28T03:12:00Z",
            "title" : "ISO8681"
          },
          "itemCount" : {
            "type" : "integer",
            "format" : "int32",
            "example" : "5000",
            "title" : "Int"
          },
          "progress" : {
            "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningBatchProgress",
            "description" : "Processing progress of a batch"
          },
          "receivedTime" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "When Snowbee stored the batch",
            "example" : "2026-08-28T03:12:04.120Z",
            "title" : "ISO8681"
          },
          "rejectedItems" : {
            "type" : [ "null", "array" ],
            "description" : "First rejected items; null until processed. See rejectedItemsTruncated.",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningRejectedItem"
            },
            "title" : "List<SbPublicApiDemandPlanningRejectedItem>"
          },
          "rejectedItemsTruncated" : {
            "type" : "boolean",
            "description" : "True when more items were rejected than are listed",
            "example" : "false",
            "title" : "Boolean"
          },
          "startedTime" : {
            "type" : [ "null", "string" ],
            "format" : "ISO 8681 timestamp",
            "description" : "When processing started",
            "example" : "2025-10-28T12:37:42Z",
            "title" : "ISO8681"
          },
          "warnings" : {
            "type" : [ "null", "array" ],
            "description" : "Warnings recorded at receipt and during processing",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiDemandPlanningWarning"
            },
            "title" : "List<SbPublicApiDemandPlanningWarning>"
          }
        },
        "required" : [ "batchId", "batchKind", "generatedAt", "itemCount", "progress", "receivedTime", "rejectedItemsTruncated" ],
        "title" : "SbPublicApiDemandPlanningBatchStatusResponse"
      },
      "snowbee.publicapi.SbPublicApiDetailedErrorResponse" : {
        "type" : "object",
        "description" : "API error response with structured details",
        "properties" : {
          "details" : {
            "type" : [ "null", "object" ],
            "description" : "Structured details; shape depends on error",
            "title" : "Any"
          },
          "error" : {
            "type" : "string",
            "description" : "Error type",
            "example" : "VALIDATION_ERROR",
            "title" : "String"
          },
          "message" : {
            "type" : "string",
            "description" : "Human-readable error message",
            "example" : "3 of 5000 items failed validation",
            "title" : "String"
          },
          "resolution" : {
            "type" : "string",
            "description" : "Suggested next action",
            "example" : "Correct the invalid items and retry the complete batch",
            "title" : "String"
          }
        },
        "required" : [ "error", "message", "resolution" ],
        "title" : "SbPublicApiDetailedErrorResponse"
      },
      "snowbee.publicapi.SbPublicApiReplenishmentParameterItem" : {
        "type" : "object",
        "description" : "Reorder point and maximum inventory for one retail store and SKU",
        "properties" : {
          "ext" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "object",
              "title" : "Any"
            },
            "description" : "Partner-owned fields. Never interpreted by Snowbee.",
            "title" : "Map<String,Any>"
          },
          "maximumInventory" : {
            "type" : "string",
            "description" : "Maximum inventory as a decimal string with at most 4 decimals",
            "example" : "12",
            "title" : "String"
          },
          "reorderPoint" : {
            "type" : "string",
            "description" : "Reorder point as a decimal string with at most 4 decimals. Must be less than maximumInventory.",
            "example" : "3",
            "title" : "String"
          },
          "retailStoreNumber" : {
            "type" : "string",
            "description" : "Retail store number",
            "example" : "1001",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "description" : "SKU number",
            "example" : "10025",
            "title" : "String"
          }
        },
        "required" : [ "maximumInventory", "reorderPoint", "retailStoreNumber", "skuNumber" ],
        "title" : "SbPublicApiReplenishmentParameterItem"
      },
      "snowbee.publicapi.SbPublicApiReplenishmentParameterBatchRequest" : {
        "type" : "object",
        "description" : "A batch of replenishment parameters from one planning run",
        "properties" : {
          "batchIndex" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "description" : "1-based position of this batch within the run. Set together with batchTotal or not at all.",
            "example" : "1",
            "title" : "Int"
          },
          "batchTotal" : {
            "type" : [ "null", "integer" ],
            "format" : "int32",
            "description" : "Number of batches in the run",
            "example" : "3",
            "title" : "Int"
          },
          "ext" : {
            "type" : [ "null", "object" ],
            "additionalProperties" : {
              "type" : "object",
              "title" : "Any"
            },
            "description" : "Partner-owned fields. Never interpreted by Snowbee.",
            "title" : "Map<String,Any>"
          },
          "generatedAt" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "Timestamp of the planning run that produced every item in the batch. Identical for all batches of one run; a later run must have a later value.",
            "example" : "2026-08-28T03:12:00Z",
            "title" : "ISO8681"
          },
          "itemCount" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Must equal the length of items",
            "example" : "5000",
            "title" : "Int"
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiReplenishmentParameterItem"
            },
            "title" : "List<SbPublicApiReplenishmentParameterItem>"
          }
        },
        "required" : [ "generatedAt", "itemCount", "items" ],
        "title" : "SbPublicApiReplenishmentParameterBatchRequest"
      },
      "snowbee.publicapi.SbPublicApiSalesForecastResponse" : {
        "type" : "object",
        "description" : "The sales forecast Snowbee currently holds for one store and SKU",
        "properties" : {
          "ecomStoreNumber" : {
            "type" : [ "null", "string" ],
            "example" : "9001",
            "title" : "String"
          },
          "generatedAt" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "The planning run that produced this forecast. An old value means the horizon is stale.",
            "example" : "2026-08-31T03:12:00Z",
            "title" : "ISO8681"
          },
          "horizonEndDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Last forecast day",
            "example" : "2026-09-30",
            "title" : "LocalDate"
          },
          "horizonStartDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "First forecast day",
            "example" : "2026-09-01",
            "title" : "LocalDate"
          },
          "modifiedTime" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "When Snowbee applied it",
            "example" : "2025-10-28T12:37:42Z",
            "title" : "ISO8681"
          },
          "quantities" : {
            "type" : "array",
            "description" : "Expected gross sales quantity per day from horizonStartDate, as decimal strings",
            "example" : "[\"4.7\", \"3.1\", \"0\"]",
            "items" : {
              "type" : "string",
              "title" : "String"
            },
            "title" : "List<String>"
          },
          "retailStoreNumber" : {
            "type" : [ "null", "string" ],
            "example" : "1001",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "example" : "10025",
            "title" : "String"
          }
        },
        "required" : [ "generatedAt", "horizonEndDate", "horizonStartDate", "modifiedTime", "quantities", "skuNumber" ],
        "title" : "SbPublicApiSalesForecastResponse"
      },
      "snowbee.publicapi.SbPublicApiSalesForecastsResponse" : {
        "type" : "object",
        "description" : "A page of current sales forecasts, retail stores first, ordered by store number then SKU number",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiSalesForecastResponse"
            },
            "title" : "List<SbPublicApiSalesForecastResponse>"
          },
          "nextCursor" : {
            "type" : [ "null", "string" ],
            "description" : "Pass as cursor to fetch the next page; null on the last page",
            "title" : "String"
          }
        },
        "required" : [ "items" ],
        "title" : "SbPublicApiSalesForecastsResponse"
      },
      "snowbee.publicapi.SbPublicApiReplenishmentParameterResponse" : {
        "type" : "object",
        "description" : "Effective replenishment parameters for one retail store and SKU",
        "properties" : {
          "locked" : {
            "type" : "boolean",
            "description" : "True when a Snowbee user has locked the values; uploads for this store and SKU are skipped",
            "example" : "false",
            "title" : "Boolean"
          },
          "maximumInventory" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "example" : "12",
            "title" : "BigDecimalAsString"
          },
          "modifiedTime" : {
            "type" : "string",
            "format" : "ISO 8681 timestamp",
            "description" : "When the effective line was last modified in Snowbee",
            "example" : "2026-08-27T03:14:11Z",
            "title" : "ISO8681"
          },
          "parameterSource" : {
            "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiReplenishmentParameterSource",
            "description" : "Where an effective replenishment parameter value comes from"
          },
          "reorderPoint" : {
            "type" : [ "null", "string" ],
            "format" : "BigDecimal",
            "example" : "3",
            "title" : "BigDecimalAsString"
          },
          "replenishmentType" : {
            "type" : [ "null", "string" ],
            "description" : "AUTO, MANUAL or PROPOSAL",
            "example" : "AUTO",
            "title" : "String"
          },
          "retailStoreNumber" : {
            "type" : "string",
            "example" : "1001",
            "title" : "String"
          },
          "skuNumber" : {
            "type" : "string",
            "example" : "10025",
            "title" : "String"
          }
        },
        "required" : [ "locked", "modifiedTime", "parameterSource", "retailStoreNumber", "skuNumber" ],
        "title" : "SbPublicApiReplenishmentParameterResponse"
      },
      "snowbee.publicapi.SbPublicApiReplenishmentParameterSource" : {
        "type" : "string",
        "description" : "Where an effective replenishment parameter value comes from",
        "enum" : [ "RETAIL_STORE_SPECIFIC", "LOCAL_ASSORTMENT", "BASE_ASSORTMENT" ],
        "title" : "SbPublicApiReplenishmentParameterSource"
      },
      "snowbee.publicapi.SbPublicApiReplenishmentParametersResponse" : {
        "type" : "object",
        "description" : "A page of effective replenishment parameters, ordered by retail store number then SKU number",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/snowbee.publicapi.SbPublicApiReplenishmentParameterResponse"
            },
            "title" : "List<SbPublicApiReplenishmentParameterResponse>"
          },
          "nextCursor" : {
            "type" : [ "null", "string" ],
            "description" : "Pass as cursor to fetch the next page; null on the last page",
            "title" : "String"
          }
        },
        "required" : [ "items" ],
        "title" : "SbPublicApiReplenishmentParametersResponse"
      }
    },
    "examples" : { },
    "securitySchemes" : {
      "OAuth2" : {
        "type" : "oauth2",
        "scheme" : "OAuth",
        "flows" : {
          "clientCredentials" : {
            "tokenUrl" : "https://api.snowbee.no/oauth2/token",
            "scopes" : {
              "ecom" : "Access to e-commerce store resources",
              "loyalty_programs" : "Access to loyalty program resources",
              "demand_planning" : "Upload sales forecasts and replenishment parameters for the whole tenant"
            }
          }
        }
      },
      "BearerAuth" : {
        "type" : "http",
        "scheme" : "bearer"
      }
    }
  },
  "webhooks" : { }
}
