{
  "openapi": "3.0.1",
  "info": {
    "title": "Norce Commerce Metadata v1.1 service",
    "description": "The Metadata namespace has Entities and Operations concerned with the Application and similar context. It contains the Application entity, Stores and other data for lookups.",
    "version": "1.1"
  },
  "servers": [
    {
      "url": "https://{slug}.api-se.playground.norce.tech/commerce",
      "description": "Playground",
      "variables": {
        "slug": {
          "default": "customer-slug",
          "description": "Replace with your slug."
        }
      }
    },
    {
      "url": "https://{slug}.api-se.stage.norce.tech/commerce",
      "description": "Stage",
      "variables": {
        "slug": {
          "default": "customer-slug",
          "description": "Replace with your slug."
        }
      }
    },
    {
      "url": "https://{slug}.api-se.norce.tech/commerce",
      "description": "Production",
      "variables": {
        "slug": {
          "default": "customer-slug",
          "description": "Replace with your slug."
        }
      }
    }
  ],
  "security": [
    {
      "Bearer": [],
      "ApplicationId": []
    }
  ],
  "tags": [
    {
      "name": "Flags",
      "description": "Contains endpoints for viewing flags on the application. Any flags except product flags."
    },
    {
      "name": "InfoTypes",
      "description": "Contains endpoints for viewing metadata for extended fields, specifically for Stores."
    },
    {
      "name": "Location",
      "description": "Contains endpoints for looking up location information from the application."
    },
    {
      "name": "Application",
      "description": "Contains endpoints for viewing metadata for application configurations."
    },
    {
      "name": "Stores",
      "description": "Contains endpoints for viewing Store information and its metadata."
    }
  ],
  "paths": {
    "/metadata/1.1/ListApplicationFlagGroups": {
      "get": {
        "tags": [
          "Flags"
        ],
        "summary": "List application flag groups",
        "description": "Lists the flag groups available for this application. Flag group can be used when listing flags to narrow it down to a specific group.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/ListApplicationFlags": {
      "get": {
        "tags": [
          "Flags"
        ],
        "summary": "List application flags",
        "description": "Lists the flags available for this application. Flag group id can be used when listing flags to narrow it down to a specific flag. See ListApplicationFlagGroups for available groups.",
        "parameters": [
          {
            "name": "flagGroupId",
            "in": "query",
            "description": "(Optional) Specifies an optional flag group to select flags from. All flags are retrieved if flagGroupId is not specified.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/ListInfoTypes": {
      "get": {
        "tags": [
          "InfoTypes"
        ],
        "summary": "List info types",
        "description": "Reference list of InfoType values.",
        "parameters": [
          {
            "name": "groupId",
            "in": "query",
            "description": "(Optional) Specifies the groupId of values to retrieve. Only CustomerInfo(1) and DivisionInfo(4) are supported.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetLocationInfoByZipCode": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Get location info by zip code",
        "description": "Gets the LocationInfo for a given zip code. The mapping of zip codes to Locations is done in the Norce Admin if not implemented through integration. Returns null if the LocationInfo does not exist.",
        "parameters": [
          {
            "name": "countryCode",
            "in": "query",
            "description": "The ISO 3166-1 alpha-2 is used. SE for Sweden.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zip",
            "in": "query",
            "description": "The zip code to get a location for.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationInfo"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetApplication": {
      "get": {
        "tags": [
          "Application"
        ],
        "summary": "Get application data",
        "description": "GetApplication gets the current application data based on the provided Oauth2 credentials.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Application"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/ListStoreInfoTypes": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "List store info types",
        "description": "Lists the info types that can be set on the Store.Info property.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetStoreItem": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Get store item",
        "description": "Gets a StoreItem by Id. Should be used to display details about a StoreItem or when just data for a single StoreItem is needed. Returns null if the StoreItem does not exist.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The internal Id of the Store to fetch.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "partNo",
            "in": "query",
            "description": "(Optional) If supplied, the returned StoreItem will have information about onHand.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreItem"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetStoreItemByUniqueName": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Get store item by unique name",
        "description": "Gets a StoreItem by its unique url name. Should be used to display details about a StoreItem or when just data for a single StoreItem is needed. Returns null if the StoreItem does not exist.",
        "parameters": [
          {
            "name": "uniqueName",
            "in": "query",
            "description": "The unique name of the Store to fetch.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "partNo",
            "in": "query",
            "description": "(Optional) If supplied, the returned StoreItem will have information about onHand.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreItem"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetStoreItemByCountryAndZipCode": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Get store item by country and zipcode",
        "description": "Gets a StoreItem by country and zip code. Should be used to display details about a StoreItem or when just data for a single StoreItem is needed. Returns null if the StoreItem does not exist.",
        "parameters": [
          {
            "name": "zipCode",
            "in": "query",
            "description": "The zip code of the end user. The StoreItem is resolved by looking at deliveryMethod locations as set up in Norce Admin.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "countryId",
            "in": "query",
            "description": "(Optional) Specifies in which countryId. If none is supplied, value is resolved from Application default. Valid countryIds can be found in Application.Countries.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "partNo",
            "in": "query",
            "description": "(Optional) If supplied, the returned StoreItem will have information about onHand.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreItem"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/ListStoreItems": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "List store items",
        "description": "Lists StoreItems as a PagedList.",
        "parameters": [
          {
            "name": "partNo",
            "in": "query",
            "description": "(Optional) If supplied, the returned StoreItem will have information about onHand.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "description": "(Optional) Longitude for current position. StoreItems will calculate the Distance if supplied together with latitude. Format: decimal.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "latitude",
            "in": "query",
            "description": "(Optional) Latitude for current position. StoreItems will calculate the Distance if supplied together with longitude. Format: decimal.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "(Optional) Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "(Optional) Number of items to display per page. Mandatory if using pageNo.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreItemPagedList"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/ListStoreInfo": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "List store info",
        "description": "Lists StoreInfo as a PagedList. This will list info for all Stores.",
        "parameters": [
          {
            "name": "pageNo",
            "in": "query",
            "description": "(Optional) Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "(Optional) Number of items to display per page. Mandatory if using pageNo.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreInfoPagedList"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetStore": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Get store",
        "description": "Gets a Store by Id. Should be used to display details about a Store or when just data for a single Store is needed. Returns null if the Store does not exist.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The internal Id of the Store to fetch.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "description": "(Optional) Longitude for current position. Store will calculate the Distance if supplied together with latitude. Format: decimal.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "latitude",
            "in": "query",
            "description": "(Optional) Latitude for current position. Store will calculate the Distance if supplied together with longitude. Format: decimal.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/GetStoreByUniqueName": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "Get store by unique name",
        "description": "Gets a Store by its unique url name. Should be used to display details about a Store or when just data for a single Store is needed. Returns null if the Store does not exist.",
        "parameters": [
          {
            "name": "uniqueName",
            "in": "query",
            "description": "The unique name of the Store to fetch.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "longitude",
            "in": "query",
            "description": "(Optional) Longitude for current position. Store will calculate the Distance if supplied together with latitude. Format: decimal.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "latitude",
            "in": "query",
            "description": "(Optional) Latitude for current position. Store will calculate the Distance if supplied together with longitude. Format: decimal.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/ListStores2": {
      "get": {
        "tags": [
          "Stores"
        ],
        "summary": "List stores (v2)",
        "description": "Lists all stores. Any distance calculations should be made by the client application for caching reasons or the Distance field will be null.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Store"
                  },
                  "description": "A list of Stores."
                }
              }
            }
          }
        }
      }
    },
    "/metadata/1.1/UpdateDivisionInfo": {
      "post": {
        "tags": [
          "Stores"
        ],
        "summary": "Update division information",
        "description": "Updates the given info for a division.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The internal id of the division.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "typeId",
            "in": "query",
            "description": "The id of the info type. For reference, use ListInfoTypes.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "value",
            "in": "query",
            "description": "The value to set.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "(Optional) The accountId of the user making the update. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Application": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The system wide unique internal Norce Id for this Application.",
            "format": "int32",
            "nullable": true
          },
          "ParentId": {
            "type": "integer",
            "description": "Id of the parent application, if any. Will be the same as Id if none exists. Applications with the same parentId share products and customers. Some content and navigation can differ.",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key for this Application.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of this Application.",
            "nullable": true
          },
          "Url": {
            "type": "string",
            "description": "The Url to the Application.",
            "nullable": true
          },
          "SenderEmailAddress": {
            "type": "string",
            "description": "The sender e-mail address for all external communication and notifications if Norce email services are used.",
            "nullable": true
          },
          "Client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Client"
              }
            ],
            "nullable": true
          },
          "Cultures": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Cultures"
              }
            ],
            "nullable": true
          },
          "Currencies": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currencies"
              }
            ],
            "nullable": true
          },
          "Pricelists": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Pricelists"
              }
            ],
            "nullable": true
          },
          "SalesAreas": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SalesAreas"
              }
            ],
            "nullable": true
          },
          "Roles": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Roles"
              }
            ],
            "nullable": true
          },
          "Countries": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Countries"
              }
            ],
            "nullable": true
          },
          "Authorizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "A list of authorizations available for this application. Can be used when creating customer accounts.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Application entity contains data specific to the current application. An Application belongs to a Client and one Client can have multiple Applications. A common usage is that an Application maps to a market or a domain such as .se, .com and such."
      },
      "Client": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The system wide unique internal Norce Id for the Client.",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key for the Client.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Client.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Client entity contains data specific to the current client. A Client can have multiple Applications and represents a customer to Norce."
      },
      "Countries": {
        "type": "object",
        "properties": {
          "List": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Country"
            },
            "description": "A list of countries.",
            "nullable": true
          },
          "Default": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Country"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list of Countries and a Default. Used in Application. Available Countries can be used to populate drop-down lists with countries when the end user enters addresses."
      },
      "Country": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Norce Id of the country.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The name of the country.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the country. The ISO 3166-1 alpha-2 is used. SE for Sweden.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Country entity contains info about a country."
      },
      "Culture": {
        "type": "object",
        "properties": {
          "Code": {
            "type": "string",
            "description": "The Code of the culture. Two letter or five letter codes. sv-SE for swedish.",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The name of the culture.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Culture entity contains info about a culture. It defines language and formats."
      },
      "Cultures": {
        "type": "object",
        "properties": {
          "List": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Culture"
            },
            "description": "A list of cultures.",
            "nullable": true
          },
          "Default": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Culture"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list of Cultures and a Default. Used in Application. Available Cultures can be used to let the end user select different languages within an Application."
      },
      "Currencies": {
        "type": "object",
        "properties": {
          "List": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Currency"
            },
            "description": "A list of currencies.",
            "nullable": true
          },
          "Default": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list of Currencies and a Default. Used in Application. Available Currencies can be used to let the end user select different currencies within an Application."
      },
      "Currency": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Norce Id of the currency.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The name of the currency.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the currency. ISO 4217 is used. SEK for Swedish kronor.",
            "nullable": true
          },
          "Prefix": {
            "type": "string",
            "description": "The Prefix sign/code if available.",
            "nullable": true
          },
          "Suffix": {
            "type": "string",
            "description": "The suffix sign/code if available.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Currency entity contains info about a currency."
      },
      "IdNameDescription": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Entity.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Entity.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Entity.",
            "nullable": true
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "uuid",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the Entity.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "IdValue": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Entity. This Id might be different in different tiers such as Stage and Production. Use Code if hard coding is required.",
            "format": "int32",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The Value of the Entity.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the Entity, if existing. Use this value when hard coding is required.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An Entity used where Id and Value is needed. Mostly used for lookup data."
      },
      "Location": {
        "type": "object",
        "properties": {
          "StoreId": {
            "type": "integer",
            "description": "This is the internal Norce ID.",
            "format": "int32",
            "nullable": true
          },
          "StoreCode": {
            "type": "string",
            "description": "This is a code used to map Store from an external system.",
            "nullable": true
          },
          "WarehouseId": {
            "type": "integer",
            "description": "This is the internal Norce ID.",
            "format": "int32",
            "nullable": true
          },
          "LocationIdId": {
            "type": "integer",
            "description": "This is the internal Norce ID.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This entity defines a location. If StoreId and StoreCode are both null, then WarehouseId and LocationId are not null and vice versa. All properties can have values if the Store is fetched from Norce Commerce. The information can be used when specifying Store/Warehouse/Location in some API-methods."
      },
      "LocationInfo": {
        "type": "object",
        "properties": {
          "CountryCode": {
            "type": "string",
            "description": "This is country code for the location.",
            "nullable": true
          },
          "ZipCode": {
            "type": "string",
            "description": "This is zip code for the location.",
            "nullable": true
          },
          "Delivery": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Location"
              }
            ],
            "nullable": true
          },
          "Pickup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Location"
              }
            ],
            "nullable": true
          },
          "Payment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Location"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "LocationInfo aggregates Locations for a zipcode in a country. Available locations are Delivery, Pickup and Payment."
      },
      "OnHand": {
        "type": "object",
        "properties": {
          "Value": {
            "type": "number",
            "description": "The aggregated value from all warehouses and locations in the current context (Web, Supplier or Store).",
            "format": "decimal",
            "nullable": true
          },
          "IncomingValue": {
            "type": "number",
            "description": "The incoming quantity on the next delivery.",
            "format": "decimal",
            "nullable": true
          },
          "NextDeliveryDate": {
            "type": "string",
            "description": "The next delivery data from supplier to client warehouse.",
            "format": "date-time",
            "nullable": true
          },
          "LeadtimeDayCount": {
            "type": "integer",
            "description": "The number of days it takes to ship from the supplier.",
            "format": "int32",
            "nullable": true
          },
          "LastChecked": {
            "type": "string",
            "description": "When onHand info was last checked. Null if never.",
            "format": "date-time",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "Indicate if the product is stocked in a store.",
            "nullable": true
          },
          "IsReturnable": {
            "type": "boolean",
            "description": "Indicate if the product is returnable in a store.",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "List of IdValues for the OnHand data for this sku warehouse location combination. This will always be null unless fetched with any of the ProductOnHand methods.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about OnHand for a given SKU. There are generally three different types of OnHand in Norce. One for the Web, one for the chosen supplier and one for any specified Store."
      },
      "Pricelists": {
        "type": "object",
        "properties": {
          "Ids": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A list of priceList ids.",
            "nullable": true
          },
          "Default": {
            "type": "integer",
            "description": "The default priceList id from the list.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list of public PriceListIds and a Default. Used in Application."
      },
      "Role": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the role.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the role.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The Description of the role.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Role entity contains info about a Role. Roles can be used to authorize users to different actions within an Application."
      },
      "Roles": {
        "type": "object",
        "properties": {
          "List": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Role"
            },
            "description": "A list of roles.",
            "nullable": true
          },
          "Default": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Role"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list of Roles and a Default. Used in Application. Available Roles can be used in Account. Roles when creating customers with accounts."
      },
      "SalesArea": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the SalesArea.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the SalesArea.",
            "nullable": true
          },
          "CurrencyId": {
            "type": "integer",
            "description": "The default id of the Currency for this SalesArea.",
            "format": "int32",
            "nullable": true
          },
          "VatCodeId": {
            "type": "integer",
            "description": "The default id of the VatCode for this SalesArea.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A SaleArea defines a region within an Application(market) with specific default VAT and currency."
      },
      "SalesAreas": {
        "type": "object",
        "properties": {
          "List": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SalesArea"
            },
            "description": "A list of SalesAreas.",
            "nullable": true
          },
          "Default": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SalesArea"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list of SalesAreas and a Default. Used in Application."
      },
      "Store": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Store.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Store.",
            "nullable": true
          },
          "Address": {
            "type": "string",
            "description": "The Address of the Store.",
            "nullable": true
          },
          "PostalAddress": {
            "type": "string",
            "description": "The PostalAddress of the Store. Zip and City.",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "description": "The PhoneNumber to the Store.",
            "nullable": true
          },
          "Fax": {
            "type": "string",
            "description": "The FaxNumber to the Store.",
            "nullable": true
          },
          "OpeningWeekdays": {
            "type": "string",
            "description": "Defines the opening hours for the Store during week days.",
            "nullable": true
          },
          "OpeningSaturdays": {
            "type": "string",
            "description": "Defines the opening hours for the Store during on Saturdays.",
            "nullable": true
          },
          "OpeningSundays": {
            "type": "string",
            "description": "Defines the opening hours for the Store during on Sundays.",
            "nullable": true
          },
          "Longitude": {
            "type": "number",
            "description": "The longitude part of the location of the Store. Can be used to calculate distances to the Store.",
            "format": "double",
            "nullable": true
          },
          "Latitude": {
            "type": "number",
            "description": "The latitude part of the location of the Store. Can be used to calculate distances to the Store.",
            "format": "double",
            "nullable": true
          },
          "Distance": {
            "type": "number",
            "description": "Used when fetching Stores and we have a specified current location from which to calculate a distance to the Store.",
            "format": "decimal",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key for the Store.",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "string",
            "description": "The Type of the Store. Taken from Norce's Division.GroupName.",
            "nullable": true
          },
          "SubType": {
            "type": "string",
            "description": "The SubType of the Store. Taken from Norce's Division.SubGroupName.",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "Contains a list of id-value pairs specific to the client for this Store. Use ApplicationService.ListStoreInfoTypes(string) for id lookup.",
            "nullable": true
          },
          "Pricelists": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Pricelists"
              }
            ],
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The external code. Usually the id in the erp system.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Store.",
            "nullable": true
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "uuid",
            "nullable": true
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get this entity. GetStore and GetStoreByUniqueName gets the same Store.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Store, Workshop or such. It is called Division in Norce Admin. The Store entity is a bit more heavy weight than it's counter part StoreItem and should be used to display a detail page for the Store."
      },
      "StoreInfo": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the Store.",
            "format": "int32",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "Contains a list of id-value pairs specific to the client for this store. Use ApplicationService.ListStoreInfoTypes(string) for id lookup.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "StoreInfo contains all info fields for a given Store."
      },
      "StoreInfoPagedList": {
        "type": "object",
        "properties": {
          "ItemCount": {
            "type": "integer",
            "description": "The total item count. Can be used to manage paging. This will always be the total number of available items, regardless of paging. Use PageSize to calculate number of pages.",
            "format": "int32",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoreInfo"
            },
            "description": "Items contains the current list of StoreInfo for the current page if paging is used. Otherwise all items will be in the list.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The StoreInfoPagedList is a PagedList. The Items property contains all current items, depending on paging, and the ItemCount the total number of items."
      },
      "StoreItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Store.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Store.",
            "nullable": true
          },
          "Address": {
            "type": "string",
            "description": "The Address of the Store.",
            "nullable": true
          },
          "PostalAddress": {
            "type": "string",
            "description": "The PostalAddress of the Store. Zip and City.",
            "nullable": true
          },
          "OnHandValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true,
            "deprecated": true
          },
          "IncomingValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true,
            "deprecated": true
          },
          "NextDeliveryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "deprecated": true
          },
          "Distance": {
            "type": "number",
            "description": "Used when fetching Stores and we have a specified current location from which to calculate a distance to the Store.",
            "format": "decimal",
            "nullable": true
          },
          "Type": {
            "type": "string",
            "description": "The Type of the Store. Taken from Norce's Division.GroupName.",
            "nullable": true
          },
          "SubType": {
            "type": "string",
            "description": "The SubType of the Store. Taken from Norce's Division.SubGroupName.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The external code. Usually the id in the erp system.",
            "nullable": true
          },
          "OnHand": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnHand"
              }
            ],
            "nullable": true
          },
          "OnHandDemo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnHand"
              }
            ],
            "nullable": true
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get this entity. GetStoreItem and GetStoreItemByUniqueName gets the same StoreItem.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Store, Workshop or such. It is called Division in Norce Admin. The StoreItem entity is a bit less heavy weight than it's counter part Store and is fetched in a list."
      },
      "StoreItemPagedList": {
        "type": "object",
        "properties": {
          "ItemCount": {
            "type": "integer",
            "description": "The total item count. Can be used to manage paging. This will always be the total number of available items, regardless of paging. Use PageSize to calculate number of pages.",
            "format": "int32",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoreItem"
            },
            "description": "Items contains the current list of StoreItems for the current page if paging is used. Otherwise all items will be in the list.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The StoreItemPagedList is a PagedList. The Items property contains all current items, depending on paging, and the ItemCount the total number of items."
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
        "name": "Authorization",
        "in": "header"
      },
      "ApplicationId": {
        "type": "apiKey",
        "description": "ApplicationId header required for all requests.",
        "name": "ApplicationId",
        "in": "header"
      }
    }
  }
}