{
  "openapi": "3.1.0",
  "info": {
    "title": "Viskan API",
    "description": "Lets you connect Viskan to your other systems — like your ERP, WMS, POS, CRM, or PIM. Ideal if you are building your own integrations or working with a developer.",
    "version": "v1"
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://api.viskan.com"
    },
    {
      "description": "Staging",
      "url": "https://api.staging.viskan.com"
    }
  ],
  "paths": {
    "/accountancy/journal/journals": {
      "get": {
        "description": "Returns accounting journal data grouped by accounting period.\nOnly Invoice and Payment journals are included.\nRows with a net zero amount are excluded.\nThe response is limited to a maximum of 24 months of data — if the effective\ndate range exceeds this, a date-range-too-large error is returned.\n",
        "operationId": "getJournals",
        "parameters": [
          {
            "name": "journalDate",
            "in": "query",
            "description": "Only include journals created after this date.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "periodDateFrom",
            "in": "query",
            "description": "Only include periods whose start date is on or after this date.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "periodDateTo",
            "in": "query",
            "description": "Only include periods whose end date is on or before this date.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the accounting journals.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PeriodItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Get accounting journals",
        "tags": [
          "Finance"
        ],
        "x-viskan-api-name": "Accounting journal API",
        "x-viskan-error-code-date-range-too-large": "The effective date range of the response exceeds 24 months. Reduce the date range.",
        "x-viskan-scope": "viskan:accountancyjournal:read"
      }
    },
    "/admin/user-group/reports": {
      "get": {
        "description": "Gets all reports available.",
        "operationId": "getAllReports",
        "responses": {
          "200": {
            "description": "The response contains all reports.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReportData"
                  }
                }
              }
            }
          }
        },
        "summary": "Get all reports",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-scope": "viskan:usergroup:read"
      }
    },
    "/admin/user-group/user-groups": {
      "get": {
        "description": "Searches for user groups.",
        "operationId": "findUserGroups",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords (whitespace separated) to search for.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "active",
            "in": "query",
            "description": "Filter by the active status.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ACTIVE",
              "enum": [
                "ALL",
                "ACTIVE",
                "INACTIVE"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains a set of search hits.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserGroupListItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find user groups",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:usergroup:read"
      },
      "post": {
        "description": "Creates a new user group.",
        "operationId": "createUserGroup",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewUserGroup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The response contains the identifier of the new user.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedUserGroup"
                }
              }
            }
          }
        },
        "summary": "Create new user group",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-error-code-group-name-is-unavailable": "The user group you are trying to use is already used by another user group.",
        "x-viskan-scope": "viskan:usergroup:create"
      }
    },
    "/admin/user-group/user-groups/{groupId}": {
      "delete": {
        "description": "Deletes a user group.",
        "operationId": "deleteUserGroup",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "The ID of the group to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user group was successfully deleted."
          }
        },
        "summary": "Delete a user group",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-error-code-cannot-delete-referenced-entity": "The user group is being referenced by other objects and cannot be removed.",
        "x-viskan-error-code-user-group-not-found": "No user group was found with the given ID.",
        "x-viskan-scope": "viskan:usergroup:delete"
      },
      "get": {
        "description": "Gets information for a specific user group in the system.",
        "operationId": "getUserGroup",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "The ID of the group to get.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The information about the user group.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/UserGroupData"
                }
              }
            }
          }
        },
        "summary": "Get a user group",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-error-code-user-group-not-found": "No user group was found with the given ID.",
        "x-viskan-scope": "viskan:usergroup:read"
      },
      "patch": {
        "description": "Updates a user group.",
        "operationId": "updateUserGroup",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "The ID of the group to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserGroup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The user group was successfully updated."
          }
        },
        "summary": "Update a user group",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-error-code-group-already-have-access-to-report": "The user group already have access to the one of the given reports.",
        "x-viskan-error-code-group-already-have-access-to-role": "The user group already have access to the one of the given roles.",
        "x-viskan-error-code-group-name-is-unavailable": "The user group you are trying to use is already used by another user group.",
        "x-viskan-error-code-user-group-not-found": "No user group was found with the given ID.",
        "x-viskan-scope": "viskan:usergroup:update"
      }
    },
    "/admin/user-group/user-groups/{groupId}/members": {
      "get": {
        "description": "Gets all the users that are members of the given user group.",
        "operationId": "getMembersOfGroup",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "groupId",
            "in": "path",
            "description": "The ID of the group to get members of.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains all members of the user group.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Member"
                  }
                }
              }
            }
          }
        },
        "summary": "Get members of group",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User group API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:usergroup:read"
      }
    },
    "/admin/user/_availability": {
      "post": {
        "description": "Checks the availability of an email address in the system.",
        "operationId": "checkAvailability",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AvailabilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The user already exists. It may still be used to add to the tenant, depending on \u003ccode\u003eaccessToTenant\u003c/code\u003e.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/AvailabilityResult"
                }
              }
            }
          },
          "204": {
            "description": "The email address is not found and is available to use."
          }
        },
        "summary": "Check availability",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-email-address-required": "Email address is required.",
        "x-viskan-error-code-invalid-email-address": "The email address is not valid.",
        "x-viskan-scope": "viskan:user:create"
      }
    },
    "/admin/user/connected-tenants": {
      "get": {
        "description": "Gets all the connected tenants in this tenant. This returns an empty list for regular setups.",
        "operationId": "getConnectedTenants",
        "responses": {
          "200": {
            "description": "Contains all the connected tenants of this tenant, including itself, but only if the setup uses connected tenants.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConnectedTenant"
                  }
                }
              }
            }
          }
        },
        "summary": "Get connected tenants",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-scope": "viskan:user:read"
      }
    },
    "/admin/user/users": {
      "get": {
        "description": "Searches for users.",
        "operationId": "findUsers",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords (whitespace separated) to search for.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "active",
            "in": "query",
            "description": "Filter by the active status.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ACTIVE",
              "enum": [
                "ALL",
                "ACTIVE",
                "INACTIVE"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains a set of search hits.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserListItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find users",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:user:read"
      },
      "post": {
        "description": "Creates a user within this tenant.",
        "operationId": "createUser",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The user already existed but was added to the tenant.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateUserResult"
                }
              }
            }
          },
          "201": {
            "description": "The user was successfully created and added to the tenant.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateUserResult"
                }
              }
            }
          }
        },
        "summary": "Create user",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-administrators-cannot-be-assigned-connected-tenants": "Administrators cannot be assigned to tenants, they automatically get access to all connected tenants.",
        "x-viskan-error-code-email-address-required": "Email address is required.",
        "x-viskan-error-code-group-not-found": "One or more of the given group IDs do not exist.",
        "x-viskan-error-code-invalid-email-address": "The email address is not valid.",
        "x-viskan-error-code-invalid-name": "First name and/or last name is not valid. This does not happen if you add a user to a tenant when the user already exists in a different tenant.",
        "x-viskan-error-code-name-required": "First name and last name are required. This does not happen if you add a user to a tenant when the user already exists in a different tenant.",
        "x-viskan-error-code-only-normal-users-can-be-assigned-user-groups": "Only normal users can be assigned to user groups.",
        "x-viskan-error-code-tenant-not-found": "One or more of the given tenant IDs do not exist or is not connected to the current tenant.",
        "x-viskan-error-code-user-already-in-tenant": "The user is already a member of this tenant.",
        "x-viskan-scope": "viskan:user:create"
      }
    },
    "/admin/user/users/{userId}": {
      "delete": {
        "description": "Deletes a user from the system. In setups with connected tenants, the user will be removed from all of the connected tenants.",
        "operationId": "deleteUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The user was successfully removed."
          }
        },
        "summary": "Delete user",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-user-not-found": "No user was found with the given ID.",
        "x-viskan-scope": "viskan:user:delete"
      },
      "get": {
        "description": "Gets a specific user in the system.",
        "operationId": "getUser_1",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to get.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found user.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/UserData"
                }
              }
            }
          }
        },
        "summary": "Get user",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-user-not-found": "No user was found with the given ID.",
        "x-viskan-scope": "viskan:user:read"
      },
      "patch": {
        "description": "Updates a user.",
        "operationId": "updateUser_1",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to update.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The user was successfully updated."
          }
        },
        "summary": "Update user",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-administrators-cannot-be-assigned-connected-tenants": "Administrators cannot be assigned to tenants, they automatically get access to all connected tenants.",
        "x-viskan-error-code-only-normal-users-can-be-assigned-user-groups": "Only normal users can be assigned to user groups.",
        "x-viskan-error-code-tenant-not-found": "One or more of the given tenant IDs do not exist or is not connected to the current tenant.",
        "x-viskan-error-code-user-already-has-group": "The user is already a member of one of the user groups you are trying to add them to.",
        "x-viskan-error-code-user-not-found": "No user was found with the given ID.",
        "x-viskan-scope": "viskan:user:update"
      }
    },
    "/admin/user/users/{userId}/_send-invitation-email": {
      "post": {
        "description": "\u003cp\u003eSends an invitation email to the given user.\u003c/p\u003e\n\u003cp\u003eNote that this is also done automatically when a user account is created for the first time. This API method can be used to re-send the invitation email to assist users.\u003c/p\u003e\n\u003cp\u003eAlso note that this API method can only be called from an interactive user access token, and not regular API client access tokens.\u003c/p\u003e\n",
        "operationId": "sendInvitationEmail",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to send the email to.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "The invitation email was sent."
          }
        },
        "summary": "Send invitation email",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-api-client-must-be-a-user": "The access token used to call this method must be an interactive user access token, and not a regular API client.",
        "x-viskan-error-code-user-not-found": "No user was found with the given ID.",
        "x-viskan-scope": "viskan:user:create"
      }
    },
    "/common/agent/assignments": {
      "get": {
        "description": "Gets a list of assignments for the current tenant.",
        "operationId": "listAssignments",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The response contains the found assignments.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentItem"
                  }
                }
              }
            }
          }
        },
        "summary": "List assignments",
        "tags": [
          "Common"
        ],
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "post": {
        "description": "Creates a new assignment.",
        "operationId": "createAssignment",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAssignment"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Assignment created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentDetails"
                }
              }
            }
          }
        },
        "summary": "Create assignment",
        "tags": [
          "Common"
        ],
        "x-error-code-invalid-request": "The request body is invalid.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}": {
      "delete": {
        "description": "Soft-deletes an assignment.",
        "operationId": "deleteAssignment",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment to delete."
          }
        ],
        "responses": {
          "204": {
            "description": "Assignment deleted successfully."
          }
        },
        "summary": "Delete assignment",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "get": {
        "description": "Gets a specific assignment by ID, including its runs.",
        "operationId": "getAssignment",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment to get."
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the assignment details with runs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentWithRuns"
                }
              }
            }
          }
        },
        "summary": "Get assignment",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "patch": {
        "description": "Updates an assignment\u0027s properties.",
        "operationId": "updateAssignment",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment to update."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAssignment"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Assignment updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentDetails"
                }
              }
            }
          }
        },
        "summary": "Update assignment",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-error-code-invalid-request": "The request body is invalid.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}/abort": {
      "post": {
        "description": "Aborts the currently active run for the assignment.",
        "operationId": "abortAssignment",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment to abort."
          }
        ],
        "responses": {
          "200": {
            "description": "Run aborted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResult"
                }
              }
            }
          }
        },
        "summary": "Abort current run",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-error-code-no-active-run": "No active run exists for this assignment.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}/run": {
      "post": {
        "description": "Starts a new run for the assignment.",
        "operationId": "runAssignment",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment to run."
          }
        ],
        "responses": {
          "200": {
            "description": "Run started successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResult"
                }
              }
            }
          }
        },
        "summary": "Start assignment run",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-error-code-run-already-active": "A run is already active for this assignment.",
        "x-error-code-usage-limit-exceeded": "Monthly usage limit exceeded. Contact support to increase the limit.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}/runs": {
      "get": {
        "description": "Gets a list of runs for the assignment.",
        "operationId": "getAssignmentRuns",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment to list runs for."
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the runs.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentRun"
                  }
                }
              }
            }
          }
        },
        "summary": "List runs",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}/runs/{runId}": {
      "get": {
        "description": "Gets a specific run by ID.",
        "operationId": "getAssignmentRun",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment."
          },
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the run to get."
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the run details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentRun"
                }
              }
            }
          }
        },
        "summary": "Get run",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-error-code-run-not-found": "No run with the given ID exists for this assignment.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}/runs/{runId}/abort": {
      "post": {
        "description": "Aborts a specific run by ID.",
        "operationId": "abortRun",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment."
          },
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the run to abort."
          }
        ],
        "responses": {
          "200": {
            "description": "Run aborted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AbortRunResult"
                }
              }
            }
          }
        },
        "summary": "Abort run",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-error-code-run-not-active": "The run is not currently active.",
        "x-error-code-run-not-found": "No run with the given ID exists for this assignment.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/assignments/{assignmentId}/runs/{runId}/logs": {
      "get": {
        "description": "Gets logs for a specific run with cursor-based pagination.",
        "operationId": "getRunLogs",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the assignment."
          },
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the run to get logs for."
          },
          {
            "name": "searchAfterId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Log ID to search after for pagination."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 200,
              "maximum": 1000
            },
            "description": "Maximum number of logs to return."
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the logs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentLogsResponse"
                }
              }
            }
          }
        },
        "summary": "Get run logs",
        "tags": [
          "Common"
        ],
        "x-error-code-assignment-not-found": "No assignment with the given ID exists.",
        "x-error-code-run-not-found": "No run with the given ID exists for this assignment.",
        "x-error-code-search-after-id-not-found": "No log with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/threads": {
      "get": {
        "description": "Gets a list of threads for the current user.",
        "operationId": "findThreads",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The response contains the found threads.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ThreadItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find threads",
        "tags": [
          "Common"
        ],
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "post": {
        "description": "Creates a new thread with an initial message.",
        "operationId": "createThread",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "text/event-stream"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddMessage"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Thread created successfully. Response is streamed as Server-Sent Events.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "summary": "Create thread",
        "tags": [
          "Common"
        ],
        "x-error-code-question-too-long": "The question exceeds the maximum length of 1000 characters.",
        "x-error-code-stream-unacceptable": "In order to stream, the request must accept \u0027text/event-stream\u0027",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/threads/{threadId}": {
      "delete": {
        "description": "Marks a thread as deleted.",
        "operationId": "deleteThread",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the thread to delete."
          }
        ],
        "responses": {
          "200": {
            "description": "Thread deleted successfully"
          }
        },
        "summary": "Delete thread",
        "tags": [
          "Common"
        ],
        "x-error-code-thread-not-found": "No thread with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "get": {
        "description": "Gets a specific thread by ID.",
        "operationId": "getThread",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the thread to get."
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the thread details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThreadDetails"
                }
              }
            }
          }
        },
        "summary": "Get thread",
        "tags": [
          "Common"
        ],
        "x-error-code-thread-not-found": "No thread with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "patch": {
        "description": "Updates a thread\u0027s properties.",
        "operationId": "updateThread",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the thread to update."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateThread"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Thread updated successfully"
          }
        },
        "summary": "Update thread",
        "tags": [
          "Common"
        ],
        "x-error-code-thread-not-found": "No thread with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/threads/{threadId}/messages": {
      "get": {
        "description": "Gets messages for a specific thread with pagination support.",
        "operationId": "getMessages",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Thread ID to get messages for."
          },
          {
            "name": "searchAfterId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Message ID to search after for pagination."
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the messages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessagesResponse"
                }
              }
            }
          }
        },
        "summary": "Get messages",
        "tags": [
          "Common"
        ],
        "x-error-code-search-after-id-not-found": "No message with the given ID exists.",
        "x-error-code-thread-not-found": "No thread with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      },
      "post": {
        "description": "Adds a new message to an existing thread.",
        "operationId": "addMessage",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Thread ID to add a message for."
          },
          {
            "name": "Accept",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "text/event-stream"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddMessage"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message added successfully. Response is streamed as Server-Sent Events.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "summary": "Add message",
        "tags": [
          "Common"
        ],
        "x-error-code-question-too-long": "The question exceeds the maximum length of 1000 characters.",
        "x-error-code-stream-unacceptable": "In order to stream, the request must accept \u0027text/event-stream\u0027",
        "x-error-code-thread-not-found": "No thread with the given ID exists.",
        "x-error-code-thread-not-idle": "Thread with the given ID is not in idle state.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/threads/{threadId}/messages/{messageId}": {
      "patch": {
        "description": "Updates a message\u0027s properties, such as rating.",
        "operationId": "updateMessage",
        "parameters": [
          {
            "name": "threadId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the thread to update a message in."
          },
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The ID of the message within the thread to update."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMessage"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Message updated successfully"
          }
        },
        "summary": "Update message",
        "tags": [
          "Common"
        ],
        "x-error-code-invalid-message-role": "Only agent messages can be rated.",
        "x-error-code-message-already-rated": "Message has already been rated.",
        "x-error-code-message-not-found": "No message with the given ID exists in thread \u0027{threadId}\u0027.",
        "x-error-code-thread-not-found": "No thread with the given ID exists.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:agent"
      }
    },
    "/common/agent/translate": {
      "post": {
        "description": "Translates text from a source language to one or more target languages.",
        "operationId": "translateText",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Translation completed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranslateResponse"
                }
              }
            }
          }
        },
        "summary": "Translate text",
        "tags": [
          "Common"
        ],
        "x-error-code-invalid-source-language": "Source language is required.",
        "x-error-code-invalid-target-languages": "At least one target language is required.",
        "x-error-code-invalid-text": "Text to translate is required and cannot be empty.",
        "x-error-code-translation-failed": "An error occurred while translating the text.",
        "x-error-code-usage-limit-exceeded": "Monthly usage limit exceeded. Contact support to increase the limit.",
        "x-viskan-api-name": "Agent API",
        "x-viskan-scope": "viskan:draft:update, viskan:product:create, viskan:product:update"
      }
    },
    "/common/profile/me": {
      "get": {
        "description": "Gets the user profile of the current authorization token.",
        "operationId": "getOwnProfile",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Information about the user profile.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileDetails"
                }
              }
            }
          }
        },
        "summary": "Get own profile",
        "tags": [
          "Common"
        ],
        "x-viskan-api-name": "Profile API",
        "x-viskan-error-code-profile-is-not-available": "There is no profile information available in this authentication token.",
        "x-viskan-scope": ""
      }
    },
    "/common/profile/profiles/{userId}": {
      "get": {
        "description": "Gets a user profile.",
        "operationId": "getProfile",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the user of the profile to get.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Information about the user profile.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileInfo"
                }
              }
            }
          }
        },
        "summary": "Get profile",
        "tags": [
          "Common"
        ],
        "x-viskan-api-name": "Profile API",
        "x-viskan-error-code-user-does-not-exist": "No user with the given ID exists.",
        "x-viskan-scope": ""
      }
    },
    "/config/price-list/price-lists": {
      "get": {
        "description": "Searches for price lists with optional filters, sorting, and pagination.",
        "operationId": "findPriceLists",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords (whitespace separated) to search for.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "active",
            "in": "query",
            "description": "Filter by the active status.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ACTIVE",
              "enum": [
                "ALL",
                "ACTIVE",
                "INACTIVE"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found price lists.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceListItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find price lists",
        "tags": [
          "Config"
        ],
        "x-viskan-api-name": "Price list API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:pricelist:read"
      },
      "post": {
        "description": "Creates a new price list.",
        "operationId": "createPriceList",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePriceListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The price list was created successfully.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePriceListResponse"
                }
              }
            }
          }
        },
        "summary": "Create a price list",
        "tags": [
          "Config"
        ],
        "x-viskan-api-name": "Price list API",
        "x-viskan-error-code-price-list-name-cannot-be-blank": "Price list name cannot be a blank string.",
        "x-viskan-scope": "viskan:pricelist:create"
      }
    },
    "/config/price-list/price-lists/{priceListId}": {
      "delete": {
        "description": "Deletes a price list by its unique identifier.",
        "operationId": "deletePriceList",
        "parameters": [
          {
            "name": "priceListId",
            "in": "path",
            "description": "The unique identifier of the price list to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The price list was deleted successfully."
          }
        },
        "summary": "Delete a price list",
        "tags": [
          "Config"
        ],
        "x-viskan-api-name": "Price list API",
        "x-viskan-error-code-cannot-delete-referenced-entity": "The price list cannot be deleted because it is referenced by other entities.",
        "x-viskan-error-code-price-list-not-found": "The price list with the given ID was not found.",
        "x-viskan-scope": "viskan:pricelist:delete"
      },
      "get": {
        "description": "Get a price list by its unique identifier.",
        "operationId": "getPriceList",
        "parameters": [
          {
            "name": "priceListId",
            "in": "path",
            "description": "The unique identifier of the price list to get.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the price list.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PriceListItem"
                }
              }
            }
          }
        },
        "summary": "Get a price list",
        "tags": [
          "Config"
        ],
        "x-viskan-api-name": "Price list API",
        "x-viskan-error-code-price-list-not-found": "The price list with the given ID was not found.",
        "x-viskan-scope": "viskan:pricelist:read"
      },
      "patch": {
        "description": "Update the details of a price list.",
        "operationId": "updatePriceList",
        "parameters": [
          {
            "name": "priceListId",
            "in": "path",
            "description": "The unique identifier of the price list to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePriceListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The price list was updated successfully."
          }
        },
        "summary": "Update a price list",
        "tags": [
          "Config"
        ],
        "x-viskan-api-name": "Price list API",
        "x-viskan-error-code-price-list-name-cannot-be-blank": "Price list name cannot be a blank string.",
        "x-viskan-error-code-price-list-not-found": "The price list with the given ID was not found.",
        "x-viskan-scope": "viskan:pricelist:update"
      }
    },
    "/customer-property/customers/{customerId}/properties": {
      "get": {
        "description": "Returns all properties assigned to a customer.",
        "operationId": "getCustomerProperties",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The unique identifier of the customer.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the customer properties.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerPropertyItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Get customer properties",
        "tags": [
          "Customer"
        ],
        "x-viskan-api-name": "Customer property API",
        "x-viskan-scope": "viskan:customer:read"
      }
    },
    "/customer-property/customers/{customerId}/properties/{propertyKeyId}": {
      "delete": {
        "description": "Removes a property from a customer.",
        "operationId": "deleteProperty",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The unique identifier of the customer.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "propertyKeyId",
            "in": "path",
            "description": "The unique identifier of the property key.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The property was removed successfully."
          }
        },
        "summary": "Delete customer property",
        "tags": [
          "Customer"
        ],
        "x-viskan-api-name": "Customer property API",
        "x-viskan-scope": "viskan:customer:update"
      },
      "put": {
        "description": "Sets or updates the value of a single property key on a customer. The request body has three mutually exclusive fields — exactly one must be provided, depending on the property key\u0027s presentation type: \u003ccode\u003evalue\u003c/code\u003e for \u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eINTEGER\u003c/code\u003e, \u003ccode\u003eFLOAT\u003c/code\u003e, \u003ccode\u003eBOOLEAN\u003c/code\u003e and \u003ccode\u003eHTML\u003c/code\u003e; \u003ccode\u003epropertyValueId\u003c/code\u003e for \u003ccode\u003eSINGLE_SELECT\u003c/code\u003e; \u003ccode\u003epropertyValueIds\u003c/code\u003e for \u003ccode\u003eMULTI_SELECT\u003c/code\u003e.",
        "operationId": "setPropertyValue",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The unique identifier of the customer.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "propertyKeyId",
            "in": "path",
            "description": "The unique identifier of the property key.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPropertyValueRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The property value was set successfully."
          }
        },
        "summary": "Set customer property",
        "tags": [
          "Customer"
        ],
        "x-viskan-api-name": "Customer property API",
        "x-viskan-error-code-invalid-presentation-type": "The property key has an unknown presentation type.",
        "x-viskan-error-code-invalid-request-fields": "The wrong request fields were populated for the presentation type.",
        "x-viskan-error-code-invalid-value-format": "The provided value does not match the expected format.",
        "x-viskan-error-code-map-count-violation": "The number of values violates the min/max map count constraint.",
        "x-viskan-error-code-property-key-not-found": "The property key was not found.",
        "x-viskan-error-code-property-value-not-found": "The property value was not found or not linked to the key.",
        "x-viskan-scope": "viskan:customer:update"
      }
    },
    "/customer-property/property-keys": {
      "get": {
        "description": "Returns all customer property keys with their presentation types. For \u003ccode\u003eSINGLE_SELECT\u003c/code\u003e and \u003ccode\u003eMULTI_SELECT\u003c/code\u003e keys, the predefined values are included. For other presentation types, the values field is omitted.",
        "operationId": "findPropertyKeys",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The response contains the property keys.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PropertyKeyItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find property keys",
        "tags": [
          "Customer"
        ],
        "x-viskan-api-name": "Customer property API",
        "x-viskan-scope": "viskan:customerproperty:read"
      }
    },
    "/customer-relationships/customer/customers": {
      "get": {
        "description": "Searches for customers in the system.",
        "operationId": "search",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "Filter on customers countries (ISO2), for example countryCode\u003dSE\u0026countryCode\u003dNO.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "An optional filter on customer id. Mutually exclusive with customer number.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "-1"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "An optional filter on customer number. Mutually exclusive with customer id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "emailAddress",
            "in": "query",
            "description": "Filter on customer email address.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeCompanies",
            "in": "query",
            "description": "Whether or not to include a list of companies for a customer if the customer is a company user.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includeRemovedCustomers",
            "in": "query",
            "description": "Whether or not to include removed customers.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includeUsers",
            "in": "query",
            "description": "Whether or not to include a list of users for a customer if the customer is a company.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "100"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zipcode",
            "in": "query",
            "description": "Filter on customers zipcodes / postalcodes (requires a country and/or email as well).",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:customer:read"
      },
      "post": {
        "description": "Adds or updates a list of customers.",
        "operationId": "addOrUpdate",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomersToAddOrUpdate"
              }
            }
          },
          "description": "The customers to add or update."
        },
        "responses": {
          "200": {
            "description": "The customers were updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerToAddOrUpdateResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:customer:create"
      }
    },
    "/customer-relationships/customer/customers/{customerId}": {
      "patch": {
        "description": "Updates a specific customer.",
        "operationId": "update",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "description": "The identifier of the customer to update.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerChanges"
              }
            }
          },
          "description": "The changes to apply."
        },
        "responses": {
          "204": {
            "description": "The customer was updated successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:customer:update"
      }
    },
    "/customer-relationships/customer/customers/{customerId}/customer-activities": {
      "post": {
        "description": "Adds a list of customer activity(s) for a customer.",
        "operationId": "addCustomerActivity",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "description": "The identifier of the customer to whom the activity(s) will be added.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerActivitiesToAdd"
              }
            }
          },
          "description": "The list of customer activity(s) to add."
        },
        "responses": {
          "204": {
            "description": "The customer activity(s) added successfully"
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:customeractivity:create"
      }
    },
    "/customer-relationships/customer/customers/{customerId}/subscriptions": {
      "get": {
        "deprecated": true,
        "operationId": "listSubscriptions",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "description": "Filter on customer Id.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "customFieldValue",
            "in": "query",
            "description": "An optional filter on one/many custom field values. For example\ncustomFieldValue\u003d22468-15267-80\u0026customFieldValue\u003d22468-15267-81",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "excludeSubscriptions",
            "in": "query",
            "description": "Filter for excluding subscriptions.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": ""
            }
          },
          {
            "name": "includeUpcomingDeliveries",
            "in": "query",
            "description": "whether to include upcoming deliveries or not. If not specified the upcoming deliveries are not included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "100"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:subscription:read"
      }
    },
    "/customer-relationships/note/notes": {
      "get": {
        "description": "Searches for notes in the system.",
        "operationId": "search2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Filter on customer id. Mutually exclusive with customer number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "Filter on customer name. Mutually exclusive with customer id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "100"
            }
          },
          {
            "name": "searchAfterId",
            "in": "query",
            "description": "The identifier of the search to continue from. Used to fetch more pages.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:customer:read"
      }
    },
    "/customer-relationships/offer/offers": {
      "get": {
        "description": "Searches for offers in the system.",
        "operationId": "search3",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "activeOnly",
            "in": "query",
            "description": "Only include active offers.",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "includeStockKeepingUnits",
            "in": "query",
            "description": "Include the connected stock keeping units in the result. This can be a lot of data, so try to keep \u003ccode\u003eresultsPerPage\u003c/code\u003e quite low when using this.",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More \u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offerName",
            "in": "query",
            "description": "Filter on offer name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "100"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More \u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:offer:read"
      }
    },
    "/customer-relationships/offer/offers/{offerId}/offer-codes": {
      "post": {
        "description": "Adds offer-codes to a specific offer.",
        "operationId": "update2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "description": "The identifier of the offer to update.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The offer code(s) to add.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OfferCodes"
                }
              }
            }
          },
          "description": "The offer code(s) to add."
        },
        "responses": {
          "204": {
            "description": "The offer code(s) were added successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:offer:update"
      }
    },
    "/customer-relationships/property/properties": {
      "delete": {
        "description": "Deletes the properties for the customers.",
        "operationId": "delete",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PropertiesToDelete"
              }
            }
          },
          "description": "The properties to delete."
        },
        "responses": {
          "200": {
            "description": "The properties were updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The properties were updated successfully.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:customer:forget"
      },
      "get": {
        "description": "Gets customer properties for the given customers.",
        "operationId": "get",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerIds",
            "in": "query",
            "description": "Filter on the customer id(s) connected to property, comma separated values (CSV). Mutually exclusive with customerNumbers.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerNumbers",
            "in": "query",
            "description": "Filter on the customer number(s) connected to property, comma separated values (CSV). Mutually exclusive with customerIds.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:customer:read"
      },
      "post": {
        "description": "Connects a list of properties.",
        "operationId": "addOrUpdate2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PropertiesToConnect"
              }
            }
          },
          "description": "The properties to connect for the given customer."
        },
        "responses": {
          "204": {
            "description": "The properties were updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The properties were updated successfully.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:customer:update"
      }
    },
    "/customer-relationships/subscription/subscriptions": {
      "get": {
        "description": "Searches for subscriptions in the system.",
        "operationId": "listSubscriptions2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customFieldValue",
            "in": "query",
            "description": "An optional filter on one/many custom field values. For example\ncustomFieldValue\u003d22468-15267-80\u0026customFieldValue\u003d22468-15267-81",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Filter on customer Id.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "-1"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "Filter on customer number.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "excludeSubscriptions",
            "in": "query",
            "description": "Filter for excluding subscriptions.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": ""
            }
          },
          {
            "name": "includeSubscriptionRows",
            "in": "query",
            "description": "whether to include subscription rows or not. If not specified the subscription rows are not included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includeUpcomingDeliveries",
            "in": "query",
            "description": "whether to include upcoming deliveries or not. If not specified the upcoming deliveries are not included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "purchaseNumber",
            "in": "query",
            "description": "An optional filter on a one/many purchase numbers. For example \u003ccode\u003e34D5JZJ, 19JXCDA\u003c/code\u003e",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "100"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "query",
            "description": "Filter on subscription Id.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResult_SubscriptionAPI"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:subscription:read"
      }
    },
    "/customer-relationships/subscription/subscriptions/{subscriptionId}": {
      "patch": {
        "description": "Inserts or updates row to an existing subscription.",
        "operationId": "updateSubscriptions",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The id of the subscription that is to have its rows updated",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRowsToAddOrUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The subscription was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionRowsToAddOrUpdateResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:subscription:update"
      }
    },
    "/developer/api-request/request-logs": {
      "get": {
        "description": "Finds API request logs for the current tenant with optional filters and cursor-based pagination. Logs are limited to the last 14 days; \u003ccode\u003efromDate\u003c/code\u003e values older than that are clamped.",
        "operationId": "findRequestLogs",
        "parameters": [
          {
            "name": "searchAfter",
            "in": "query",
            "description": "Cursor returned by a previous response to fetch the next page.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "Inclusive lower bound for the log timestamp (ISO-8601). Defaults to one hour before \u003ccode\u003etoDate\u003c/code\u003e.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "Inclusive upper bound for the log timestamp (ISO-8601). Defaults to now.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "path",
            "in": "query",
            "description": "Substring to match against the request URL path.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "correlationId",
            "in": "query",
            "description": "Filter by exact correlation (trace) identifier.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "clientId",
            "in": "query",
            "description": "Filter by one or more client identifiers.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "method",
            "in": "query",
            "description": "Filter by one or more HTTP methods (e.g. \u003ccode\u003eGET\u003c/code\u003e, \u003ccode\u003ePOST\u003c/code\u003e).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "pathPattern",
            "in": "query",
            "description": "Filter by one or more API path patterns (e.g. \u003ccode\u003e/orders/{orderId}\u003c/code\u003e).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "statusCode",
            "in": "query",
            "description": "Filter by one or more HTTP response status codes.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the matching request logs and aggregations.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/RequestLogResult"
                }
              }
            }
          }
        },
        "summary": "Find request logs",
        "tags": [
          "Developer"
        ],
        "x-viskan-api-name": "API request log API",
        "x-viskan-scope": "viskan:apilog:read"
      }
    },
    "/estore/article-category/article-detail": {
      "post": {
        "description": "Loads article detail",
        "operationId": "articleDetail",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IArticleDetailRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Article detail was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Article detail was fetched successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "204": {
            "description": "No article was found with provided parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "No article was found with provided parameters.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/article-category/article-list": {
      "post": {
        "description": "List articles",
        "operationId": "articleList",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IArticleListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Article list was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Article list was fetched successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/article-category/article-sitemap": {
      "post": {
        "description": "Article sitemap",
        "operationId": "articleSitemap",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IArticleSitemapRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sitemap was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Sitemap was fetched successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/article-category/breadcrumbs/{categoryId}": {
      "post": {
        "description": "Breadcrumbs",
        "operationId": "breadcrumbs",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categoryId",
            "in": "path",
            "required": true,
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/ArticleCategoryRequest"
        },
        "responses": {
          "200": {
            "description": "Breadcrumbs was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Breadcrumbs was fetched successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:productcategory:read"
      }
    },
    "/estore/article-category/categories": {
      "get": {
        "description": "Category query - external",
        "operationId": "categoryQuery",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "query",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Query was executed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Query was executed successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:productcategory:read"
      }
    },
    "/estore/article-category/category-sitemap": {
      "post": {
        "description": "Category sitemap",
        "operationId": "categorySitemap",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ICategorySitemapRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sitemap was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Sitemap was fetched successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:productcategory:read"
      }
    },
    "/estore/article-category/filter-property-keys": {
      "get": {
        "description": "Filter property keys",
        "operationId": "filterPropertyKeys",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/ArticleCategoryRequest"
        },
        "responses": {
          "200": {
            "description": "Filter property keys was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Filter property keys was fetched successfully",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/category-v3/categories": {
      "get": {
        "description": "Fetches the contents of a category.",
        "operationId": "getCategory",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cat_id",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "-1"
            }
          },
          {
            "name": "linkFriendlyName",
            "in": "query",
            "description": "The link friendly name of the category to get. Mutually exclusive with \u003ccode\u003etag\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "The tag of the category to get. Mutually exclusive with \u003ccode\u003elinkFriendlyName\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The category was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentCategory"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationErrors"
                }
              }
            }
          },
          "404": {
            "description": "No category was found using the given filter",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:webpage:read"
      }
    },
    "/estore/category-v3/trees": {
      "get": {
        "description": "Fetches the hierarchical category tree from a specific category that will be seen as the root of the tree.",
        "operationId": "getCategoryTree",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkFriendlyName",
            "in": "query",
            "description": "The link friendly name of the category to use as the root. Mutually exclusive with \u003ccode\u003etag\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "The tag of the category to use as the root. Mutually exclusive with \u003ccode\u003elinkFriendlyName\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The category tree was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentTree"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationErrors"
                }
              }
            }
          },
          "404": {
            "description": "No category was found using the given filter",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:productcategory:read"
      }
    },
    "/estore/checkout/details": {
      "post": {
        "description": "Gets checkout details, potentially including HTML snippets generated by third party payment service providers.",
        "operationId": "getDetails",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutDetailsRequest"
              }
            }
          },
          "description": "The request to get details."
        },
        "responses": {
          "201": {
            "description": "Returns the checkout details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDetails"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:cart:checkout"
      }
    },
    "/estore/common/messages": {
      "post": {
        "description": "Creates a new message from a customer.",
        "operationId": "messages",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessage"
              }
            }
          },
          "description": "The data of the message such as if it should be displayed directly in Helpdesk or sent as an email etc."
        },
        "responses": {
          "200": {
            "description": "The message was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The message was successfully created.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:contactformemail:send"
      }
    },
    "/estore/common/referrals": {
      "post": {
        "description": "Initiates a new referral from one customer to another.",
        "operationId": "referrals",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Referral"
              }
            }
          },
          "description": "The data of the referral."
        },
        "responses": {
          "200": {
            "description": "The referral was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The referral was successfully created.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "none"
      }
    },
    "/estore/country/cities": {
      "get": {
        "description": "Searches city by zip code. Response contains cities connected to the specified zip code or empty array if specified zip code is invalid or there is no\ncities connected to it.",
        "operationId": "getCities",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zipcode",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The city search result was successfully loaded and is included in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The city search result was successfully loaded and is included in the response body.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/City"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:city:read"
      }
    },
    "/estore/country/countries": {
      "get": {
        "description": "Gets the available countries.",
        "operationId": "getCountries",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available countries.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The available countries.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:country:read"
      }
    },
    "/estore/delivery-method/delivery-methods": {
      "get": {
        "description": "Gets a list of all available delivery methods.",
        "operationId": "getDeliveryMethods",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "The country to filter for.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "weight",
            "in": "query",
            "description": "The weight to filter for.",
            "schema": {
              "type": "string",
              "default": "0.00"
            }
          },
          {
            "name": "zipcode",
            "in": "query",
            "description": "An optional zipcode, that will be used for any potential zipcode filtering.",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available delivery methods.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The available delivery methods.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryMethod"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:shippingmethod:read"
      }
    },
    "/estore/delivery-point/delivery-points": {
      "get": {
        "description": "Gets all available delivery points with the provided filter.",
        "operationId": "getDeliveryPoints",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "The country to use.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryMethodId",
            "in": "query",
            "required": true,
            "description": "The delivery method to filter for. Mutually exclusive with \u003ccode\u003eprovider\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "provider",
            "in": "query",
            "description": "The provider to filter for. Mutually exclusive with \u003ccode\u003edeliveryPointId\u003c/code\u003e.",
            "schema": {
              "type": "string",
              "enum": [
                "BEST",
                "BRING_CITYMAIL",
                "BRING_PARCELS",
                "COURIER",
                "CZECH_POST",
                "DHL",
                "DSV",
                "EDI_SOFT",
                "GENERAL",
                "GLS",
                "GORDON_DELIVERY",
                "HUNGARIAN_POST",
                "INGRID",
                "INTERNAL_LOGISTICS",
                "IN_STORE_PICKUP",
                "LBC",
                "LITHUANIAN_POST",
                "MATKAHUOLTO",
                "NORWEGIAN_POST",
                "PNL",
                "POLISH_POST",
                "POSTEN",
                "POSTI",
                "RIKSDISTRIBUTION",
                "SCHENKER",
                "SLOVAKIAN_POST",
                "SLOVENIAN_POST",
                "UNKNOWN",
                "UPS"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available delivery points.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The available delivery points.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryPoint"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:pickuplocation:read"
      }
    },
    "/estore/delivery-point/delivery-points-by-search-string": {
      "get": {
        "description": "Gets all available delivery points which match the search string. Note! The whole string is matched!\nNote! Search is case sensitive so you probably need to convert character cases.",
        "operationId": "getDeliveryPointsBySearchString",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "The country to search delivery points in.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchString",
            "in": "query",
            "description": "The search string, for example customer\u0027s zip code or city where the customer want to pickup the package etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "description": "The search term to match: zipcodes, city, deliverypoint_name etc",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Delivery points which match the search",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Delivery points which match the search",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryPoint"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:pickuplocation:read"
      }
    },
    "/estore/delivery-time-slot/delivery-time-slots": {
      "get": {
        "description": "Gets all available delivery time slots with the provided filter.",
        "operationId": "getDeliveryTimeSlots",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "The country to use.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryMethodId",
            "in": "query",
            "required": true,
            "description": "The delivery method to filter for.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "zipcode",
            "in": "query",
            "description": "The zipcode to filter for.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available time slots.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The available time slots.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimeSlot"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "none"
      }
    },
    "/estore/express/purchases": {
      "post": {
        "description": "Creates a new purchase using a Streamline Express page and given customer information.",
        "operationId": "purchases",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StreamlineExpressRequest"
              }
            }
          },
          "description": "The request to create a purchase."
        },
        "responses": {
          "201": {
            "description": "The response generated by Streamline Express.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamlineExpressResponse"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:cart:checkout"
      }
    },
    "/estore/navigation/path-info": {
      "get": {
        "description": "Gets path information for a given path.",
        "operationId": "getPathInfo",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ignoreLanguage",
            "in": "query",
            "required": true,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "path",
            "in": "query",
            "description": "The path to get the information for. Mutually exclusive with productNumber.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "description": "An optional prefix to include when searching for redirects.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "preview",
            "in": "query",
            "required": true,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "productNumber",
            "in": "query",
            "description": "The product number to get the information for. Mutually exclusive with path.",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A target was found for the path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PathInfo"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationErrors"
                }
              }
            }
          },
          "404": {
            "description": "No target was found for the path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationErrors"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:webpage:read"
      }
    },
    "/estore/payment-method/payment-methods": {
      "get": {
        "description": "Gets a list of all available payment methods.",
        "operationId": "getPaymentMethods",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "The country to filter for.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available payment methods.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The available payment methods.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PaymentMethod"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:paymentmethod:read"
      }
    },
    "/estore/product/feed": {
      "post": {
        "description": "Product feed",
        "operationId": "productFeed",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductFeedRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product feed was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductFeedResponse"
                }
              }
            }
          }
        },
        "summary": "Get product feed",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/product/product": {
      "post": {
        "description": "Loads a product detail",
        "operationId": "productDetail",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductDetailRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product detail was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "No products were found with provided parameters.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Get product details",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/product/products": {
      "post": {
        "description": "List products",
        "operationId": "productList",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product list was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductListResponse"
                }
              }
            }
          }
        },
        "summary": "Get product list",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/product/products/_search": {
      "post": {
        "description": "Search products",
        "operationId": "productSearch",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductSearchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Product list was fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductListResponse"
                }
              }
            }
          }
        },
        "summary": "Search for products",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:read"
      }
    },
    "/estore/purchase-v2/cancellations": {
      "post": {
        "description": "Cancels an \u003cb\u003eongoing\u003c/b\u003e purchase with the given information.",
        "operationId": "cancel",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelPurchaseParams"
              }
            }
          },
          "description": "The parameters to use when canceling the purchase."
        },
        "responses": {
          "201": {
            "description": "The result of canceling the pending purchase. Most importantly it contains a shopcartId that can be used to show the shopping\ncart again.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelPurchaseResult"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:cart:checkout"
      }
    },
    "/estore/purchase-v2/purchases": {
      "post": {
        "description": "Creates a new purchase with the given information.",
        "operationId": "create",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseParams"
              }
            }
          },
          "description": "The parameters to use when creating the purchase."
        },
        "responses": {
          "201": {
            "description": "The result of creating the purchase. This has information about what the API client need to do to fulfill the payment (if necessary).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePurchaseResult"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:cart:checkout"
      }
    },
    "/estore/query/queries": {
      "post": {
        "deprecated": true,
        "description": "Performs a query to extract dynamic data from ETM.",
        "operationId": "query",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryServiceRequest"
              }
            }
          },
          "description": "The query request, containing details about the query to perform."
        },
        "responses": {
          "200": {
            "description": "The query was successful and is included in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueryServiceResultPayload"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "none"
      }
    },
    "/estore/raw-purchase/_calculate-tax-rate": {
      "post": {
        "description": "Calculates tax rate for the given products.\n\u003cp\u003e\n\u003cb\u003eNOTE:\u003c/b\u003e For US only: If there is no nexus in the state of the receiver, the tax rate will be zero,\nand \u003ci\u003eamountExcludingTax\u003c/i\u003e will be equal to \u003ci\u003eamountIncludingTax\u003c/i\u003e on all prices.\n\u003cp\u003e\n\u003cb\u003eNOTE:\u003c/b\u003e When calculating amounts from quantities there might be some natural inconsistency between \u003ci\u003eamountExcludingTax\u003c/i\u003e and \u003ci\u003eamountIncludingTax\u003c/i\u003e\ndue to the way we calculate tax per quantity (as opposed to the whole sum) and round half up for each quantity.\nThis is true for both internal and external calculations, but only the \"calculated\" amount could potentially be different.\nFor external calculations, only \u003ci\u003eamountIncludingTax\u003c/i\u003e could differ.\n\u003cp\u003e\n\u003cb\u003eExample:\u003c/b\u003e\u003cbr\u003e\n\u003ci\u003eExternal (US)\u003c/i\u003e\u003cbr\u003e\n\u003cp\u003e\n\u003cb\u003eRequest\u003c/b\u003e\u003cbr\u003e\n\u003ci\u003eunitPriceExcludingTax: 176.25\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003ediscountExcludingTax: 13.37\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003equantity: 2\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003e(VAT: 30%)\u003c/i\u003e\n\u003cp\u003e\n\u003cb\u003eResponse\u003c/b\u003e\u003cbr\u003e\n\u003ci\u003eunitPriceIncludingTax: 229.13\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003eunitPriceExcludingTax: 176.25\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003ediscountIncludingTax: 17.38\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003ediscountExcludingTax: 13.37\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003eamountIncludingTax: 260.88\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003eamountExcludingTax: 339.13\u003c/i\u003e\n\u003cp\u003e\nAs a result, all calculations add up independently, but when you actually try to derive\nexcluding vat from the amountIncludingTax, it does not add up.\n\u003cp\u003e\n\u003ci\u003e176.25 * 2 - 13.36 \u003d 339.14\u003c/i\u003e\u003cbr\u003e\n\u003ci\u003e229.13 * 2 - 17.38 \u003d 440.88\u003c/i\u003e\u003cbr\u003e\nbut\u003cbr\u003e\n\u003ci\u003e339.13 * 1.3 \u003d 440.8692307692308 ~\u003d 440.87 !\u003d 440.88\u003c/i\u003e\n\u003cp\u003e\nThis is correct, though, since what the customer sees and pays for is the price calculated for each qty (176.25 and 229.13).",
        "operationId": "calculateTaxRate",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateRequest"
              }
            }
          },
          "description": "The lines to calculate the tax rate for."
        },
        "responses": {
          "200": {
            "description": "The tax rates were calculated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Calculate tax rates",
        "tags": [
          "Shopping"
        ],
        "x-viskan-api-name": "Raw purchase API",
        "x-viskan-scope": "viskan:order:create, viskan:subscription:create"
      }
    },
    "/estore/raw-purchase/purchases": {
      "post": {
        "description": "Creates a new raw purchase with the given information.",
        "operationId": "createRawPurchase",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RawPurchaseRequest"
              }
            }
          },
          "description": "The purchase to create."
        },
        "responses": {
          "201": {
            "description": "The purchase was created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RawPurchaseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Create purchase",
        "tags": [
          "Shopping"
        ],
        "x-viskan-api-name": "Raw purchase API",
        "x-viskan-scope": "viskan:order:create, viskan:subscription:create"
      }
    },
    "/estore/receipt/receipts": {
      "get": {
        "deprecated": true,
        "description": "Gets a receipt by its unique identifier. The identifier can be of different types, such as:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecollectorBankPublicToken\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eklarnaId\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epurchaseNumber\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\nThese parameters are defined as regular query parameters.",
        "operationId": "getReceipt",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "The country to filter for.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "metaMapping",
            "in": "query",
            "description": "The data-mapping used to load meta-data about the receipt rows.",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The receipt was successfully loaded and is included in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Receipt"
                }
              }
            }
          },
          "204": {
            "description": "The receipt exists but is not ready to be shown.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Receipt"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "No receipt exists with the given identifier.",
            "content": {
              "application/json": {}
            }
          },
          "500": {
            "description": "Something is incorrectly set up, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:cart:checkout"
      }
    },
    "/estore/receipt/receipts/{purchaseNumber}": {
      "get": {
        "description": "Gets a receipt by its purchase number.",
        "operationId": "getReceiptByPurchaseNumber",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "purchaseNumber",
            "in": "path",
            "description": "The purchase number to get receipt for.",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "maskData",
            "in": "query",
            "description": "Specifies whether or not we should mask data for customers.",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "metaMapping",
            "in": "query",
            "description": "The data-mapping used to load meta-data about the receipt rows.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "metaMappingForSubscriptions",
            "in": "query",
            "description": "The data-mapping used to load meta-data about the subscriptions.",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "headers": {
              "X-Service-Provider-Code": {
                "description": "The code of the service provider, if a service provider is used.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The receipt was successfully loaded and is included in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Receipt"
                }
              }
            }
          },
          "204": {
            "headers": {
              "X-Service-Provider-Code": {
                "description": "The code of the service provider, if a service provider is used.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The receipt exists but is not ready to be shown.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Receipt"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "No receipt exists with the given identifier.",
            "content": {
              "application/json": {}
            }
          },
          "500": {
            "description": "Something is incorrectly set up, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:cart:checkout"
      }
    },
    "/estore/seller/sellers": {
      "get": {
        "description": "Gets a collection of all active sellers that are connected to the currently used store.",
        "operationId": "getSellers",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The sellers was successfully loaded and is included in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The sellers was successfully loaded and is included in the response body.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Seller"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Something is incorrectly set up, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:seller:read"
      }
    },
    "/estore/service-provider/configuration/{serviceProviderConfigurationId}": {
      "get": {
        "description": "Gets a single service provider configuration by its id.",
        "operationId": "getServiceProviderConfiguration",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "serviceProviderConfigurationId",
            "in": "path",
            "required": true,
            "description": "The service provider configuration Id to use.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The service provider configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceProviderConfiguration"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan.serviceprovider:read"
      }
    },
    "/estore/service-provider/configurations": {
      "get": {
        "description": "Gets all available service provider configurations with the provided filter.",
        "operationId": "getServiceProviderConfigurations",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "serviceProviderCode",
            "in": "query",
            "description": "The service provider code to use.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available service provider configurations.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The available service provider configurations.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ServiceProviderConfiguration"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan.serviceprovider:read"
      }
    },
    "/estore/store/articles/id/{articleId}/stock-balances": {
      "get": {
        "description": "Gets a collection of store information and stock balances.",
        "operationId": "getStoreBalances",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "articleId",
            "in": "path",
            "required": true,
            "description": "Identifier for an article to find in stores",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "attribute1Id",
            "in": "query",
            "description": "Identifier for article attribute 1 to find in stores",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "attribute2Id",
            "in": "query",
            "description": "Identifier for article attribute 2 to find in stores",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "attribute3Id",
            "in": "query",
            "description": "Identifier for article attribute 3 to find in stores",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "The city in which to find stores",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "A two-letter representation of the country (ISO 3166-1 alpha-2) in which to find stores",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "includeStoresWithZeroBalance",
            "in": "query",
            "description": "Set to true to include stores that does not have the desired article in stock",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "respectQuantityThreshold",
            "in": "query",
            "description": "Set to true to include only SKU that satisfies the quantity threshold for the provided article/store\ncombination",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "storeId",
            "in": "query",
            "description": "Identifier for which specific store to list balances for - uses respectQuantityThreshold",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "-1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhysicalStoreStockBalance"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:stockbalance:read"
      }
    },
    "/estore/store/settings": {
      "get": {
        "description": "Gets store settings for the current webstore.",
        "operationId": "getStoreSettings",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupTag",
            "in": "query",
            "description": "The optional group tag to filter settings by.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeSecrets",
            "in": "query",
            "description": "Whether to return secret settings. Secrets must be handled in a secure way and never be exposed to the public.",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The settings was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The settings was successfully retrieved.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StoreSetting"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:webstore:read"
      }
    },
    "/estore/store/settings/{settingKey}": {
      "get": {
        "description": "Gets a single store setting by its key, for the current webstore.",
        "operationId": "getSetting",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "settingKey",
            "in": "path",
            "description": "The key of the setting to get.",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "includeSecrets",
            "in": "query",
            "description": "Whether to return secret settings. Secrets must be handled in a secure way and never be exposed to the public.",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The setting was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreSetting"
                }
              }
            }
          },
          "404": {
            "description": "No setting was found with the given key.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:webstore:read"
      }
    },
    "/estore/store/stores": {
      "get": {
        "description": "Gets a collection of physical stores.",
        "operationId": "getStores",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "The city in which to find stores.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "A two-letter representation of the country (ISO 3166-1 alpha-2) in which to find stores.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "500"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PhysicalStore"
                  }
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:physicalstore:read"
      }
    },
    "/global/tenant/tenants": {
      "get": {
        "description": "Searches for tenants in the platform.",
        "operationId": "getAllTenants",
        "responses": {
          "200": {
            "description": "The response contains a set of search hits.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TenantInfo"
                  }
                }
              }
            }
          }
        },
        "summary": "Find tenants",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "Tenant API",
        "x-viskan-scope": "viskan-global:tenant:read"
      },
      "post": {
        "description": "Creates a new tenant in the Viskan platform.",
        "operationId": "createTenant",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTenantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The response contains the identifier of the newly created tenant.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedTenant"
                }
              }
            }
          }
        },
        "summary": "Create new tenant",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "Tenant API",
        "x-viskan-error-code-country-code-is-invalid": "The given country code is not valid.",
        "x-viskan-error-code-database-host-is-required": "A database host must be provided to create a tenant.",
        "x-viskan-error-code-database-name-is-unavailable": "The database name generated by the given database name key is already used by another tenant.",
        "x-viskan-error-code-database-name-key-is-required": "A database name key must be provided to create a tenant.",
        "x-viskan-error-code-organization-number-is-required": "An organization number must be provided to create a tenant.",
        "x-viskan-error-code-tenant-name-is-required": "A tenant name must be provided to create a tenant.",
        "x-viskan-error-code-tenant-name-is-unavailable": "The given tenant name is already used by another tenant.",
        "x-viskan-scope": "viskan-global:tenant:create"
      }
    },
    "/global/tenant/tenants/{tenantId}": {
      "delete": {
        "description": "Deletes a tenant.",
        "operationId": "deleteTenant",
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "The ID of the tenant to delete.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "tenantName",
            "in": "query",
            "description": "The name of the tenant to delete. Used to verify the deletion.",
            "required": false,
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tenant was successfully deleted."
          }
        },
        "summary": "Delete tenant",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "Tenant API",
        "x-viskan-error-code-cannot-delete-active-tenant": "Tenants must be deactivated before they can be deleted.",
        "x-viskan-error-code-incorrect-tenant-name": "The tenant name provided does not match the tenant name of the tenant being deleted.",
        "x-viskan-error-code-not-implemented": "Deletion of tenants is not yet implemented.",
        "x-viskan-error-code-tenant-not-found": "No tenant was found with the given ID.",
        "x-viskan-scope": "viskan-global:tenant:delete"
      },
      "get": {
        "description": "Gets a specific tenant.",
        "operationId": "getTenant",
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "The ID of the tenant to get.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The information about the tenant.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TenantInfo"
                }
              }
            }
          }
        },
        "summary": "Get tenant",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "Tenant API",
        "x-viskan-error-code-tenant-not-found": "No tenant was found with the given ID.",
        "x-viskan-scope": "viskan-global:tenant:read"
      },
      "patch": {
        "description": "Updates a tenant. Any field not specified will be left unchanged.",
        "operationId": "updateTenant",
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "description": "The ID of the tenant to update.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTenantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The tenant was successfully updated."
          }
        },
        "summary": "Update tenant",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "Tenant API",
        "x-viskan-error-code-browser-key-is-required": "The browser key cannot be blank.",
        "x-viskan-error-code-country-code-is-invalid": "The country code must be a two-letter ISO country code.",
        "x-viskan-error-code-database-host-is-required": "The database hostname cannot be blank.",
        "x-viskan-error-code-database-name-is-required": "The database name cannot be blank.",
        "x-viskan-error-code-invalid-database-name": "The provided database name is invalid.",
        "x-viskan-error-code-organization-number-is-required": "The organization number cannot be blank.",
        "x-viskan-error-code-tenant-name-is-required": "The tenant name cannot be blank.",
        "x-viskan-error-code-tenant-not-found": "No tenant was found with the given ID.",
        "x-viskan-scope": "viskan-global:tenant:update"
      }
    },
    "/global/user/_synchronize-users": {
      "post": {
        "description": "Synchronizes users to the Visma Connect system for a given tenant. This should not be needed in normal situations, but comes in handy in the testing environment.",
        "operationId": "synchronizeUsersToVismaConnect",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SynchronizeUsersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The users were successfully synchronized."
          }
        },
        "summary": "Synchronizes users",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-scope": "viskan-global:user:synchronize"
      }
    },
    "/global/user/users": {
      "get": {
        "description": "Searches for users globally.",
        "operationId": "findUsers_1",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords (whitespace separated) to search for.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "viskanEmployeesOnly",
            "in": "query",
            "description": "Indicates that only Viskan employees should be returned.",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "blocked",
            "in": "query",
            "description": "Filter by the blocked status.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "UNBLOCKED",
              "enum": [
                "ALL",
                "BLOCKED",
                "UNBLOCKED"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains a set of search hits.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GlobalUser"
                  }
                }
              }
            }
          }
        },
        "summary": "Find users",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan-global:user:read"
      }
    },
    "/global/user/users/{userId}": {
      "get": {
        "description": "Gets a specific user.",
        "operationId": "getUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to get.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The user information.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalUser"
                }
              }
            }
          }
        },
        "summary": "Get user",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-user-not-found": "No user with the given identifier was found.",
        "x-viskan-scope": "viskan-global:user:read"
      },
      "patch": {
        "description": "Updates a user in the system.",
        "operationId": "updateUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to update.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGlobalUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The user was successfully updated."
          }
        },
        "summary": "Update user",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-user-not-found": "No user with the given identifier was found.",
        "x-viskan-scope": "viskan-global:user:update"
      }
    },
    "/global/user/users/{userId}/_add-to-tenant": {
      "post": {
        "description": "Adds a user to a tenant. This can only be done for existing Viskan employee users.",
        "operationId": "addUserToTenant",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The identifier of the user to add to the given tenant. Note that this user must be a Viskan employee user.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddUserToTenantRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The user was successfully added to the tenant."
          }
        },
        "summary": "Add user to tenant",
        "tags": [
          "Global"
        ],
        "x-viskan-api-name": "User API",
        "x-viskan-error-code-tenant-not-active": "The given tenant is not active.",
        "x-viskan-error-code-tenant-not-found": "The given tenant was not found.",
        "x-viskan-error-code-user-already-added-to-tenant": "The given user is already added to the given tenant.",
        "x-viskan-error-code-user-is-blocked": "The given user is blocked.",
        "x-viskan-error-code-user-is-not-a-viskan-employee": "The given user is not a Viskan employee.",
        "x-viskan-error-code-user-not-found": "No user with the given identifier was found.",
        "x-viskan-scope": "viskan-global:user:update"
      }
    },
    "/helpdesk/ticket/aggregations": {
      "get": {
        "description": "Gets aggregated counts of open tickets for the current user.",
        "operationId": "aggregateTickets",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Returns ticket aggregation counts.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Aggregations_3"
                }
              }
            }
          }
        },
        "summary": "Get ticket aggregations",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-scope": "viskan:ticket:read"
      }
    },
    "/helpdesk/ticket/tickets": {
      "get": {
        "description": "Searches for tickets.",
        "operationId": "search",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number to fetch. Defaults to \u003ccode\u003e1\u003c/code\u003e, which is the first page.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items per page. Defaults to \u003ccode\u003e50\u003c/code\u003e.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "Optionally filter by free text keyword within messages.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "helpdeskAccountIds",
            "in": "query",
            "description": "Optionally filter by the ID of one or many helpdesk accounts.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "uniqueItems": true
            }
          },
          {
            "name": "resolutions",
            "in": "query",
            "description": "Optionally filter by ticket resolutions.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "UNRESOLVED",
                  "RESOLVED",
                  "NO_ACTION_REQUIRED",
                  "SPAM",
                  "TRASH"
                ]
              }
            }
          },
          {
            "name": "assignees",
            "in": "query",
            "description": "Optionally filter by the IDs of the assigned users. The value \u003ccode\u003e-1\u003c/code\u003e can be used to find unassigned tickets.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Optionally filter by the ID of a customer.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "labels",
            "in": "query",
            "description": "Optionally filter by the IDs of labels.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "uniqueItems": true
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Earliest message date (inclusive).",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "Latest message date (inclusive).",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "sortingStrategy",
            "in": "query",
            "description": "Defines the sorting of the search results.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "RECENTLY_MODIFIED_FIRST",
              "enum": [
                "OLDEST_FIRST",
                "RECENTLY_MODIFIED_FIRST"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contains the search results.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TicketSearchResult"
                }
              }
            }
          }
        },
        "summary": "Find tickets",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-page-must-be-larger-than-zero": "Page must be larger than 0",
        "x-viskan-error-code-size-cannot-be-larger-than-100": "Size cannot be larger than 100",
        "x-viskan-error-code-size-must-be-a-positive-integer": "Size must be a positive integer.",
        "x-viskan-scope": "viskan:ticket:read"
      }
    },
    "/helpdesk/ticket/tickets/{ticketId}": {
      "get": {
        "description": "Fetch a ticket by its ID.",
        "operationId": "getTicket",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The identifier of the ticket to get.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns information about the ticket.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TicketResponse"
                }
              }
            }
          }
        },
        "summary": "Get ticket ",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-conversation-not-found": "The ticket could not be found.",
        "x-viskan-scope": "viskan:ticket:read"
      },
      "patch": {
        "description": "Updates a ticket with the provided patch data.",
        "operationId": "updateConversation",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The identifier of the ticket to update.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchTicketRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns the updated ticket.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TicketResponse"
                }
              }
            }
          }
        },
        "summary": "Update ticket",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-conversation-not-found": "The ticket could not be found.",
        "x-viskan-scope": "viskan:ticket:update"
      }
    },
    "/helpdesk/ticket/tickets/{ticketId}/_disconnect-customer": {
      "post": {
        "description": "Disconnects the customer from a ticket.",
        "operationId": "disconnectCustomer",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The identifier of the ticket to disconnect customer from.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisconnectCustomer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns the updated conversation.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TicketResponse"
                }
              }
            }
          }
        },
        "summary": "Disconnect customer",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-conversation-not-found": "The ticket could not be found.",
        "x-viskan-error-code-ticket-not-connected-to-customer": "Ticket is not connected to a customer.",
        "x-viskan-scope": "viskan:ticket:update"
      }
    },
    "/helpdesk/ticket/tickets/{ticketId}/_unassign": {
      "post": {
        "description": "Removes the current assignee from a ticket.",
        "operationId": "unassign",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The identifier of the ticket to unassign.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Unassign"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns the updated conversation.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TicketResponse"
                }
              }
            }
          }
        },
        "summary": "Unassign ticket",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-conversation-not-found": "The ticket could not be found.",
        "x-viskan-error-code-ticket-is-not-assigned": "Ticket is not assigned.",
        "x-viskan-scope": "viskan:ticket:update"
      }
    },
    "/helpdesk/ticket/tickets/{ticketId}/attachments/{attachmentId}": {
      "get": {
        "description": "Downloads a specific attachment from a ticket.",
        "operationId": "downloadAttachment",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The identifier of the ticket that the attachment belongs to.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "attachmentId",
            "in": "path",
            "description": "The identifier of the attachment to download.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the attachment file as a stream.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingResponseBody"
                }
              }
            }
          }
        },
        "summary": "Download attachment",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-attachment-not-found": "Could not find the specified attachment.",
        "x-viskan-error-code-conversation-not-found": "The ticket could not be found.",
        "x-viskan-error-code-not-found": "Could not find the specified ticket.",
        "x-viskan-scope": "viskan:ticket:read"
      }
    },
    "/helpdesk/ticket/tickets/{ticketId}/messages/{messageId}": {
      "get": {
        "description": "Fetch a specific message from a ticket by its ID.",
        "operationId": "getMessage",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The identifier of the ticket.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "messageId",
            "in": "path",
            "description": "The unique identifier of the message. This value should be double URL encoded if it has special characters.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the message.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Message_2"
                }
              }
            }
          }
        },
        "summary": "Get message",
        "tags": [
          "Helpdesk"
        ],
        "x-viskan-api-name": "Ticket API",
        "x-viskan-error-code-conversation-not-found": "The ticket could not be found.",
        "x-viskan-error-code-message-not-found": "The message could not be found.",
        "x-viskan-scope": "viskan:ticket:read"
      }
    },
    "/in-store-pickup/parcel/parcels": {
      "get": {
        "description": "Fetches parcels.",
        "operationId": "get2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changesFrom",
            "in": "query",
            "description": "Get parcels that have been changed since this date.",
            "schema": {
              "type": "string",
              "default": "1900-01-01T00:00:00.000Z"
            }
          },
          {
            "name": "changesTo",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string",
              "default": "9999-12-31T23:59:59.997Z"
            }
          },
          {
            "name": "parcelNumber",
            "in": "query",
            "description": "The parcel numbers to fetch.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "",
                  "type": "string"
                }
              }
            }
          }
        },
        "summary": "Find parcels",
        "tags": [
          "In-store pickup"
        ],
        "x-viskan-api-name": "Parcel API",
        "x-viskan-scope": "viskan:parcel:read"
      },
      "patch": {
        "description": "Updates parcels.",
        "operationId": "update3",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ParcelUpdates"
              }
            }
          },
          "description": "The data to update."
        },
        "responses": {
          "200": {
            "description": "The parcel was successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The parcel was successfully updated",
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Some error occurred, an errorcode is returned in the body and an explanation can be found in separate documentation"
          }
        },
        "summary": "Update parcels",
        "tags": [
          "In-store pickup"
        ],
        "x-viskan-api-name": "Parcel API",
        "x-viskan-scope": "viskan:parcel:update"
      },
      "post": {
        "description": "Creates parcels.",
        "operationId": "create2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allowMissingCustomerData",
            "in": "query",
            "description": "Whether or not to allow missing customer data, such as address info",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "creationRule",
            "in": "query",
            "description": "The rules for creating data.",
            "schema": {
              "type": "string",
              "enum": [
                "CUSTOMER",
                "DEFAULT",
                "DELIVERY",
                "ORDER"
              ],
              "default": "DEFAULT"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ParcelCreateRequest"
              }
            }
          },
          "description": "The data that contains information about parcels to create."
        },
        "responses": {
          "200": {
            "description": "The parcel was successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The parcel was successfully created",
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Some error occurred, an error code is returned in the body and an explanation can be found in separate documentation"
          }
        },
        "summary": "Create parcels",
        "tags": [
          "In-store pickup"
        ],
        "x-viskan-api-name": "Parcel API",
        "x-viskan-scope": "viskan:parcel:create"
      }
    },
    "/job/job-configuration/configurations": {
      "get": {
        "description": "Lists job configurations for the current tenant with optional keyword filter and pagination.",
        "operationId": "findConfigs",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords (whitespace separated) to search for in the configuration name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "active",
            "in": "query",
            "description": "Filter by active status.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ACTIVE",
              "enum": [
                "ALL",
                "ACTIVE",
                "INACTIVE"
              ]
            }
          },
          {
            "name": "userAllowedToExecute",
            "in": "query",
            "description": "Filter by execute permission.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ALL",
              "enum": [
                "ALL",
                "ALLOWED",
                "NOT_ALLOWED"
              ]
            }
          },
          {
            "name": "userAllowedToActivate",
            "in": "query",
            "description": "Filter by activate permission.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ALL",
              "enum": [
                "ALL",
                "ALLOWED",
                "NOT_ALLOWED"
              ]
            }
          },
          {
            "name": "onlyUserManageable",
            "in": "query",
            "description": "Only include configurations where the user has at least one permission (activate or execute).",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found job configurations.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobConfigItem"
                  }
                }
              }
            }
          }
        },
        "summary": "List job configurations",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job configuration API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:jobconfig:read"
      }
    },
    "/job/job-configuration/configurations/{id}": {
      "get": {
        "description": "Get a job configuration by its unique identifier.",
        "operationId": "getConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the job configuration.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the configuration.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/JobConfigItem"
                }
              }
            }
          }
        },
        "summary": "Get a job configuration",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job configuration API",
        "x-viskan-error-code-config-not-found": "The configuration with the given ID was not found.",
        "x-viskan-scope": "viskan:jobconfig:read"
      },
      "patch": {
        "description": "Updates the active status and/or job execution exclusion of a job configuration.",
        "operationId": "updateConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the job configuration to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobConfigRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The configuration was updated successfully."
          }
        },
        "summary": "Update a job configuration",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job configuration API",
        "x-viskan-error-code-activation-not-allowed": "The user is not allowed to activate/deactivate this configuration.",
        "x-viskan-error-code-config-not-found": "The configuration with the given ID was not found.",
        "x-viskan-scope": "viskan:jobconfig:update"
      }
    },
    "/job/job-configuration/configurations/{id}/execute": {
      "post": {
        "description": "Triggers manual execution of a job configuration.",
        "operationId": "executeConfig",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the job configuration to execute.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The job was executed.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ExecuteJobConfigResponse"
                }
              }
            }
          }
        },
        "summary": "Execute a job configuration",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job configuration API",
        "x-viskan-error-code-config-not-found": "The configuration with the given ID was not found.",
        "x-viskan-error-code-execution-not-allowed": "The user is not allowed to execute this configuration.",
        "x-viskan-scope": "viskan:jobconfig:update"
      }
    },
    "/job/job-execution-exclusion/exclusions": {
      "get": {
        "description": "Searches for job execution exclusions with optional keyword filter and pagination.",
        "operationId": "findExclusions",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords (whitespace separated) to search for in the exclusion name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found exclusions.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobExecutionExclusionItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find job execution exclusions",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job execution exclusion API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:jobexecutionexclusion:read"
      },
      "post": {
        "description": "Creates a new job execution exclusion with optional intervals.",
        "operationId": "createExclusion",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobExecutionExclusionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The exclusion was created successfully.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateJobExecutionExclusionResponse"
                }
              }
            }
          }
        },
        "summary": "Create a job execution exclusion",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job execution exclusion API",
        "x-viskan-error-code-exclusion-name-cannot-be-blank": "The exclusion name cannot be blank.",
        "x-viskan-error-code-interval-end-before-start": "The end date of an interval cannot be before its start date.",
        "x-viskan-scope": "viskan:jobexecutionexclusion:create"
      }
    },
    "/job/job-execution-exclusion/exclusions/{id}": {
      "delete": {
        "description": "Deletes a job execution exclusion by its unique identifier. Intervals are deleted via cascade.",
        "operationId": "deleteExclusion",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the exclusion to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The exclusion was deleted successfully."
          }
        },
        "summary": "Delete a job execution exclusion",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job execution exclusion API",
        "x-viskan-error-code-exclusion-not-found": "The exclusion with the given ID was not found.",
        "x-viskan-scope": "viskan:jobexecutionexclusion:delete"
      },
      "get": {
        "description": "Get a job execution exclusion by its unique identifier, including its intervals.",
        "operationId": "getExclusion",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the exclusion.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the exclusion.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/JobExecutionExclusionDetail"
                }
              }
            }
          }
        },
        "summary": "Get a job execution exclusion",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job execution exclusion API",
        "x-viskan-error-code-exclusion-not-found": "The exclusion with the given ID was not found.",
        "x-viskan-scope": "viskan:jobexecutionexclusion:read"
      },
      "patch": {
        "description": "Update the details of a job execution exclusion and its intervals.",
        "operationId": "updateExclusion",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the exclusion to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobExecutionExclusionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The exclusion was updated successfully."
          }
        },
        "summary": "Update a job execution exclusion",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job execution exclusion API",
        "x-viskan-error-code-exclusion-name-cannot-be-blank": "The exclusion name cannot be blank.",
        "x-viskan-error-code-exclusion-not-found": "The exclusion with the given ID was not found.",
        "x-viskan-error-code-interval-end-before-start": "The end date of an interval cannot be before its start date.",
        "x-viskan-error-code-interval-not-found": "An interval with the given ID was not found.",
        "x-viskan-scope": "viskan:jobexecutionexclusion:update"
      }
    },
    "/job/job-history/entries": {
      "get": {
        "description": "Searches job execution history for the current tenant with optional filters.",
        "operationId": "findEntries",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "keywords",
            "in": "query",
            "description": "Optional keywords to search for in the job config name.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Comma-separated list of status names to filter by (e.g. \u0027ERROR,WARNING\u0027).",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "description": "Start of date range (ISO date). Defaults to 30 days ago.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "description": "End of date range (ISO date). Defaults to today.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "acknowledged",
            "in": "query",
            "description": "Filter by acknowledged status.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "ALL",
              "enum": [
                "ALL",
                "ACKNOWLEDGED",
                "UNACKNOWLEDGED"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found history entries.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobHistoryItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Search job history",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job history API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:jobconfig:read"
      }
    },
    "/job/job-history/entries/{id}": {
      "get": {
        "description": "Gets a job history entry by its identifier, including translated messages.",
        "operationId": "getEntry",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the history entry.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the history entry.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/JobHistoryDetail"
                }
              }
            }
          }
        },
        "summary": "Get a job history entry",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job history API",
        "x-viskan-error-code-history-not-found": "The history entry was not found.",
        "x-viskan-scope": "viskan:jobconfig:read"
      }
    },
    "/job/job-history/entries/{id}/acknowledge": {
      "post": {
        "description": "Marks a failed job execution as acknowledged.",
        "operationId": "acknowledgeEntry",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the history entry to acknowledge.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The failure was acknowledged."
          }
        },
        "summary": "Acknowledge a failure",
        "tags": [
          "Admin"
        ],
        "x-viskan-api-name": "Job history API",
        "x-viskan-error-code-history-not-found": "The history entry was not found.",
        "x-viskan-error-code-not-a-failure": "Only failed jobs can be acknowledged.",
        "x-viskan-scope": "viskan:jobconfig:read"
      }
    },
    "/my-pages-v2/authentication/authentications": {
      "post": {
        "description": "Authenticates a customer into the \"My pages\" API by supplying an identifier and a password.\n\u003cp\u003e\nThe \"My pages\" API can also be connected to external third party providers for managing customer information. To do this, you can supply the\n\u003ccode\u003eserviceProviderConfigId\u003c/code\u003e parameter.",
        "operationId": "authenticate",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthenticationRequest"
              }
            }
          },
          "description": "The authentication request."
        },
        "responses": {
          "200": {
            "headers": {
              "X-Shopcart-Id": {
                "description": "The id of the customer latest modified shopcart, if the corresponding setting is on.",
                "schema": {
                  "type": "string"
                }
              },
              "X-My-Pages-Token": {
                "description": "The token that should be used for consecutive API calls.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The authentication was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesCustomer"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials was supplied.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/authentication/invalidate": {
      "post": {
        "description": "Invalidates the provided token. This endpoint should not be mistaken for the /logout endpoint which is used for login a user out of the current\nsession",
        "operationId": "invalidate",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "query",
            "description": "the token to invalidate.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The token was invalidated.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The token was invalidated.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/authentication/logout": {
      "post": {
        "description": "Logs customer out of \"My pages\" API and changes \u003ccode\u003ecustomerType\u003c/code\u003e if the default is different. Updates payment method and way of\ndelivery to defaults if they are no longer valid. Keeps shopcart and removes the authentication token afterwards.",
        "operationId": "logout",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LogoutRequest"
              }
            }
          },
          "description": "the logout request."
        },
        "responses": {
          "200": {
            "description": "The logout was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The logout was successful.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/authentication/matches": {
      "post": {
        "description": "Attempts to match customer information to an existing customer and create a \"My pages\" authentication token based on that.",
        "operationId": "matches",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "generateCustomerId",
            "in": "query",
            "description": "Whether or not we shall generate the internal identifier when creating a new customer. Only used when\ncreateIfNotMatched is true.",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MatchRequest"
              }
            }
          },
          "description": "The match request."
        },
        "responses": {
          "200": {
            "headers": {
              "X-My-Pages-Token": {
                "description": "The token that should be used for consecutive API calls.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The match successfully found a customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesCustomer"
                }
              }
            }
          },
          "201": {
            "headers": {
              "X-My-Pages-Token": {
                "description": "The token that should be used for consecutive API calls.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The match did not find an existing customer, but one was created instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesCustomer"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationErrors"
                }
              }
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/company-user/connected-users": {
      "get": {
        "description": "Gets all connected customer users of the provided company",
        "operationId": "getConnectedUsers",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyCustomerId",
            "in": "query",
            "required": true,
            "description": "The internal id of the company to fetch users of.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connected users were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The connected users were retrieved successfully.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerCompanyInformation"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/company-user/connected-users/{companyCustomerId}": {
      "post": {
        "description": "Updates and adds new users to the provided company.",
        "operationId": "update4",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyCustomerId",
            "in": "path",
            "required": true,
            "description": "The company to update users for.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyUsersToAddOrUpdate"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The connected users were updated successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/customer/customers": {
      "post": {
        "description": "Registers a new customer. The customer information will be validated to avoid duplicates. If successful, the customer will \u003cb\u003enot\u003c/b\u003e be logged\nin. The customer will be created, and a set-password email will be sent out to confirm the validity of the email.",
        "operationId": "register",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "generateCustomerId",
            "in": "query",
            "description": "Whether or not we shall immediately generate the internal identifier when creating the new customer, if not it will\nbe handled later in the flow.",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterCustomerRequest"
              }
            }
          },
          "description": "The customer information"
        },
        "responses": {
          "204": {
            "description": "The customer was successfully registered."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/customer/me": {
      "get": {
        "description": "Gets the authenticated customer.",
        "operationId": "get3",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The customer was retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesCustomer"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      },
      "patch": {
        "description": "Updates parts of the authenticated customer.",
        "operationId": "patch",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lowLevelUpdateEnabled",
            "in": "query",
            "required": true,
            "description": "If true, then customer can update their information even if they are authenticated with a low level of\nauthentication.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerRequest"
              }
            }
          },
          "description": "The changes to apply to the customer. To not update certain fields, simply do not send then."
        },
        "responses": {
          "200": {
            "description": "The customer was updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesCustomer"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/customer/newsletter-customers": {
      "post": {
        "description": "Registers or updates existing customers to use and opt-in for newsletters.",
        "operationId": "customerNewsLetter",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "generateCustomerId",
            "in": "query",
            "description": "Whether or not we shall immediately generate the internal identifier when creating the new customer, if not it will\nbe handled later in the flow.",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewsLetterRequest"
              }
            }
          },
          "description": "The request holding the necessary information to register or update an existing customer to opt-in for newsletters"
        },
        "responses": {
          "204": {
            "description": "The customer was successfully created or updated."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/customer/register-interest": {
      "post": {
        "description": "Registers a customer interest in a product. The customer information will be validated to avoid duplicates. If successful, the customer will\n\u003cb\u003enot\u003c/b\u003e be logged in. If the customer is not found based on the given customer information, a new customer will be created.",
        "operationId": "registerInterest",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "generateCustomerId",
            "in": "query",
            "description": "",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterInterest"
              }
            }
          },
          "description": "The request holding the necessary information to register or update an existing customer for product interest"
        },
        "responses": {
          "204": {
            "description": "The customer was successfully found or registered, and the product interest was successfully added."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/delivery/deliveries": {
      "get": {
        "description": "Gets deliveries for the authenticated customer.",
        "operationId": "getDeliveries",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderType",
            "in": "query",
            "description": "Filter on orderType.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "BONUS",
                  "BUNDLE_ORDER",
                  "EXTRA_CLUB_POSTING",
                  "GIVER_RECRUITER",
                  "LAGUN",
                  "MEMBERSHIP_INTRO",
                  "MEMBERSHIP_NO_THANKS",
                  "MEMBERSHIP_POSTING",
                  "RECEIPT",
                  "SPECIAL",
                  "STANDARD",
                  "STOCK_REDISTRIBUTION",
                  "SUBSCRIPTION",
                  "UNCOLLECTED_FEE"
                ]
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "paymentStatus",
            "in": "query",
            "description": "Filter on payment status.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "NOT_INVOICED",
                  "NO_CLAIM",
                  "OVERPAID",
                  "PARTLY_PAID",
                  "UNPAID"
                ]
              }
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of deliveries to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "10"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter on shipment(delivery) status.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CANCELED",
                  "CREATED",
                  "PARTIALLY_REPORTED",
                  "REPORTED"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "headers": {
              "X-Delivery-Count": {
                "description": "The total number of deliveries.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The deliveries were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The deliveries were retrieved successfully.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyPagesDelivery"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/delivery/deliveries/{deliveryId}": {
      "get": {
        "description": "Gets delivery details for the authenticated customer.",
        "operationId": "getDelivery",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "description": "The delivery ID of the delivery details to get.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The delivery details were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesDeliveryDetails"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "No delivery was found.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/offer/offers": {
      "get": {
        "description": "Gets member offers for the authenticated customer.",
        "operationId": "getOffers",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The offers was retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The offers was retrieved successfully.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyPagesOffer"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/order/orders": {
      "get": {
        "description": "Gets orders for the authenticated customer.",
        "operationId": "getOrders",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "The internal id of a customer to fetch orders for. For example used when you have access to another customer / company in a\nb2b setup.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date to retrieve orders from",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of orders to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "10"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "The status(es) of the orders to retrieve.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CANCELLED",
                  "DELIVERED",
                  "DELIVERY_CREATED",
                  "PARTLY_DELIVERED",
                  "PLACED"
                ]
              }
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date to retrieve orders to",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "types",
            "in": "query",
            "description": "The type(s) of the orders to retrieve.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "BONUS",
                  "BUNDLE_ORDER",
                  "EXTRA_CLUB_POSTING",
                  "GIVER_RECRUITER",
                  "LAGUN",
                  "MEMBERSHIP_INTRO",
                  "MEMBERSHIP_NO_THANKS",
                  "MEMBERSHIP_POSTING",
                  "RECEIPT",
                  "SPECIAL",
                  "STANDARD",
                  "STOCK_REDISTRIBUTION",
                  "SUBSCRIPTION",
                  "UNCOLLECTED_FEE"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "headers": {
              "X-Order-Count": {
                "description": "The total amount of orders.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "The orders was retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The orders was retrieved successfully.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyPagesOrderDetails"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/order/orders/{orderNumber}": {
      "get": {
        "description": "Get detailed order for the authenticated customer and provided order number.",
        "operationId": "getOrder",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderNumber",
            "in": "path",
            "description": "The number of order to get.",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "source",
            "in": "query",
            "description": "Source of order.",
            "schema": {
              "type": "string",
              "enum": [
                "EXTERNAL",
                "INTERNAL"
              ],
              "default": "INTERNAL"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The order was retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesOrderDetails"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/order/orders/{orderNumber}/return-slips": {
      "post": {
        "description": "Initiates the generation of a return slip for the given order.",
        "operationId": "generateReturnSlip",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderNumber",
            "in": "path",
            "description": "The unique number of the order to generate slip for.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "The return slip generation was initiated properly."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/rental/rentals": {
      "get": {
        "description": "Gets rentals for the authenticated customer.",
        "operationId": "getRentals",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeInactive",
            "in": "query",
            "description": "Filter to include inactive rentals.",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results to display.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "10"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The rentals were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RentalHead"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/rental/rentals/{rentalId}/renew-payment-info": {
      "post": {
        "description": "Initiates the renewal of payment information for the given rental.",
        "operationId": "renewPaymentInfo",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rentalId",
            "in": "path",
            "required": true,
            "description": "The identifier of the rental to renew payment information for.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/RenewalRequest"
        },
        "responses": {
          "200": {
            "description": "The renewal has been initiated properly and information required for the client has been returned in the response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenewalResult"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/reset-password/tokens": {
      "post": {
        "description": "Requests a new reset-password token. In order to avoid bots performing bogus calls to this endpoint, it is recommended to perform some kind of\n\u003ca href\u003d\"https://en.wikipedia.org/wiki/CAPTCHA\"\u003eCAPTCHA\u003c/a\u003e on the client side (for example\n\u003ca href\u003d\"https://www.google.com/recaptcha\"\u003ereCAPTCHA\u003c/a\u003e).",
        "operationId": "requestResetToken",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "generateCustomerId",
            "in": "query",
            "description": "Whether or not we shall immediately generate the internal identifier when creating the new customer, if not it will\nbe handled later in the flow.",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordRequest"
              }
            }
          },
          "description": "The request to reset a password."
        },
        "responses": {
          "204": {
            "description": "The token was successfully requested. Note that if no customer was found with the given identifier, this status will still be returned. This is to avoid potentially leaking information about consumers."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/reset-password/tokens/{token}": {
      "get": {
        "description": "Checks that a given reset password token is valid.",
        "operationId": "checkToken",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "path",
            "description": "The token to check validity for.",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "tokenType",
            "in": "query",
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "ACTIVATE_PASSWORD_TOKEN",
                "RESET_PASSWORD_TOKEN"
              ],
              "default": "RESET_PASSWORD_TOKEN"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The token exists and is valid."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/reset-password/tokens/{token}/resets": {
      "post": {
        "description": "Resets the password using a specified token.\n\u003cp\u003e\nA check will be performed that validates that the given password is at least 6 characters long. No other checks will be performed. All\ncharacters (including whitespace) are considered valid. In order to provide more strict password rules, it is recommended to perform them\nbefore calling this API.\n\u003c/p\u003e",
        "operationId": "resetPassword",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "path",
            "description": "The token of the reset request.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPasswordRequest"
              }
            }
          },
          "description": "Information about the new password."
        },
        "responses": {
          "204": {
            "description": "The password was successfully set."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/subscription/subscriptions": {
      "get": {
        "description": "Gets subscriptions for the authenticated customer.",
        "operationId": "getSubscriptions",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeInactive",
            "in": "query",
            "description": "Whether or not to include inactive subscriptions. Defaults to true.",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of subscriptions to get.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "10"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The subscriptions were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The subscriptions were retrieved successfully.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyPagesSubscription"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/subscription/subscriptions/{subscriptionId}": {
      "get": {
        "description": "Gets subscription details for the authenticated customer.",
        "operationId": "getSubscription",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The subscription id of the subscription details to get.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeInactive",
            "in": "query",
            "description": "Whether or not to include inactive subscription rows. Defaults to true",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          },
          {
            "name": "includeOnlyOrdinaryShipmentRows",
            "in": "query",
            "description": "Include ordinary shipment rows only to minimize data if set to true. Defaults to false.\nAn \"OrdinaryShipmentRow\" means the row is active, unlimited, and repeats every time.\nIf a row is fully delivered, restricted to a specific date, or only ships occasionally, it is not considered as \"OrdinaryShipmentRow\".",
            "schema": {
              "type": "boolean",
              "default": "false"
            }
          },
          {
            "name": "includePassedDeliveries",
            "in": "query",
            "description": "Whether or not to include already delivered subscription rows. Defaults to true",
            "schema": {
              "type": "boolean",
              "default": "true"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The subscription details were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesSubscriptionDetails"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "No subscription was found.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      },
      "patch": {
        "description": "Updates a given subscription.",
        "operationId": "update5",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The identifier for the subscription.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionToUpdate"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The subscription was updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionRowsAddedOrUpdatedResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/subscription/subscriptions/{subscriptionId}/cancel": {
      "post": {
        "description": "Cancels a given subscription.",
        "operationId": "cancel2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The identifier for the subscription.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancellationDetails"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The subscription was cancelled successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/subscription/subscriptions/{subscriptionId}/change-type": {
      "post": {
        "description": "Changes the subscription type of the the given subscription.",
        "operationId": "changeType",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The identifier for the subscription.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeDetails"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The subscription was changed successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/subscription/subscriptions/{subscriptionId}/renew-payment-info": {
      "post": {
        "description": "Initiates the renewal of payment information for the given subscription.",
        "operationId": "renewPaymentInfo2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The identifier of the subscription to renew payment information for.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/RenewalRequest"
        },
        "responses": {
          "200": {
            "description": "The renewal has been initiated properly and information required for the client has been returned in the response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenewalResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/subscription/subscriptions/{subscriptionId}/resume": {
      "post": {
        "description": "Resumes a given subscription.",
        "operationId": "resume",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "description": "The identifier for the subscription.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The subscription was resumed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesSubscriptionDetails"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/wishlist/wishlists": {
      "get": {
        "description": "Retrieves all wishlists for the authenticated customer.",
        "operationId": "getWishlists",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The wishlists were retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The wishlists were retrieved successfully.",
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MyPagesWishlistResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "No wishlists were found for the customer.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      },
      "post": {
        "description": "Saves a wishlist for the authenticated customer.",
        "operationId": "saveWishlist",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MyPagesWishlistRequest"
              }
            }
          },
          "description": "The wishlist to save."
        },
        "responses": {
          "200": {
            "description": "The wishlist was created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesWishlistIdResponse"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/wishlist/wishlists/{wishlistId}": {
      "delete": {
        "description": "Deletes a wishlist by its ID.",
        "operationId": "deleteWishlist",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wishlistId",
            "in": "path",
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist to delete.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "The wishlist was deleted successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          },
          "404": {
            "description": "No wishlist found for the provided wishlist ID."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      },
      "get": {
        "description": "Retrieves a wishlist by its ID.",
        "operationId": "getWishlist",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wishlistId",
            "in": "path",
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist to retrieve.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "The wishlist was retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPagesWishlistResponse"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          },
          "401": {
            "description": "Invalid authentication token was given.",
            "content": {
              "application/json": {}
            }
          },
          "404": {
            "description": "No wishlist found for the provided wishlist ID.",
            "content": {
              "application/json": {}
            }
          }
        },
        "x-viskan-scope": "viskan:mypages"
      },
      "patch": {
        "description": "Updates the name of a wishlist.",
        "operationId": "updateWishlistName",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wishlistId",
            "in": "path",
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist to update the name of.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MyPagesWishlistNameRequest"
              }
            }
          },
          "description": "The new name of the wishlist."
        },
        "responses": {
          "204": {
            "description": "The name of the wishlist was successfully updated."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          },
          "404": {
            "description": "No wishlist found for the provided wishlist ID."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/wishlist/wishlists/{wishlistId}/products": {
      "post": {
        "description": "Saves products to a wishlist.",
        "operationId": "saveProducts",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wishlistId",
            "in": "path",
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist to save the products to.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The products to save.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MyPagesWishlistProductRequest"
                }
              }
            }
          },
          "description": "The products to save."
        },
        "responses": {
          "204": {
            "description": "The products were successfully added to the wishlist."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          },
          "404": {
            "description": "No wishlist found for the provided wishlist ID."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/my-pages-v2/wishlist/wishlists/{wishlistId}/products/_delete": {
      "post": {
        "description": "Deletes products from a wishlist.",
        "operationId": "deleteProducts",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-My-Pages-Token",
            "in": "header",
            "description": "The token received from the authentication API.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "wishlistId",
            "in": "path",
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist to delete the products from.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The products to delete.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MyPagesWishlistProductRequest"
                }
              }
            }
          },
          "description": "The products to delete."
        },
        "responses": {
          "204": {
            "description": "The products were successfully deleted from the wishlist."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          },
          "401": {
            "description": "Invalid authentication token was given."
          },
          "404": {
            "description": "No wishlist found for the provided wishlist ID."
          }
        },
        "x-viskan-scope": "viskan:mypages"
      }
    },
    "/order-management/delivery/deliveries": {
      "get": {
        "description": "Searches for deliveries in the system.",
        "operationId": "search4",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "checkForParcelModifications",
            "in": "query",
            "description": "An optional filter on whether to check modifiedAfter on parcels as well.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "Filter on delivery countryCode (ISO 3166-1 alpha-2 standard format). For example countryCode\u003dSE\u0026countryCode\u003dNO.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "customFieldValue",
            "in": "query",
            "description": "An optional filter on one/many custom field values. For example\ncustomFieldValue\u003d22468-15267-80\u0026customFieldValue\u003d22468-15267-81",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "An optional filter on customer id. Mutually exclusive with customer number. For example customerId\u003d1234",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "-1"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "An optional filter on customer number. Mutually exclusive with customer id. For example customerNumber\u003d8564",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryId",
            "in": "query",
            "description": "An optional filter on one/many deliveryId. For example deliveryId\u003d123\u0026deliveryId\u003d789",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "deliveryNumber",
            "in": "query",
            "description": "An optional filter on one/many deliveryNumber. For example deliveryNumber\u003dabc\u0026deliveryNumber\u003dxyz",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "includeCanceledRows",
            "in": "query",
            "description": "An optional filter on whether to include canceled delivery rows. \u003cbr\u003e\nThe canceled rows will have the original price/discounts, but partly delivered rows will have the discount and totals reflecting the\ndelivered quantities.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "internalCustomers",
            "in": "query",
            "description": "An optional filter on whether the customers of the deliveries are internal.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "methodOfArrival",
            "in": "query",
            "description": "An optional filter on one/many method of arrivals. For example methodOfArrivals\u003dA09",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "An optional filter on one/many order numbers. For example orderNumber\u003d1234\u0026orderNumber\u003d5678",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "parcelNumber",
            "in": "query",
            "description": "An optional filter on one/many \u003cb\u003e\u0027In Store\u0027\u003c/b\u003e parcel numbers. For example parcelNumber\u003d1234\u0026parcelNumber\u003d5678",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "processChain",
            "in": "query",
            "description": "Filter on current delivery processChain. For example processChain\u003dREPORT_QUEUE. \u003cb\u003eThe use of this filter is contingent\nupon the approval of Viskan.\u003c/b\u003e",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "processStatus",
            "in": "query",
            "description": "Filter on current delivery processStatus. For example processStatus\u003dPROCESSED\u0026processStatus\u003dEXPORTED. \u003cb\u003eThe use of this\nfilter is contingent upon the approval of Viskan.\u003c/b\u003e",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "purchaseNumber",
            "in": "query",
            "description": "An optional filter on a one/many purchase numbers. For example purchaseNumber\u003d1234\u0026purchaseNumber\u003d5678",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter on current delivery status. For example status\u003dCREATED\u0026status\u003dDELIVERED. \u003cp\u003e\u003cb\u003eNOTE!\u003c/b\u003e When fetching deliveries to handle in a \u003cb\u003epick \u0026 pack\u003c/b\u003e process,\nyou should \u003cb\u003ealways filter on CREATED\u003c/b\u003e.\nOnly deliveries in this state are ready to be processed for packing and shipment.\u003c/p\u003e",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CANCELED",
                  "CREATED",
                  "DELIVERED"
                ]
              }
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "The id of the warehouse we want deliveries for. Mutually exclusive with warehouseNumber.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "warehouseNumber",
            "in": "query",
            "description": "The number of the warehouse we want deliveries for. Mutually exclusive with warehouseId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "webStoreNumber",
            "in": "query",
            "description": "An optional filter on one/many web store(s) where the order was placed. Only applicable for web orders,\nsubscription based orders and physical store orders are not supported by this filter. For example webStoreNumber\u003d888",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find shipments",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Shipment API",
        "x-viskan-scope": "viskan:shipment:read"
      }
    },
    "/order-management/delivery/deliveries/{deliveryId}": {
      "patch": {
        "description": "Updates a specific delivery.",
        "operationId": "update6",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "description": "The identifier of the delivery to update.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryChanges"
              }
            }
          },
          "description": "The changes to apply."
        },
        "responses": {
          "204": {
            "description": "The delivery was updated successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Update a shipment",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Shipment API",
        "x-viskan-scope": "viskan:shipment:update"
      }
    },
    "/order-management/delivery/deliveries/{deliveryId}/_cancel": {
      "post": {
        "description": "(InStore functionality) Cancels the delivery that is set to be processed/picked by store personnel. The cancellation can only occur if the\ndelivery has not been already reported or cancelled.",
        "operationId": "cancelDeliveryInStore",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "description": "The identifier of the delivery to cancel",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The delivery was cancelled successfully"
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Cancel in-store shipment",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Shipment API",
        "x-viskan-scope": "viskan:shipment:cancel"
      }
    },
    "/order-management/delivery/deliveries/{deliveryId}/_mark-as-being-picked-in-store": {
      "post": {
        "description": "(InStore functionality) Updates the delivery to be processed/picked by store personnel. This will make sure no other system processes updates\nthe delivery.",
        "operationId": "pickDeliveryInStore",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "description": "The identifier of the delivery to use for the update",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The delivery was updated successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Mark as being picked in store",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Shipment API",
        "x-viskan-scope": "viskan:shipment:update"
      }
    },
    "/order-management/order/orders": {
      "get": {
        "description": "Searches for orders in the system.",
        "operationId": "search5",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "Filter on delivery country of order (ISO 3166-1 alpha-2 standard format). For example countryCode\u003dSE\u0026countryCode\u003dNO.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "customFieldValue",
            "in": "query",
            "description": "An optional filter on one/many custom field values. For example\ncustomFieldValue\u003d22468-15267-80\u0026customFieldValue\u003d22468-15267-81",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "An optional filter on customer id. Mutually exclusive with customer number. For example customerId\u003d1234",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "-1"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "An optional filter on customer number. Mutually exclusive with customer id. For example customerNumber\u003d8564",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeCanceledRows",
            "in": "query",
            "description": "An optional filter on whether or not to include canceled order rows.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "methodOfArrival",
            "in": "query",
            "description": "An optional filter on one/many method of arrivals. For example methodOfArrivals\u003dA09",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderId",
            "in": "query",
            "description": "An optional filter on one/many orderId. For example orderId\u003d123\u0026orderId\u003d789",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "An optional filter on one/many orderNumber For example orderNumber\u003dabc\u0026orderNumber\u003dxyz",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "processChain",
            "in": "query",
            "description": "Filter on current order processChain. For example processChain\u003dOUTORDER_CANCEL. \u003cb\u003eThe use of this filter is contingent\nupon the approval of Viskan.\u003c/b\u003e",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "processStatus",
            "in": "query",
            "description": "Filter on current order processStatus. For example processStatus\u003dSTARTED\u0026processStatus\u003dDONE. \u003cb\u003eThe use of this filter\nis contingent upon the approval of Viskan.\u003c/b\u003e",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "purchaseNumber",
            "in": "query",
            "description": "An optional filter on a single purchasenumber. For example purchaseNumber\u003d1234",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter on current order status. For example status\u003dCREATED\u0026status\u003dDELIVERED.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CANCELED",
                  "DELIVERY_CREATED",
                  "FULLY_DELIVERED",
                  "PART_DELIVERED",
                  "PLACED"
                ]
              }
            }
          },
          {
            "name": "webStoreNumber",
            "in": "query",
            "description": "An optional filter on one/many web store(s) where the order was placed. Only applicable for web orders,\nsubscription based orders and physical store orders are not supported by this filter. For example webStoreNumber\u003d888",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find orders",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Order API",
        "x-viskan-scope": "viskan:order:read"
      }
    },
    "/order-management/return/reasons": {
      "get": {
        "description": "Searches for return reasons in the system.",
        "operationId": "getReasons",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnReasonSearch"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find return reasons",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Return API",
        "x-viskan-scope": "viskan:returnreason:read"
      }
    },
    "/order-management/return/returns": {
      "get": {
        "description": "Searches for returns in the system.",
        "operationId": "search6",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "methodOfArrival",
            "in": "query",
            "description": "An optional filter on one/many method of arrivals. For example methodOfArrivals\u003dA09",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "purchaseNumber",
            "in": "query",
            "description": "An optional filter on a single purchasenumber. For example purchaseNumber\u003d1234",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "returnId",
            "in": "query",
            "description": "An optional filter on one/many returnId. For example returnId\u003d123\u0026returnId\u003d789",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "returnNumber",
            "in": "query",
            "description": "An optional filter on one/many returnNumber. For example returnNumber\u003dabc\u0026returnNumber\u003dxyz",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter on current return status. For example status\u003dCREATED\u0026status\u003dRECEIVED.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CANCELED",
                  "CREATED",
                  "RECEIVED",
                  "REPORTED"
                ]
              }
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "The ids of the warehouse . Mutually exclusive with warehouseNumber",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "warehouseNumber",
            "in": "query",
            "description": "The number of the warehouse we want returns for. Mutually exclusive with warehouseId",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "webStoreNumber",
            "in": "query",
            "description": "An optional filter on one/many web store(s) where the order was placed. Only applicable for web orders,\nsubscription based orders and physical store orders are not supported by this filter. For example webStoreNumber\u003d888",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find returns",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Return API",
        "x-viskan-scope": "viskan:return:read"
      }
    },
    "/order-management/return/returns/return": {
      "post": {
        "description": "Registers a return.",
        "operationId": "register2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReturnToCreate"
              }
            }
          },
          "description": "The return to create."
        },
        "responses": {
          "201": {
            "description": "The return was created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedReturn"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Create a return",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Return API",
        "x-viskan-scope": "viskan:return:create"
      }
    },
    "/order-management/return/returns/{returnId}": {
      "patch": {
        "description": "Updates a specific return.",
        "operationId": "update7",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnId",
            "in": "path",
            "required": true,
            "description": "The identifier of the return to update.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReturnChanges"
              }
            }
          },
          "description": "The changes to apply."
        },
        "responses": {
          "204": {
            "description": "The return was updated successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Update a return",
        "tags": [
          "Order management"
        ],
        "x-viskan-api-name": "Return API",
        "x-viskan-scope": "viskan:return:update"
      }
    },
    "/product-information/attribute/attribute1-groups": {
      "get": {
        "description": "Search for attribute1 groups.",
        "operationId": "searchAttributeGroups",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attribute1GroupResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "1. Find attribute1 groups",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Attribute API",
        "x-viskan-scope": "viskan:attribute1group:read"
      },
      "post": {
        "description": "Create or update an attribute1 group.",
        "operationId": "createOrUpdateAttributeGroup",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Attribute1GroupChanges"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Success",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "2. Create or update an attribute1 group",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Attribute API",
        "x-viskan-scope": "viskan:attribute1group:update"
      }
    },
    "/product-information/category/tree": {
      "get": {
        "description": "Returns a tree of categories",
        "operationId": "search7",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categoryType",
            "in": "query",
            "description": "The type of category the tree will contain.",
            "schema": {
              "type": "string",
              "enum": [
                "CUSTOMER",
                "PRODUCT"
              ],
              "default": "PRODUCT"
            }
          },
          {
            "name": "rootCategoryId",
            "in": "query",
            "description": "The root of the tree.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Category"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Get a category tree",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Category API",
        "x-viskan-scope": "viskan:productcategory:read"
      }
    },
    "/product-information/media/medias": {
      "get": {
        "description": "Searches for media of stock keeping units in the system.",
        "operationId": "search8",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "priceLookUpNumber",
            "in": "query",
            "description": "Filter on the price look-up number of stock keeping units.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "priceLookupUnitNumber",
            "in": "query",
            "description": "Filter on the price lookup unit number of stock keeping units. \u003cb\u003eDeprecated\u003c/b\u003e in favor of\n\u003ccode\u003epriceLookUpNumbers\u003c/code\u003e due to a typo.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "productNumber",
            "in": "query",
            "description": "Filter on the product number of stock keeping units.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "scale",
            "in": "query",
            "description": "The scales to fetch media in.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "LARGE",
                  "LIST",
                  "NORMAL",
                  "ORIGINAL",
                  "THUMBNAIL"
                ]
              }
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MediaResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find product media",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Media API",
        "x-viskan-scope": "viskan:media:read"
      },
      "post": {
        "description": "Saves media to media directory \u0026 database. Max batch size is 100.",
        "operationId": "saveMedia",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The changes to apply.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/MediaChanges"
                }
              }
            }
          },
          "description": "The changes to apply."
        },
        "responses": {
          "201": {
            "description": "The medias were successfully created/overwritten.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The medias were successfully created/overwritten.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Create product media",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Media API",
        "x-viskan-scope": "viskan:media:create"
      }
    },
    "/product-information/price/prices": {
      "patch": {
        "description": "Updates existing prices or add new prices in the product information management system.",
        "operationId": "update8",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The product prices to update or add.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PriceChanges"
                }
              }
            }
          },
          "description": "The product prices to update or add."
        },
        "responses": {
          "204": {
            "description": "The article-prices were successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The article-prices were successfully updated.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Update prices",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Price API",
        "x-viskan-scope": "viskan:product:update"
      }
    },
    "/product-information/product/deactivate/{productId}": {
      "post": {
        "description": "Deactivates a product.",
        "operationId": "delete2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productId",
            "in": "path",
            "description": "The product to deactivate.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "The deactivation was successful."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Deactivate a product",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:update"
      }
    },
    "/product-information/product/packages": {
      "post": {
        "description": "Creates new flexible package products given that the related articles already exist",
        "operationId": "createPackages",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackagesToAddOrUpdate"
              }
            }
          },
          "description": "The packages to add or update"
        },
        "responses": {
          "204": {
            "description": "Package products were successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Package products were successfully created.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Create a flexible package product",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:update"
      }
    },
    "/product-information/product/products": {
      "get": {
        "description": "Searches for products in the system.",
        "operationId": "search9",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "europeanArticleNumber",
            "in": "query",
            "description": "Filter on a list of EAN-codes. This is mutually exclusive with \u003ccode\u003eproductNumber\u003c/code\u003e, \u003ccode\u003epriceLookUpNumber\u003c/code\u003e and \u003ccode\u003eeuropeanArticleNumber\u003c/code\u003e.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "includeProperties",
            "in": "query",
            "description": "Whether or not to include properties.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "onlyModifiedStockKeepingUnits",
            "in": "query",
            "description": "Filter modified stock keeping units on last modification date.\nModifiedAfter is required when OnlyModifiedStockKeepingUnits is specified.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "onlyProductsWithReducedPrice",
            "in": "query",
            "description": "Filter on products that do not have any reduced prices. Only filters by checking current sales price\nagainst the original price of a product.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "priceLookUpNumber",
            "in": "query",
            "description": "Filter on a list of PLU-nos. This is mutually exclusive with \u003ccode\u003eproductNumber\u003c/code\u003e, \u003ccode\u003epriceLookUpNumber\u003c/code\u003e and \u003ccode\u003eeuropeanArticleNumber\u003c/code\u003e.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "productNumber",
            "in": "query",
            "description": "Filter on a list of product numbers. This is mutually exclusive with \u003ccode\u003eproductNumber\u003c/code\u003e, \u003ccode\u003epriceLookUpNumber\u003c/code\u003e and \u003ccode\u003eeuropeanArticleNumber\u003c/code\u003e.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find products",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:read"
      },
      "post": {
        "description": "Creates new or updates existing products.",
        "operationId": "update9",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductChanges"
              }
            }
          },
          "description": "The changes to apply."
        },
        "responses": {
          "204": {
            "description": "The products were successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The products were successfully created or updated.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Create or update products",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:update"
      }
    },
    "/product-information/product/related-products": {
      "post": {
        "description": "Creates or updates related products.",
        "operationId": "createOrUpdate",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "partialSave",
            "in": "query",
            "required": true,
            "description": "If true then related products that pass validation will be saved even when an error occors.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedProductChanges"
              }
            }
          },
          "description": "New or changed related products to apply"
        },
        "responses": {
          "204": {
            "description": "Related products were successfully created or updated.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Related products were successfully created or updated.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Create or update related products",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:update"
      }
    },
    "/product-information/product/related-products/delete": {
      "post": {
        "description": "Deletes related products.",
        "operationId": "deleteRelatedArticles",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedProductDeletes"
              }
            }
          },
          "description": "related products and (or) corresponding relation translations to delete"
        },
        "responses": {
          "204": {
            "description": "Related products were successfully deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Related products were successfully deleted.",
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Delete related products",
        "tags": [
          "Product"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:product:update"
      }
    },
    "/warehouse-management/delivery-method/delivery-methods": {
      "get": {
        "description": "Gets all available delivery methods in the system.",
        "operationId": "getDeliveryMethods2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. More \u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryMethodResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find shipping methods",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Shipping method API",
        "x-viskan-scope": "viskan:shippingmethod:read"
      }
    },
    "/warehouse-management/purchase-order/purchase-orders": {
      "get": {
        "description": "Searches for purchase orders in the system.",
        "operationId": "search10",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. More \u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "query",
            "description": "An optional filter on one/many purchaseOrderId. For example purchaseOrderId\u003d123\u0026purchaseOrderId\u003d789",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "purchaseOrderNumber",
            "in": "query",
            "description": "An optional filter on one/many purchaseOrderNumber For example purchaseOrderNumber\u003dabc\u0026purchaseOrderNumber\u003dxyz",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter on current return status. For example status\u003dCREATED\u0026status\u003dDELIVERED.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CANCELED",
                  "CREATED",
                  "DELIVERED",
                  "PART_DELIVERED",
                  "PLANNED"
                ]
              }
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "The ids of the warehouse . Mutually exclusive with warehouseNumber",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "warehouseNumber",
            "in": "query",
            "description": "The number of the warehouse we want purchase for. Mutually exclusive with warehouseId",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find purchase orders",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Purchase order API",
        "x-viskan-scope": "viskan:purchaseorder:read"
      }
    },
    "/warehouse-management/purchase-order/purchase-orders/{purchaseOrderId}": {
      "patch": {
        "description": "Updates a specific purchase order.",
        "operationId": "update10",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "description": "The identifier of the purchase order to update.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderChanges"
              }
            }
          },
          "description": "The changes to apply."
        },
        "responses": {
          "204": {
            "description": "The purchase order was updated successfully."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Update a purchase order",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Purchase order API",
        "x-viskan-scope": "viskan:purchaseorder:update"
      }
    },
    "/warehouse-management/stock-balance/reservations": {
      "post": {
        "description": "Creates new or updates existing reservations in the warehouse management system.",
        "operationId": "reserve",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The reservations to create or update.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ReservationRequest"
                }
              }
            }
          },
          "description": "The reservations to create or update."
        },
        "responses": {
          "204": {
            "description": "The reservations were successfully created or updated."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Create/update reservations",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Stock balance API",
        "x-viskan-scope": "viskan:stockreservation:create"
      }
    },
    "/warehouse-management/stock-balance/stock-balances": {
      "get": {
        "description": "Searches for stock balances in the system.",
        "operationId": "search11",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "europeanArticleNumber",
            "in": "query",
            "description": "Filter on the European article number of stock keeping units.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "modifiedAfter",
            "in": "query",
            "description": "Filter on last modification date. Useful for getting delta-changes. More\n\u003ca href\u003d\"../general-information/index.html#modifiedAfter\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "priceLookUpNumber",
            "in": "query",
            "description": "Filter on the price look-up number of stock keeping units.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "priceLookupNumber",
            "in": "query",
            "description": "Filter on the price look-up number of stock keeping units. \u003cb\u003eDeprecated\u003c/b\u003e in favor of\n\u003ccode\u003epriceLookUpNumber\u003c/code\u003e due to a typo.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "priceLookupUnitNumber",
            "in": "query",
            "description": "Filter on the price look-up number of stock keeping units. \u003cb\u003eDeprecated\u003c/b\u003e in favor of\n\u003ccode\u003epriceLookUpNumber\u003c/code\u003e due to a typo.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. Not usable together with any of the filters. More\n\u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stockKeepingUnitId",
            "in": "query",
            "description": "Filter on the internal identifier of stock keeping units.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "Filter on warehouse by their internal number.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "warehouseNumber",
            "in": "query",
            "description": "Filter on the external number of warehouses.",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockBalanceResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find stock balances",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Stock balance API",
        "x-viskan-scope": "viskan:stockbalance:read"
      },
      "post": {
        "description": "Creates new or updates existing stock balances in the warehouse management system.",
        "operationId": "createOrUpdate2",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "The stock balances to create or update.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StockBalanceUpdate"
                }
              }
            }
          },
          "description": "The stock balances to create or update."
        },
        "responses": {
          "204": {
            "description": "The stock balances were successfully created or updated."
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body."
          }
        },
        "summary": "Create/update balances",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Stock balance API",
        "x-viskan-scope": "viskan:stockbalance:update"
      }
    },
    "/warehouse-management/stock-location/stock-locations": {
      "get": {
        "description": "Searches for stock locations with optional filters, sorting, and pagination.",
        "operationId": "find_2",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "warehouseId",
            "in": "query",
            "description": "Filter by warehouse identifier.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "Keyword to search by description.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found stock locations.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StocklocationListItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find stock locations",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Stock Location API",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:warehouse:read"
      }
    },
    "/warehouse-management/supplier/suppliers": {
      "get": {
        "description": "Gets all available suppliers in the system.",
        "operationId": "getSuppliers",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SupplierResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find suppliers",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Supplier API",
        "x-viskan-scope": "viskan:supplier:read"
      }
    },
    "/warehouse-management/warehouse-v2/warehouses": {
      "get": {
        "description": "Searches for warehouses with optional filters, sorting, and pagination.",
        "operationId": "find",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "The page number to retrieve. The first page is 1. Cannot be less than 1.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The size of the pages to retrieve. The default is 10. Cannot be less than 1 and larger than 100.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "active",
            "in": "query",
            "description": "Filter by active status.",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ALL",
                "ACTIVE",
                "INACTIVE"
              ]
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "Keyword to search by name, number, or city.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the found warehouses.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WarehouseListItem"
                  }
                }
              }
            }
          }
        },
        "summary": "Find warehouses",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Warehouse API V2",
        "x-viskan-error-code-invalid-page": "The given page is invalid.",
        "x-viskan-error-code-invalid-page-size": "The given page size is invalid.",
        "x-viskan-scope": "viskan:warehouse:read"
      },
      "post": {
        "description": "Creates a new warehouse.",
        "operationId": "create",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WarehouseCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The warehouse was created successfully.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/WarehouseCreatedResponse"
                }
              }
            }
          }
        },
        "summary": "Create a warehouse",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Warehouse API V2",
        "x-viskan-error-code-warehouse-name-is-unavailable": "Warehouse name already exists.",
        "x-viskan-error-code-warehouse-number-is-unavailable": "Warehouse number already exists.",
        "x-viskan-scope": "viskan:warehouse:create"
      }
    },
    "/warehouse-management/warehouse-v2/warehouses/{warehouseId}": {
      "delete": {
        "description": "Deletes a warehouse by its unique identifier.",
        "operationId": "delete",
        "parameters": [
          {
            "name": "warehouseId",
            "in": "path",
            "description": "The unique identifier of the warehouse to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The warehouse was deleted successfully."
          }
        },
        "summary": "Delete a warehouse",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Warehouse API V2",
        "x-viskan-error-code-warehouse-not-found": "Warehouse does not exist.",
        "x-viskan-scope": "viskan:warehouse:delete"
      },
      "get": {
        "description": "Get a warehouse by its unique identifier.",
        "operationId": "find_1",
        "parameters": [
          {
            "name": "warehouseId",
            "in": "path",
            "description": "The unique identifier of the warehouse.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the warehouse.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/WarehouseResponse"
                }
              }
            }
          }
        },
        "summary": "Get a warehouse",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Warehouse API V2",
        "x-viskan-error-code-warehouse-not-found": "Warehouse does not exist.",
        "x-viskan-scope": "viskan:warehouse:read"
      },
      "patch": {
        "description": "Update the details of a warehouse.",
        "operationId": "update",
        "parameters": [
          {
            "name": "warehouseId",
            "in": "path",
            "description": "The unique identifier of the warehouse to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WarehouseUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The warehouse was updated successfully."
          }
        },
        "summary": "Update a warehouse",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Warehouse API V2",
        "x-viskan-error-code-warehouse-name-is-unavailable": "Warehouse name already exists.",
        "x-viskan-error-code-warehouse-not-found": "Warehouse does not exist.",
        "x-viskan-error-code-warehouse-number-is-unavailable": "Warehouse number already exists.",
        "x-viskan-scope": "viskan:warehouse:update"
      }
    },
    "/warehouse-management/warehouse/warehouses": {
      "get": {
        "description": "Gets all available warehouses in the system.",
        "operationId": "getWarehouses",
        "parameters": [
          {
            "name": "X-Instance-Id",
            "in": "header",
            "description": "Identifies the merchant instance, required for all API calls.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Language",
            "in": "header",
            "description": "Specifies the requested language of a resource, for example \u003ccode\u003esv\u003c/code\u003e. If not present, this will default to a pre-configured language, most commonly \u003ccode\u003een\u003c/code\u003e.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page to search for.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "1"
            }
          },
          {
            "name": "resultsPerPage",
            "in": "query",
            "description": "The number of results per page. Must be a value between \u003ccode\u003e1\u003c/code\u003e and \u003ccode\u003e200\u003c/code\u003e.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchId",
            "in": "query",
            "description": "The search ID to use for continued pages. More \u003ca href\u003d\"../general-information/index.html#searchId\"\u003edetails\u003c/a\u003e.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The search was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WarehouseResult"
                }
              }
            }
          },
          "400": {
            "description": "Given input parameters are incorrect, a more descriptive error message is provided in the response body.",
            "content": {
              "application/json": {}
            }
          }
        },
        "summary": "Find warehouses",
        "tags": [
          "Warehouse management"
        ],
        "x-viskan-api-name": "Warehouse API",
        "x-viskan-scope": "viskan:warehouse:read"
      }
    },
    "/web-pages/draft/drafts": {
      "get": {
        "description": "Returns a list of drafts. Does not return any information about content of the draft.",
        "operationId": "findDrafts",
        "parameters": [
          {
            "name": "webStoreId",
            "in": "query",
            "description": "Identifier of the web store that the draft belongs to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of drafts.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DraftListResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Find drafts",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Draft API",
        "x-viskan-scope": "viskan:draft:read"
      },
      "post": {
        "description": "Creates a draft. Does not create any content.",
        "operationId": "createDraft",
        "parameters": [
          {
            "name": "webStoreId",
            "in": "query",
            "description": "Identifier of the web store that the draft belongs to.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDraftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The response contains the identifier of the newly created draft.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDraftResponse"
                }
              }
            }
          }
        },
        "summary": "Create draft",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Draft API",
        "x-viskan-error-code-web-pages.create-draft.draft-name-required": "Draft name is required.",
        "x-viskan-error-code-web-pages.create-draft.web-store-not-found": "Specified web store was not found.",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}": {
      "delete": {
        "description": "Deletes a draft by ID.",
        "operationId": "deleteDraft",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The draft was successfully deleted."
          }
        },
        "summary": "Delete draft",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Draft API",
        "x-viskan-error-code-web-pages.delete-draft.draft-not-found": "The specified draft could not be found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Retrieves a draft by ID alongside any changes that were made in this draft compared to the current publishment. If a variable is changed, then it is reflected as a section change. If a variable value is changed, then it is reflected as a change of page.",
        "operationId": "retrieveDraft",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The draft details and any changes compared to the current publishment.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/DraftItemResponse"
                }
              }
            }
          }
        },
        "summary": "Retrieve draft",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Draft API",
        "x-viskan-error-code-web-pages.category-tree.cyclic-dependency": "Cyclic dependency detected in category tree.",
        "x-viskan-error-code-web-pages.retrieve-draft.draft-not-found": "The specified draft could not be found.",
        "x-viskan-error-code-web-pages.retrieve-draft.layout-not-found": "Layout not found.",
        "x-viskan-error-code-web-pages.retrieve-draft.section-not-found": "Section not found.",
        "x-viskan-error-code-web-pages.retrieve-draft.start-page-category-not-found": "Start page category for the web store was not found.",
        "x-viskan-error-code-web-pages.retrieve-draft.web-store-not-found": "Web store specified on draft was not found.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a draft by ID.",
        "operationId": "updateDraft",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDraftRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The draft was updated successfully."
          }
        },
        "summary": "Update draft",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Draft API",
        "x-viskan-error-code-web-pages.update-draft.draft-name-blank": "Draft name cannot be blank.",
        "x-viskan-error-code-web-pages.update-draft.draft-not-found": "The specified draft could not be found.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/_publish": {
      "post": {
        "description": "Publishes a draft. Overwrites the sent content of a category using draft tables, and deletes the row from the Draft as well as associated Draft tables.",
        "operationId": "publishDraft",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The draft was successfully published and the associated draft entries were removed."
          }
        },
        "summary": "Publish draft",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Draft API",
        "x-viskan-error-code-web-pages.category-tree.cyclic-dependency": "Cyclic dependency detected in category tree.",
        "x-viskan-error-code-web-pages.publish-draft.category-tree-read-json-failed": "Failed to read category tree from JSON.",
        "x-viskan-error-code-web-pages.publish-draft.category-tree-write-json-failed": "Failed to convert category tree to JSON.",
        "x-viskan-error-code-web-pages.publish-draft.draft-json-failed": "Failed to convert draft to JSON.",
        "x-viskan-error-code-web-pages.publish-draft.draft-not-found": "The specified draft could not be found.",
        "x-viskan-error-code-web-pages.publish-draft.hierarchy-too-deep": "Category hierarchy exceeds maximum depth of 9 levels.",
        "x-viskan-error-code-web-pages.publish-draft.start-page-category-not-found": "Start page category for the web store was not found.",
        "x-viskan-error-code-web-pages.publish-draft.web-store-not-found": "Specified web store was not found.",
        "x-viskan-error-code-web-pages.web-store.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-pages.web-store.language-code-invalid": "Language code is invalid.",
        "x-viskan-error-code-web-store.store-setting.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-store.store-setting.language-code-invalid": "Language code is invalid.",
        "x-viskan-scope": "viskan:draft:publish"
      }
    },
    "/web-pages/draft/drafts/{draftId}/categories": {
      "post": {
        "description": "Creates a category.",
        "operationId": "createCategory",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Category successfully created.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCategoryResponse"
                }
              }
            }
          }
        },
        "summary": "Create category",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Category API",
        "x-viskan-error-code-web-pages.create-category.category-name-required": "Category name is required.",
        "x-viskan-error-code-web-pages.create-category.category-name-too-long": "Category name cannot exceed 30 characters.",
        "x-viskan-error-code-web-pages.create-category.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.create-category.fallback-category-not-found": "Protection fallback category not found in the category tree.",
        "x-viskan-error-code-web-pages.create-category.fallback-category-protection-level-invalid": "Protection fallback category cannot be set if protection level is NONE.",
        "x-viskan-error-code-web-pages.create-category.parent-category-not-found": "Parent category with specified ID was not found in the category tree.",
        "x-viskan-error-code-web-pages.create-category.parent-category-removed": "Parent category has been removed.",
        "x-viskan-error-code-web-pages.create-category.sibling-category-does-not-have-same-parent": "Sibling category with specified ID does not have the same parent category as the new category being created.",
        "x-viskan-error-code-web-pages.create-category.sibling-category-not-found": "Sibling category with specified ID was not found in the category tree.",
        "x-viskan-error-code-web-pages.create-category.sibling-category-removed": "Sibling category has been removed.",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}/categories/{categoryId}": {
      "delete": {
        "description": "Deletes a category by ID.",
        "operationId": "deleteCategory",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryId",
            "in": "path",
            "description": "Identifier of the category. Categories form a hierarchical tree structure that organizes pages.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Category successfully deleted."
          }
        },
        "summary": "Delete category",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Category API",
        "x-viskan-error-code-web-pages.delete-category.category-in-use": "Category that is used by a page cannot be deleted.",
        "x-viskan-error-code-web-pages.delete-category.category-not-found": "Category not found.",
        "x-viskan-error-code-web-pages.delete-category.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Retrieves a category by ID.",
        "operationId": "retrieveCategory",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryId",
            "in": "path",
            "description": "Identifier of the category. Categories form a hierarchical tree structure that organizes pages.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Category successfully retrieved.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryResponse"
                }
              }
            }
          }
        },
        "summary": "Retrieve category",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Category API",
        "x-viskan-error-code-web-pages.retrieve-category.category-not-found": "Could not find the category by ID.",
        "x-viskan-error-code-web-pages.retrieve-category.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a category by ID.",
        "operationId": "updateCategory",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryId",
            "in": "path",
            "description": "Identifier of the category. Categories form a hierarchical tree structure that organizes pages.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCategoryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Category successfully updated."
          }
        },
        "summary": "Update category",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Category API",
        "x-viskan-error-code-web-pages.update-category.cannot-remove-system-category": "A system category cannot be removed.",
        "x-viskan-error-code-web-pages.update-category.category-for-removal-not-found": "Category for removal not found.",
        "x-viskan-error-code-web-pages.update-category.category-in-use": "Category that is used by a page cannot be removed.",
        "x-viskan-error-code-web-pages.update-category.category-name-blank": "Category name cannot be blank.",
        "x-viskan-error-code-web-pages.update-category.category-name-too-long": "Category name cannot exceed 30 characters.",
        "x-viskan-error-code-web-pages.update-category.category-not-found": "Category not found.",
        "x-viskan-error-code-web-pages.update-category.circular-dependency": "Circular dependency detected.",
        "x-viskan-error-code-web-pages.update-category.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-category.fallback-category-circular-dependency": "Protection fallback category cannot be the same as the category being updated.",
        "x-viskan-error-code-web-pages.update-category.fallback-category-not-found": "Protection fallback category not found in the category tree.",
        "x-viskan-error-code-web-pages.update-category.fallback-category-without-protection": "Cannot set a protection fallback category when the protection level is NONE.",
        "x-viskan-error-code-web-pages.update-category.invalid-uuid": "The provided string is not a valid UUID.",
        "x-viskan-error-code-web-pages.update-category.own-sibling": "A category cannot be its own sibling.",
        "x-viskan-error-code-web-pages.update-category.parent-category-not-found": "Parent category not found.",
        "x-viskan-error-code-web-pages.update-category.parent-category-removed": "Parent category has been removed.",
        "x-viskan-error-code-web-pages.update-category.protection-none-with-existing-fallback": "Cannot set protection level to NONE when a protection fallback category is assigned.",
        "x-viskan-error-code-web-pages.update-category.sibling-category-does-not-have-same-parent": "Sibling category does not have the same parent.",
        "x-viskan-error-code-web-pages.update-category.sibling-category-not-found": "Sibling category not found.",
        "x-viskan-error-code-web-pages.update-category.sibling-category-removed": "Sibling category has been removed.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/layouts": {
      "get": {
        "description": "Returns a list of layouts in a draft.",
        "operationId": "findLayouts",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of layouts.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LayoutListResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Find layouts",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Layout API",
        "x-viskan-error-code-web-pages.list-layouts.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "post": {
        "description": "Creates a layout. Optionally, assigns sections to the created layout.",
        "operationId": "createLayout",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLayoutRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The layout was successfully created.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateLayoutResponse"
                }
              }
            }
          }
        },
        "summary": "Create layout",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Layout API",
        "x-viskan-error-code-web-pages.create-layout.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.create-layout.layout-name-required": "Layout name is required.",
        "x-viskan-error-code-web-pages.create-layout.layout-type-required": "Layout type is required.",
        "x-viskan-error-code-web-pages.create-layout.section-id-required": "Section ID is required.",
        "x-viskan-error-code-web-pages.create-layout.section-not-found": "Could not find the specified section by ID.",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}/layouts/{layoutId}": {
      "delete": {
        "description": "Deletes a layout by ID.",
        "operationId": "deleteLayout",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "layoutId",
            "in": "path",
            "description": "Identifier of the layout. A layout defines the structure of a page by specifying which sections are included.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The layout was successfully deleted."
          }
        },
        "summary": "Delete layout",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Layout API",
        "x-viskan-error-code-web-pages.delete-layout.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.delete-layout.layout-in-use": "Layout that is used within a page cannot be deleted.",
        "x-viskan-error-code-web-pages.delete-layout.layout-not-found": "Layout not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Gets information about layout including sections and variables.",
        "operationId": "retrieveLayout",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "layoutId",
            "in": "path",
            "description": "Identifier of the layout. A layout defines the structure of a page by specifying which sections are included.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The layout information including sections and variables.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LayoutItemResponse"
                }
              }
            }
          }
        },
        "summary": "Get layout",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Layout API",
        "x-viskan-error-code-web-pages.retrieve-layout.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.retrieve-layout.layout-not-found": "Could not find the layout by ID.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a layout by ID.",
        "operationId": "updateLayout",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "layoutId",
            "in": "path",
            "description": "Identifier of the layout. A layout defines the structure of a page by specifying which sections are included.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLayoutRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The layout was updated successfully."
          }
        },
        "summary": "Update layout",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Layout API",
        "x-viskan-error-code-web-pages.update-layout.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-layout.duplicate-layout-section-ids": "Duplicate layout section IDs found.",
        "x-viskan-error-code-web-pages.update-layout.layout-for-removal-not-found": "Layout for removal not found.",
        "x-viskan-error-code-web-pages.update-layout.layout-in-use": "Layout that is used within a page cannot be removed.",
        "x-viskan-error-code-web-pages.update-layout.layout-name-blank": "Layout name cannot be blank.",
        "x-viskan-error-code-web-pages.update-layout.layout-not-found": "Layout not found.",
        "x-viskan-error-code-web-pages.update-layout.layout-section-is-for-another-section": "Layout section belongs to a different section.",
        "x-viskan-error-code-web-pages.update-layout.section-id-required": "Section ID is required.",
        "x-viskan-error-code-web-pages.update-layout.section-not-found": "Section not found.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/locales": {
      "get": {
        "description": "Returns a list of locales in a draft.",
        "operationId": "findLocales",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of locales.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LocaleListResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Find locales",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Locale API",
        "x-viskan-error-code-web-pages.list-locales.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:read"
      }
    },
    "/web-pages/draft/drafts/{draftId}/locales/{contentLocaleId}": {
      "delete": {
        "description": "Deletes a locale by ID.",
        "operationId": "deleteLocale",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "contentLocaleId",
            "in": "path",
            "description": "Identifier of the content locale. A content locale represents a language and country combination for content translation.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The locale was successfully deleted."
          }
        },
        "summary": "Delete locale",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Locale API",
        "x-viskan-error-code-web-pages.delete-locale.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.delete-locale.locale-not-found": "Locale not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Gets information about a locale including country settings.",
        "operationId": "retrieveLocale",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "contentLocaleId",
            "in": "path",
            "description": "Identifier of the content locale. A content locale represents a language and country combination for content translation.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The locale information including country settings.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LocaleItemResponse"
                }
              }
            }
          }
        },
        "summary": "Get locale",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Locale API",
        "x-viskan-error-code-web-pages.retrieve-locale.draft-not-found": "Could not find the draft by ID.",
        "x-viskan-error-code-web-pages.retrieve-locale.locale-not-found": "Could not find the locale by ID.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a locale by ID.",
        "operationId": "updateLocale",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "contentLocaleId",
            "in": "path",
            "description": "Identifier of the content locale. A content locale represents a language and country combination for content translation.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLocaleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The locale was updated successfully."
          }
        },
        "summary": "Update locale",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Locale API",
        "x-viskan-error-code-web-pages.update-locale.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-pages.update-locale.country-code-required": "Country code is required.",
        "x-viskan-error-code-web-pages.update-locale.country-codes-do-not-match": "Country codes do not match the published locale.",
        "x-viskan-error-code-web-pages.update-locale.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-locale.enabled-required": "Enabled is required.",
        "x-viskan-error-code-web-pages.update-locale.locale-not-found": "Locale not found.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/pages": {
      "post": {
        "description": "Creates a page.",
        "operationId": "createPage",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The page was successfully created.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePageResponse"
                }
              }
            }
          }
        },
        "summary": "Create page",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Page API",
        "x-viskan-error-code-web-pages.create-page.category-id-required": "Category ID is required.",
        "x-viskan-error-code-web-pages.create-page.category-not-found": "Could not find the category by ID.",
        "x-viskan-error-code-web-pages.create-page.country-code-invalid": "Country is invalid.",
        "x-viskan-error-code-web-pages.create-page.country-code-required": "Country code is required.",
        "x-viskan-error-code-web-pages.create-page.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.create-page.language-code-invalid": "Language is invalid.",
        "x-viskan-error-code-web-pages.create-page.language-code-required": "Language code is required.",
        "x-viskan-error-code-web-pages.create-page.layout-id-required": "Layout ID is required.",
        "x-viskan-error-code-web-pages.create-page.layout-not-found": "Could not find the layout by ID.",
        "x-viskan-error-code-web-pages.create-page.layout-section-id-required": "Layout section ID is required.",
        "x-viskan-error-code-web-pages.create-page.locale-not-found": "Could not find the locale by ID or by country code and language code combination.",
        "x-viskan-error-code-web-pages.create-page.page-for-category-already-exists": "A page with specified category already exists for selected country code and language code.",
        "x-viskan-error-code-web-pages.create-page.page-for-path-already-exists": "A page with specified path already exists for selected country code and language code.",
        "x-viskan-error-code-web-pages.create-page.path-invalid": "Web-page path must start with a slash (/) and should not end with a slash.",
        "x-viskan-error-code-web-pages.create-page.section-is-not-part-of-the-layout": "The layout section was not found in the current page\u0027s layout.",
        "x-viskan-error-code-web-pages.create-page.title-required": "Title is required.",
        "x-viskan-error-code-web-pages.create-page.variable-id-required": "Variable ID is required.",
        "x-viskan-error-code-web-pages.create-page.variable-is-not-part-of-the-section-variables": "The variable was not found in the requested layout section.",
        "x-viskan-error-code-web-pages.create-page.variable-value-required": "Variable value is required.",
        "x-viskan-error-code-web-pages.create-page.web-store-not-found": "Could not find the web-store by ID.",
        "x-viskan-error-code-web-pages.create-page.wrong-locale": "Provide either contentLocaleId, or both languageCode and countryCode (exclusively).",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}/pages/_search": {
      "post": {
        "description": "Gets information about a page including variable values.",
        "operationId": "pageSearch",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "Country code (in ISO 3166-1 alpha-2 format) of the page. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code (in ISO 639-1 format) of the page. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contentLocaleId",
            "in": "query",
            "description": "The content locale of the page. This or countryCode and languageCode combination must be provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryId",
            "in": "query",
            "description": "ID of a category. This or path must be provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "path",
            "in": "query",
            "description": "URL path for this page. This or categoryId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The page and its variable values.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageSearchResponse"
                }
              }
            }
          }
        },
        "summary": "Search pages",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Page API",
        "x-viskan-error-code-web-pages.search-page.category-id-and-path-are-mutually-exclusive": "Category ID and path are mutually exclusive.",
        "x-viskan-error-code-web-pages.search-page.category-id-or-path-required": "Either category ID or path must be provided.",
        "x-viskan-error-code-web-pages.search-page.category-not-found": "Could not find the category by ID.",
        "x-viskan-error-code-web-pages.search-page.content-locale-id-is-exclusive-with-country-code-and-language-code": "Content locale ID is exclusive with country code and language code.",
        "x-viskan-error-code-web-pages.search-page.content-locale-id-or-country-code-and-language-code-required": "Either content locale ID, or both country code and language code must be provided.",
        "x-viskan-error-code-web-pages.search-page.country-code-invalid": "Specified country code is invalid.",
        "x-viskan-error-code-web-pages.search-page.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.search-page.language-code-invalid": "Specified language code is invalid.",
        "x-viskan-error-code-web-pages.search-page.locale-not-found": "Could not find the locale by ID or by country code and language code combination.",
        "x-viskan-error-code-web-pages.search-page.page-not-found": "Could not find the page.",
        "x-viskan-error-code-web-pages.search-page.web-store-not-found": "Web store not found.",
        "x-viskan-scope": "viskan:draft:read"
      }
    },
    "/web-pages/draft/drafts/{draftId}/pages/{pageId}": {
      "delete": {
        "description": "Deletes a page by ID.",
        "operationId": "deletePage",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "pageId",
            "in": "path",
            "description": "Identifier of the page. A page represents a web page within a category and contains a layout, sections, and content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The page was successfully deleted."
          }
        },
        "summary": "Delete page",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Page API",
        "x-viskan-error-code-web-pages.delete-page.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.delete-page.page-not-found": "Page not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Retrieves a page by ID.",
        "operationId": "retrievePage",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "pageId",
            "in": "path",
            "description": "Identifier of the page. A page represents a web page within a category and contains a layout, sections, and content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The page details are successfully retrieved.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageResponse"
                }
              }
            }
          }
        },
        "summary": "Get page",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Page API",
        "x-viskan-error-code-web-pages.retrieve-page.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.retrieve-page.layout-not-found": "Could not find the layout by ID.",
        "x-viskan-error-code-web-pages.retrieve-page.page-not-found": "Could not find the page by ID.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a page by ID.",
        "operationId": "updatePage",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "pageId",
            "in": "path",
            "description": "Identifier of the page. A page represents a web page within a category and contains a layout, sections, and content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The page was updated successfully."
          }
        },
        "summary": "Update page",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Page API",
        "x-viskan-error-code-web-pages.update-page.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-page.layout-not-found": "Layout not found.",
        "x-viskan-error-code-web-pages.update-page.layout-section-id-required": "Layout section ID is required.",
        "x-viskan-error-code-web-pages.update-page.page-for-path-already-exists": "A page for the given path already exists.",
        "x-viskan-error-code-web-pages.update-page.page-for-removal-not-found": "Page for removal not found.",
        "x-viskan-error-code-web-pages.update-page.page-not-found": "Page not found.",
        "x-viskan-error-code-web-pages.update-page.path-blank": "Path cannot be blank.",
        "x-viskan-error-code-web-pages.update-page.path-invalid": "Path is invalid.",
        "x-viskan-error-code-web-pages.update-page.section-is-not-part-of-the-layout": "Section is not part of the layout.",
        "x-viskan-error-code-web-pages.update-page.title-blank": "Title cannot be blank.",
        "x-viskan-error-code-web-pages.update-page.variable-id-required": "Variable ID is required.",
        "x-viskan-error-code-web-pages.update-page.variable-is-not-part-of-the-section-variables": "Variable is not part of the section variables.",
        "x-viskan-error-code-web-pages.update-page.variable-value-required": "Variable value is required.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/products": {
      "get": {
        "description": "Lists all product-to-layout connections in the draft.",
        "operationId": "listProducts",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of product-to-layout connections.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductListResponse_2"
                  }
                }
              }
            }
          }
        },
        "summary": "List products",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-error-code-web-pages.list-products.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:read"
      }
    },
    "/web-pages/draft/drafts/{draftId}/products/{productId}": {
      "delete": {
        "description": "Removes a product-to-layout connection from the draft.",
        "operationId": "deleteProduct",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "Identifier of the product to remove.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The product-to-layout connection was successfully removed."
          }
        },
        "summary": "Delete product",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-error-code-web-pages.delete-product.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.delete-product.product-not-found": "Product-to-layout connection not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Retrieves a product-to-layout connection.",
        "operationId": "retrieveProduct",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "Identifier of the product.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The product-to-layout connection details.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemResponse"
                }
              }
            }
          }
        },
        "summary": "Retrieve product",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-error-code-web-pages.retrieve-product.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.retrieve-product.product-not-found": "Product-to-layout connection not found.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a product-to-layout connection.",
        "operationId": "updateProduct",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "Identifier of the product.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProductRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The product-to-layout connection was successfully updated."
          }
        },
        "summary": "Update product",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-error-code-web-pages.update-product.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-product.layout-not-found": "Could not find the layout by ID.",
        "x-viskan-error-code-web-pages.update-product.layout-section-id-required": "Layout section ID is required.",
        "x-viskan-error-code-web-pages.update-product.product-for-removal-not-found": "Cannot remove product that is not published.",
        "x-viskan-error-code-web-pages.update-product.product-not-found": "Product-to-layout connection not found.",
        "x-viskan-error-code-web-pages.update-product.section-is-not-part-of-the-layout": "The layout section was not found in the specified layout.",
        "x-viskan-error-code-web-pages.update-product.variable-id-required": "Variable ID is required.",
        "x-viskan-error-code-web-pages.update-product.variable-is-not-part-of-the-section-variables": "The variable was not found in the requested layout section.",
        "x-viskan-error-code-web-pages.update-product.variable-value-required": "Variable value is required.",
        "x-viskan-scope": "viskan:draft:update"
      },
      "post": {
        "description": "Connects a product to a layout.",
        "operationId": "connectProduct",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "Identifier of the product to connect to a layout.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectProductRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The product was successfully connected to the layout."
          }
        },
        "summary": "Connect product",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-error-code-web-pages.connect-product.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.connect-product.layout-id-required": "Layout ID is required.",
        "x-viskan-error-code-web-pages.connect-product.layout-not-found": "Could not find the layout by ID.",
        "x-viskan-error-code-web-pages.connect-product.layout-section-id-required": "Layout section ID is required.",
        "x-viskan-error-code-web-pages.connect-product.product-already-connected": "Product is already connected to a layout.",
        "x-viskan-error-code-web-pages.connect-product.section-is-not-part-of-the-layout": "The layout section was not found in the specified layout.",
        "x-viskan-error-code-web-pages.connect-product.variable-id-required": "Variable ID is required.",
        "x-viskan-error-code-web-pages.connect-product.variable-is-not-part-of-the-section-variables": "The variable was not found in the requested layout section.",
        "x-viskan-error-code-web-pages.connect-product.variable-value-required": "Variable value is required.",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}/sections": {
      "get": {
        "description": "Returns a list of sections in a draft.",
        "operationId": "findSections",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of sections.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SectionListResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Find sections",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Section API",
        "x-viskan-error-code-web-pages.list-sections.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "post": {
        "description": "Creates a section.",
        "operationId": "createSection",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The section was successfully created.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSectionResponse"
                }
              }
            }
          }
        },
        "summary": "Create section",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Section API",
        "x-viskan-error-code-web-pages.create-section.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.create-section.section-name-required": "Section name is required.",
        "x-viskan-error-code-web-pages.create-section.section-type-required": "Section type is required.",
        "x-viskan-error-code-web-pages.create-section.variable-id-required": "Variable ID is required.",
        "x-viskan-error-code-web-pages.create-section.variable-name-required": "Variable name is required.",
        "x-viskan-error-code-web-pages.create-section.variable-type-required": "Variable type is required.",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}/sections/{sectionId}": {
      "delete": {
        "description": "Deletes a section by ID.",
        "operationId": "deleteSection",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "sectionId",
            "in": "path",
            "description": "Identifier of the section. A section is a reusable content block that can be included in layouts.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The section was successfully deleted."
          }
        },
        "summary": "Delete section",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Section API",
        "x-viskan-error-code-web-pages.delete-section.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.delete-section.section-in-use": "Section that is used within a layout cannot be deleted.",
        "x-viskan-error-code-web-pages.delete-section.section-not-found": "Section not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Retrieves a section by ID. Retrieves all variables alongside their values.",
        "operationId": "retrieveSection",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "sectionId",
            "in": "path",
            "description": "Identifier of the section. A section is a reusable content block that can be included in layouts.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The section details and associated variables.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/SectionItemResponse"
                }
              }
            }
          }
        },
        "summary": "Get section",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Section API",
        "x-viskan-error-code-web-pages.retrieve-section.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.retrieve-section.section-not-found": "Could not find the section by ID.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a section by ID.",
        "operationId": "updateSection",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "sectionId",
            "in": "path",
            "description": "Identifier of the section. A section is a reusable content block that can be included in layouts.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The section was updated successfully."
          }
        },
        "summary": "Update section",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Section API",
        "x-viskan-error-code-web-pages.update-section.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-section.section-for-removal-not-found": "Section for removal not found.",
        "x-viskan-error-code-web-pages.update-section.section-in-use": "Section that is used within a layout cannot be removed.",
        "x-viskan-error-code-web-pages.update-section.section-name-missing": "Section name is missing.",
        "x-viskan-error-code-web-pages.update-section.section-not-found": "Section not found.",
        "x-viskan-error-code-web-pages.update-section.variable-id-required": "Variable ID is required.",
        "x-viskan-error-code-web-pages.update-section.variable-name-required": "Variable name is required.",
        "x-viskan-error-code-web-pages.update-section.variable-type-required": "Variable type is required.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/settings": {
      "get": {
        "description": "Returns a list of store settings in a draft.",
        "operationId": "findStoreSettings",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of store settings.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StoreSettingListResponse"
                  }
                }
              }
            }
          }
        },
        "summary": "Find store settings",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Store Setting API",
        "x-viskan-error-code-web-pages.list-settings.draft-not-found": "Draft not found.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "post": {
        "description": "Creates a store setting.",
        "operationId": "createStoreSetting",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStoreSettingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Store setting successfully created.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateStoreSettingResponse"
                }
              }
            }
          }
        },
        "summary": "Create store setting",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Store Setting API",
        "x-viskan-error-code-web-pages.create-setting.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-pages.create-setting.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.create-setting.language-code-invalid": "Language code is invalid.",
        "x-viskan-error-code-web-pages.create-setting.setting-already-exists": "Store setting with specified key, country code and language code already exists.",
        "x-viskan-error-code-web-pages.create-setting.setting-key-required": "Store setting key is required.",
        "x-viskan-error-code-web-pages.create-setting.setting-value-required": "Store setting value is required.",
        "x-viskan-scope": "viskan:draft:create"
      }
    },
    "/web-pages/draft/drafts/{draftId}/settings/{storeSettingId}": {
      "delete": {
        "description": "Deletes a store setting by ID.",
        "operationId": "deleteStoreSetting",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "storeSettingId",
            "in": "path",
            "description": "Identifier of the store setting. Store settings are key-value pairs that configure web store behavior.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Store setting successfully deleted."
          }
        },
        "summary": "Delete store setting",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Store Setting API",
        "x-viskan-error-code-web-pages.delete-setting.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.delete-setting.setting-not-found": "Store setting not found.",
        "x-viskan-scope": "viskan:draft:delete"
      },
      "get": {
        "description": "Retrieves a store setting by ID.",
        "operationId": "retrieveStoreSetting",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "storeSettingId",
            "in": "path",
            "description": "Identifier of the store setting. Store settings are key-value pairs that configure web store behavior.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Store setting successfully retrieved.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/StoreSettingItemResponse"
                }
              }
            }
          }
        },
        "summary": "Get store setting",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Store Setting API",
        "x-viskan-error-code-web-pages.retrieve-setting.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.retrieve-setting.setting-not-found": "Could not find the setting by ID.",
        "x-viskan-scope": "viskan:draft:read"
      },
      "patch": {
        "description": "Updates a store setting by ID.",
        "operationId": "updateStoreSetting",
        "parameters": [
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "storeSettingId",
            "in": "path",
            "description": "Identifier of the store setting. Store settings are key-value pairs that configure web store behavior.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStoreSettingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Store setting successfully updated."
          }
        },
        "summary": "Update store setting",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Store Setting API",
        "x-viskan-error-code-web-pages.update-setting.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-pages.update-setting.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.update-setting.language-code-invalid": "Language code is invalid.",
        "x-viskan-error-code-web-pages.update-setting.setting-already-exists": "Store setting already exists.",
        "x-viskan-error-code-web-pages.update-setting.setting-for-removal-not-found": "Store setting for removal not found.",
        "x-viskan-error-code-web-pages.update-setting.setting-key-missing": "Store setting key is missing.",
        "x-viskan-error-code-web-pages.update-setting.setting-not-found": "Store setting not found.",
        "x-viskan-scope": "viskan:draft:update"
      }
    },
    "/web-pages/draft/drafts/{draftId}/trees/{categoryNodeId}": {
      "get": {
        "description": "Returns the hierarchical category tree from a specific category that will be seen as the root of the tree.",
        "operationId": "getTree",
        "parameters": [
          {
            "name": "countryCode",
            "in": "query",
            "description": "Country code (in ISO 3166-1 alpha-2 format) to retrieve the categories\u0027 paths for. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code (in ISO 639-1 format) to retrieve the categories\u0027 paths for. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contentLocaleId",
            "in": "query",
            "description": "The content locale to retrieve the categories\u0027 paths for. This or countryCode and languageCode combination must be provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "draftId",
            "in": "path",
            "description": "Identifier of the draft. A draft is a workspace that holds unpublished changes to web store content.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryNodeId",
            "in": "path",
            "description": "ID of a category node. Retrieves the tree starting from this category as root.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The hierarchical category tree is successfully retrieved.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryTreeResponse"
                }
              }
            }
          }
        },
        "summary": "Get category tree",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Tree API",
        "x-viskan-error-code-web-pages.category-tree.cyclic-dependency": "Cyclic dependency detected in category tree.",
        "x-viskan-error-code-web-pages.get-tree.category-not-found": "Could not find the category by ID.",
        "x-viskan-error-code-web-pages.get-tree.content-locale-id-is-exclusive-with-country-code-and-language-code": "Content locale ID is exclusive with country code and language code.",
        "x-viskan-error-code-web-pages.get-tree.content-locale-not-found": "Could not find the locale by ID or by country code and language code combination.",
        "x-viskan-error-code-web-pages.get-tree.country-code-invalid": "Specified country code is invalid.",
        "x-viskan-error-code-web-pages.get-tree.draft-not-found": "Draft not found.",
        "x-viskan-error-code-web-pages.get-tree.language-code-invalid": "Specified language code is invalid.",
        "x-viskan-error-code-web-pages.get-tree.start-page-category-not-found": "Start page category for the web store was not found.",
        "x-viskan-error-code-web-pages.get-tree.web-store-not-found": "Web store specified on the selected draft was not found.",
        "x-viskan-scope": "viskan:draft:read"
      }
    },
    "/web-pages/page/layouts/{layoutId}": {
      "get": {
        "description": "Retrieves a layout by ID.",
        "operationId": "retrieveLayout",
        "parameters": [
          {
            "name": "layoutId",
            "in": "path",
            "description": "Unique identifier of the layout to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The layout information including sections.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LayoutResponse"
                }
              }
            }
          }
        },
        "summary": "Retrieve a layout",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Layout API",
        "x-viskan-error-code-web-pages.retrieve-layout.layout-not-found": "Could not find the layout by ID.",
        "x-viskan-scope": "viskan:webpage:read"
      }
    },
    "/web-pages/page/pages/_search": {
      "post": {
        "description": "Searches for a page and returns information about it including variable values, if the page is found.",
        "operationId": "pageSearch",
        "parameters": [
          {
            "name": "countryCode",
            "in": "query",
            "description": "Country code (in ISO 3166-1 alpha-2 format) of the page. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code (in ISO 639-1 format) of the page. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contentLocaleId",
            "in": "query",
            "description": "The content locale of the page. This or countryCode and languageCode combination must be provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryId",
            "in": "query",
            "description": "ID of a category. This or path must be provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "path",
            "in": "query",
            "description": "URL path for this page. This or categoryId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The page and its variable values.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/PageSearchResponse_2"
                }
              }
            }
          }
        },
        "summary": "Search for a page",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Page API",
        "x-viskan-error-code-web-pages.search-page.category-id-and-path-are-mutually-exclusive": "Category ID and path are mutually exclusive.",
        "x-viskan-error-code-web-pages.search-page.category-id-or-path-required": "Either category ID or path must be provided.",
        "x-viskan-error-code-web-pages.search-page.category-tree-not-found": "Could not find the category tree for the web store.",
        "x-viskan-error-code-web-pages.search-page.content-locale-id-is-exclusive-with-country-code-and-language-code": "Content locale ID is exclusive with country code and language code.",
        "x-viskan-error-code-web-pages.search-page.content-locale-id-or-country-code-and-language-code-required": "Either content locale ID, or both country code and language code must be provided.",
        "x-viskan-error-code-web-pages.search-page.country-code-invalid": "Specified country code is invalid.",
        "x-viskan-error-code-web-pages.search-page.language-code-invalid": "Specified language code is invalid.",
        "x-viskan-error-code-web-pages.search-page.locale-not-found": "Could not find the locale by ID or by country code and language code combination.",
        "x-viskan-error-code-web-pages.search-page.page-not-found": "Could not find the page by path.",
        "x-viskan-scope": "viskan:webpage:read"
      }
    },
    "/web-pages/page/products": {
      "get": {
        "description": "Lists all products with connections to unique layouts in a web store.",
        "operationId": "listProducts",
        "parameters": [
          {
            "name": "webStoreId",
            "in": "query",
            "description": "The web store to list products for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The products and their variable values.",
            "content": {
              "*/*": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductListResponse_3"
                  }
                }
              }
            }
          }
        },
        "summary": "List products with unique layout connections",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Product API",
        "x-viskan-scope": "viskan:webpage:read"
      }
    },
    "/web-pages/page/trees/{categoryNodeId}": {
      "get": {
        "description": "Returns the hierarchical category tree from a specific category that will be seen as the root of the tree.",
        "operationId": "getTree",
        "parameters": [
          {
            "name": "countryCode",
            "in": "query",
            "description": "Country code (in ISO 3166-1 alpha-2 format) to retrieve the categories\u0027 paths for. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "Language code (in ISO 639-1 format) to retrieve the categories\u0027 paths for. This or contentLocaleId must be provided.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contentLocaleId",
            "in": "query",
            "description": "The content locale to retrieve the categories\u0027 paths for. This or countryCode and languageCode combination must be provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          {
            "name": "categoryNodeId",
            "in": "path",
            "description": "ID of a category. Retrieves the tree starting from this category as root.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "The hierarchical category tree is successfully retrieved.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryTreeResponse_2"
                }
              }
            }
          }
        },
        "summary": "Get a category tree",
        "tags": [
          "Web page"
        ],
        "x-viskan-api-name": "Category Tree API",
        "x-viskan-error-code-web-pages.get-tree.category-not-found": "Could not find the category by ID.",
        "x-viskan-error-code-web-pages.get-tree.category-tree-not-found": "Could not find the category tree for the web store.",
        "x-viskan-error-code-web-pages.get-tree.content-locale-id-is-exclusive-with-country-code-and-language-code": "Content locale ID was provided together with country code or language code, but they are mutually exclusive.",
        "x-viskan-error-code-web-pages.get-tree.content-locale-not-found": "Could not find the locale by ID or by country code and language code combination.",
        "x-viskan-error-code-web-pages.get-tree.country-code-invalid": "Specified country code is invalid.",
        "x-viskan-error-code-web-pages.get-tree.language-code-invalid": "Specified language code is invalid.",
        "x-viskan-scope": "viskan:webpage:read"
      }
    },
    "/web-store/store/stores": {
      "post": {
        "description": "Creates a new web store.",
        "operationId": "createStore",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebStoreRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The response contains the information about the created web store.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/CreateWebStoreResponse"
                }
              }
            }
          }
        },
        "summary": "Create web store",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Web store API",
        "x-viskan-error-code-web-store.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-store.locale.language-code-invalid": "Language code is invalid.",
        "x-viskan-error-code-web-store.store-setting.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-store.store-setting.language-code-invalid": "Language code is invalid.",
        "x-viskan-scope": "viskan:webstore:create"
      }
    },
    "/web-store/store/stores/{webStoreId}": {
      "delete": {
        "description": "Deletes a web store.",
        "operationId": "deleteStore",
        "parameters": [
          {
            "name": "webStoreId",
            "in": "path",
            "description": "The internal identifier of the web store to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The web store was deleted successfully."
          }
        },
        "summary": "Delete web store",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Web store API",
        "x-viskan-error-code-web-store.delete.web-store-not-found": "Could not find web store with the given ID.",
        "x-viskan-scope": "viskan:webstore:delete"
      },
      "get": {
        "description": "Gets a web store by its internal identifier.",
        "operationId": "getStore",
        "parameters": [
          {
            "name": "webStoreId",
            "in": "path",
            "description": "The internal identifier of the web store to get.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains the information about the web store.",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetWebStoreResponse"
                }
              }
            }
          }
        },
        "summary": "Get web store",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Web store API",
        "x-viskan-error-code-web-store.get.web-store-not-found": "Could not find web store with the given ID.",
        "x-viskan-scope": "viskan:webstore:read"
      },
      "patch": {
        "description": "Updates a web store.",
        "operationId": "updateStore",
        "parameters": [
          {
            "name": "webStoreId",
            "in": "path",
            "description": "The internal identifier of the web store to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebStoreRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The web store was updated successfully."
          }
        },
        "summary": "Update web store",
        "tags": [
          "Web store"
        ],
        "x-viskan-api-name": "Web store API",
        "x-viskan-error-code-web-store.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-store.locale.language-code-invalid": "Language code is invalid.",
        "x-viskan-error-code-web-store.store-setting.country-code-invalid": "Country code is invalid.",
        "x-viskan-error-code-web-store.store-setting.language-code-invalid": "Language code is invalid.",
        "x-viskan-error-code-web-store.update.web-store-not-found": "Could not find web store with the given ID.",
        "x-viskan-scope": "viskan:webstore:update"
      }
    }
  },
  "components": {
    "requestBodies": {
      "ArticleCategoryRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ArticleCategoryRequest"
            }
          },
          "application/xml": {
            "schema": {
              "$ref": "#/components/schemas/ArticleCategoryRequest"
            }
          }
        }
      },
      "RenewalRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RenewalRequest"
            }
          },
          "application/xml": {
            "schema": {
              "$ref": "#/components/schemas/RenewalRequest"
            }
          }
        }
      }
    },
    "schemas": {
      "Address": {
        "type": "object",
        "title": "Address",
        "properties": {
          "addressLine1": {
            "example": "Norrmalmsgatan 12",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "careOf": {
            "example": "Some person",
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string"
          },
          "city": {
            "example": "Borås",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example SE.",
            "type": "string"
          },
          "zipCode": {
            "example": "50437",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Contains an Address"
      },
      "Address_address": {
        "type": "object",
        "title": "Address",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string",
            "example": "..."
          },
          "careOf": {
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string",
            "example": "..."
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "zipcode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Information about a geographical address."
      },
      "AddressType": {
        "type": "string",
        "title": "AddressType",
        "enum": [
          "INVOICE",
          "DELIVERY",
          "TEMPORARY",
          "VISITING"
        ],
        "description": "The addressType of an address."
      },
      "AddressWithGeolocation": {
        "type": "object",
        "title": "AddressWithGeolocation",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string",
            "example": "..."
          },
          "careOf": {
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string",
            "example": "..."
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "latitude": {
            "example": 57.7154924,
            "readOnly": false,
            "description": "The latitude coordinate.",
            "type": "number"
          },
          "longitude": {
            "example": 12.9363399,
            "readOnly": false,
            "description": "The longitude coordinate.",
            "type": "number"
          },
          "zipcode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Information about a geographical location, including absolute coordinates of the location. This is often used where distance calculations is\nnecessary."
      },
      "AddressWithName": {
        "type": "object",
        "title": "AddressWithName",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string",
            "example": "..."
          },
          "careOf": {
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string",
            "example": "..."
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan System AB",
            "readOnly": false,
            "description": "The company name of the recipient. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e and \u003ccode\u003elastName\u003c/code\u003e.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the recipient. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the recipient. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "zipcode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Information about a geographical location, including the name of the resident/tenant. This object is used often as delivery addresses, where you\nalso want to store the name of the delivery recipient."
      },
      "AggregationWithSize": {
        "type": "object",
        "title": "AggregationWithSize",
        "required": [
          "size"
        ],
        "properties": {
          "size": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "Aggregations": {
        "type": "object",
        "title": "Aggregations",
        "properties": {
          "attribute1": {
            "$ref": "#/components/schemas/Attribute1"
          },
          "attribute2": {
            "$ref": "#/components/schemas/Attribute2"
          },
          "attribute3": {
            "$ref": "#/components/schemas/Attribute3"
          },
          "brand": {
            "$ref": "#/components/schemas/Brand"
          },
          "category": {
            "$ref": "#/components/schemas/Category_aggregations"
          },
          "lowestPrice": {
            "$ref": "#/components/schemas/LowestPrice"
          },
          "property": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property"
            }
          }
        },
        "description": ""
      },
      "Aggregations_request": {
        "type": "object",
        "title": "Aggregations",
        "properties": {
          "attribute1": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "attribute1Group": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "attribute2": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "attribute2Group": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "attribute3": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "attribute3Group": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "brand": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "category": {
            "$ref": "#/components/schemas/AggregationWithSize"
          },
          "property": {
            "$ref": "#/components/schemas/AggregationWithSize"
          }
        },
        "description": ""
      },
      "ApplicationError": {
        "type": "object",
        "title": "ApplicationError",
        "properties": {
          "data": {
            "readOnly": false,
            "description": "A map with data associated with the error.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "errorCode": {
            "readOnly": false,
            "description": "The code of the error.",
            "type": "string",
            "example": "..."
          },
          "errorMessage": {
            "readOnly": false,
            "description": "The message associated with the error.",
            "type": "string",
            "example": "..."
          },
          "infoMessages": {
            "readOnly": false,
            "description": "A list of potential informational messages associated with the error.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          }
        },
        "description": "Represents an application error object that contains information about a specific error thrown by the system."
      },
      "ApplicationErrors": {
        "type": "object",
        "title": "ApplicationErrors",
        "properties": {
          "errors": {
            "readOnly": false,
            "description": "The list of errors produced.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationError"
            }
          }
        },
        "description": "Defines a list of errors."
      },
      "AppliedToPrices": {
        "type": "string",
        "title": "AppliedToPrices",
        "enum": [
          "ALL",
          "ORDINARY",
          "REDUCED"
        ],
        "description": "Defines how offers are applied to variants based on their price."
      },
      "AppliesTo": {
        "type": "string",
        "title": "AppliesTo",
        "enum": [
          "ALL_ROWS",
          "ALL_ROWS_EXCEPT_ADDONS"
        ],
        "description": "Defines what subscription rows the discount applies to."
      },
      "ArrivalMethod": {
        "type": "object",
        "title": "ArrivalMethod",
        "required": [
          "arrivalMethodId"
        ],
        "properties": {
          "arrivalMethodId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the arrival method.",
            "type": "integer",
            "format": "int32"
          },
          "arrivalMethodName": {
            "example": "Web",
            "readOnly": false,
            "description": "The arrival method name.",
            "type": "string"
          }
        },
        "description": "Arrival method"
      },
      "ArrivalMethod_CustomerAPI": {
        "type": "object",
        "title": "ArrivalMethod",
        "required": [
          "arrivalMethodId"
        ],
        "properties": {
          "arrivalMethodId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the arrival method.",
            "type": "integer",
            "format": "int32"
          },
          "arrivalMethodName": {
            "example": "Web",
            "readOnly": false,
            "description": "The arrival method name.",
            "type": "string"
          }
        },
        "description": "Arrival method"
      },
      "IArticleDetailRequest": {
        "type": "object",
        "title": "ArticleDetailRequest",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/ArticleDetailRequestParams"
          }
        },
        "description": "Article detail request"
      },
      "ArticleDetailRequestParams": {
        "type": "object",
        "title": "ArticleDetailRequestParams",
        "required": [
          "art_id",
          "checkBalances",
          "checkMedia",
          "checkRelatedBalances",
          "checkRelatedMedia",
          "country_id",
          "daysAsBrandNew",
          "lang_id"
        ],
        "properties": {
          "art_id": {
            "example": 1001,
            "readOnly": false,
            "description": "Id of article to load. Mutual exclusive with \u003cb\u003elinkFriendlyName\u003c/b\u003e.",
            "type": "integer",
            "format": "int32"
          },
          "checkBalances": {
            "readOnly": false,
            "description": "Set to true to filter response regarding stock balance.",
            "type": "boolean",
            "example": true
          },
          "checkMedia": {
            "readOnly": false,
            "description": "Set to true to filter response regarding media existence.\nFilters both articles and variants.",
            "type": "boolean",
            "example": true
          },
          "checkRelatedBalances": {
            "readOnly": false,
            "description": "Set to true to filter response regarding related articles stock balance.",
            "type": "boolean",
            "example": true
          },
          "checkRelatedMedia": {
            "readOnly": false,
            "description": "Set to true to filter response regarding related articles media existence.\nFilters both articles and variants.",
            "type": "boolean",
            "example": true
          },
          "club_ids": {
            "example": [
              0,
              1
            ],
            "readOnly": false,
            "description": "Price list ids. Used to retrieve/filter/sort correct prices for response. The lowest price among price lists will be used. Is Mandatory.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "country_id": {
            "example": 0,
            "readOnly": false,
            "description": "Id of country. Used to retrieve/filter/sort correct stock balances, prices etc. for response. Is Mandatory.",
            "type": "integer",
            "format": "int32"
          },
          "daysAsBrandNew": {
            "example": 30,
            "readOnly": false,
            "description": "Set the number of days that an article is considered new since it\u0027s activation date.\nIs used when calculating response property brandNew. Default 30",
            "type": "integer",
            "format": "int32"
          },
          "lang_id": {
            "example": 1,
            "readOnly": false,
            "description": "Id of language. Used to retrieve/filter correct translations for response. Is Mandatory",
            "type": "integer",
            "format": "int32"
          },
          "linkFriendlyName": {
            "example": "rain-coat",
            "readOnly": false,
            "description": "Link friendly name of article to load. Mutual exclusive with \u003cb\u003eart_id\u003c/b\u003e.",
            "type": "string"
          },
          "mediaRowIds": {
            "example": [
              1010,
              1020
            ],
            "readOnly": false,
            "description": "Used in combination with \u003cb\u003echeckMedia/checkRelatedMedia\u003c/b\u003e to check specific media row ids.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          }
        },
        "description": "Article detail request"
      },
      "IArticleListRequest": {
        "type": "object",
        "title": "ArticleListRequest",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/ArticleListRequestParams"
          }
        },
        "description": ""
      },
      "ArticleListRequestParams": {
        "type": "object",
        "title": "ArticleListRequestParams",
        "required": [
          "categoryId",
          "checkBalances",
          "checkMedia",
          "country_id",
          "daysAsBrandNew",
          "from",
          "lang_id",
          "size"
        ],
        "properties": {
          "art_ids": {
            "example": {},
            "readOnly": false,
            "description": "List of article id\u0027s or a list of objects with article and attribute1 id\u0027s to load.\n\u003cpre\u003e\n  \"art_ids\": [1, 2, 3]\n  or\n  \"art_ids\": [\n    {\n      \"art_id\": 1,\n      \"attr1_id\", 10\n    },\n    {\n      \"art_id\": 2,\n      \"attr1_id\", 20\n    }\n  ]\n \u003c/pre\u003e",
            "type": "object"
          },
          "categoryId": {
            "example": 84,
            "readOnly": false,
            "description": "Category id to list articles for.",
            "type": "integer",
            "format": "int32"
          },
          "checkBalances": {
            "readOnly": false,
            "description": "Set to true to filter response regarding stock balance.",
            "type": "boolean",
            "example": true
          },
          "checkMedia": {
            "readOnly": false,
            "description": "Set to true to filter response regarding media existence.\nFilters both articles and variants.",
            "type": "boolean",
            "example": true
          },
          "club_ids": {
            "example": [
              0,
              1
            ],
            "readOnly": false,
            "description": "Price list ids. Used to retrieve/filter/sort correct prices for response. The lowest price among price lists will be used. Is Mandatory.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "country_id": {
            "example": 0,
            "readOnly": false,
            "description": "Id of country. Used to retrieve/filter/sort correct stock balances, prices etc. for response. Is Mandatory.",
            "type": "integer",
            "format": "int32"
          },
          "daysAsBrandNew": {
            "example": 30,
            "readOnly": false,
            "description": "Set the number of days that an article is considered new since it\u0027s activation date.\nIs used when calculating response property brandNew. Default 30",
            "type": "integer",
            "format": "int32"
          },
          "from": {
            "example": 0,
            "readOnly": false,
            "description": "Pagination starting from this number.",
            "type": "integer",
            "format": "int32"
          },
          "lang_id": {
            "example": 1,
            "readOnly": false,
            "description": "Id of language. Used to retrieve/filter correct translations for response. Is Mandatory",
            "type": "integer",
            "format": "int32"
          },
          "mediaRowIds": {
            "example": [
              1010,
              1020
            ],
            "readOnly": false,
            "description": "Used in combination with \u003cb\u003echeckMedia/checkRelatedMedia\u003c/b\u003e to check specific media row ids.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "searchQuery": {
            "example": "jacket",
            "readOnly": false,
            "description": "Search query to find matching articles for.",
            "type": "string"
          },
          "size": {
            "example": 20,
            "readOnly": false,
            "description": "Number of articles to return.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Article list request"
      },
      "ArticleSitemapParams": {
        "type": "object",
        "title": "ArticleSitemapParams",
        "required": [
          "checkBalances",
          "checkMedia",
          "country_id",
          "daysAsBrandNew",
          "lang_id"
        ],
        "properties": {
          "checkBalances": {
            "readOnly": false,
            "description": "Set to true to filter response regarding stock balance.",
            "type": "boolean",
            "example": true
          },
          "checkMedia": {
            "readOnly": false,
            "description": "Set to true to filter response regarding media existence.\nFilters both articles and variants.",
            "type": "boolean",
            "example": true
          },
          "club_ids": {
            "example": [
              0,
              1
            ],
            "readOnly": false,
            "description": "Price list ids. Used to retrieve/filter/sort correct prices for response. The lowest price among price lists will be used. Is Mandatory.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "country_id": {
            "example": 0,
            "readOnly": false,
            "description": "Id of country. Used to retrieve/filter/sort correct stock balances, prices etc. for response. Is Mandatory.",
            "type": "integer",
            "format": "int32"
          },
          "daysAsBrandNew": {
            "example": 30,
            "readOnly": false,
            "description": "Set the number of days that an article is considered new since it\u0027s activation date.\nIs used when calculating response property brandNew. Default 30",
            "type": "integer",
            "format": "int32"
          },
          "lang_id": {
            "example": 1,
            "readOnly": false,
            "description": "Id of language. Used to retrieve/filter correct translations for response. Is Mandatory",
            "type": "integer",
            "format": "int32"
          },
          "mediaRowIds": {
            "example": [
              1010,
              1020
            ],
            "readOnly": false,
            "description": "Used in combination with \u003cb\u003echeckMedia/checkRelatedMedia\u003c/b\u003e to check specific media row ids.",
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "topCategoryTag": {
            "example": "estore",
            "readOnly": false,
            "description": "Top category tag to use when selecting articles to include in sitemap",
            "type": "string"
          }
        },
        "description": "Article sitemap request"
      },
      "ICategorySitemapRequest": {
        "type": "object",
        "title": "ArticleSitemapRequest",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/CategorySitemapParams"
          }
        },
        "description": ""
      },
      "IArticleSitemapRequest": {
        "type": "object",
        "title": "ArticleSitemapRequest",
        "properties": {
          "params": {
            "$ref": "#/components/schemas/ArticleSitemapParams"
          }
        },
        "description": ""
      },
      "ArticleStatus": {
        "type": "string",
        "title": "ArticleStatus",
        "enum": [
          "PLANNED",
          "PREVIEW",
          "FOR_SALE",
          "DISCONTINUED"
        ],
        "description": ""
      },
      "ArticleStatus_article": {
        "type": "string",
        "title": "ArticleStatus",
        "enum": [
          "NOT_YET_FOR_SALE",
          "PREVIEW",
          "FOR_SALE",
          "DISCONTINUED"
        ],
        "description": ""
      },
      "ArticleType": {
        "type": "string",
        "title": "ArticleType",
        "enum": [
          "NORMAL",
          "PARTIAL_PAYMENT",
          "MIX_MATCH",
          "LOOKBOOK",
          "FLEXIBLE_PACKAGES",
          "SUBSCRIPTION_MAIN_PRODUCT",
          "DUMMY_PRODUCT",
          "VOUCHER",
          "COPY_PRODUCT",
          "STATIC_PACKAGE",
          "MULTI_PACKAGE"
        ],
        "description": ""
      },
      "Attachment": {
        "type": "object",
        "title": "Attachment",
        "properties": {
          "base64": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "fileName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds data related to an attachment."
      },
      "Attribute1_AttributeAPI": {
        "type": "object",
        "title": "Attribute1",
        "properties": {
          "attribute1Code": {
            "example": "Burgundy",
            "readOnly": false,
            "description": "The code or name of this attribute1.",
            "type": "string"
          },
          "attribute1Number": {
            "example": "5",
            "readOnly": false,
            "description": "The identifier of this attribute1.",
            "type": "string"
          }
        },
        "description": "The attribute1, containing the details of the attribute1."
      },
      "Attribute1_response": {
        "type": "object",
        "title": "Attribute1",
        "required": [
          "attribute1Id"
        ],
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute1Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute1Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "colorGroup": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "rgbCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute1": {
        "type": "object",
        "title": "Attribute1",
        "properties": {
          "buckets": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute1Bucket"
            }
          }
        },
        "description": ""
      },
      "Attribute1Bucket": {
        "type": "object",
        "title": "Attribute1Bucket",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "item": {
            "$ref": "#/components/schemas/Attribute1BucketItem"
          }
        },
        "description": ""
      },
      "Attribute1BucketItem": {
        "type": "object",
        "title": "Attribute1BucketItem",
        "required": [
          "attribute1Id",
          "group"
        ],
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute1Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute1Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute1Tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute1TagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "group": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "rgbCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute1Change": {
        "type": "object",
        "title": "Attribute1Change",
        "properties": {
          "attribute1Number": {
            "example": "12",
            "readOnly": false,
            "description": "Identifier of the attribute to connect to the group.",
            "type": "string"
          }
        },
        "description": "Contains the changes"
      },
      "Attribute1Changes": {
        "type": "object",
        "title": "Attribute1Changes",
        "properties": {
          "attribute1Code": {
            "example": "Red",
            "readOnly": false,
            "description": "The code (or name) of the attribute.",
            "type": "string"
          },
          "attribute1Number": {
            "readOnly": false,
            "description": "The identifying value of attribute1.",
            "type": "string",
            "example": "..."
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "Changes to attribute1 translations.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute1TranslationChanges"
            }
          }
        },
        "description": "Contains changes that applies to attribute1."
      },
      "Attribute1ForFeed": {
        "type": "object",
        "title": "Attribute1ForFeed",
        "required": [
          "attribute1Id",
          "groupId"
        ],
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute1Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute1Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "colorGroup": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "groupId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rgbCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute1Group": {
        "type": "object",
        "title": "Attribute1Group",
        "properties": {
          "attribute1Code": {
            "example": "Red",
            "readOnly": false,
            "description": "The code or name of this attribute1 group",
            "type": "string"
          },
          "attribute1Number": {
            "example": "10",
            "readOnly": false,
            "description": "The identifier / number of this attribute1 group.",
            "type": "string"
          },
          "attributes": {
            "readOnly": false,
            "description": "The attribute1s of this group",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute1_AttributeAPI"
            }
          },
          "createdAt": {
            "example": "2023-10-12T14:30:10.000+01:00",
            "readOnly": false,
            "description": "The date the group was created.",
            "type": "string",
            "format": "date-time"
          },
          "modifiedAt": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "The date the group was last modified.",
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "The attribute1 group, containing the details of the group and the connected attributes."
      },
      "Attribute1GroupChanges": {
        "type": "object",
        "title": "Attribute1GroupChanges",
        "properties": {
          "attribute1GroupsToAddOrUpdate": {
            "readOnly": false,
            "description": "The groups to add or update",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute1GroupsToAddOrUpdate"
            }
          }
        },
        "description": "Contains the changes to be made to attribute1 groups."
      },
      "Attribute1GroupResult": {
        "type": "object",
        "title": "Attribute1GroupResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The groups in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute1Group"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a list of attribute1 groups."
      },
      "Attribute1GroupsToAddOrUpdate": {
        "type": "object",
        "title": "Attribute1GroupsToAddOrUpdate",
        "properties": {
          "attribute1Changes": {
            "readOnly": false,
            "description": "The attributes connected to this group. Needs to contain all connected attributes, since not passed in attribute will be removed from the group.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute1Change"
            }
          },
          "attribute1GroupNumber": {
            "example": "10",
            "readOnly": false,
            "description": "The identifier / number of the attribute1 group to update",
            "type": "string"
          }
        },
        "description": "Contains the changes to be made to an attribute1 group."
      },
      "Attribute1TranslationChanges": {
        "type": "object",
        "title": "Attribute1TranslationChanges",
        "properties": {
          "attribute1Code": {
            "example": "Röd",
            "readOnly": false,
            "description": "The translated attribute1Code.",
            "type": "string"
          },
          "languageCode": {
            "example": "sv",
            "readOnly": false,
            "description": "The language code of the translation.",
            "type": "string"
          }
        },
        "description": "Contains changes to attribute1 translations."
      },
      "Attribute2_response": {
        "type": "object",
        "title": "Attribute2",
        "required": [
          "attribute2Id"
        ],
        "properties": {
          "attribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute2Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute2": {
        "type": "object",
        "title": "Attribute2",
        "properties": {
          "buckets": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute2Bucket"
            }
          }
        },
        "description": ""
      },
      "Attribute2Bucket": {
        "type": "object",
        "title": "Attribute2Bucket",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "item": {
            "$ref": "#/components/schemas/Attribute2BucketItem"
          }
        },
        "description": ""
      },
      "Attribute2BucketItem": {
        "type": "object",
        "title": "Attribute2BucketItem",
        "required": [
          "attribute2Id",
          "group"
        ],
        "properties": {
          "attribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute2Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute2Tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute2TagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "group": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          }
        },
        "description": ""
      },
      "Attribute2Changes": {
        "type": "object",
        "title": "Attribute2Changes",
        "properties": {
          "attribute2Code": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute2Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute2TranslationChanges"
            }
          }
        },
        "description": "Contains changes that applies to attribute2."
      },
      "Attribute2ForFeed": {
        "type": "object",
        "title": "Attribute2ForFeed",
        "required": [
          "attribute2Id",
          "groupId"
        ],
        "properties": {
          "attribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute2Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "groupId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute2TranslationChanges": {
        "type": "object",
        "title": "Attribute2TranslationChanges",
        "properties": {
          "attribute2Code": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "languageCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains changes to attribute2 translations."
      },
      "Attribute3": {
        "type": "object",
        "title": "Attribute3",
        "properties": {
          "buckets": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute3Bucket"
            }
          }
        },
        "description": ""
      },
      "Attribute3_response": {
        "type": "object",
        "title": "Attribute3",
        "required": [
          "attribute3Id"
        ],
        "properties": {
          "attribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute3Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute3Bucket": {
        "type": "object",
        "title": "Attribute3Bucket",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "item": {
            "$ref": "#/components/schemas/Attribute3BucketItem"
          }
        },
        "description": ""
      },
      "Attribute3BucketItem": {
        "type": "object",
        "title": "Attribute3BucketItem",
        "required": [
          "attribute3Id",
          "group"
        ],
        "properties": {
          "attribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute3Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute3Tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute3TagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "group": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          }
        },
        "description": ""
      },
      "Attribute3Changes": {
        "type": "object",
        "title": "Attribute3Changes",
        "properties": {
          "attribute3Code": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute3Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute3TranslationChanges"
            }
          }
        },
        "description": "Contains changes that applies to attribute3."
      },
      "Attribute3ForFeed": {
        "type": "object",
        "title": "Attribute3ForFeed",
        "required": [
          "attribute3Id",
          "groupId"
        ],
        "properties": {
          "attribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Name": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute3Number": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "groupId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Attribute3TranslationChanges": {
        "type": "object",
        "title": "Attribute3TranslationChanges",
        "properties": {
          "attribute3Code": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "languageCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains changes to attribute3 translations."
      },
      "AuthenticationLevel": {
        "type": "string",
        "title": "AuthenticationLevel",
        "enum": [
          "LOW",
          "MEDIUM"
        ],
        "description": "A authentication level defines the authorization level of the user\n\u003cp\u003e\nThis is dependent on the authorization method the customer was retrieved by, if the customer used an identifier and password the clearance will be\nhigher than if matched solely on e.g email.\n\u003c/p\u003e"
      },
      "AuthenticationRequest": {
        "type": "object",
        "title": "AuthenticationRequest",
        "required": [
          "companyUser",
          "fetchLatestShopcart",
          "serviceProviderConfigId",
          "timeToLiveMinutes"
        ],
        "properties": {
          "categoryIds": {
            "readOnly": false,
            "description": "An optional list of category identifiers for customer authentication. If provided, the customer must have at least one associated category\nconnected to this parameter.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "companyUser": {
            "readOnly": false,
            "description": "The customer is B2B company user or normal user .",
            "type": "boolean",
            "example": true
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2).",
            "type": "string"
          },
          "credentials": {
            "$ref": "#/components/schemas/Credentials"
          },
          "fetchLatestShopcart": {
            "readOnly": false,
            "description": "Whether or not we should fetch the customers latest modified shopcart.",
            "type": "boolean",
            "example": true
          },
          "serviceProviderConfigId": {
            "readOnly": false,
            "description": "The service provider configuration to use. This is needed if you are connecting to a third party customer club provider.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "shopcartId": {
            "readOnly": false,
            "description": "The identifier of the shopping cart to connect to the logged in user if the authentication was successful.",
            "type": "string",
            "example": "..."
          },
          "timeToLiveMinutes": {
            "example": 120,
            "readOnly": false,
            "description": "How long the authentication token should live, in minutes. The default value is \u003ccode\u003e120\u003c/code\u003e.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Defines a request to authenticate a customer to the \"My pages\" API by providing an identifier (for example an email address) and a password, among\nother things."
      },
      "BlockCode": {
        "type": "object",
        "title": "BlockCode",
        "required": [
          "blockCodeId"
        ],
        "properties": {
          "blockCodeDescription": {
            "example": "The customer did not pay the necessary invoices",
            "readOnly": false,
            "description": "The long block code description.",
            "type": "string"
          },
          "blockCodeId": {
            "example": 1,
            "readOnly": false,
            "description": "The block code id of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "blockCodeName": {
            "example": "Did not pay invoices",
            "readOnly": false,
            "description": "The block code name.",
            "type": "string"
          },
          "blockCodeNumber": {
            "example": "01",
            "readOnly": false,
            "description": "The block code number of the customer.",
            "type": "string"
          }
        },
        "description": "Block Code"
      },
      "Brand": {
        "type": "object",
        "title": "Brand",
        "properties": {
          "buckets": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrandBucket"
            }
          }
        },
        "description": ""
      },
      "Brand_response": {
        "type": "object",
        "title": "Brand",
        "required": [
          "brandId"
        ],
        "properties": {
          "brandId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brandName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "category": {
            "$ref": "#/components/schemas/BrandCategory"
          },
          "media": {
            "$ref": "#/components/schemas/BrandMedia"
          }
        },
        "description": ""
      },
      "BrandBucket": {
        "type": "object",
        "title": "BrandBucket",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "item": {
            "$ref": "#/components/schemas/BrandBucketItem"
          }
        },
        "description": ""
      },
      "BrandBucketItem": {
        "type": "object",
        "title": "BrandBucketItem",
        "required": [
          "brandId"
        ],
        "properties": {
          "brandId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brandName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "brandTag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "brandTagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "BrandCategory": {
        "type": "object",
        "title": "BrandCategory",
        "properties": {
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "BrandForFeed": {
        "type": "object",
        "title": "BrandForFeed",
        "required": [
          "brandId"
        ],
        "properties": {
          "brandId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brandName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "category": {
            "$ref": "#/components/schemas/BrandCategory"
          },
          "media": {
            "$ref": "#/components/schemas/BrandMedia"
          },
          "tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "BrandMedia": {
        "type": "object",
        "title": "BrandMedia",
        "properties": {
          "dimensions": {
            "$ref": "#/components/schemas/Dimensions"
          },
          "fileName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Campaign": {
        "type": "object",
        "title": "Campaign",
        "required": [
          "campaignId"
        ],
        "properties": {
          "campaignId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the campaign.",
            "type": "integer",
            "format": "int32"
          },
          "campaignName": {
            "readOnly": false,
            "description": "The campaign name.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Campaign"
      },
      "Campaign_OrderAPI": {
        "type": "object",
        "title": "Campaign",
        "required": [
          "campaignId"
        ],
        "properties": {
          "campaignCode": {
            "example": "50%DFA",
            "readOnly": false,
            "description": "The short name/code of the campaign.",
            "type": "string"
          },
          "campaignId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the campaign.",
            "type": "integer",
            "format": "int32"
          },
          "campaignName": {
            "example": "50% Discount for all",
            "readOnly": false,
            "description": "The name of the campaign.",
            "type": "string"
          }
        },
        "description": "Contains information about a campaign."
      },
      "Campaign_DeliveryAPI": {
        "type": "object",
        "title": "Campaign",
        "required": [
          "campaignId"
        ],
        "properties": {
          "campaignCode": {
            "example": "50%DFA",
            "readOnly": false,
            "description": "The short name/code of the campaign.",
            "type": "string"
          },
          "campaignId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the campaign.",
            "type": "integer",
            "format": "int32"
          },
          "campaignName": {
            "example": "50% Discount for all",
            "readOnly": false,
            "description": "The name of the campaign.",
            "type": "string"
          }
        },
        "description": "Campaign"
      },
      "CancelPurchaseParams": {
        "type": "object",
        "title": "CancelPurchaseParams",
        "properties": {
          "purchaseNumber": {
            "readOnly": false,
            "description": "The unique number of the purchase to cancel.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information required to cancel an ongoing purchase."
      },
      "CancelPurchaseResult": {
        "type": "object",
        "title": "CancelPurchaseResult",
        "properties": {
          "purchaseNumber": {
            "readOnly": false,
            "description": "The identifier of the purchase that was canceled.",
            "type": "string",
            "example": "..."
          },
          "shopcartId": {
            "readOnly": false,
            "description": "The identifier of the shopping cart which now has the goods that the canceled purchase had.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information about a cancelled purchase."
      },
      "CancellationDetails": {
        "type": "object",
        "title": "CancellationDetails",
        "required": [
          "arrivalMethodId",
          "endAfterNextDelivery",
          "reasonId"
        ],
        "properties": {
          "arrivalMethodId": {
            "example": 1,
            "readOnly": false,
            "description": "The method of how the cancellation arrived.",
            "type": "integer",
            "format": "int32"
          },
          "endAfterNextDelivery": {
            "example": true,
            "readOnly": false,
            "description": "Should the subscription be ended now or after the next delivery.",
            "type": "boolean"
          },
          "reasonId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the cancellation reason.",
            "type": "integer",
            "format": "int32"
          },
          "reasonText": {
            "example": "custom reason",
            "readOnly": false,
            "description": "Optional custom reason-text supplied.",
            "type": "string"
          }
        },
        "description": "Contains the details for a cancellation"
      },
      "CancellationEligibility": {
        "type": "string",
        "title": "CancellationEligibility",
        "enum": [
          "NOT_ALLOWED",
          "ALLOWED",
          "ALLOWED_AFTER_NEXT_SHIPMENT"
        ],
        "description": "Defines the cancellation eligibility of a subscription."
      },
      "CancellationReason": {
        "type": "object",
        "title": "CancellationReason",
        "required": [
          "reasonId"
        ],
        "properties": {
          "reasonCode": {
            "example": "01",
            "readOnly": false,
            "description": "The cancellation reason code.",
            "type": "string"
          },
          "reasonId": {
            "example": 1,
            "readOnly": false,
            "description": "The reason for cancellation id of the subscription.",
            "type": "integer",
            "format": "int32"
          },
          "reasonName": {
            "example": "Was not satisfied with product",
            "readOnly": false,
            "description": "The cancellation reason name.",
            "type": "string"
          }
        },
        "description": "Cancellation Reason"
      },
      "CancellationReason_CustomerAPI": {
        "type": "object",
        "title": "CancellationReason",
        "required": [
          "reasonId"
        ],
        "properties": {
          "reasonCode": {
            "example": "01",
            "readOnly": false,
            "description": "The cancellation reason code.",
            "type": "string"
          },
          "reasonId": {
            "example": 1,
            "readOnly": false,
            "description": "The reason for cancellation id of the subscription.",
            "type": "integer",
            "format": "int32"
          },
          "reasonName": {
            "example": "Was not satisfied with product",
            "readOnly": false,
            "description": "The cancellation reason name.",
            "type": "string"
          }
        },
        "description": "Cancellation Reason"
      },
      "CategoriesToReplaceExisting": {
        "type": "object",
        "title": "CategoriesToReplaceExisting",
        "required": [
          "categoryId"
        ],
        "properties": {
          "categoryId": {
            "example": 123,
            "readOnly": false,
            "description": "The identifier of the category. This value is mandatory.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Contains changes that applies to a product."
      },
      "Category": {
        "type": "object",
        "title": "Category",
        "required": [
          "categoryId"
        ],
        "properties": {
          "categoryId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the category.",
            "type": "integer",
            "format": "int32"
          },
          "categoryName": {
            "example": "Shirts",
            "readOnly": false,
            "description": "The name of the category.",
            "type": "string"
          },
          "children": {
            "readOnly": false,
            "description": "Contains the underlying children categories.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category"
            }
          },
          "languages": {
            "readOnly": false,
            "description": "Contains the translations available for the category name.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Language"
            }
          }
        },
        "description": "Defines a category node in the category tree. A category can contain zero or more child categories."
      },
      "Category_aggregations": {
        "type": "object",
        "title": "Category",
        "properties": {
          "buckets": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoryBucket"
            }
          }
        },
        "description": ""
      },
      "Category_response": {
        "type": "object",
        "title": "Category",
        "required": [
          "categoryId",
          "default"
        ],
        "properties": {
          "categoryId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categoryName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "categoryUUID": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "default": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Category_CustomerResult": {
        "type": "object",
        "title": "Category",
        "required": [
          "categoryId"
        ],
        "properties": {
          "categoryId": {
            "example": 1,
            "readOnly": false,
            "description": "The category id of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "categoryName": {
            "example": "Gold Customer",
            "readOnly": false,
            "description": "The category name.",
            "type": "string"
          }
        },
        "description": "Customer Category"
      },
      "Category_v2": {
        "type": "object",
        "title": "Category",
        "required": [
          "categoryId"
        ],
        "properties": {
          "categoryId": {
            "readOnly": false,
            "description": "The id for this category",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Represents customer category"
      },
      "CategoryBucket": {
        "type": "object",
        "title": "CategoryBucket",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "item": {
            "$ref": "#/components/schemas/CategoryBucketItem"
          }
        },
        "description": ""
      },
      "CategoryBucketItem": {
        "type": "object",
        "title": "CategoryBucketItem",
        "required": [
          "categoryId",
          "hidden"
        ],
        "properties": {
          "categoryId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categoryName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "hidden": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          }
        },
        "description": ""
      },
      "CategorySitemapParams": {
        "type": "object",
        "title": "CategorySitemapParams",
        "required": [
          "excludeHidden",
          "excludeSymlinks",
          "includeNoIndex",
          "lang_id"
        ],
        "properties": {
          "excludeHidden": {
            "example": true,
            "readOnly": false,
            "description": "Filter on hidden_flg of category. Optional.",
            "type": "boolean"
          },
          "excludeSymlinks": {
            "example": true,
            "readOnly": false,
            "description": "Filter on symlinks of category. Optional.",
            "type": "boolean"
          },
          "includeNoIndex": {
            "example": true,
            "readOnly": false,
            "description": "Filter to include all contents regardless if they should be indexed or not. Optional",
            "type": "boolean"
          },
          "lang_id": {
            "example": 1,
            "readOnly": false,
            "description": "Id of language. Used to retrieve/filter correct translations for response. Is Mandatory",
            "type": "integer",
            "format": "int32"
          },
          "topCategoryTag": {
            "example": "estore",
            "readOnly": false,
            "description": "Top category tag to use when selecting articles to include in sitemap. Is mandatory.",
            "type": "string"
          }
        },
        "description": "Article sitemap request"
      },
      "ChangeDetails": {
        "type": "object",
        "title": "ChangeDetails",
        "required": [
          "subscriptionTypeId"
        ],
        "properties": {
          "subscriptionTypeId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the subscription type to change the subscription to.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Contains the details for a change of subscription type."
      },
      "CheckoutDeliveryMethod": {
        "type": "object",
        "title": "CheckoutDeliveryMethod",
        "required": [
          "applicable"
        ],
        "properties": {
          "applicable": {
            "readOnly": false,
            "description": "Whether or not this method is currently available with the current shopcart.",
            "type": "boolean",
            "example": true
          },
          "method": {
            "$ref": "#/components/schemas/DeliveryMethod"
          }
        },
        "description": "Defines a delivery method that is available on checkout pages. The method is returned together with a state that says whether or not this method is\ncurrently available for the current shopcart."
      },
      "CheckoutDetails": {
        "type": "object",
        "title": "CheckoutDetails",
        "required": [
          "shopcartAvailable"
        ],
        "properties": {
          "deliveryMethods": {
            "readOnly": false,
            "description": "The available delivery methods.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CheckoutDeliveryMethod"
            }
          },
          "params": {
            "readOnly": false,
            "description": "Parameters from unique hooks, such as Klarna Checkout.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "property1": "...",
              "property2": "..."
            }
          },
          "paymentMethods": {
            "readOnly": false,
            "description": "The available payment methods.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CheckoutPaymentMethod"
            }
          },
          "shopcartAvailable": {
            "readOnly": false,
            "description": "Whether or not the given shopcart is available. A shopcart is available when it has ShopcartStatus REGULAR/PENDING and has rows.",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Contains details about that is useful on a checkout page."
      },
      "CheckoutDetailsRequest": {
        "type": "object",
        "title": "CheckoutDetailsRequest",
        "required": [
          "customerId"
        ],
        "properties": {
          "additionalOrderText": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "customFields": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            }
          },
          "customerId": {
            "readOnly": false,
            "description": "The optional internal identifier of a customer to populate the customer information from.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerUUID": {
            "readOnly": false,
            "description": "The optional UUID of a customer to populate the customer information from.",
            "type": "string",
            "example": "..."
          },
          "googleAnalyticsId": {
            "readOnly": false,
            "description": "Google Analytics Client Id. This Id is used to track anonymous users and their actions. Purchase data will be pushed to google analytics with\nthis id.",
            "type": "string",
            "example": "..."
          },
          "integrities": {
            "example": "EMAIL_INFO",
            "readOnly": false,
            "description": "The list of integrities that the customer consents or opts in to.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "integritiesMap": {
            "readOnly": false,
            "description": "The map of integrities that the customer opts in or opts out to.",
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "example": {
              "EMAIL_INFO": true,
              "SMS_INFO": false
            }
          },
          "languageCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "params": {
            "readOnly": false,
            "description": "Parameters for unique hooks, such as Klarna Checkout.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "property1": "...",
              "property2": "..."
            }
          },
          "remoteAddress": {
            "readOnly": false,
            "description": "The remote address of the consumer.",
            "type": "string",
            "example": "..."
          },
          "shopcartId": {
            "readOnly": false,
            "description": "The shopcart to get checkout details for.",
            "type": "string",
            "example": "..."
          },
          "zipcode": {
            "readOnly": false,
            "description": "An optional zipcode, that will be used for any potential zipcode filterings.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a request to get details that can be used on a checkout page."
      },
      "CheckoutPaymentMethod": {
        "type": "object",
        "title": "CheckoutPaymentMethod",
        "required": [
          "applicable"
        ],
        "properties": {
          "applicable": {
            "readOnly": false,
            "description": "Whether or not this method is currently available with the current shopcart.",
            "type": "boolean",
            "example": true
          },
          "method": {
            "$ref": "#/components/schemas/PaymentMethod"
          }
        },
        "description": "Defines a payment method that is available on checkout pages. The method is returned together with a state that says whether or not this method is\ncurrently available for the current shopcart."
      },
      "City": {
        "type": "object",
        "title": "City",
        "required": [
          "cityId",
          "countryId"
        ],
        "properties": {
          "cityId": {
            "readOnly": false,
            "description": "City ID.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "cityName": {
            "example": "Stockholm",
            "readOnly": false,
            "description": "The city name.",
            "type": "string"
          },
          "countryId": {
            "example": 0,
            "readOnly": false,
            "description": "Country ID. Use 0 for default country",
            "type": "integer",
            "format": "int32"
          },
          "zipCodes": {
            "example": [
              "89440, 89441, 89493",
              "..."
            ],
            "readOnly": false,
            "description": "Zip codes connected to the city",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "Represents city matched to connected zip codes."
      },
      "Company": {
        "type": "object",
        "title": "Company",
        "required": [
          "administrator",
          "customerId",
          "proxy"
        ],
        "properties": {
          "administrator": {
            "readOnly": false,
            "description": "Whether this customer is an administrator for the company. An administrator can manage the company and its users.",
            "type": "boolean",
            "example": true
          },
          "companyName": {
            "readOnly": false,
            "description": "The name of the company.",
            "type": "string",
            "example": "..."
          },
          "customerDeliveryAddresses": {
            "readOnly": false,
            "description": "The list of customer delivery/shipping addresses of the company",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryAddress"
            }
          },
          "customerId": {
            "readOnly": false,
            "description": "The internal unique identifier of the company.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The external unique number of the company.",
            "type": "string",
            "example": "..."
          },
          "customerUUID": {
            "readOnly": false,
            "description": "The unique identifier of the company",
            "type": "string",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number of the company.",
            "type": "string",
            "example": "..."
          },
          "properties": {
            "readOnly": false,
            "description": "The properties of the company",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_v2"
            }
          },
          "proxy": {
            "readOnly": false,
            "description": "Whether this customer is a proxy for the company. A proxy can choose whether to place orders on behalf of the company or on behalf of\nthemselves. A non-proxy customer can only place orders on behalf of the company.",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Holds information about a company that a customer can place orders on behalf of."
      },
      "CompanyUserToAddOrUpdate": {
        "type": "object",
        "title": "CompanyUserToAddOrUpdate",
        "required": [
          "customerId"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "Whether or not the user has access to the company. It\u0027s not possible to remove the connection, instead you have to deactivate the connection.",
            "type": "boolean"
          },
          "administrator": {
            "example": false,
            "readOnly": false,
            "description": "Whether or not the user is an administrator of the company.",
            "type": "boolean"
          },
          "cellphone": {
            "example": "",
            "readOnly": false,
            "description": "The cell phone of the user.",
            "type": "string"
          },
          "customerId": {
            "readOnly": false,
            "description": "The internal identifier of the user to update. Required when updating.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "emailAddress": {
            "example": "",
            "readOnly": false,
            "description": "The email address of the user. Required when adding a user to the company.",
            "type": "string"
          },
          "firstName": {
            "example": "",
            "readOnly": false,
            "description": "The first name of the user.",
            "type": "string"
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "lastName": {
            "example": "",
            "readOnly": false,
            "description": "The last name of the user.",
            "type": "string"
          },
          "proxy": {
            "example": false,
            "readOnly": false,
            "description": "Whether or not the user is a proxy for the company.",
            "type": "boolean"
          }
        },
        "description": "Contains changes that applies to a company user."
      },
      "CompanyUsersToAddOrUpdate": {
        "type": "object",
        "title": "CompanyUsersToAddOrUpdate",
        "properties": {
          "companyUsersToAddOrUpdate": {
            "readOnly": false,
            "description": "The company users to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompanyUserToAddOrUpdate"
            }
          }
        },
        "description": "Contains a list of companyUsers to add or update."
      },
      "Connection": {
        "type": "object",
        "title": "Connection",
        "required": [
          "attribute1Id",
          "attribute2Id",
          "attribute3Id",
          "relatedAttribute1Id",
          "relatedAttribute2Id",
          "relatedAttribute3Id",
          "sort"
        ],
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "relatedAttribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "relatedAttribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "relatedAttribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sort": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "Consent": {
        "type": "object",
        "title": "Consent",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/ConsentKey"
          },
          "value": {
            "$ref": "#/components/schemas/ConsentValue"
          }
        },
        "description": "Customer\u0027s consent."
      },
      "Consent_CustomerAPI": {
        "type": "object",
        "title": "Consent",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/ConsentKey_CustomerAPI"
          },
          "value": {
            "$ref": "#/components/schemas/ConsentValue_CustomerAPI"
          }
        },
        "description": "Customer\u0027s consent."
      },
      "ConsentKey_CustomerAPI": {
        "type": "string",
        "title": "ConsentKey",
        "enum": [
          "EMAIL_INFO",
          "SMS_INFO",
          "SMS_ADS",
          "TM",
          "DM",
          "ADDRESS",
          "EMAIL_ADS",
          "GDPR_1",
          "GDPR_2",
          "MEMBER"
        ],
        "description": "Consent key (name)."
      },
      "ConsentKey": {
        "type": "string",
        "title": "ConsentKey",
        "enum": [
          "EMAIL_INFO",
          "SMS_INFO",
          "SMS_ADS",
          "TM",
          "DM",
          "ADDRESS",
          "EMAIL_ADS",
          "GDPR_1",
          "GDPR_2",
          "MEMBER"
        ],
        "description": "Consent key (name)."
      },
      "ConsentValue": {
        "type": "string",
        "title": "ConsentValue",
        "enum": [
          "UNKNOWN",
          "DENIED",
          "APPROVED"
        ],
        "description": "Consent value."
      },
      "ConsentValue_CustomerAPI": {
        "type": "string",
        "title": "ConsentValue",
        "enum": [
          "UNKNOWN",
          "DENIED",
          "APPROVED"
        ],
        "description": "Consent value."
      },
      "Content": {
        "type": "object",
        "title": "Content",
        "properties": {
          "addons": {
            "readOnly": false,
            "description": "A list of addons.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubProduct"
            }
          },
          "products": {
            "readOnly": false,
            "description": "A list of sub-products.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubProduct"
            }
          }
        },
        "description": "Contains the sub-products."
      },
      "ContentCategory": {
        "type": "object",
        "title": "ContentCategory",
        "required": [
          "categoryId",
          "noIndex",
          "sortDescending"
        ],
        "properties": {
          "categoryId": {
            "readOnly": false,
            "description": "Id of category",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categoryName": {
            "readOnly": false,
            "description": "Name category",
            "type": "string",
            "example": "..."
          },
          "content": {
            "readOnly": false,
            "description": "Content of category",
            "type": "string",
            "example": "..."
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "Link friendly of category",
            "type": "string",
            "example": "..."
          },
          "metaDescription": {
            "readOnly": false,
            "description": "Meta description of category",
            "type": "string",
            "example": "..."
          },
          "noIndex": {
            "readOnly": false,
            "description": "If category should not be indexed",
            "type": "boolean",
            "example": true
          },
          "sortByField": {
            "readOnly": false,
            "description": "The categories sort mode for articles",
            "type": "string",
            "example": "..."
          },
          "sortDescending": {
            "readOnly": false,
            "description": "The categories sort direction for articles",
            "type": "boolean",
            "example": true
          },
          "title": {
            "readOnly": false,
            "description": "Title of category",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Domain of a content category. Holding information about a category\u0027s content."
      },
      "ContentGroup": {
        "type": "object",
        "title": "ContentGroup",
        "properties": {
          "groups": {
            "readOnly": false,
            "description": "The packages to update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            }
          }
        },
        "description": "Contains grouped content"
      },
      "ContentTree": {
        "type": "object",
        "title": "ContentTree",
        "required": [
          "categoryId",
          "hidden",
          "symlinked"
        ],
        "properties": {
          "categoryId": {
            "readOnly": false,
            "description": "Id of category",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categoryName": {
            "readOnly": false,
            "description": "Name of category",
            "type": "string",
            "example": "..."
          },
          "children": {
            "readOnly": false,
            "description": "Children of this category",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentTree"
            }
          },
          "hidden": {
            "readOnly": false,
            "description": "Hidden status of category",
            "type": "boolean",
            "example": true
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "Link friendly name of category",
            "type": "string",
            "example": "..."
          },
          "symlinked": {
            "readOnly": false,
            "description": "Whether or not this category is symlinked (pointing towards another category)",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Domain representing a content tree node"
      },
      "Country": {
        "type": "object",
        "title": "Country",
        "required": [
          "selectable",
          "shopable"
        ],
        "properties": {
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2).",
            "type": "string"
          },
          "countryCodeAlpha3": {
            "example": "SWE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-3).",
            "type": "string"
          },
          "countryName": {
            "example": "Sweden",
            "readOnly": false,
            "description": "The name of the country.",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The currency code (ISO 4217).",
            "type": "string"
          },
          "handledAs": {
            "example": "EU",
            "readOnly": false,
            "description": "The country code of the other country that this country should be handled as. This is useful when you want to administer several markets at\nonce.",
            "type": "string"
          },
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "selectable": {
            "readOnly": false,
            "description": "Whether or not this country should be available in country selectors.",
            "type": "boolean",
            "example": true
          },
          "shippingFeeLimit": {
            "example": 500,
            "readOnly": false,
            "description": "The minimum value that must be reached in order to get free shipping.",
            "type": "number"
          },
          "shopable": {
            "readOnly": false,
            "description": "Whether or not this country is shopable. Useful for hiding buy buttons and similar logic in markets where you only want to show your goods, not\nsell them.",
            "type": "boolean",
            "example": true
          }
        },
        "description": "A country defines a market where products are sold.\n\u003cp\u003e\nA country has a single currency, meaning you can\u0027t use any other currency when placing orders for that country. For example, if you are ordering\ngoods in the Swedish market, you must pay with SEK.\n\u003c/p\u003e\n\u003cp\u003e\nA country has a default language, however any language can in theory be used for any country when browsing goods, as long as there are translations\nfor that specific language. Languages and countries are in other words not really connected in any important way.\n\u003c/p\u003e"
      },
      "CreateInfo": {
        "type": "object",
        "title": "CreateInfo",
        "properties": {
          "companyName": {
            "example": "Spotify",
            "readOnly": false,
            "description": "The name of the company.",
            "type": "string"
          },
          "customerNumber": {
            "example": "123456",
            "readOnly": false,
            "description": "The customer number.",
            "type": "string"
          },
          "customerUUID": {
            "readOnly": false,
            "description": "The customer UUID. Only used when matching.",
            "type": "string",
            "example": "..."
          },
          "emailAddress": {
            "example": "anton@viskan.com",
            "readOnly": false,
            "description": "The email address.",
            "type": "string"
          },
          "externalMemberNumber": {
            "readOnly": false,
            "description": "The member number in thirdparty",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "example": "Anton",
            "readOnly": false,
            "description": "The first name of the customer or company contact person.",
            "type": "string"
          },
          "lastName": {
            "example": "Johansson",
            "readOnly": false,
            "description": "The last name of the customer or company contact person.",
            "type": "string"
          },
          "organizationNumber": {
            "example": "5567037485",
            "readOnly": false,
            "description": "The organization number of the company.",
            "type": "string"
          },
          "phoneNumber": {
            "readOnly": false,
            "description": "The phone number",
            "type": "string",
            "example": "..."
          },
          "socialSecurityNumber": {
            "example": "199004141234",
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string"
          },
          "zipcode": {
            "example": "123 56",
            "readOnly": false,
            "description": "The zipcode.",
            "type": "string"
          }
        },
        "description": "Information about a customer or company being matched and potentially created."
      },
      "CreatePurchaseParams": {
        "type": "object",
        "title": "CreatePurchaseParams",
        "properties": {
          "additionalOrderText": {
            "readOnly": false,
            "description": "The Additional order text on the purchase.",
            "type": "string",
            "example": "..."
          },
          "address": {
            "$ref": "#/components/schemas/Address_address"
          },
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "The alternative email address of the customer.",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "readOnly": false,
            "description": "The cellphone number of the customer.",
            "type": "string",
            "example": "..."
          },
          "companyName": {
            "readOnly": false,
            "description": "The company name of the customer. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e, \u003ccode\u003elastName\u003c/code\u003e and \u003ccode\u003esocialSecurityNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "contactPerson": {
            "readOnly": false,
            "description": "The contact person to create purchase for.",
            "type": "string",
            "example": "..."
          },
          "customFields": {
            "readOnly": false,
            "description": "Custom fields.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            }
          },
          "dateOfBirth": {
            "readOnly": false,
            "description": "Date of birth of the customer.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "email": {
            "readOnly": false,
            "description": "The email address of the customer.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer. Mutually exclusive with \u0027companyName\u0027.",
            "type": "string",
            "example": "..."
          },
          "gender": {
            "$ref": "#/components/schemas/Sex"
          },
          "googleAnalyticsId": {
            "readOnly": false,
            "description": "Google Analytics Client Id. This Id is used to track anonymous users and their actions. Purchase data will be pushed to google analytics with this id.",
            "type": "string",
            "example": "..."
          },
          "integrities": {
            "example": "EMAIL_INFO",
            "readOnly": false,
            "description": "The list of integrities that the customer consents or opts in to.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "integritiesMap": {
            "readOnly": false,
            "description": "The map of integrities that the customer opts out or opts in to.",
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "example": {
              "EMAIL_INFO": true,
              "SMS_INFO": false
            }
          },
          "landline": {
            "readOnly": false,
            "description": "The landline phone number of the customer.",
            "type": "string",
            "example": "..."
          },
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer. Mutually exclusive with \u0027companyName\u0027.",
            "type": "string",
            "example": "..."
          },
          "nextDeliveryDate": {
            "readOnly": false,
            "description": "For orders: earliest delivery date. For subscriptions: suggested next delivery date. Defaulted to today\u0027s date.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "notes": {
            "readOnly": false,
            "description": "A free text that will be stored in the order\u0027s/subscription\u0027s list of notes.",
            "type": "string",
            "example": "..."
          },
          "orderDate": {
            "readOnly": false,
            "description": "For orders: the order date. For subscription: the starting date. Defaulted to nextDeliveryDate if specified, otherwise today\u0027s date",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number of the customer. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e, \u003ccode\u003elastName\u003c/code\u003e and\n\u003ccode\u003esocialSecurityNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "remoteAddress": {
            "readOnly": false,
            "description": "The remote client address.",
            "type": "string",
            "example": "..."
          },
          "sellerDepartment": {
            "readOnly": false,
            "description": "For sales handled by third parties, typically TM call centers - the department that the seller belongs to. The order/subscription\u0027s createdBy field will\nbe updated with the department (and sellerPerson)",
            "type": "string",
            "example": "..."
          },
          "sellerPerson": {
            "readOnly": false,
            "description": "For sales handled by third parties, typically TM call centers - the name/identifier of the seller person. The order/subscription\u0027s createdBy field will\nbe updated with the seller (and sellerDepartment)",
            "type": "string",
            "example": "..."
          },
          "settings": {
            "$ref": "#/components/schemas/CreatePurchaseParamsSettings"
          },
          "shopcartId": {
            "readOnly": false,
            "description": "The shopcart to create purchase for.",
            "type": "string",
            "example": "..."
          },
          "socialSecurityNumber": {
            "readOnly": false,
            "description": "The social security number of the customer. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e and \u003ccode\u003eorganizationNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines parameters that are used to create new purchases."
      },
      "CreatePurchaseParamsSettings": {
        "type": "object",
        "title": "CreatePurchaseParamsSettings",
        "properties": {
          "cancelPagePath": {
            "example": "/cancel/{purchaseNumber}",
            "readOnly": false,
            "description": "The path to the cancel page.",
            "type": "string"
          },
          "params": {
            "readOnly": false,
            "description": "Contains additional unique parameters required by third party providers.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "property1": "...",
              "property2": "..."
            }
          },
          "receiptPagePath": {
            "example": "/receipt/{purchaseNumber}",
            "readOnly": false,
            "description": "The path of the receipt page.",
            "type": "string"
          },
          "storeURL": {
            "example": "https://shop.viskan.com",
            "readOnly": false,
            "description": "The base URL for the store.",
            "type": "string"
          }
        },
        "description": "Contains settings for creating purchases."
      },
      "CreatePurchaseResult": {
        "type": "object",
        "title": "CreatePurchaseResult",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/PurchaseResultAction"
          },
          "additionalInformation": {
            "readOnly": false,
            "description": "Any additional information about the created purchase.",
            "type": "object",
            "example": {}
          },
          "callbackURL": {
            "readOnly": false,
            "description": "If set, this URL should be used for callback, when payment is completed.",
            "type": "string",
            "example": "..."
          },
          "encoding": {
            "readOnly": false,
            "description": "The encoding to use when submitting a form.",
            "type": "string",
            "example": "..."
          },
          "parameters": {
            "readOnly": false,
            "description": "The parameters to submit.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubmitParameter"
            }
          },
          "purchaseNumber": {
            "readOnly": false,
            "description": "The unique number of the created purchase.",
            "type": "string",
            "example": "..."
          },
          "redirectURL": {
            "readOnly": false,
            "description": "If set, the user should be redirected to this URL.",
            "type": "string",
            "example": "..."
          },
          "scriptURL": {
            "readOnly": false,
            "description": "If set, this URL provides the required script for callback calls.",
            "type": "string",
            "example": "..."
          },
          "submitURL": {
            "readOnly": false,
            "description": "If set, the user should have a form submitted to this URL, with the given encoding and set of parameters.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines the result of creating a purchase."
      },
      "CreatedReturn": {
        "type": "object",
        "title": "CreatedReturn",
        "required": [
          "returnId"
        ],
        "properties": {
          "returnId": {
            "readOnly": false,
            "description": "The internal identifier of the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "returnNumber": {
            "readOnly": false,
            "description": "The external number of the return.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Identifies a created a return."
      },
      "Credentials": {
        "type": "object",
        "title": "Credentials",
        "properties": {
          "identifier": {
            "example": "anton.johansson@viskan.se",
            "readOnly": false,
            "description": "The identifier of the customer, for example an email address.",
            "type": "string"
          },
          "identifierType": {
            "$ref": "#/components/schemas/IdentifierType"
          },
          "password": {
            "example": "s3cr3t",
            "readOnly": false,
            "description": "The plain-text password of the customer.",
            "type": "string"
          }
        },
        "description": "Holds customer credentials for authenticating to \"My pages\"."
      },
      "CurrentDeliveryPoint": {
        "type": "object",
        "title": "CurrentDeliveryPoint",
        "required": [
          "deliveryPointId"
        ],
        "properties": {
          "deliveryPointCode": {
            "readOnly": false,
            "description": "The unique code of the delivery point. It\u0027s unique per carrier.",
            "type": "string",
            "example": "..."
          },
          "deliveryPointId": {
            "readOnly": false,
            "description": "The internal identifier of the delivery point.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryPointName": {
            "readOnly": false,
            "description": "The public name of the delivery point.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The delivery point where the parcels of the delivery is currently at."
      },
      "CustomFieldDelivery": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "example": "shippingReference",
            "readOnly": false,
            "description": "The code of the custom field.",
            "type": "string"
          },
          "inheritedFrom": {
            "example": "PURCHASE",
            "readOnly": false,
            "description": "The type of the custom field.",
            "type": "string"
          },
          "value": {
            "example": "22468-15267-80",
            "readOnly": false,
            "description": "The value of the custom field.",
            "type": "string"
          }
        },
        "description": "Contains custom fields for a delivery."
      },
      "CustomField_PurchaseOrderAPI": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "readOnly": false,
            "description": "The code of the key associated with this field",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "The value of this custom data.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Any custom data associated with this row"
      },
      "CustomField": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "readOnly": false,
            "description": "The code of a custom field. Must be present in CustomFieldKey table and be non-null and non-empty, otherwise will be ignored.",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "The value to be assigned to the specified code.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Class that represents custom fields on purchases"
      },
      "MyPagesDeliveryCustomField": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "readOnly": false,
            "description": "The code of the custom field.",
            "type": "string",
            "example": "..."
          },
          "inheritedFrom": {
            "readOnly": false,
            "description": "The type of the custom field.",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "The value of the custom field.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a delivery custom field"
      },
      "CustomFieldReturnResult": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "example": "returnReference",
            "readOnly": false,
            "description": "The code of the custom field.",
            "type": "string"
          },
          "inheritedFrom": {
            "example": "RETURN",
            "readOnly": false,
            "description": "The type of the custom field.",
            "type": "string"
          },
          "value": {
            "example": "22468-15267-80",
            "readOnly": false,
            "description": "The value of the custom field.",
            "type": "string"
          }
        },
        "description": "Contains custom fields for a return."
      },
      "CustomFieldDeliveryChanges": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "example": "shippingReference",
            "readOnly": false,
            "description": "The code of the custom field.",
            "type": "string"
          },
          "value": {
            "example": "22468-15267-80",
            "readOnly": false,
            "description": "The value of the custom field.",
            "type": "string"
          }
        },
        "description": "Contains custom fields for a delivery."
      },
      "CustomField_OrderAPI": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "example": "orderReference",
            "readOnly": false,
            "description": "The code of the custom field.",
            "type": "string"
          },
          "inheritedFrom": {
            "example": "PURCHASE",
            "readOnly": false,
            "description": "The type of the custom field.",
            "type": "string"
          },
          "value": {
            "example": "22468-15267-80",
            "readOnly": false,
            "description": "The value of the custom field.",
            "type": "string"
          }
        },
        "description": "Contains custom fields for an order."
      },
      "CustomFieldReturnToCreate": {
        "type": "object",
        "title": "CustomField",
        "properties": {
          "code": {
            "example": "returnReference",
            "readOnly": false,
            "description": "The code of the custom field.",
            "type": "string"
          },
          "value": {
            "example": "22468-15267-80",
            "readOnly": false,
            "description": "The value of the custom field.",
            "type": "string"
          }
        },
        "description": "Contains custom fields for a return."
      },
      "Customer": {
        "type": "object",
        "title": "Customer",
        "required": [
          "customerId"
        ],
        "properties": {
          "customerId": {
            "example": 123,
            "readOnly": false,
            "description": "The internal identifier of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "example": "123456",
            "readOnly": false,
            "description": "The external identifier of the customer.",
            "type": "string"
          },
          "mergedCustomerIds": {
            "readOnly": false,
            "description": "Duplicates of the customer.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          }
        },
        "description": "Customer"
      },
      "MyPagesCustomer": {
        "type": "object",
        "title": "Customer",
        "required": [
          "bonusPoints",
          "companyUser",
          "customerId",
          "priceListId"
        ],
        "properties": {
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "The second email address for the customer.",
            "type": "string",
            "example": "..."
          },
          "bonusPoints": {
            "readOnly": false,
            "description": "The bonus points a customer has",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categories": {
            "readOnly": false,
            "description": "The categories that the customer is member of",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category_v2"
            }
          },
          "cellphone": {
            "readOnly": false,
            "description": "The cellphone number for the customer.",
            "type": "string",
            "example": "..."
          },
          "companies": {
            "readOnly": false,
            "description": "The companies on whose behalf this customer can place orders",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Company"
            }
          },
          "companyName": {
            "readOnly": false,
            "description": "The company name if any",
            "type": "string",
            "example": "..."
          },
          "companyUser": {
            "readOnly": false,
            "description": "The customer is a user or a company user",
            "type": "boolean",
            "example": true
          },
          "consents": {
            "readOnly": false,
            "description": "The consents of the customer",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerConsent"
            }
          },
          "contactPerson": {
            "readOnly": false,
            "description": "The name of a contact person for a company if any",
            "type": "string",
            "example": "..."
          },
          "creditLimit": {
            "readOnly": false,
            "description": "The credit limit of the customer",
            "type": "number",
            "example": 12345
          },
          "creditUsed": {
            "readOnly": false,
            "description": "The amount of used credit. Should be less than the credit limit",
            "type": "number",
            "example": 12345
          },
          "customerId": {
            "readOnly": false,
            "description": "The internal unique identifier of the customer. Deprecated in favour of customerUUID",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The external unique number of the customer.",
            "type": "string",
            "example": "..."
          },
          "customerReducedPricePercentage": {
            "readOnly": false,
            "description": "The customerReducedPricePercentage if any",
            "type": "number",
            "example": 12345
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "customerUUID": {
            "readOnly": false,
            "description": "The universally unique identifier of the customer.",
            "type": "string",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "deliveryAddresses": {
            "readOnly": false,
            "description": "The delivery addresses of a customer",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryAddress"
            }
          },
          "emailAddress": {
            "readOnly": false,
            "description": "The email address for the customer.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer.",
            "type": "string",
            "example": "..."
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer.",
            "type": "string",
            "example": "..."
          },
          "memberNumber": {
            "readOnly": false,
            "description": "The member number of the customer, used for customer club memberships.",
            "type": "string",
            "example": "..."
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number if any",
            "type": "string",
            "example": "..."
          },
          "priceListId": {
            "readOnly": false,
            "description": "The default price list for this customer.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "properties": {
            "readOnly": false,
            "description": "The properties of a customer",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_v2"
            }
          },
          "providerData": {
            "readOnly": false,
            "description": "The providerdata if any",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "socialSecurityNumber": {
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string",
            "example": "..."
          },
          "store": {
            "$ref": "#/components/schemas/MyPagesStore"
          },
          "vatRegistrationNumber": {
            "readOnly": false,
            "description": "The VAT registration number if any",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A customer is the central part of ETM. It holds information required to communicate with the customer and holds shipping information for the\ncustomer."
      },
      "Customer_CustomerResult": {
        "type": "object",
        "title": "Customer",
        "required": [
          "companyUser",
          "customerId",
          "removed"
        ],
        "properties": {
          "addresses": {
            "readOnly": false,
            "description": "Other Addresses of the customer.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerAddress"
            }
          },
          "alternativeEmailAddress": {
            "example": "kkarlsson@post.se",
            "readOnly": false,
            "description": "Alternative email address of the customer.",
            "type": "string"
          },
          "birthDate": {
            "example": "1977-01-11",
            "readOnly": false,
            "description": "Birth date of the customer.",
            "type": "string",
            "format": "date"
          },
          "blockCode": {
            "$ref": "#/components/schemas/BlockCode"
          },
          "bonusPoints": {
            "example": "10",
            "readOnly": false,
            "description": "Bonus Points of the customer.",
            "type": "string"
          },
          "categories": {
            "readOnly": false,
            "description": "List of customer categories.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category_CustomerResult"
            }
          },
          "cellphone": {
            "example": "+46712345678",
            "readOnly": false,
            "description": "Cell phone of the customer.",
            "type": "string"
          },
          "companies": {
            "readOnly": false,
            "description": "Contains a list of companies the customer has access to if it\u0027s a company user",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerUser"
            }
          },
          "companyName": {
            "example": "Viskan",
            "readOnly": false,
            "description": "Company name of the customer.",
            "type": "string"
          },
          "companyUser": {
            "readOnly": false,
            "description": "Whether or not the user is a company user",
            "type": "boolean",
            "example": true
          },
          "consents": {
            "readOnly": false,
            "description": "List of customer\u0027s consents.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Consent"
            }
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example SE.",
            "type": "string"
          },
          "createdAt": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "Creation date of the customer.",
            "type": "string",
            "format": "date-time"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "Default Currency code of the customer.",
            "type": "string"
          },
          "customerId": {
            "example": 581,
            "readOnly": false,
            "description": "The internal identifier of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "example": "100011",
            "readOnly": false,
            "description": "The external number of the customer.",
            "type": "string"
          },
          "defaultPaymentMethod": {
            "$ref": "#/components/schemas/DefaultPaymentMethod"
          },
          "defaultTermsOfPayment": {
            "$ref": "#/components/schemas/DefaultTermsOfPayment"
          },
          "emailAddress": {
            "example": "karl.karlsson@mail.se",
            "readOnly": false,
            "description": "Email address of the customer.",
            "type": "string"
          },
          "firstName": {
            "example": "Karl",
            "readOnly": false,
            "description": "First name of the customer.",
            "type": "string"
          },
          "firstSubscriptionName": {
            "example": "Omega 3 subscription",
            "readOnly": false,
            "description": "Get the name of the customers first subscription.",
            "type": "string"
          },
          "gender": {
            "$ref": "#/components/schemas/Gender"
          },
          "invoiceAddress": {
            "readOnly": false,
            "description": "Invoice Address of the customer.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceAddress"
            }
          },
          "landLine": {
            "example": "+46712345678",
            "readOnly": false,
            "description": "The landline of the customer.",
            "type": "string"
          },
          "languageCode": {
            "example": "SV",
            "readOnly": false,
            "description": "Language code of the customer.",
            "type": "string"
          },
          "lastName": {
            "example": "Karlsson",
            "readOnly": false,
            "description": "Last name of the customer.",
            "type": "string"
          },
          "mergedCustomerIds": {
            "readOnly": false,
            "description": "Duplicates of the customer.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "modifiedAt": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "Last changed date of the customer.",
            "type": "string",
            "format": "date-time"
          },
          "organizationNumber": {
            "example": "7711221234",
            "readOnly": false,
            "description": "The organization number of the customer.",
            "type": "string"
          },
          "priceList": {
            "$ref": "#/components/schemas/PriceList"
          },
          "reducedPricePercentage": {
            "readOnly": false,
            "description": "The reduced price for the customer in percentage",
            "type": "number",
            "example": 12345
          },
          "removed": {
            "example": true,
            "readOnly": false,
            "description": "Whether or not the customer is removed.",
            "type": "boolean"
          },
          "socialSecurityNumber": {
            "example": "197701116050",
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string"
          },
          "users": {
            "readOnly": false,
            "description": "Contains a list of users the customer has if it\u0027s a company",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerUser"
            }
          },
          "vatRegistrationNumber": {
            "example": "DE123456789",
            "readOnly": false,
            "description": "VAT Registration Number of the customer.",
            "type": "string"
          }
        },
        "description": "** Customer information."
      },
      "CustomerActivitiesToAdd": {
        "type": "object",
        "title": "CustomerActivitiesToAdd",
        "properties": {
          "customerActivitiesToAdd": {
            "readOnly": false,
            "description": "The list of customers activities to add.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerActivity"
            }
          }
        },
        "description": "Holds information about customer activities."
      },
      "CustomerActivity": {
        "type": "object",
        "title": "CustomerActivity",
        "required": [
          "activityTypeId"
        ],
        "properties": {
          "activityTypeId": {
            "example": 23500,
            "readOnly": false,
            "description": "The id of the customer activity type, must be greater than or equal to \u003ccode\u003e20000\u003c/code\u003e.",
            "type": "integer",
            "format": "int32"
          },
          "comment": {
            "example": "Outbound email sent",
            "readOnly": false,
            "description": "The optional comment about the customer activity.",
            "type": "string"
          },
          "date": {
            "example": "2025-06-06T14:30:10.000+01:00",
            "readOnly": false,
            "description": "The optional timestamp of the customer activity. Make sure to include a correct time zone offset.",
            "type": "string",
            "format": "date"
          }
        },
        "description": "Holds information about a customer activity."
      },
      "CustomerAddress": {
        "type": "object",
        "title": "CustomerAddress",
        "properties": {
          "addressLine1": {
            "example": "Södra Vägen 3",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "addressLine2": {
            "example": "Apartment 102",
            "readOnly": false,
            "description": "The second address line, contains extra data.",
            "type": "string"
          },
          "addressNumber": {
            "example": "ABC123",
            "readOnly": false,
            "description": "The external address number.",
            "type": "string"
          },
          "addressType": {
            "$ref": "#/components/schemas/AddressType"
          },
          "administrativeDivision": {
            "example": "West Gothland",
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string"
          },
          "alternativeEmailAddress": {
            "example": "karl.karlsson.alt@mail.se",
            "readOnly": false,
            "description": "Alternative email address of the recipient.",
            "type": "string"
          },
          "careOf": {
            "example": "Some person",
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string"
          },
          "cellphone": {
            "example": "+46712345678",
            "readOnly": false,
            "description": "Cell phone number of the recipient.",
            "type": "string"
          },
          "city": {
            "example": "Stockholm",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan",
            "readOnly": false,
            "description": "The company name of the customer, if the customer is connected to a company.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example SE.",
            "type": "string"
          },
          "emailAddress": {
            "example": "karl.karlsson@mail.se",
            "readOnly": false,
            "description": "Email address of the recipient.",
            "type": "string"
          },
          "firstName": {
            "example": "Karl",
            "readOnly": false,
            "description": "The first name of the recipient.",
            "type": "string"
          },
          "lastName": {
            "example": "Karlsson",
            "readOnly": false,
            "description": "The last name of the recipient.",
            "type": "string"
          },
          "zipcode": {
            "example": "113 51",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Customer Address"
      },
      "CustomerAddress_CustomerAPI": {
        "type": "object",
        "title": "CustomerAddress",
        "properties": {
          "addressLine1": {
            "example": "Södra Långgatan 12",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "addressLine2": {
            "example": "Apartment 102",
            "readOnly": false,
            "description": "The second address line, contains extra data.",
            "type": "string"
          },
          "addressNumber": {
            "example": "ABC123",
            "readOnly": false,
            "description": "The external address number. Used as an identifier for a customerAddress. Required for updating addresses",
            "type": "string"
          },
          "addressType": {
            "$ref": "#/components/schemas/AddressType"
          },
          "administrativeDivision": {
            "example": "West Gothland",
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string"
          },
          "careOf": {
            "example": "Some person",
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string"
          },
          "cellphone": {
            "example": "+46712345678",
            "readOnly": false,
            "description": "Cell phone number of the recipient.",
            "type": "string"
          },
          "city": {
            "example": "Stockholm",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan",
            "readOnly": false,
            "description": "The company name of the customer, if the customer is connected to a company.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example SE.",
            "type": "string"
          },
          "emailAddress": {
            "example": "karl.karlsson@mail.se",
            "readOnly": false,
            "description": "Email address of the recipient.",
            "type": "string"
          },
          "firstName": {
            "example": "Karl",
            "readOnly": false,
            "description": "The first name of the recipient.",
            "type": "string"
          },
          "lastName": {
            "example": "Karlsson",
            "readOnly": false,
            "description": "The last name of the recipient.",
            "type": "string"
          },
          "zipCode": {
            "example": "113 51",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Customer Address"
      },
      "CustomerChanges": {
        "type": "object",
        "title": "CustomerChanges",
        "properties": {
          "consentsToUpdate": {
            "readOnly": false,
            "description": "Contains changes of customer\u0027s consents.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Consent_CustomerAPI"
            }
          }
        },
        "description": "Contains changes that applies to a customer."
      },
      "CustomerCompanyInformation": {
        "type": "object",
        "title": "CustomerCompanyInformation",
        "required": [
          "customerId"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "Whether or not this customer / user has access to the connected company.",
            "type": "boolean",
            "example": true
          },
          "administrator": {
            "readOnly": false,
            "description": "Whether or not this customer / user is an administrator of the connected company.",
            "type": "boolean",
            "example": true
          },
          "cellphone": {
            "readOnly": false,
            "description": "The cell phone number for the customer.",
            "type": "string",
            "example": "..."
          },
          "customerId": {
            "readOnly": false,
            "description": "The internal unique identifier of the customer.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The external unique number of the customer.",
            "type": "string",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "emailAddress": {
            "readOnly": false,
            "description": "The email address for the customer.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer user.",
            "type": "string",
            "example": "..."
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer user.",
            "type": "string",
            "example": "..."
          },
          "proxy": {
            "readOnly": false,
            "description": "Whether or not this customer / user is a proxy for the connected company.",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Defines a company user."
      },
      "CustomerConsent_CustomerAPI": {
        "type": "object",
        "title": "CustomerConsent",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/CustomerIntegrityType"
          },
          "value": {
            "$ref": "#/components/schemas/CustomerIntegrityValue"
          }
        },
        "description": "Represents a customer\u0027s consent to a specific type of integrity."
      },
      "CustomerConsent": {
        "type": "object",
        "title": "CustomerConsent",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/CustomerIntegrityType"
          },
          "value": {
            "$ref": "#/components/schemas/CustomerIntegrityValue_customer"
          }
        },
        "description": ""
      },
      "CustomerIntegrityType": {
        "type": "string",
        "title": "CustomerIntegrityType",
        "enum": [
          "EMAIL_INFO",
          "SMS_INFO",
          "SMS_ADS",
          "TM",
          "DM",
          "EMAIL_ADS",
          "CUSTOM_CONSENT_1",
          "CUSTOM_CONSENT_2",
          "MEMBER"
        ],
        "description": ""
      },
      "CustomerIntegrityValue": {
        "type": "string",
        "title": "CustomerIntegrityValue",
        "enum": [
          "APPROVED",
          "DENIED"
        ],
        "description": "Represents the integrity value that is applied to a CustomerIntegrityType. This is used to indicate whether a customer has approved or\ndenied a specific integrity type."
      },
      "CustomerIntegrityValue_customer": {
        "type": "string",
        "title": "CustomerIntegrityValue",
        "enum": [
          "DENIED",
          "APPROVED",
          "UNKNOWN"
        ],
        "description": ""
      },
      "CustomerMessage": {
        "type": "object",
        "title": "CustomerMessage",
        "required": [
          "helpdesk",
          "mailAttachmentId",
          "prioritizeTemplateSender"
        ],
        "properties": {
          "attachments": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment"
            }
          },
          "helpdesk": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "helpdeskTagId": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HelpdeskTag"
            }
          },
          "mailAttachmentId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "notificationTemplate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "orderedParameter": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Entry"
              }
            }
          },
          "prioritizeTemplateSender": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "replyTo": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "templateParameter": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "property1": "...",
              "property2": "..."
            }
          }
        },
        "description": "Holds data related to customer message."
      },
      "CustomerResult": {
        "type": "object",
        "title": "CustomerResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Customer_CustomerResult"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Documentation Customer API result class"
      },
      "CustomerToAddOrUpdate": {
        "type": "object",
        "title": "CustomerToAddOrUpdate",
        "required": [
          "companyUser"
        ],
        "properties": {
          "addresses": {
            "readOnly": false,
            "description": "Other Addresses of the customer. Can be used to list different delivery address in checkout for example.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerAddress_CustomerAPI"
            }
          },
          "alternativeEmailAddress": {
            "example": "karl.karlsson.alt@mail.se",
            "readOnly": false,
            "description": "Alternative email address of the customer.",
            "type": "string"
          },
          "birthDate": {
            "example": "19770111",
            "readOnly": false,
            "description": "The date of birth of the customer. To reset the birthdate, enter 19000101.",
            "type": "string"
          },
          "blockCodeNumber": {
            "example": "04",
            "readOnly": false,
            "description": "The block code to be set on the customer. Codes of type \u0027forgotten\u0027 or \u0027system\u0027 are restricted and cannot be used. To reset a customer\u0027s block code, send the value for \u0027none\u0027 (typically 00).",
            "type": "string"
          },
          "cellphone": {
            "example": "+46712345678",
            "readOnly": false,
            "description": "Cell phone number of the customer.",
            "type": "string"
          },
          "companiesToAddOrUpdate": {
            "readOnly": false,
            "description": "Companies that this customer has access to if it\u0027s a company user.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerUser"
            }
          },
          "companyName": {
            "example": "Viskan System AB",
            "readOnly": false,
            "description": "Company name of the customer.",
            "type": "string"
          },
          "companyUser": {
            "readOnly": false,
            "description": "If the user is a company user or not.",
            "type": "boolean",
            "example": true
          },
          "creditLimit": {
            "example": 1500,
            "readOnly": false,
            "description": "The credit limit for the customer. If not provided, the system falls back to the default credit limit configured for the customer\u0027s invoice country.",
            "type": "number"
          },
          "customerNumber": {
            "example": "100011",
            "readOnly": false,
            "description": "The external number of the customer. Mandatory when updating, can be used when adding new customers if you use your own external numbering system otherwise it will be generated if empty",
            "type": "string"
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address"
          },
          "emailAddress": {
            "example": "karl.karlsson@mail.se",
            "readOnly": false,
            "description": "Email address of the customer.",
            "type": "string"
          },
          "firstName": {
            "example": "Karl",
            "readOnly": false,
            "description": "First name of the customer.",
            "type": "string"
          },
          "gender": {
            "example": "FEMALE",
            "readOnly": false,
            "description": "The gender of the customer. Only applicable for private persons. Can be UNSPECIFIED, MALE or FEMALE",
            "type": "string"
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/Address"
          },
          "landline": {
            "example": "+46701740615",
            "readOnly": false,
            "description": "Landline phone number of the customer.",
            "type": "string"
          },
          "languageCode": {
            "example": "no",
            "readOnly": false,
            "description": "The language code of the customer. Must match a valid language code (e.g. \"sv\", \"no\", \"en\", \"SV\"). If not provided, the language field will be left empty.",
            "type": "string"
          },
          "lastName": {
            "example": "Karlsson",
            "readOnly": false,
            "description": "Last name of the customer.",
            "type": "string"
          },
          "organizationNumber": {
            "example": "7711221234",
            "readOnly": false,
            "description": "The organization number of the customer.",
            "type": "string"
          },
          "priceList": {
            "$ref": "#/components/schemas/PriceList"
          },
          "reducedPricePercentage": {
            "example": 0.25,
            "readOnly": false,
            "description": "The reduced price in percentage for this customer. If set to 0.5 the customer will get a 50% discounted price on all products.",
            "type": "number"
          },
          "socialSecurityNumber": {
            "example": "197701116050",
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string"
          },
          "usersToAddOrUpdate": {
            "readOnly": false,
            "description": "Which users has access to this customer if it\u0027s a company.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerUser"
            }
          }
        },
        "description": "Contains a customer to add or update"
      },
      "CustomerToAddOrUpdateResult": {
        "type": "object",
        "title": "CustomerToAddOrUpdateResult",
        "properties": {
          "created": {
            "readOnly": false,
            "description": "The list of customers that were created.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerToAddOrUpdateResultCustomer"
            }
          },
          "updated": {
            "readOnly": false,
            "description": "The list of customers that were updated.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerToAddOrUpdateResultCustomer"
            }
          }
        },
        "description": "Holds information about created \u0026 updated customers."
      },
      "CustomerToAddOrUpdateResultCustomer": {
        "type": "object",
        "title": "CustomerToAddOrUpdateResultCustomer",
        "required": [
          "customerId"
        ],
        "properties": {
          "customerId": {
            "readOnly": false,
            "description": "The internal identifier.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The customer number.",
            "type": "string",
            "example": "..."
          },
          "emailAddress": {
            "readOnly": false,
            "description": "The email address.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds information about a created or updated customer."
      },
      "CustomerType": {
        "type": "string",
        "title": "CustomerType",
        "enum": [
          "COMPANY",
          "PERSON"
        ],
        "description": ""
      },
      "CustomerUser": {
        "type": "object",
        "title": "CustomerUser",
        "required": [
          "active",
          "admin",
          "customerId",
          "proxy"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "If connection should be active or not.",
            "type": "boolean"
          },
          "admin": {
            "example": true,
            "readOnly": false,
            "description": "If the user should be designated as an Administrator or not.",
            "type": "boolean"
          },
          "customerId": {
            "example": 123,
            "readOnly": false,
            "description": "The identifier of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "proxy": {
            "example": true,
            "readOnly": false,
            "description": "If the user should be designated as a proxy or not.",
            "type": "boolean"
          }
        },
        "description": "The customer to add as a connection"
      },
      "CustomersToAddOrUpdate": {
        "type": "object",
        "title": "CustomersToAddOrUpdate",
        "properties": {
          "customersToAddOrUpdate": {
            "readOnly": false,
            "description": "The customers to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerToAddOrUpdate"
            }
          }
        },
        "description": "Contains a list of customers to add or update."
      },
      "DayOfWeek": {
        "type": "string",
        "title": "DayOfWeek",
        "enum": [
          "MONDAY",
          "TUESDAY",
          "WEDNESDAY",
          "THURSDAY",
          "FRIDAY",
          "SATURDAY",
          "SUNDAY"
        ],
        "description": "A day-of-week, such as \u0027Tuesday\u0027.\n\u003cp\u003e\nRepresents the 7 days of the week - Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday."
      },
      "DefaultAttributes": {
        "type": "object",
        "title": "DefaultAttributes",
        "properties": {
          "attribute1Number": {
            "example": "1066",
            "readOnly": false,
            "description": "The default attribute1 for this product, presented by number. E.g attribute1 is color.\nIf red is set as the default color then the product detail will show a red variant as the default product variant",
            "type": "string"
          },
          "attribute2Number": {
            "example": "4577",
            "readOnly": false,
            "description": "The default attribute2 for this product, presented by number. E.g attribute2 is size.\nIf XL is set as the default size then the product detail will show a variant with XL as the default product variant",
            "type": "string"
          },
          "attribute3Number": {
            "example": "456",
            "readOnly": false,
            "description": "The default attribute3 for this product, presented by number. E.g attribute3 is taste.\nIf cheese is set as the default taste then the product detail will show a cheese variant as the default product variant",
            "type": "string"
          }
        },
        "description": "Defines default attributes of a product."
      },
      "DefaultPaymentMethod": {
        "type": "object",
        "title": "DefaultPaymentMethod",
        "required": [
          "paymentMethodId"
        ],
        "properties": {
          "paymentMethodId": {
            "example": 104,
            "readOnly": false,
            "description": "Default payment method id.",
            "type": "integer",
            "format": "int32"
          },
          "paymentMethodName": {
            "example": "Invoice",
            "readOnly": false,
            "description": "Default payment method name.",
            "type": "string"
          }
        },
        "description": "Default Payment Method"
      },
      "DefaultTermsOfPayment": {
        "type": "object",
        "title": "DefaultTermsOfPayment",
        "required": [
          "daysToPay",
          "termsOfPaymentId"
        ],
        "properties": {
          "daysToPay": {
            "example": 14,
            "readOnly": false,
            "description": "Number of days the customer has to pay the invoice.",
            "type": "integer",
            "format": "int32"
          },
          "termsOfPaymentId": {
            "example": 100012,
            "readOnly": false,
            "description": "Default terms of payment id.",
            "type": "integer",
            "format": "int32"
          },
          "termsOfPaymentName": {
            "example": "Partial payment",
            "readOnly": false,
            "description": "Default terms of payment name.",
            "type": "string"
          }
        },
        "description": "Default Terms Of Payment"
      },
      "MyPagesDelivery": {
        "type": "object",
        "title": "Deliveries",
        "required": [
          "deliveryId"
        ],
        "properties": {
          "deliveryId": {
            "readOnly": false,
            "description": "The identifier for the delivery",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryNumber": {
            "readOnly": false,
            "description": "The external, unique number of the delivery.",
            "type": "string",
            "example": "..."
          },
          "deliveryStatus": {
            "$ref": "#/components/schemas/DeliveryStatus"
          },
          "discount": {
            "readOnly": false,
            "description": "Discount on \"head\" level. Does not include discount on the rows.",
            "type": "number",
            "example": 12345
          },
          "dueDate": {
            "readOnly": false,
            "description": "The due date if any",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "estimatedDeliveryDate": {
            "readOnly": false,
            "description": "The estimated date when the delivery was delivered. Only available for deliveries created from subscriptions.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The order number of the delivery",
            "type": "string",
            "example": "..."
          },
          "orderType": {
            "$ref": "#/components/schemas/OrderType"
          },
          "paymentDate": {
            "readOnly": false,
            "description": "The payment date if any",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "paymentReference": {
            "readOnly": false,
            "description": "The payment reference if any",
            "type": "string",
            "example": "..."
          },
          "paymentStatus": {
            "$ref": "#/components/schemas/PaymentStatus"
          },
          "subscriptionDescription": {
            "readOnly": false,
            "description": "The description of the subscription the delivery originates from.",
            "type": "string",
            "example": "..."
          },
          "totalAmount": {
            "readOnly": false,
            "description": "The total amount to pay for this delivery.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines a delivery.\n\u003cp\u003e\nOne customer can have multiple deliveries and a delivery can potentially have delivery rows.\n\u003c/p\u003e"
      },
      "Delivery": {
        "type": "object",
        "title": "Delivery",
        "required": [
          "batchNumber",
          "deliveryId",
          "orderId",
          "warehouseId"
        ],
        "properties": {
          "batchNumber": {
            "example": 2490,
            "readOnly": false,
            "description": "The batch number that includes this delivery.",
            "type": "integer",
            "format": "int32"
          },
          "campaign": {
            "$ref": "#/components/schemas/Campaign_DeliveryAPI"
          },
          "currencyCode": {
            "readOnly": false,
            "description": "The iso3 currency code of the currency used.",
            "type": "string",
            "example": "..."
          },
          "customFields": {
            "readOnly": false,
            "description": "The Custom Fields for the delivery",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldDelivery"
            }
          },
          "customer": {
            "$ref": "#/components/schemas/DeliveryCustomer"
          },
          "deliveryDate": {
            "example": "2020-09-30",
            "readOnly": false,
            "description": "The date when the delivery was actually delivered.",
            "type": "string",
            "format": "date"
          },
          "deliveryId": {
            "readOnly": false,
            "description": "The internal identifier of the delivery.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryMethod": {
            "$ref": "#/components/schemas/DeliveryMethod_DeliveryAPI"
          },
          "deliveryNote": {
            "readOnly": false,
            "description": "A delivery note",
            "type": "string",
            "example": "..."
          },
          "deliveryNumber": {
            "readOnly": false,
            "description": "The external number of the delivery.",
            "type": "string",
            "example": "..."
          },
          "deliveryPoint": {
            "$ref": "#/components/schemas/DeliveryPoint_DeliveryAPI"
          },
          "estimatedArrivalDate": {
            "example": "2020-09-28",
            "readOnly": false,
            "description": "The estimated date when the delivery is delivered to the customer. Only available when using shipping options and timeslot.",
            "type": "string",
            "format": "date"
          },
          "externalOrderNumber": {
            "readOnly": false,
            "description": "The number of the order that it has in a thirdparty system.",
            "type": "string",
            "example": "..."
          },
          "invoice": {
            "$ref": "#/components/schemas/DeliveryInvoice"
          },
          "methodOfArrivalNumber": {
            "example": "E01",
            "readOnly": false,
            "description": "Method of arrival.",
            "type": "string"
          },
          "minimumDeliveryDate": {
            "example": "2020-09-21",
            "readOnly": false,
            "description": "The earliest date when the order should be delivered.",
            "type": "string",
            "format": "date"
          },
          "orderDate": {
            "example": "2020-09-21",
            "readOnly": false,
            "description": "The date when the order behind the delivery was placed.",
            "type": "string",
            "format": "date"
          },
          "orderId": {
            "readOnly": false,
            "description": "The internal identifier of the order.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The external number of the order.",
            "type": "string",
            "example": "..."
          },
          "parcels": {
            "readOnly": false,
            "description": "The parcels of this delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryParcel"
            }
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PaymentMethod_DeliveryAPI"
          },
          "processChain": {
            "readOnly": false,
            "description": "The process chain of the delivery.",
            "type": "string",
            "example": "..."
          },
          "processStatus": {
            "readOnly": false,
            "description": "The process status of the delivery.",
            "type": "string",
            "example": "..."
          },
          "purchaseNumber": {
            "readOnly": false,
            "description": "The external number of the purchase.",
            "type": "string",
            "example": "..."
          },
          "rows": {
            "readOnly": false,
            "description": "The rows of the delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryRow"
            }
          },
          "shippingOption": {
            "$ref": "#/components/schemas/ShippingOption"
          },
          "status": {
            "$ref": "#/components/schemas/DeliveryStatus_DeliveryAPI"
          },
          "subscriptionInformation": {
            "$ref": "#/components/schemas/SubscriptionInformation"
          },
          "taxRates": {
            "readOnly": false,
            "description": "The tax rates of the delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryTaxRate"
            }
          },
          "termsOfPayment": {
            "$ref": "#/components/schemas/TermsOfPayment"
          },
          "value": {
            "$ref": "#/components/schemas/DeliveryValue"
          },
          "warehouseId": {
            "readOnly": false,
            "description": "The id of the warehouse used for this delivery.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The number of the warehouse used for this delivery",
            "type": "string",
            "example": "..."
          },
          "webStoreNumber": {
            "example": "888",
            "readOnly": false,
            "description": "Web store where the order is placed. Only applicable for web orders, subscription based orders and physical store orders are not supported.",
            "type": "string"
          }
        },
        "description": "A delivery."
      },
      "DeliveryAddress": {
        "type": "object",
        "title": "DeliveryAddress",
        "properties": {
          "addressLine1": {
            "readOnly": false,
            "description": "The street address of the address.",
            "type": "string",
            "example": "..."
          },
          "addressLine2": {
            "readOnly": false,
            "description": "Indicates the additional address info, apartment etc.",
            "type": "string",
            "example": "..."
          },
          "administrativeDivision": {
            "readOnly": false,
            "description": "The state/province/region of the address.",
            "type": "string",
            "example": "..."
          },
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "The alternative email address for the receiver of the address.",
            "type": "string",
            "example": "..."
          },
          "careOf": {
            "readOnly": false,
            "description": "The c/o address.",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "readOnly": false,
            "description": "The phone number of the receiver for the address.",
            "type": "string",
            "example": "..."
          },
          "city": {
            "readOnly": false,
            "description": "The city/postal city of the address.",
            "type": "string",
            "example": "..."
          },
          "companyName": {
            "readOnly": false,
            "description": "The name of the company for the address.",
            "type": "string",
            "example": "..."
          },
          "countryCode": {
            "readOnly": false,
            "description": "The country code of the address.",
            "type": "string",
            "example": "..."
          },
          "emailAddress": {
            "readOnly": false,
            "description": "The email address for the receiver of the address.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the receiver for this address.",
            "type": "string",
            "example": "..."
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the receiver for this address.",
            "type": "string",
            "example": "..."
          },
          "zipcode": {
            "readOnly": false,
            "description": "The zipcode of the address.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds delivery addresses for a customer."
      },
      "DeliveryChanges": {
        "type": "object",
        "title": "DeliveryChanges",
        "required": [
          "markAllRowsAsPicked",
          "pickingComplete"
        ],
        "properties": {
          "customFieldsToAdd": {
            "readOnly": false,
            "description": "The custom fields to add to the delivery. Any existing custom field will be overwritten.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldDeliveryChanges"
            }
          },
          "markAllRowsAsPicked": {
            "readOnly": false,
            "description": "Marks all rows connected to a delivery as picked so it can be reported. Mutual exclusive with RowsToUpdate, difference is that no additional information needs to be supplied for the delivery.\npickingComplete will automatically be set to true when using this flag and can not be overridden.",
            "type": "boolean",
            "example": true
          },
          "parcelsToAdd": {
            "readOnly": false,
            "description": "Contains a list of parcels to add to the delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryParcel"
            }
          },
          "pickingComplete": {
            "readOnly": false,
            "description": "Whether or not to report the delivery, marking it as picked and sent to the consumer.",
            "type": "boolean",
            "example": true
          },
          "rowsToUpdate": {
            "readOnly": false,
            "description": "Contains changes to apply for delivery rows.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryRowChanges"
            }
          }
        },
        "description": "Contains changes that applies to a delivery."
      },
      "DeliveryCustomer": {
        "type": "object",
        "title": "DeliveryCustomer",
        "required": [
          "customerId",
          "internal"
        ],
        "properties": {
          "alternativeEmailAddress": {
            "example": "info@viskan.com",
            "readOnly": false,
            "description": "The alternative email address of the customer.",
            "type": "string"
          },
          "bonusPoints": {
            "readOnly": false,
            "description": "The number of bonus points available.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "cellphone": {
            "example": "",
            "readOnly": false,
            "description": "The cell phone number of the customer.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan System AB",
            "readOnly": false,
            "description": "The company name of the customer, if the customer is a company. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e and \u003ccode\u003elastName\u003c/code\u003e.",
            "type": "string"
          },
          "contactPerson": {
            "example": "",
            "readOnly": false,
            "description": "The contact person name of the customer, if the customer is a company.",
            "type": "string"
          },
          "customerBalance": {
            "example": 125,
            "readOnly": false,
            "description": "The current balance of the customer.",
            "type": "number"
          },
          "customerId": {
            "example": 123,
            "readOnly": false,
            "description": "The unique, internal identifier of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The unique, external number of the customer.",
            "type": "string",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "emailAddress": {
            "example": "info@viskan.com",
            "readOnly": false,
            "description": "The email address of the customer.",
            "type": "string"
          },
          "firstName": {
            "example": "",
            "readOnly": false,
            "description": "The first name of the customer, if the customer is a person. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "internal": {
            "example": false,
            "readOnly": false,
            "description": "Whether or not the customer is an internal customer.",
            "type": "boolean"
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "landLine": {
            "example": "+46712345678",
            "readOnly": false,
            "description": "The land line of the customer.",
            "type": "string"
          },
          "lastName": {
            "example": "",
            "readOnly": false,
            "description": "The last name of the customer, if the customer is a person. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "organizationNumber": {
            "example": "556590-1864",
            "readOnly": false,
            "description": "The organization number of the customer, if the customer is a company.",
            "type": "string"
          },
          "socialSecurityNumber": {
            "example": "556590-1864",
            "readOnly": false,
            "description": "The social security number of the customer, if the customer is a person.",
            "type": "string"
          },
          "vatRegistrationNumber": {
            "example": "DE123456789",
            "readOnly": false,
            "description": "VAT Registration Number of the customer.",
            "type": "string"
          }
        },
        "description": "Contains customer information for a delivery."
      },
      "MyPagesDeliveryDetails": {
        "type": "object",
        "title": "DeliveryDetails",
        "required": [
          "deliveryId"
        ],
        "properties": {
          "customFields": {
            "readOnly": false,
            "description": "The custom fields of the delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPagesDeliveryCustomField"
            }
          },
          "deliveryId": {
            "readOnly": false,
            "description": "The identifier for the delivery",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryNumber": {
            "readOnly": false,
            "description": "The external, unique number of the delivery.",
            "type": "string",
            "example": "..."
          },
          "deliveryStatus": {
            "$ref": "#/components/schemas/DeliveryStatus"
          },
          "discount": {
            "readOnly": false,
            "description": "Discount on \"head\" level. Does not include discount on the rows.",
            "type": "number",
            "example": 12345
          },
          "dueDate": {
            "readOnly": false,
            "description": "The due date if any",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "estimatedDeliveryDate": {
            "readOnly": false,
            "description": "The estimated date when the delivery was delivered. Only available for deliveries created from subscriptions.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The order number of the delivery",
            "type": "string",
            "example": "..."
          },
          "orderType": {
            "$ref": "#/components/schemas/OrderType"
          },
          "paymentDate": {
            "readOnly": false,
            "description": "The payment date if any",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "paymentReference": {
            "readOnly": false,
            "description": "The payment reference if any",
            "type": "string",
            "example": "..."
          },
          "paymentStatus": {
            "$ref": "#/components/schemas/PaymentStatus"
          },
          "rows": {
            "readOnly": false,
            "description": "The rows of the delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPagesDeliveryRow"
            }
          },
          "subscriptionDescription": {
            "readOnly": false,
            "description": "The description of the subscription the delivery originates from.",
            "type": "string",
            "example": "..."
          },
          "totalAmount": {
            "readOnly": false,
            "description": "The total amount to pay for this delivery.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines a delivery.\n\u003cp\u003e\nOne customer can have multiple deliveries and a delivery can potentially have delivery rows.\n\u003c/p\u003e"
      },
      "DeliveryEveryNth": {
        "type": "string",
        "title": "DeliveryEveryNth",
        "enum": [
          "EVERY_DELIVERY",
          "EVERY_SECOND_DELIVERY",
          "EVERY_THIRD_DELIVERY",
          "EVERY_FOURTH_DELIVERY",
          "EVEN_WEEKS",
          "UNEVEN_WEEKS"
        ],
        "description": ""
      },
      "DeliveryInvoice": {
        "type": "object",
        "title": "DeliveryInvoice",
        "properties": {
          "amountCheckSum": {
            "example": "1",
            "readOnly": false,
            "description": "The checksum for the payment.",
            "type": "string"
          },
          "amountToPay": {
            "example": 50.55,
            "readOnly": false,
            "description": "The amount to be paid.",
            "type": "number"
          },
          "dueDate": {
            "example": "2024-06-10",
            "readOnly": false,
            "description": "The due date of the invoice.",
            "type": "string",
            "format": "date"
          },
          "invoiceDate": {
            "example": "2024-05-31",
            "readOnly": false,
            "description": "The date when the invoice was created.",
            "type": "string",
            "format": "date"
          },
          "invoiceNumber": {
            "example": "126726",
            "readOnly": false,
            "description": "The number of the invoice.",
            "type": "string"
          },
          "paidAmount": {
            "example": 150.05,
            "readOnly": false,
            "description": "The amount already has been paid/credited.",
            "type": "number"
          },
          "transactionReference": {
            "example": "375922423",
            "readOnly": false,
            "description": "The transaction reference of the invoice.",
            "type": "string"
          }
        },
        "description": "Contains information to be printed in the delivery invoice."
      },
      "DeliveryMethod_DeliveryAPI": {
        "type": "object",
        "title": "DeliveryMethod",
        "required": [
          "deliveryMethodId"
        ],
        "properties": {
          "customParcelLabel": {
            "example": "Open at 11 oclock",
            "readOnly": false,
            "description": "Custom parcel label text that can be printed on the label as a note for parcel delivery personnel",
            "type": "string"
          },
          "deliveryMethodId": {
            "example": 19,
            "readOnly": false,
            "description": "The internal identifier of the method.",
            "type": "integer",
            "format": "int32"
          },
          "deliveryMethodName": {
            "example": "MyPack",
            "readOnly": false,
            "description": "The public name of the method.",
            "type": "string"
          },
          "methodName": {
            "readOnly": false,
            "description": "Deprecated in favor of deliveryMethodName",
            "type": "string"
          },
          "productCode": {
            "example": "A01",
            "readOnly": false,
            "description": "The code of the product at the shipping company.",
            "type": "string"
          },
          "serviceProvider": {
            "$ref": "#/components/schemas/ServiceProvider"
          },
          "shippingReference": {
            "example": "01HMRVKPAGQPA0FM06H7S890XZ",
            "readOnly": false,
            "description": "The shipping reference of this delivery.",
            "type": "string"
          }
        },
        "description": "The method being used to deliver the goods to the consumer."
      },
      "DeliveryMethod": {
        "type": "object",
        "title": "DeliveryMethod",
        "required": [
          "deliveryMethodId"
        ],
        "properties": {
          "deliveryMethodId": {
            "readOnly": false,
            "description": "The ID of the delivery method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryMethodName": {
            "example": "In-store pickup",
            "readOnly": false,
            "description": "The name of the delivery method.",
            "type": "string"
          },
          "deliveryPointRule": {
            "$ref": "#/components/schemas/DeliveryPointRule"
          },
          "methodCode": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003edeliveryMethodName\u003c/code\u003e",
            "type": "string"
          },
          "methodDescription": {
            "example": "Goods are delivered to a store where they can be picked up. The consumer is notified by a text message.",
            "readOnly": false,
            "description": "A short description of the delivery method.",
            "type": "string"
          },
          "methodName": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003edeliveryMethodName\u003c/code\u003e",
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/LogisticsProvider"
          },
          "shippingFee": {
            "example": 19,
            "readOnly": false,
            "description": "The shipping fee for this method for the filtered country.",
            "type": "number"
          },
          "timeSlotRule": {
            "$ref": "#/components/schemas/TimeSlotRule"
          }
        },
        "description": "Defines a delivery method that can be used to deliver goods to the consumers."
      },
      "DeliveryMethod_OrderAPI": {
        "type": "object",
        "title": "DeliveryMethod",
        "required": [
          "deliveryMethodId"
        ],
        "properties": {
          "customParcelLabel": {
            "example": "Open at 11 oclock",
            "readOnly": false,
            "description": "The custom parcel label of the method.",
            "type": "string"
          },
          "deliveryMethodId": {
            "example": 19,
            "readOnly": false,
            "description": "The internal identifier of the method.",
            "type": "integer",
            "format": "int32"
          },
          "deliveryMethodName": {
            "example": "MyPack",
            "readOnly": false,
            "description": "The public name of the method.",
            "type": "string"
          },
          "methodName": {
            "readOnly": false,
            "description": "Deprecated in favor of deliveryMethodName",
            "type": "string"
          },
          "productCode": {
            "example": "A01",
            "readOnly": false,
            "description": "The product code of the method.",
            "type": "string"
          },
          "serviceProvider": {
            "example": "PostNord",
            "readOnly": false,
            "description": "The service provider of the method.",
            "type": "string"
          },
          "shippingReference": {
            "example": "37W15728OP640392F",
            "readOnly": false,
            "description": "The shipping reference of the method.",
            "type": "string"
          }
        },
        "description": "The method being used to deliver the goods to the consumer."
      },
      "DeliveryMethod_DeliveryMethodAPI": {
        "type": "object",
        "title": "DeliveryMethod",
        "required": [
          "deliveryMethodId"
        ],
        "properties": {
          "deliveryMethodId": {
            "readOnly": false,
            "description": "The internal identifier of the delivery method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryMethodName": {
            "readOnly": false,
            "description": "The public name of the method of delivery.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Method of delivering goods to end customer"
      },
      "DeliveryMethodResult": {
        "type": "object",
        "title": "DeliveryMethodResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The delivery methods in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryMethod_DeliveryMethodAPI"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of delivery method."
      },
      "DeliveryParcel": {
        "type": "object",
        "title": "DeliveryParcel",
        "required": [
          "returnParcel",
          "revoked"
        ],
        "properties": {
          "currentDeliveryPoint": {
            "$ref": "#/components/schemas/CurrentDeliveryPoint"
          },
          "parcelNumber": {
            "example": "AE5O6742852SE",
            "readOnly": false,
            "description": "The parcel number (shipment number) of the parcel.",
            "type": "string"
          },
          "returnParcel": {
            "readOnly": false,
            "description": "Whether this parcel is a return parcel.",
            "type": "boolean",
            "example": true
          },
          "revoked": {
            "example": false,
            "readOnly": false,
            "description": "The revoked flag is the withdrawal status of the parcel and is only applicable for in-store parcel.",
            "type": "boolean"
          },
          "status": {
            "readOnly": false,
            "description": "The current status of the parcel.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds information about a single parcel."
      },
      "DeliveryPoint_DeliveryAPI": {
        "type": "object",
        "title": "DeliveryPoint",
        "required": [
          "deliveryPointId"
        ],
        "properties": {
          "carrier": {
            "readOnly": false,
            "description": "The name of the carrier.",
            "type": "string",
            "example": "..."
          },
          "deliveryPointAddress": {
            "$ref": "#/components/schemas/DeliveryPointAddress"
          },
          "deliveryPointCode": {
            "readOnly": false,
            "description": "The unique code of the delivery point. It\u0027s unique per carrier.",
            "type": "string",
            "example": "..."
          },
          "deliveryPointId": {
            "readOnly": false,
            "description": "The internal identifier of the delivery point.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryPointName": {
            "readOnly": false,
            "description": "The public name of the delivery point.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds information about the delivery point for the delivery."
      },
      "DeliveryPoint": {
        "type": "object",
        "title": "DeliveryPoint",
        "required": [
          "deliveryPointId",
          "pickingHub"
        ],
        "properties": {
          "address": {
            "$ref": "#/components/schemas/AddressWithGeolocation"
          },
          "deliveryPointCode": {
            "readOnly": false,
            "description": "The code of the delivery point.",
            "type": "string",
            "example": "..."
          },
          "deliveryPointId": {
            "readOnly": false,
            "description": "The identifier of the delivery point.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryPointName": {
            "readOnly": false,
            "description": "The name of the delivery point.",
            "type": "string",
            "example": "..."
          },
          "email": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "pickingHub": {
            "readOnly": false,
            "description": "Indicates if the delivery point is used as a picking hub",
            "type": "boolean",
            "example": true
          },
          "provider": {
            "$ref": "#/components/schemas/LogisticsProvider"
          },
          "zipcodes": {
            "readOnly": false,
            "description": "This delivery point serves these zip codes",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          }
        },
        "description": "A delivery point is a physical location where shipped goods can be picked up. These can be of arbitrary type, for example physical stores or post offices.\nThese delivery points are bound to a logistics provider. For example, \u0027Posten\u0027 have different delivery points than \u0027In-store pickup\u0027."
      },
      "DeliveryPointAddress": {
        "type": "object",
        "title": "DeliveryPointAddress",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "zipCode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Information about a delivery point address."
      },
      "DeliveryPointRule": {
        "type": "string",
        "title": "DeliveryPointRule",
        "enum": [
          "MANDATORY",
          "OPTIONAL",
          "ILLEGAL"
        ],
        "description": "Controls the rules for delivery points of a delivery method."
      },
      "DeliveryResult": {
        "type": "object",
        "title": "DeliveryResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The deliveries in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Delivery"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of deliveries."
      },
      "MyPagesDeliveryRow": {
        "type": "object",
        "title": "DeliveryRow",
        "required": [
          "quantity"
        ],
        "properties": {
          "attribute1Code": {
            "readOnly": false,
            "description": "The attribute1 code of the product",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "The attribute2 code of the product",
            "type": "string",
            "example": "..."
          },
          "discount": {
            "readOnly": false,
            "description": "The discount in monetary value of this row",
            "type": "number",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "The internal product identifier",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "The product name",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "The product number",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ArticleType"
          },
          "quantity": {
            "readOnly": false,
            "description": "The number of items of this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "status": {
            "$ref": "#/components/schemas/DeliveryRowStatus"
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The unit price of this row.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines a delivery row"
      },
      "DeliveryRow": {
        "type": "object",
        "title": "DeliveryRow",
        "required": [
          "parentRowId",
          "quantity",
          "quantityReturned",
          "quantitySent",
          "rowId",
          "shouldBePicked",
          "stockKeepingUnitId",
          "warehouseId"
        ],
        "properties": {
          "accountingAccountForSales": {
            "readOnly": false,
            "description": "The bookkeeping account for sales.",
            "type": "string",
            "example": "..."
          },
          "additionalRowText": {
            "readOnly": false,
            "description": "The additional text for the delivery row.",
            "type": "string",
            "example": "..."
          },
          "campaign": {
            "$ref": "#/components/schemas/Campaign_DeliveryAPI"
          },
          "costOfGoodsSold": {
            "readOnly": false,
            "description": "This amount includes the cost of the materials and labor directly used to create the good. It excludes indirect expenses, such as distribution costs and sales force costs.",
            "type": "number",
            "example": 12345
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "parentRowId": {
            "readOnly": false,
            "description": "The row id for the parent of this row.\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is 0 when no parent exists.\u003c/p\u003e",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "personalizationText": {
            "readOnly": false,
            "description": "Personalization text to customize the row of the order.",
            "type": "string",
            "example": "..."
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "productName": {
            "readOnly": false,
            "description": "The translated name of the product in the consumers language.",
            "type": "string",
            "example": "..."
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity being delivered.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantityReturned": {
            "readOnly": false,
            "description": "The quantity that has been returned.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantitySent": {
            "readOnly": false,
            "description": "The quantity that has been sent.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row within the order.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "shouldBePicked": {
            "readOnly": false,
            "description": "Signifies if row should be physically picked or not.",
            "type": "boolean",
            "example": true
          },
          "status": {
            "$ref": "#/components/schemas/DeliveryRowStatus_DeliveryAPI"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/DeliveryRowValue"
          },
          "warehouseId": {
            "readOnly": false,
            "description": "The WarehouseID of the delivery row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The WarehouseNumber of the delivery row.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A single row of a delivery."
      },
      "DeliveryRowChanges": {
        "type": "object",
        "title": "DeliveryRowChanges",
        "required": [
          "rowId"
        ],
        "properties": {
          "quantitySent": {
            "readOnly": false,
            "description": "Sets the total quantity sent. This value cannot be larger than the ordered quantity value.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row to update. This value is mandatory.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/DeliveryValueUpdate"
          }
        },
        "description": "Contains changes that applies to a delivery row."
      },
      "DeliveryRowStatus_DeliveryAPI": {
        "type": "string",
        "title": "DeliveryRowStatus",
        "enum": [
          "CREATED",
          "DELIVERED",
          "CANCELED"
        ],
        "description": "The status of a delivery row."
      },
      "DeliveryRowStatus": {
        "type": "string",
        "title": "DeliveryRowStatus",
        "enum": [
          "CREATED",
          "REPORTED",
          "CANCELED"
        ],
        "description": "Defines possible statuses for delivery rows."
      },
      "DeliveryRowValue": {
        "type": "object",
        "title": "DeliveryRowValue",
        "properties": {
          "discount": {
            "readOnly": false,
            "description": "Deprecated. Use discountIncludingTax instead. The total discount of the row.",
            "type": "number"
          },
          "discountExcludingTax": {
            "readOnly": false,
            "description": "The total discount excluding tax of the row.",
            "type": "number",
            "example": 12345
          },
          "discountIncludingTax": {
            "readOnly": false,
            "description": "The total discount including tax of the row.",
            "type": "number",
            "example": 12345
          },
          "taxRate": {
            "readOnly": false,
            "description": "The tax rate of the row.",
            "type": "number",
            "example": 12345
          },
          "total": {
            "readOnly": false,
            "description": "Deprecated. Use totalIncludingTax instead. The total value of the row.",
            "type": "number"
          },
          "totalExcludingTax": {
            "readOnly": false,
            "description": "The total value excluding tax of the row.",
            "type": "number",
            "example": 12345
          },
          "totalIncludingTax": {
            "readOnly": false,
            "description": "The total value including tax of the row.",
            "type": "number",
            "example": 12345
          },
          "unitPrice": {
            "readOnly": false,
            "description": "Deprecated. Use unitPriceIncludingTax instead. The unit price of the row.",
            "type": "number"
          },
          "unitPriceExcludingTax": {
            "readOnly": false,
            "description": "The unit price excluding tax of the row.",
            "type": "number",
            "example": 12345
          },
          "unitPriceIncludingTax": {
            "readOnly": false,
            "description": "The unit price including tax of the row.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Contains values of a delivery row."
      },
      "DeliveryStatus_DeliveryAPI": {
        "type": "string",
        "title": "DeliveryStatus",
        "enum": [
          "CREATED",
          "DELIVERED",
          "CANCELED"
        ],
        "description": "The status of a delivery."
      },
      "DeliveryStatus": {
        "type": "string",
        "title": "DeliveryStatus",
        "enum": [
          "CREATED",
          "PARTIALLY_REPORTED",
          "REPORTED",
          "CANCELED"
        ],
        "description": "Defines possible statuses for deliveries."
      },
      "DeliveryTaxRate": {
        "type": "object",
        "title": "DeliveryTaxRate",
        "properties": {
          "amountExcludingTax": {
            "readOnly": false,
            "description": "The amount including tax rate.",
            "type": "number",
            "example": 12345
          },
          "taxAmount": {
            "readOnly": false,
            "description": "The amount excluding tax rate.",
            "type": "number",
            "example": 12345
          },
          "taxRate": {
            "readOnly": false,
            "description": "The tax rate.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Contains tax rates"
      },
      "DeliveryValue": {
        "type": "object",
        "title": "DeliveryValue",
        "properties": {
          "charge": {
            "readOnly": false,
            "description": "The charge of the delivery.",
            "type": "number",
            "example": 12345
          },
          "chargeExcludingTaxRate": {
            "readOnly": false,
            "description": "The charge of the delivery excluding tax rate.",
            "type": "number",
            "example": 12345
          },
          "discount": {
            "readOnly": false,
            "description": "The discount of the delivery.",
            "type": "number",
            "example": 12345
          },
          "discountExcludingTaxRate": {
            "readOnly": false,
            "description": "The discount of the delivery excluding tax rate.",
            "type": "number",
            "example": 12345
          },
          "paymentFee": {
            "readOnly": false,
            "description": "The payment fee of the delivery.",
            "type": "number",
            "example": 12345
          },
          "paymentFeeExcludingTaxRate": {
            "readOnly": false,
            "description": "The payment fee of the delivery excluding tax rate.",
            "type": "number",
            "example": 12345
          },
          "rounding": {
            "readOnly": false,
            "description": "The rounding of the invoice.",
            "type": "number",
            "example": 12345
          },
          "shippingFee": {
            "readOnly": false,
            "description": "The shipping fee of the delivery.",
            "type": "number",
            "example": 12345
          },
          "shippingFeeExcludingTaxRate": {
            "readOnly": false,
            "description": "The shipping fee of the delivery excluding tax rate.",
            "type": "number",
            "example": 12345
          },
          "total": {
            "readOnly": false,
            "description": "The total value of the delivery.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Contains values of the delivery."
      },
      "DeliveryValueUpdate": {
        "type": "object",
        "title": "DeliveryValueUpdate",
        "properties": {
          "discountExcludingTax": {
            "readOnly": false,
            "description": "The discount of the delivery excluding tax, mutually exclusive with discountIncludingTax.",
            "type": "number",
            "example": 12345
          },
          "discountIncludingTax": {
            "example": 10,
            "readOnly": false,
            "description": "The discount of the delivery including tax, mutually exclusive with discountExcludingTax.",
            "type": "number"
          },
          "priceExcludingTax": {
            "readOnly": false,
            "description": "The unit price of the row excluding tax, mutually exclusive with priceIncludingTax.",
            "type": "number",
            "example": 12345
          },
          "priceIncludingTax": {
            "example": 100,
            "readOnly": false,
            "description": "The unit price of the row including tax, mutually exclusive with priceExcludingTax.",
            "type": "number"
          }
        },
        "description": "Holds information for updating prices and discounts for a delivery."
      },
      "Dimensions": {
        "type": "object",
        "title": "Dimensions",
        "required": [
          "height",
          "width"
        ],
        "properties": {
          "height": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "width": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "Entry": {
        "type": "object",
        "title": "Entry",
        "properties": {
          "key": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "example": {}
          },
          "value": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "example": {}
          }
        },
        "description": ""
      },
      "Filter": {
        "type": "object",
        "title": "Filter",
        "properties": {
          "attribute1Ids": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "attribute1Tags": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "attribute2Ids": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "attribute2Tags": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "attribute3Ids": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "attribute3Tags": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "brandIds": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "brandTags": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "categoryIds": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "europeanArticleNumbers": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "priceRange": {
            "$ref": "#/components/schemas/PriceRangeFilter"
          },
          "priceType": {
            "$ref": "#/components/schemas/PriceType"
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyFilter"
            }
          },
          "propertyTags": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyTagFilter"
            }
          }
        },
        "description": ""
      },
      "Gender": {
        "type": "string",
        "title": "Gender",
        "enum": [
          "UNSPECIFIED",
          "MALE",
          "FEMALE"
        ],
        "description": "The gender of a customer."
      },
      "Group": {
        "type": "object",
        "title": "Group",
        "properties": {
          "contentToAdd": {
            "$ref": "#/components/schemas/Content"
          },
          "contentToRemove": {
            "$ref": "#/components/schemas/Content"
          },
          "groupNumber": {
            "example": "1",
            "readOnly": false,
            "description": "The number of the group.",
            "type": "string"
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "The translations to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Translation"
            }
          }
        },
        "description": "Contains a groups of content to add to the package"
      },
      "HelloRetailData": {
        "type": "object",
        "title": "HelloRetailData",
        "properties": {
          "filters": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "sort": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "trackingUserId": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "url": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "HelpdeskTag": {
        "type": "object",
        "title": "HelpdeskTag",
        "required": [
          "tag_id"
        ],
        "properties": {
          "tag_id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds the category id of the ticket category that represents the different \"labels/tags\" we can set on helpdesk tickets."
      },
      "IdentificationType": {
        "type": "string",
        "title": "IdentificationType",
        "enum": [
          "KNOWN",
          "DRIVING_LICENCE",
          "IDENTITY_CARD",
          "IDENTITY_CARD_NO_1",
          "IDENTITY_CARD_NO_2",
          "PASSPORT",
          "OTHER_SSN",
          "OTHER_NO_SSN"
        ],
        "description": "The identificationtype of the identification"
      },
      "IdentifierType": {
        "type": "string",
        "title": "IdentifierType",
        "enum": [
          "EMAIL",
          "SSN",
          "PHONE",
          "CUSTOMER_NUMBER"
        ],
        "description": "Defines possible ways to enter credentials"
      },
      "InvoiceAddress": {
        "type": "object",
        "title": "InvoiceAddress",
        "properties": {
          "addressLine1": {
            "example": "113 51 Stockholm",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "example": "West Gothland",
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string"
          },
          "careOf": {
            "example": "Some person",
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string"
          },
          "city": {
            "example": "Stockholm",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan",
            "readOnly": false,
            "description": "The company name of the customer, if the customer is a company. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e and \u003ccode\u003elastName\u003c/code\u003e.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example SE.",
            "type": "string"
          },
          "firstName": {
            "example": "Karl",
            "readOnly": false,
            "description": "The first name of the customer, if the customer is a person. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "lastName": {
            "example": "Karlsson",
            "readOnly": false,
            "description": "The last name of the customer, if the customer is a person. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "zipcode": {
            "example": "113 51",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Invoice Address"
      },
      "Language": {
        "type": "object",
        "title": "Language",
        "properties": {
          "languageCode": {
            "example": "sv",
            "readOnly": false,
            "description": "The language of the translation.",
            "type": "string"
          },
          "name": {
            "example": "Skjortor",
            "readOnly": false,
            "description": "The translation of the category name.",
            "type": "string"
          }
        },
        "description": "Defines a translation of a category name in a specific language."
      },
      "Language_commons": {
        "type": "string",
        "title": "Language",
        "enum": [
          "gb",
          "cs",
          "da",
          "nl",
          "en",
          "et",
          "fi",
          "FLEMISH",
          "fr",
          "de",
          "el",
          "hu",
          "is",
          "it",
          "lv",
          "lt",
          "no",
          "pl",
          "pt",
          "ro",
          "ru",
          "sk",
          "sl",
          "es",
          "sv",
          "uk",
          "UNDEFINED"
        ],
        "description": "Defines the languages that can be used in ETM.\n\u003cp\u003e\nThe values of languages are from \u003ca href\u003d\"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\"\u003ethe ISO 639-1 standard\u003c/a\u003e.\n\u003c/p\u003e"
      },
      "LanguageAlternative": {
        "type": "object",
        "title": "LanguageAlternative",
        "properties": {
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "path": {
            "example": "/byxor",
            "readOnly": false,
            "description": "The alternative path for the language.",
            "type": "string"
          }
        },
        "description": "Defines an alternative path for a specific language."
      },
      "LocalAddress": {
        "type": "object",
        "title": "LocalAddress",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string",
            "example": "..."
          },
          "careOf": {
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string",
            "example": "..."
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "zipcode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Information about a local geographical address. A local address means that it has no awareness of country."
      },
      "LogisticsProvider": {
        "type": "string",
        "title": "LogisticsProvider",
        "enum": [
          "UNKNOWN",
          "POSTEN",
          "SCHENKER",
          "LBC",
          "GENERAL",
          "SLOVENIAN_POST",
          "SLOVAKIAN_POST",
          "CZECH_POST",
          "NORWEGIAN_POST",
          "POSTI",
          "EDI_SOFT",
          "BRING_CITYMAIL",
          "PNL",
          "INTERNAL_LOGISTICS",
          "IN_STORE_PICKUP",
          "DHL",
          "BRING_PARCELS",
          "DSV",
          "COURIER",
          "POLISH_POST",
          "UPS",
          "HUNGARIAN_POST",
          "LITHUANIAN_POST",
          "RIKSDISTRIBUTION",
          "GLS",
          "BEST",
          "MATKAHUOLTO",
          "GORDON_DELIVERY",
          "INGRID"
        ],
        "description": "List of Logistics providers."
      },
      "LogoutRequest": {
        "type": "object",
        "title": "LogoutRequest",
        "properties": {
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          }
        },
        "description": "Defines a request to logout a customer to the \"My pages\" API by providing customerType (Person or Company)"
      },
      "LookupOffer": {
        "type": "object",
        "title": "LookupOffer",
        "required": [
          "offerId"
        ],
        "properties": {
          "offerId": {
            "example": 777,
            "readOnly": false,
            "description": "The offer id of the offer.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "A simplistic representation of an offer"
      },
      "LookupResult": {
        "type": "object",
        "title": "LookupResult",
        "required": [
          "stockKeepingUnitId"
        ],
        "properties": {
          "offers": {
            "readOnly": false,
            "description": "Contains all offers connected to the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupOffer"
            }
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price look Up number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "example": 123,
            "readOnly": false,
            "description": "The sku of the product.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "A lookup result of a product and connected offers."
      },
      "LowestPrice": {
        "type": "object",
        "title": "LowestPrice",
        "properties": {
          "average": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "maximum": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "minimum": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          }
        },
        "description": ""
      },
      "MatchIdentifier": {
        "type": "object",
        "title": "MatchIdentifier",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/MatchIdentifierKind"
          }
        },
        "description": "Specifies a single identifier to use for the matching strategy."
      },
      "MatchIdentifierKind": {
        "type": "string",
        "title": "MatchIdentifierKind",
        "enum": [
          "SOCIAL_SECURITY_NUMBER",
          "ORGANIZATION_NUMBER",
          "CUSTOMER_NUMBER",
          "EXTERNAL_MEMBER_NUMBER",
          "ZIPCODE",
          "EMAIL_ADDRESS",
          "PHONE_NUMBER",
          "CUSTOMER_UUID"
        ],
        "description": "Defines various kinds of matching strategies."
      },
      "MatchRequest": {
        "type": "object",
        "title": "MatchRequest",
        "required": [
          "createIfNotMatched",
          "priceListId",
          "serviceProviderConfigId",
          "timeToLiveMinutes"
        ],
        "properties": {
          "categoryIds": {
            "readOnly": false,
            "description": "The categories the customer is connected to.\n\u003cp\u003e\nNote: categoryIds is not compatible with createIfNotMatched, ie. categoryIds will \u003cb\u003enot\u003c/b\u003e be saved in a match call.\n\u003c/p\u003e",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2).",
            "type": "string"
          },
          "createIfNotMatched": {
            "readOnly": false,
            "description": "Whether or not to create a new customer if we could not match. Defaults to false. Should not be used if not needed.",
            "type": "boolean",
            "example": true
          },
          "identifiers": {
            "readOnly": false,
            "description": "The identifiers that will be used for matching.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MatchIdentifier"
            }
          },
          "info": {
            "$ref": "#/components/schemas/CreateInfo"
          },
          "level": {
            "$ref": "#/components/schemas/AuthenticationLevel"
          },
          "priceListId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "serviceProviderConfigId": {
            "readOnly": false,
            "description": "The optional id of a service provider if we want to match / create with a third party",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "shopcartId": {
            "readOnly": false,
            "description": "The identifier of the shopping cart to connect to the logged in user if the authentication was successful.",
            "type": "string",
            "example": "..."
          },
          "timeToLiveMinutes": {
            "example": 120,
            "readOnly": false,
            "description": "The number of minutes that the authentication will live. Defaults to 120.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Information for a request to attempt to match an existing customer. If matched properly, a \"My pages\" API token will be returned."
      },
      "Media": {
        "type": "object",
        "title": "Media",
        "required": [
          "attribute1Id",
          "attribute2Id",
          "attribute3Id",
          "mediaId",
          "sort"
        ],
        "properties": {
          "alternativeText": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "dimensions": {
            "$ref": "#/components/schemas/Dimensions"
          },
          "fileName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "mediaId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "mediaType": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "presentationType": {
            "$ref": "#/components/schemas/PresentationType"
          },
          "sort": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "MediaChanges": {
        "type": "object",
        "title": "MediaChanges",
        "properties": {
          "attribute1Code": {
            "example": "Red",
            "readOnly": false,
            "description": "Which product color connected to media if any.",
            "type": "string"
          },
          "attribute2Code": {
            "example": "Large",
            "readOnly": false,
            "description": "Which product size connected to media if any.",
            "type": "string"
          },
          "attribute3Code": {
            "example": "75cm",
            "readOnly": false,
            "description": "Which product measurement connected to media if any.",
            "type": "string"
          },
          "base64Image": {
            "example": "aGVsbG8gd29ybGQ\u003d",
            "readOnly": false,
            "description": "Base64-encoded image data. Must be provided together with \u0027filename\u0027. Mutually exclusive with \u0027mediaURL\u0027.",
            "type": "string"
          },
          "filename": {
            "example": "product-image.jpg",
            "readOnly": false,
            "description": "Filename for the image when using base64 input (e.g. \"product-image.jpg\"). Must be provided together with \u0027base64Image\u0027.",
            "type": "string"
          },
          "mediaType": {
            "$ref": "#/components/schemas/MediaType"
          },
          "mediaURL": {
            "example": "https://www.example.com/path-to-image/image.jpg",
            "readOnly": false,
            "description": "The URL where the media is located.",
            "type": "string"
          },
          "prefix": {
            "example": "prefix",
            "readOnly": false,
            "description": "Prefix to prevent conflict with internally saved images.",
            "type": "string"
          },
          "priceLookUpNumber": {
            "example": "ABC-123",
            "readOnly": false,
            "description": "Price look-up number (PLUNO) to link this media to. Mutually exclusive with stockKeepingUnitId. Requires mediaType.",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "example": 12345,
            "readOnly": false,
            "description": "SKU ID to link this media to. Mutually exclusive with priceLookUpNumber. Requires mediaType.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Contains information about a new or updated medias."
      },
      "MediaResult": {
        "type": "object",
        "title": "MediaResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The stock keeping unit media in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnit"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of media for stock keeping units."
      },
      "MediaScale": {
        "type": "object",
        "title": "MediaScale",
        "properties": {
          "location": {
            "readOnly": false,
            "description": "The location/URL of the media.",
            "type": "string",
            "example": "..."
          },
          "scale": {
            "$ref": "#/components/schemas/Scale"
          }
        },
        "description": "The data related to the image."
      },
      "MediaToConnect": {
        "type": "object",
        "title": "MediaToConnect",
        "properties": {
          "attribute1Code": {
            "example": "Red",
            "readOnly": false,
            "description": "Attribute1Code of the media. Mutually exclusive with AttributeXNumber.",
            "type": "string"
          },
          "attribute1Number": {
            "example": "1010",
            "readOnly": false,
            "description": "Attribute1Number of the media. Mutually exclusive with AttributeXCode.",
            "type": "string"
          },
          "attribute2Code": {
            "example": "Large",
            "readOnly": false,
            "description": "Attribute2Code of the media. Mutually exclusive with AttributeXNumber.",
            "type": "string"
          },
          "attribute2Number": {
            "example": "2020",
            "readOnly": false,
            "description": "Attribute2Number of the media. Mutually exclusive with AttributeXCode.",
            "type": "string"
          },
          "attribute3Code": {
            "example": "75cm",
            "readOnly": false,
            "description": "Attribute3Code of the media. Mutually exclusive with AttributeXNumber.",
            "type": "string"
          },
          "attribute3Number": {
            "example": "3030",
            "readOnly": false,
            "description": "Attribute3Number of the media. Mutually exclusive with AttributeXCode.",
            "type": "string"
          },
          "filename": {
            "example": "image-Red-Large-75cm.jpg",
            "readOnly": false,
            "description": "Filename of the media to connect. Used to connect media instead of using mediaURL. If both fields are supplied in a request, then filename will be used.\nIf attributeCodes/Numbers were used when saving media through the Media API, then these codes/numbers should be used in the filename when connecting the media.",
            "type": "string"
          },
          "mediaType": {
            "$ref": "#/components/schemas/MediaType_product"
          },
          "mediaURL": {
            "example": "https://www.example.com/path-to-image/image.jpg",
            "readOnly": false,
            "description": "The url to the media to connect. First create a media in the media API and then connect it using this field and optional attributeCodes/Numbers.",
            "type": "string"
          },
          "prefix": {
            "example": "viskan-",
            "readOnly": false,
            "description": "A prefix to add to the media name.",
            "type": "string"
          },
          "sort": {
            "example": "1",
            "readOnly": false,
            "description": "Sort order of the media within this article variant / SKU.",
            "type": "string"
          }
        },
        "description": "Contains changes that applies to a product medias."
      },
      "MediaType": {
        "type": "string",
        "title": "MediaType",
        "enum": [
          "FRONT_IMAGE",
          "BACK_IMAGE",
          "TOP_IMAGE",
          "BOTTOM_IMAGE",
          "LIST_IMAGE",
          "SEARCH_IMAGE",
          "EXTRA_IMAGE",
          "EXTRA_IMAGE_100"
        ],
        "description": "Represents media \u003ccode\u003erow_id\u003c/code\u003e (image type) used in web shops."
      },
      "MediaType_product": {
        "type": "string",
        "title": "MediaType",
        "enum": [
          "FRONT_IMAGE",
          "BACK_IMAGE",
          "TOP_IMAGE",
          "BOTTOM_IMAGE",
          "LIST_IMAGE",
          "SEARCH_IMAGE",
          "EXTRA_IMAGE",
          "EXTRA_IMAGE_100",
          "UNKNOWN_IMAGE"
        ],
        "description": ""
      },
      "MyPagesOrderCustomer": {
        "type": "object",
        "title": "MyPagesOrderCustomer",
        "required": [
          "customerId"
        ],
        "properties": {
          "cellphone": {
            "readOnly": false,
            "description": "The cell phone number for the customer.",
            "type": "string",
            "example": "..."
          },
          "companyName": {
            "readOnly": false,
            "description": "The company name of the customer, if the customer is a company.",
            "type": "string",
            "example": "..."
          },
          "customerId": {
            "readOnly": false,
            "description": "The internal unique identifier of the customer.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "emailAddress": {
            "readOnly": false,
            "description": "The email address for the customer.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer, if the customer is a private person.",
            "type": "string",
            "example": "..."
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer, if the customer is a private person.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The customer of a order."
      },
      "MyPagesParcelStatus": {
        "type": "string",
        "title": "MyPagesParcelStatus",
        "enum": [
          "PLACED",
          "CREATED",
          "PACKED",
          "ROUTED",
          "ARRIVED",
          "COLLECTED"
        ],
        "description": "Parcel statuses represented in My Pages."
      },
      "NewsLetterRequest": {
        "type": "object",
        "title": "NewsLetterRequest",
        "required": [
          "allowUpdatingCustomer"
        ],
        "properties": {
          "allowUpdatingCustomer": {
            "example": true,
            "readOnly": false,
            "description": "Whether or not to update an existing matched customer and corresponding integrities.",
            "type": "boolean"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2).",
            "type": "string"
          },
          "emailAddress": {
            "example": "test@gmail.com",
            "readOnly": false,
            "description": "The email of the customer. Mandatory and cannot contain an empty value.",
            "type": "string"
          },
          "firstName": {
            "example": "Pelle",
            "readOnly": false,
            "description": "The name of the customer. Optional field.",
            "type": "string"
          },
          "lastName": {
            "example": "Andersson",
            "readOnly": false,
            "description": "The last name of the customer. Optional field.",
            "type": "string"
          }
        },
        "description": "Defines a Newsletter request to the MyPages V2 service. This request contains data used when calling the service responsible for creating new \"newsletter\ncustomers\" or updating existing customers to use newsletters."
      },
      "Note": {
        "type": "object",
        "title": "Note",
        "required": [
          "customerId",
          "deliveryId",
          "noteId",
          "orderId",
          "returnId",
          "searchAfterId",
          "subscriptionId"
        ],
        "properties": {
          "createdAt": {
            "example": "2023-10-12T14:30:10.000+01:00",
            "readOnly": false,
            "description": "The date the note was created.",
            "type": "string",
            "format": "date-time"
          },
          "customerId": {
            "example": 678,
            "readOnly": false,
            "description": "The internal customer id the note is related to.",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "example": "C-10024",
            "readOnly": false,
            "description": "The customer the note is related to.",
            "type": "string"
          },
          "deliveryId": {
            "example": 1234,
            "readOnly": false,
            "description": "The internal delivery Id the note is related to.",
            "type": "integer",
            "format": "int32"
          },
          "deliveryNumber": {
            "example": "D-00123",
            "readOnly": false,
            "description": "The delivery the note is related to.",
            "type": "string"
          },
          "description": {
            "example": "SMS sent to customer with payment information.",
            "readOnly": false,
            "description": "The body of the note.",
            "type": "string"
          },
          "modifiedAt": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "The date the note was last modified.",
            "type": "string",
            "format": "date-time"
          },
          "noteCode": {
            "$ref": "#/components/schemas/NoteCode"
          },
          "noteId": {
            "example": 101,
            "readOnly": false,
            "description": "The note identifier.",
            "type": "integer",
            "format": "int32"
          },
          "orderId": {
            "example": 123,
            "readOnly": false,
            "description": "The internal order Id the note is related to.",
            "type": "integer",
            "format": "int32"
          },
          "orderNumber": {
            "example": "O-00123",
            "readOnly": false,
            "description": "The order the note is related to.",
            "type": "string"
          },
          "returnId": {
            "example": 12345,
            "readOnly": false,
            "description": "The internal return Id the note is related to.",
            "type": "integer",
            "format": "int32"
          },
          "returnNumber": {
            "example": "R-00123",
            "readOnly": false,
            "description": "The return the note is related to.",
            "type": "string"
          },
          "searchAfterId": {
            "example": 2,
            "readOnly": false,
            "description": "The search identifier of the note. Can be used to continue the search from this note.",
            "type": "integer",
            "format": "int32"
          },
          "subscriptionId": {
            "example": 24,
            "readOnly": false,
            "description": "The subscription the note is related to.",
            "type": "integer",
            "format": "int32"
          },
          "ticketNumber": {
            "example": "T-00123",
            "readOnly": false,
            "description": "The ticket the note is related to.",
            "type": "string"
          },
          "title": {
            "example": "SMS sent",
            "readOnly": false,
            "description": "The title of the note.",
            "type": "string"
          }
        },
        "description": "A note."
      },
      "NoteCode": {
        "type": "object",
        "title": "NoteCode",
        "required": [
          "id"
        ],
        "properties": {
          "code": {
            "example": "001",
            "readOnly": false,
            "description": "The alphabetic identifier of the note code.",
            "type": "string"
          },
          "id": {
            "example": 5,
            "readOnly": false,
            "description": "The numeric identifier of the note code.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "A note code. (Also known as standard note)"
      },
      "NoteResult": {
        "type": "object",
        "title": "NoteResult",
        "required": [
          "searchAfterId",
          "size"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The notes that matched the search criteria.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Note"
            }
          },
          "searchAfterId": {
            "example": 2,
            "readOnly": false,
            "description": "The search identifier to continue from. Same as the highest searchAfterId in the hits.",
            "type": "integer",
            "format": "int32"
          },
          "size": {
            "example": 2,
            "readOnly": false,
            "description": "The total number of returned notes in the response.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Holds a list of notes."
      },
      "MyPagesOffer": {
        "type": "object",
        "title": "Offer",
        "properties": {
          "campaignName": {
            "readOnly": false,
            "description": "The name of the campaign",
            "type": "string",
            "example": "..."
          },
          "categoryLinkFriendlyName": {
            "readOnly": false,
            "description": "The link-friendly-name to a existing category",
            "type": "string",
            "example": "..."
          },
          "enddate": {
            "readOnly": false,
            "description": "The date the offer will expire",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "mediaFileName": {
            "readOnly": false,
            "description": "Filename to load media for the offer",
            "type": "string",
            "example": "..."
          }
        },
        "description": "An MyPagesOffer defines an offer connected against a customer category\n\u003cp\u003e\nA customer can be connected to several customer categories\n\u003cp\u003e"
      },
      "Offer": {
        "type": "object",
        "title": "Offer",
        "required": [
          "customerType",
          "offerId",
          "offerTypeId"
        ],
        "properties": {
          "alternativeOfferName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "customerType": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "offerId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "offerName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "offerTypeId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "parameters": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferParameter"
            }
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "stockKeepingUnitIds": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          }
        },
        "description": ""
      },
      "Offer_OfferAPI": {
        "type": "object",
        "title": "Offer",
        "required": [
          "active",
          "customerCategoryId",
          "offerId",
          "priority",
          "requiresOfferCode"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "The current status of the offer.",
            "type": "boolean"
          },
          "appliedToPrices": {
            "$ref": "#/components/schemas/AppliedToPrices"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2) of the offer.",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The currency code (ISO 4217) of the offer.",
            "type": "string"
          },
          "customerCategoryId": {
            "example": -1,
            "readOnly": false,
            "description": "The category of customer the offer is limited to (-1 is unlimited).",
            "type": "integer",
            "format": "int32"
          },
          "endDate": {
            "example": "2022-12-31",
            "readOnly": false,
            "description": "The ending date/time of the offer.",
            "type": "string",
            "format": "date-time"
          },
          "maximumAmountOfProducts": {
            "example": "5",
            "readOnly": false,
            "description": "Defines the maximum number of units to which an offer can be applied. This parameter is relevant specifically for offers of types NEW_PRICE.\nFor offer types where this parameter does not apply, the API will return NOT_APPLICABLE. If the offer type is applicable (type NEW_PRICE) but the maximum quantity has not been set, the API will return NOT_SET.",
            "type": "string"
          },
          "offerId": {
            "example": 1,
            "readOnly": false,
            "description": "The offer id of the offer.",
            "type": "integer",
            "format": "int32"
          },
          "offerName": {
            "example": "Premium Discount",
            "readOnly": false,
            "description": "The offer name.",
            "type": "string"
          },
          "parameters": {
            "readOnly": false,
            "description": "Contains all parameters used in the offer (for supported offer-types).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Parameter"
            }
          },
          "priority": {
            "example": 10,
            "readOnly": false,
            "description": "The relative priority of the offer in the range of 0 to 100, where 0 represents the lowest priority and 100 the highest.\nOffers are first of all applied according to priority and secondary by creation date (older offers have higher priority than newer ones).",
            "type": "integer",
            "format": "int32"
          },
          "requiresOfferCode": {
            "example": true,
            "readOnly": false,
            "description": "Whether or not the offer requires a specific offer code to be used.",
            "type": "boolean"
          },
          "startDate": {
            "example": "2022-01-01",
            "readOnly": false,
            "description": "The starting date/time of the offer.",
            "type": "string",
            "format": "date-time"
          },
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "A collection of LookupResult of a product and connected offers..",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupResult"
            }
          },
          "stores": {
            "readOnly": false,
            "description": "Contains all stores connected to the offer.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Store"
            }
          },
          "type": {
            "$ref": "#/components/schemas/OfferType"
          }
        },
        "description": "Offer"
      },
      "OfferCode": {
        "type": "object",
        "title": "OfferCode",
        "required": [
          "maxUsageCount"
        ],
        "properties": {
          "code": {
            "example": "ABC123",
            "readOnly": false,
            "description": "The offer code.",
            "type": "string"
          },
          "endDate": {
            "example": "2022-01-01",
            "readOnly": false,
            "description": "The date when the offer code expire.",
            "type": "string",
            "format": "date"
          },
          "maxUsageCount": {
            "example": 100,
            "readOnly": false,
            "description": "The maximum number of times a offer code can be used.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "OfferCode"
      },
      "OfferCodes": {
        "type": "object",
        "title": "OfferCodes",
        "properties": {
          "offerCodesToAdd": {
            "readOnly": false,
            "description": "Contains offer code(s) to add.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferCode"
            }
          }
        },
        "description": "OfferCodes to add to a specific offer"
      },
      "OfferParameter": {
        "type": "object",
        "title": "OfferParameter",
        "properties": {
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "key": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "OfferResult": {
        "type": "object",
        "title": "OfferResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The offers in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Offer_OfferAPI"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of offers."
      },
      "OfferType": {
        "type": "string",
        "title": "OfferType",
        "enum": [
          "NEW_PRICE",
          "DISCOUNT_PERCENTAGE",
          "NEW_AMOUNT_FOR_PRODUCTS",
          "DISCOUNT_ON_MOST_EXPENSIVE",
          "NEW_PRICE_FOR_TWO",
          "FREE_PRODUCT"
        ],
        "description": "The type of offer."
      },
      "Order": {
        "type": "object",
        "title": "Order",
        "required": [
          "orderId"
        ],
        "properties": {
          "additionalOrderText": {
            "example": "dimensions:100x100cm",
            "readOnly": false,
            "description": "Additional order text.",
            "type": "string"
          },
          "campaign": {
            "$ref": "#/components/schemas/Campaign_OrderAPI"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The iso3 currency code of the currency used.",
            "type": "string"
          },
          "customFields": {
            "readOnly": false,
            "description": "The custom fields of the order.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField_OrderAPI"
            }
          },
          "customer": {
            "$ref": "#/components/schemas/OrderCustomer"
          },
          "deliveryMethod": {
            "$ref": "#/components/schemas/DeliveryMethod_OrderAPI"
          },
          "methodOfArrivalNumber": {
            "example": "E01",
            "readOnly": false,
            "description": "Method of arrival.",
            "type": "string"
          },
          "offerCodes": {
            "readOnly": false,
            "description": "Any offer code(s) used for the order.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "orderDate": {
            "example": "2020-09-21",
            "readOnly": false,
            "description": "The date when the order was placed.",
            "type": "string",
            "format": "date"
          },
          "orderId": {
            "readOnly": false,
            "description": "The internal identifier of the order.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The external number of the order.",
            "type": "string",
            "example": "..."
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PaymentMethod_OrderAPI"
          },
          "paymentReferences": {
            "readOnly": false,
            "description": "The Payment references of this order.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentReference"
            }
          },
          "purchaseNumber": {
            "readOnly": false,
            "description": "The external number of the purchase.",
            "type": "string",
            "example": "..."
          },
          "rows": {
            "readOnly": false,
            "description": "The rows of the order.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderRow"
            }
          },
          "sellerId": {
            "readOnly": false,
            "description": "Id of Seller.",
            "type": "string",
            "example": "..."
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          },
          "subscriptionInformation": {
            "$ref": "#/components/schemas/SubscriptionInformation_OrderAPI"
          },
          "termsOfPayment": {
            "$ref": "#/components/schemas/TermsOfPayment_OrderAPI"
          },
          "value": {
            "$ref": "#/components/schemas/OrderValue"
          },
          "webStoreNumber": {
            "example": "888",
            "readOnly": false,
            "description": "Web store where the order is placed. Only applicable for web orders, subscription based orders and physical store orders are not supported.",
            "type": "string"
          }
        },
        "description": "An order."
      },
      "OrderAddress": {
        "type": "object",
        "title": "OrderAddress",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "example": "Västra Götaland",
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string"
          },
          "careOf": {
            "example": "Viskan",
            "readOnly": false,
            "description": "The care of (c/o) extension of the address.",
            "type": "string"
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan System AB",
            "readOnly": false,
            "description": "The company name of the recipient. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e and \u003ccode\u003elastName\u003c/code\u003e.",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the address, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "firstName": {
            "example": "John",
            "readOnly": false,
            "description": "The first name of the recipient. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "lastName": {
            "example": "Smith",
            "readOnly": false,
            "description": "The last name of the recipient. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "zipCode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          },
          "zipcode": {
            "example": "50454",
            "readOnly": false,
            "description": "Deprecated, use zipCode instead. The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "Contains the address information."
      },
      "OrderCustomer": {
        "type": "object",
        "title": "OrderCustomer",
        "required": [
          "customerId"
        ],
        "properties": {
          "alternativeEmailAddress": {
            "example": "info@viskan.com",
            "readOnly": false,
            "description": "The alternative email address of the customer.",
            "type": "string"
          },
          "cellphone": {
            "example": "+46730485995",
            "readOnly": false,
            "description": "The cell phone number of the customer.",
            "type": "string"
          },
          "companyName": {
            "example": "Viskan System AB",
            "readOnly": false,
            "description": "The company name of the customer, if the customer is a company. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e and \u003ccode\u003elastName\u003c/code\u003e.",
            "type": "string"
          },
          "contactPerson": {
            "example": "",
            "readOnly": false,
            "description": "The contact person name of the customer, if the customer is a company.",
            "type": "string"
          },
          "customerId": {
            "example": 123,
            "readOnly": false,
            "description": "The internal identifier of the customer.",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "example": "1001",
            "readOnly": false,
            "description": "The unique, external number of the customer.",
            "type": "string"
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/OrderAddress"
          },
          "emailAddress": {
            "example": "info@viskan.com",
            "readOnly": false,
            "description": "The email address of the customer.",
            "type": "string"
          },
          "firstName": {
            "example": "Karl",
            "readOnly": false,
            "description": "The first name of the customer, if the customer is a person. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/OrderAddress"
          },
          "landLine": {
            "example": "+46701740615",
            "readOnly": false,
            "description": "The landline phone number of the customer.",
            "type": "string"
          },
          "lastName": {
            "example": "Karlsson",
            "readOnly": false,
            "description": "The last name of the customer, if the customer is a person. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e.",
            "type": "string"
          },
          "organizationNumber": {
            "example": "556590-1864",
            "readOnly": false,
            "description": "The organization number of the customer, if the customer is a company.",
            "type": "string"
          },
          "socialSecurityNumber": {
            "example": "198812132382",
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string"
          },
          "vatRegistrationNumber": {
            "example": "DE123456789",
            "readOnly": false,
            "description": "VAT Registration Number of the customer.",
            "type": "string"
          }
        },
        "description": "Contains customer information for a order."
      },
      "MyPagesOrderDetails": {
        "type": "object",
        "title": "OrderDetails",
        "required": [
          "returnable"
        ],
        "properties": {
          "charge": {
            "readOnly": false,
            "description": "The packing fee, including taxes.",
            "type": "number",
            "example": 12345
          },
          "customerId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "discount": {
            "readOnly": false,
            "description": "The order discount including taxes. (Row discounts are not included in this value.)",
            "type": "number",
            "example": 12345
          },
          "emailAddress": {
            "readOnly": false,
            "description": "The email address associated with the order.",
            "type": "string",
            "example": "..."
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "orderDate": {
            "readOnly": false,
            "description": "Date when order was placed.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The order number for the order.",
            "type": "string",
            "example": "..."
          },
          "orderPlacedBy": {
            "$ref": "#/components/schemas/MyPagesOrderCustomer"
          },
          "orderPlacedFor": {
            "$ref": "#/components/schemas/MyPagesOrderCustomer"
          },
          "orderRows": {
            "readOnly": false,
            "description": "The rows of the order.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPagesOrderRow"
            }
          },
          "parcelTimeLine": {
            "readOnly": false,
            "description": "Sorted list of available parcel statuses for order",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParcelTimeLine"
            }
          },
          "parcels": {
            "readOnly": false,
            "description": "Parcel information, if there is any.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Parcel"
            }
          },
          "paymentFee": {
            "readOnly": false,
            "description": "The cost for the payment method, such as invoice fee, including taxes.",
            "type": "number",
            "example": 12345
          },
          "providerUniqueData": {
            "readOnly": false,
            "description": "The provider unique data if present",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "returnable": {
            "readOnly": false,
            "description": "Whether this order have any returns.",
            "type": "boolean",
            "example": true
          },
          "shippingFee": {
            "readOnly": false,
            "description": "The cost for shipping the goods, including taxes.",
            "type": "number",
            "example": 12345
          },
          "source": {
            "$ref": "#/components/schemas/Source"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus_v2"
          },
          "store": {
            "$ref": "#/components/schemas/MyPagesStore"
          },
          "totalRowSalesToPay": {
            "readOnly": false,
            "description": "The total row sales to pay of the order.",
            "type": "number",
            "example": 12345
          },
          "totalRowSalesToPayExVat": {
            "readOnly": false,
            "description": "The total row sales to pay of the order, excluding vat.",
            "type": "number",
            "example": 12345
          },
          "totalRowVatToPay": {
            "readOnly": false,
            "description": "The total row vat to pay of the order.",
            "type": "number",
            "example": 12345
          },
          "totalValue": {
            "readOnly": false,
            "description": "The total value of the order including carriage, charge and discounts.",
            "type": "number",
            "example": 12345
          },
          "type": {
            "$ref": "#/components/schemas/OrderType"
          }
        },
        "description": "Order details define detailed information about a purchase made online or in a physical store.\n\u003cp\u003e\nOne customer can have multiple orders and an order can potentially have multiple items and multiple parcels (with or without tracking information).\n\u003c/p\u003e"
      },
      "OrderResult": {
        "type": "object",
        "title": "OrderResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The deliveries in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Order"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result for orders."
      },
      "OrderRow": {
        "type": "object",
        "title": "OrderRow",
        "required": [
          "parentRowId",
          "quantity",
          "quantitySent",
          "rowId",
          "stockKeepingUnitId"
        ],
        "properties": {
          "additionalRowText": {
            "readOnly": false,
            "description": "The additional text for the order row.",
            "type": "string",
            "example": "..."
          },
          "campaign": {
            "$ref": "#/components/schemas/Campaign_OrderAPI"
          },
          "discountExcludingTax": {
            "readOnly": false,
            "description": "Deprecated, use OrderRowValue#discountExcludingTax instead. Discount without Taxes applied",
            "type": "number"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "linkFriendlyName": {
            "example": "clinton_waistcoat",
            "readOnly": false,
            "description": "The link friendly name of the product, in the language that the customer that placed the order uses.",
            "type": "string"
          },
          "offerCode": {
            "readOnly": false,
            "description": "Any offer code used for the row within the order.",
            "type": "string",
            "example": "..."
          },
          "parentRowId": {
            "readOnly": false,
            "description": "The row id for the parent of this row.\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is 0 when no parent exists.\u003c/p\u003e",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "personalizationText": {
            "readOnly": false,
            "description": "Personalization text to customize the row of the order.",
            "type": "string",
            "example": "..."
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price look Up number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "productName": {
            "readOnly": false,
            "description": "The translated name of the product in the consumers language.",
            "type": "string",
            "example": "..."
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "The quantity being delivered.",
            "type": "integer",
            "format": "int32"
          },
          "quantitySent": {
            "example": 0,
            "readOnly": false,
            "description": "The quantity that has been sent.",
            "type": "integer",
            "format": "int32"
          },
          "rowId": {
            "example": 1,
            "readOnly": false,
            "description": "The identifier of the row within the order.",
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/OrderRowStatus"
          },
          "stockKeepingUnitId": {
            "example": 513,
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "$ref": "#/components/schemas/OrderRowValue"
          }
        },
        "description": "A single row of a order."
      },
      "MyPagesOrderRow": {
        "type": "object",
        "title": "OrderRow",
        "required": [
          "quantity",
          "returned"
        ],
        "properties": {
          "attribute1Code": {
            "readOnly": false,
            "description": "The attribute1 code of the product",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "The attribute2 code of the product",
            "type": "string",
            "example": "..."
          },
          "color": {
            "readOnly": false,
            "description": "Use attribute1Code instead.",
            "type": "string"
          },
          "discount": {
            "readOnly": false,
            "description": "The discount in monetary value of this row",
            "type": "number",
            "example": 12345
          },
          "discountExVat": {
            "readOnly": false,
            "description": "The unit discount, excluding vat, of this row.",
            "type": "number",
            "example": 12345
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "Product European article number",
            "type": "string",
            "example": "..."
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "Get the friendly name for the link.",
            "type": "string",
            "example": "..."
          },
          "mediaUrl": {
            "readOnly": false,
            "description": "URL for the media.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "Product price look-up number",
            "type": "string",
            "example": "..."
          },
          "productGroupName": {
            "readOnly": false,
            "description": "Default group for the article, if it has one.",
            "type": "string",
            "example": "..."
          },
          "productId": {
            "readOnly": false,
            "description": "The internal product identifier",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "The product name",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "The product number",
            "type": "string",
            "example": "..."
          },
          "providerUniqueData": {
            "readOnly": false,
            "description": "The provider unique data if present",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "quantity": {
            "readOnly": false,
            "description": "The number of items of this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantityDelivered": {
            "readOnly": false,
            "description": "Number of products delivered for this row.\n\u003cp\u003e\nNOTE: quantityDelivered may not \u003ci\u003ealways\u003c/i\u003e (for all external parties) be populated.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "returned": {
            "readOnly": false,
            "description": "If this row has been returned",
            "type": "boolean",
            "example": true
          },
          "rowSalesToPay": {
            "readOnly": false,
            "description": "The total price to pay for this row.",
            "type": "number",
            "example": 12345
          },
          "rowSalesToPayExVat": {
            "readOnly": false,
            "description": "The total price, excluding vat, to pay for this row.",
            "type": "number",
            "example": 12345
          },
          "rowVatToPay": {
            "readOnly": false,
            "description": "The total vat to pay for this row.",
            "type": "number",
            "example": 12345
          },
          "size": {
            "readOnly": false,
            "description": "Use attribute2Code instead.",
            "type": "string"
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The unit price of this row.",
            "type": "number",
            "example": 12345
          },
          "unitPriceExVat": {
            "readOnly": false,
            "description": "The unit price, excluding vat, of this row.",
            "type": "number",
            "example": 12345
          },
          "unitVat": {
            "readOnly": false,
            "description": "The unit vat of this row.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "An order row defines a row from a purchase\n\u003cp\u003e\nEach order contains one or several rows"
      },
      "OrderRowStatus": {
        "type": "string",
        "title": "OrderRowStatus",
        "enum": [
          "PLACED",
          "DELIVERY_CREATED",
          "PART_DELIVERED",
          "FULLY_DELIVERED",
          "CANCELED"
        ],
        "description": "The status of a order row."
      },
      "OrderRowValue": {
        "type": "object",
        "title": "OrderRowValue",
        "properties": {
          "discount": {
            "example": 0,
            "readOnly": false,
            "description": "Deprecated. Use discountIncludingTax instead. The total discount of the row.",
            "type": "number"
          },
          "discountExcludingTax": {
            "example": 0,
            "readOnly": false,
            "description": "The total discount excluding tax of the row.",
            "type": "number"
          },
          "discountIncludingTax": {
            "example": 0,
            "readOnly": false,
            "description": "The total discount including tax of the row.",
            "type": "number"
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The tax rate of the row.",
            "type": "number"
          },
          "total": {
            "example": 20,
            "readOnly": false,
            "description": "Deprecated. Use totalIncludingTax instead. The total value of the row.",
            "type": "number"
          },
          "totalExcludingTax": {
            "example": 16,
            "readOnly": false,
            "description": "The total value excluding tax of the row.",
            "type": "number"
          },
          "totalIncludingTax": {
            "example": 20,
            "readOnly": false,
            "description": "The total value including tax of the row.",
            "type": "number"
          },
          "unitPrice": {
            "example": 20,
            "readOnly": false,
            "description": "Deprecated. Use unitPriceIncludingTax field instead. This field represents the unit price of the row.",
            "type": "number"
          },
          "unitPriceExcludingTax": {
            "example": 16,
            "readOnly": false,
            "description": "The unit price excluding tax of the row.",
            "type": "number"
          },
          "unitPriceIncludingTax": {
            "example": 20,
            "readOnly": false,
            "description": "The unit price including tax of the row.",
            "type": "number"
          }
        },
        "description": "Contains values of a order row."
      },
      "OrderStatus": {
        "type": "string",
        "title": "OrderStatus",
        "enum": [
          "PLACED",
          "DELIVERY_CREATED",
          "PART_DELIVERED",
          "FULLY_DELIVERED",
          "CANCELED"
        ],
        "description": "The status of a order."
      },
      "OrderStatus_v2": {
        "type": "string",
        "title": "OrderStatus",
        "enum": [
          "PLACED",
          "DELIVERY_CREATED",
          "PARTLY_DELIVERED",
          "DELIVERED",
          "CANCELLED"
        ],
        "description": "Defines possible statuses in the order flow."
      },
      "OrderType": {
        "type": "string",
        "title": "OrderType",
        "enum": [
          "STANDARD",
          "GIVER_RECRUITER",
          "BONUS",
          "EXTRA_CLUB_POSTING",
          "SUBSCRIPTION",
          "MEMBERSHIP_INTRO",
          "MEMBERSHIP_POSTING",
          "MEMBERSHIP_NO_THANKS",
          "STOCK_REDISTRIBUTION",
          "RECEIPT",
          "BUNDLE_ORDER",
          "UNCOLLECTED_FEE",
          "LAGUN",
          "SPECIAL"
        ],
        "description": ""
      },
      "OrderValue": {
        "type": "object",
        "title": "OrderValue",
        "properties": {
          "charge": {
            "example": 0,
            "readOnly": false,
            "description": "The charge of the order.",
            "type": "number"
          },
          "discount": {
            "example": 0,
            "readOnly": false,
            "description": "The discount of the order.",
            "type": "number"
          },
          "paymentFee": {
            "example": 0,
            "readOnly": false,
            "description": "The payment fee of the order.",
            "type": "number"
          },
          "shippingFee": {
            "example": 9,
            "readOnly": false,
            "description": "The shipping fee of the order.",
            "type": "number"
          },
          "total": {
            "example": 49,
            "readOnly": false,
            "description": "The total value of the order.",
            "type": "number"
          }
        },
        "description": "Contains values of the order."
      },
      "PackageToAddOrUpdate": {
        "type": "object",
        "title": "PackageToAddOrUpdate",
        "properties": {
          "content": {
            "$ref": "#/components/schemas/ContentGroup"
          },
          "productNumber": {
            "example": "123PRODUCT",
            "readOnly": false,
            "description": "The product number of the master product.",
            "type": "string"
          }
        },
        "description": "Contains a package to add or update"
      },
      "PackagesToAddOrUpdate": {
        "type": "object",
        "title": "PackagesToAddOrUpdate",
        "properties": {
          "packagesToAddOrUpdate": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PackageToAddOrUpdate"
            }
          }
        },
        "description": "Contains packages to add or update"
      },
      "Parameter": {
        "type": "object",
        "title": "Parameter",
        "properties": {
          "description": {
            "example": "The discount in percent to apply to the product",
            "readOnly": false,
            "description": "The description of the usage of the parameter.",
            "type": "string"
          },
          "key": {
            "example": "discountPercent",
            "readOnly": false,
            "description": "The name of the parameter.",
            "type": "string"
          },
          "value": {
            "example": "20",
            "readOnly": false,
            "description": "The value of the parameter to be applied.",
            "type": "string"
          }
        },
        "description": "A variable condition or value of an offer"
      },
      "Parcel": {
        "type": "object",
        "title": "Parcel",
        "properties": {
          "parcelNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "status": {
            "$ref": "#/components/schemas/MyPagesParcelStatus"
          },
          "trackingURL": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds tracking information for a shipped parcel, tied to a specific order."
      },
      "ParcelCreateCustomer": {
        "type": "object",
        "title": "ParcelCreateCustomer",
        "properties": {
          "alternativeCellphone": {
            "readOnly": false,
            "description": "An alternative cellphone number of the customer",
            "type": "string",
            "example": "..."
          },
          "alternativeEmail": {
            "readOnly": false,
            "description": "An alternative email address of the customer",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "example": "+46701234567",
            "readOnly": false,
            "description": "The cellphone number of the customer",
            "type": "string"
          },
          "companyName": {
            "readOnly": false,
            "description": "The company name of the customer (mutually exclusive with firstName/lastName)",
            "type": "string",
            "example": "..."
          },
          "customerNumber": {
            "example": "10001",
            "readOnly": false,
            "description": "The customer number. Used to match against an existing customer",
            "type": "string"
          },
          "dateOfBirth": {
            "example": "1991-01-15",
            "readOnly": false,
            "description": "The date of birth of the customer (only for private persons). Format: YYYY-MM-DD",
            "type": "string"
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/ParcelCreateDeliveryAddress"
          },
          "email": {
            "example": "john.doe@example.com",
            "readOnly": false,
            "description": "The email address of the customer",
            "type": "string"
          },
          "firstName": {
            "example": "John",
            "readOnly": false,
            "description": "The first name of the customer (mutually exclusive with companyName)",
            "type": "string"
          },
          "lastName": {
            "example": "Doe",
            "readOnly": false,
            "description": "The last name of the customer (mutually exclusive with companyName)",
            "type": "string"
          },
          "orders": {
            "readOnly": false,
            "description": "The orders for this customer",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParcelCreateOrder"
            }
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number of the customer (only for companies)",
            "type": "string",
            "example": "..."
          },
          "socialSecurityNumber": {
            "example": "19910115-1234",
            "readOnly": false,
            "description": "The social security number of the customer (only for private persons)",
            "type": "string"
          }
        },
        "description": "A customer for parcel creation"
      },
      "ParcelCreateDelivery": {
        "type": "object",
        "title": "ParcelCreateDelivery",
        "properties": {
          "parcels": {
            "readOnly": false,
            "description": "The parcels for this shipment",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParcelCreateParcel"
            }
          }
        },
        "description": "A shipment for parcel creation"
      },
      "ParcelCreateDeliveryAddress": {
        "type": "object",
        "title": "ParcelCreateDeliveryAddress",
        "properties": {
          "addressLine1": {
            "example": "Storgatan 1",
            "readOnly": false,
            "description": "The first line of the address",
            "type": "string"
          },
          "administrativeDivision": {
            "readOnly": false,
            "description": "The administrative division (state/province/region) of the address",
            "type": "string",
            "example": "..."
          },
          "careOf": {
            "readOnly": false,
            "description": "The care of (c/o) line of the address",
            "type": "string",
            "example": "..."
          },
          "city": {
            "example": "Stockholm",
            "readOnly": false,
            "description": "The city of the address",
            "type": "string"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The ISO 3166-1 alpha-2 country code",
            "type": "string"
          },
          "zipcode": {
            "example": "12345",
            "readOnly": false,
            "description": "The zipcode of the address",
            "type": "string"
          }
        },
        "description": "The delivery address of a customer"
      },
      "ParcelCreateOrder": {
        "type": "object",
        "title": "ParcelCreateOrder",
        "properties": {
          "cashOnDeliveryAmount": {
            "example": "0",
            "readOnly": false,
            "description": "The cash on delivery amount",
            "type": "string"
          },
          "deliveries": {
            "readOnly": false,
            "description": "The shipments for this order",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParcelCreateDelivery"
            }
          },
          "externalOrderNumber": {
            "readOnly": false,
            "description": "An external order number",
            "type": "string",
            "example": "..."
          },
          "orderDate": {
            "example": "2026-03-20T10:00:00.000Z",
            "readOnly": false,
            "description": "The order date. Defaults to the current date if not provided",
            "type": "string"
          },
          "orderNumber": {
            "example": "100001",
            "readOnly": false,
            "description": "The order number. Used to match against an existing order",
            "type": "string"
          },
          "paymentMethodCode": {
            "readOnly": false,
            "description": "The payment method code",
            "type": "string",
            "example": "..."
          }
        },
        "description": "An order for parcel creation"
      },
      "ParcelCreateParcel": {
        "type": "object",
        "title": "ParcelCreateParcel",
        "properties": {
          "comment": {
            "readOnly": false,
            "description": "A comment for the parcel",
            "type": "string",
            "example": "..."
          },
          "contents": {
            "example": "2 shirts, 1 pair of shoes",
            "readOnly": false,
            "description": "The contents of the parcel",
            "type": "string"
          },
          "destinationDeliveryPointCode": {
            "example": "STORE-0042",
            "readOnly": false,
            "description": "The code of the destination delivery point",
            "type": "string"
          },
          "occurredAt": {
            "example": "2026-03-20T14:15:30.000Z",
            "readOnly": false,
            "description": "The time that the parcel event occurred. Defaults to the current time if not provided",
            "type": "string"
          },
          "parcelNumber": {
            "example": "PKG-100011",
            "readOnly": false,
            "description": "The parcel number. Must be unique",
            "type": "string"
          },
          "parcelType": {
            "example": "normal",
            "readOnly": false,
            "description": "The parcel type. Defaults to \u0027normal\u0027 if not provided",
            "type": "string"
          },
          "reference": {
            "readOnly": false,
            "description": "A reference for the parcel",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A parcel to create"
      },
      "ParcelCreateRequest": {
        "type": "object",
        "title": "ParcelCreateRequest",
        "properties": {
          "customers": {
            "readOnly": false,
            "description": "The customers to create parcels for",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParcelCreateCustomer"
            }
          }
        },
        "description": "The request body for creating parcels"
      },
      "ParcelInfo": {
        "type": "object",
        "title": "ParcelInfo",
        "required": [
          "revoked"
        ],
        "properties": {
          "comment": {
            "readOnly": false,
            "description": "A comment to be used for the parcel",
            "type": "string",
            "example": "..."
          },
          "contents": {
            "example": "2 shirts, 1 pair of shoes",
            "readOnly": false,
            "description": "The contents of the parcel",
            "type": "string"
          },
          "currentDeliveryPointCode": {
            "readOnly": false,
            "description": "The code of the deliverypoint where the parcel is currently at",
            "type": "string",
            "example": "..."
          },
          "customerIdentifiedBy": {
            "$ref": "#/components/schemas/IdentificationType"
          },
          "customerIdentifiedByValue": {
            "example": "19911111-1111",
            "readOnly": false,
            "description": "The identifying information of the recipient of the parcel",
            "type": "string"
          },
          "estimatedTimeOfArrival": {
            "example": "2012-05-23T18:25:43.899Z",
            "readOnly": false,
            "description": "The estimated time of arrival of the parcel",
            "type": "string"
          },
          "occurredAt": {
            "example": "2012-04-23T18:25:43.899Z",
            "readOnly": false,
            "description": "The time that this event was registered on the parcel",
            "type": "string"
          },
          "parcelNumber": {
            "example": "100011",
            "readOnly": false,
            "description": "The parcelnumber of the parcel",
            "type": "string"
          },
          "proxyIdentifiedBy": {
            "$ref": "#/components/schemas/IdentificationType"
          },
          "proxyIdentifiedByValue": {
            "example": "19911111-1112",
            "readOnly": false,
            "description": "The identifying information of the proxy collector for the recipient of the parcel",
            "type": "string"
          },
          "registeredBy": {
            "example": "karl karlsson",
            "readOnly": false,
            "description": "The identifying information of who registered the parcel",
            "type": "string"
          },
          "revoked": {
            "example": false,
            "readOnly": false,
            "description": "If the parcel is revoked or not",
            "type": "boolean"
          },
          "status": {
            "readOnly": false,
            "description": "The status of the parcel",
            "type": "string",
            "example": "..."
          },
          "stockLocation": {
            "readOnly": false,
            "description": "The stocklocation of the parcel",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains changes to apply for a parcel"
      },
      "ParcelTimeLine": {
        "type": "object",
        "title": "ParcelTimeLine",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/MyPagesParcelStatus"
          }
        },
        "description": "Holds possible statuses for shipped parcels, tied to a specific order."
      },
      "ParcelUpdates": {
        "type": "object",
        "title": "ParcelUpdates",
        "properties": {
          "parcels": {
            "readOnly": false,
            "description": "Contains changes to apply for parcels",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ParcelInfo"
            }
          }
        },
        "description": "Contains changes to apply for parcels"
      },
      "PathInfo": {
        "type": "object",
        "title": "PathInfo",
        "required": [
          "articleId",
          "categoryId",
          "redirectCode"
        ],
        "properties": {
          "articleId": {
            "example": 0,
            "readOnly": false,
            "description": "The identifier of the article to load and present.",
            "type": "integer",
            "format": "int32"
          },
          "categoryId": {
            "example": 441,
            "readOnly": false,
            "description": "The identifier of the category to load and present.",
            "type": "integer",
            "format": "int32"
          },
          "languageAlternatives": {
            "readOnly": false,
            "description": "The available language alternatives for the path.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LanguageAlternative"
            }
          },
          "redirectCode": {
            "example": 301,
            "readOnly": false,
            "description": "The HTTP code to use when redirecting.",
            "type": "integer",
            "format": "int32"
          },
          "redirectURL": {
            "example": "",
            "readOnly": false,
            "description": "The URL that the client should be redirected to.",
            "type": "string"
          },
          "targetType": {
            "$ref": "#/components/schemas/TargetType"
          }
        },
        "description": "The target destination of a path."
      },
      "PayType": {
        "type": "string",
        "title": "PayType",
        "enum": [
          "UNDEFINED",
          "COD",
          "INVOICE",
          "INSTANT_PAYMENT",
          "AUTOGIRO",
          "CASH",
          "CREDIT",
          "FACTORING",
          "PAY_LATER",
          "PREPAYMENT",
          "LAGUN",
          "E_INVOICE"
        ],
        "description": ""
      },
      "PaymentInfo": {
        "type": "object",
        "title": "PaymentInfo",
        "required": [
          "paymentMethodId",
          "problematic"
        ],
        "properties": {
          "expiresAtMonth": {
            "readOnly": false,
            "description": "The month that the credit card expires.",
            "type": "string",
            "example": "..."
          },
          "expiresAtYear": {
            "readOnly": false,
            "description": "The year that the credit card expires.",
            "type": "string",
            "example": "..."
          },
          "maskedCreditCardNumber": {
            "readOnly": false,
            "description": "The masked credit card number.",
            "type": "string",
            "example": "..."
          },
          "paymentMethodId": {
            "readOnly": false,
            "description": "The identifier of the payment method that was used.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "problematic": {
            "readOnly": false,
            "description": "Whether or not the payment is being problematic. This will be true if Viskan could not withdraw money from the reference payment for\nany reason, otherwise; false.",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Holds information about how a subscription or rental is being paid periodically."
      },
      "PaymentMethod": {
        "type": "object",
        "title": "PaymentMethod",
        "required": [
          "paymentMethodId"
        ],
        "properties": {
          "external_pay_code": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "methodCode": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003epaymentMethodName\u003c/code\u003e",
            "type": "string"
          },
          "methodDescription": {
            "readOnly": false,
            "description": "A short description of the payment method.",
            "type": "string",
            "example": "..."
          },
          "methodName": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003epaymentMethodName\u003c/code\u003e",
            "type": "string"
          },
          "payType": {
            "$ref": "#/components/schemas/PayType"
          },
          "paymentFee": {
            "example": 19,
            "readOnly": false,
            "description": "The payment fee for this method for the filtered country.",
            "type": "number"
          },
          "paymentMethodId": {
            "readOnly": false,
            "description": "The ID of the payment method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "paymentMethodName": {
            "readOnly": false,
            "description": "The name of the payment method.",
            "type": "string",
            "example": "..."
          },
          "serviceProviderCode": {
            "readOnly": false,
            "description": "The third party provider used for this payment method.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a payment method that can be used to accept payments."
      },
      "PaymentMethod_CustomerAPI": {
        "type": "object",
        "title": "PaymentMethod",
        "required": [
          "paymentMethodId"
        ],
        "properties": {
          "paymentMethodId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the payment method.",
            "type": "integer",
            "format": "int32"
          },
          "paymentMethodName": {
            "example": "Invoice",
            "readOnly": false,
            "description": "The payment method name.",
            "type": "string"
          }
        },
        "description": "Payment method"
      },
      "PaymentMethod_SubscriptionAPI": {
        "type": "object",
        "title": "PaymentMethod",
        "required": [
          "paymentMethodId"
        ],
        "properties": {
          "paymentMethodId": {
            "example": 1,
            "readOnly": false,
            "description": "The id of the payment method.",
            "type": "integer",
            "format": "int32"
          },
          "paymentMethodName": {
            "example": "Invoice",
            "readOnly": false,
            "description": "The payment method name.",
            "type": "string"
          }
        },
        "description": "Payment method"
      },
      "PaymentMethod_OrderAPI": {
        "type": "object",
        "title": "PaymentMethod",
        "properties": {
          "paymentMethodId": {
            "readOnly": false,
            "description": "The id of the payment method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "paymentMethodName": {
            "example": "Autogiro SE",
            "readOnly": false,
            "description": "The name of the payment method.",
            "type": "string"
          }
        },
        "description": "Contains information about a payment method"
      },
      "PaymentMethod_DeliveryAPI": {
        "type": "object",
        "title": "PaymentMethod",
        "required": [
          "paymentMethodId"
        ],
        "properties": {
          "paymentMethodCode": {
            "readOnly": false,
            "description": "The code of the payment method, deprecated use paymentMethodName instead.",
            "type": "string"
          },
          "paymentMethodId": {
            "readOnly": false,
            "description": "The internal identifier of the payment method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "paymentMethodName": {
            "readOnly": false,
            "description": "The code of the payment method.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds information about the payment method."
      },
      "PaymentReference": {
        "type": "object",
        "title": "PaymentReference",
        "properties": {
          "additionalPaymentType": {
            "example": "Swish",
            "readOnly": false,
            "description": "The additional payment type, if any. Could for example indicate that you chose Swish within an Adyen checkout.",
            "type": "string"
          },
          "amount": {
            "example": 49,
            "readOnly": false,
            "description": "The amount that was paid.",
            "type": "number"
          },
          "reference": {
            "example": "37W15728OP640392F",
            "readOnly": false,
            "description": "The external reference to the transaction.",
            "type": "string"
          },
          "serviceProvider": {
            "example": "Klarna",
            "readOnly": false,
            "description": "The service provider that handled the transaction.",
            "type": "string"
          },
          "transactionType": {
            "$ref": "#/components/schemas/TransactionType"
          }
        },
        "description": "Contains information about a payment reference."
      },
      "PaymentStatus": {
        "type": "string",
        "title": "PaymentStatus",
        "enum": [
          "NOT_INVOICED",
          "UNPAID",
          "PARTLY_PAID",
          "NO_CLAIM",
          "OVERPAID"
        ],
        "description": "Defines possible statuses for payments."
      },
      "PhysicalStore": {
        "type": "object",
        "title": "PhysicalStore",
        "required": [
          "storeId"
        ],
        "properties": {
          "address": {
            "$ref": "#/components/schemas/AddressWithGeolocation"
          },
          "description": {
            "readOnly": false,
            "description": "A short description of the store.",
            "type": "string",
            "example": "..."
          },
          "email": {
            "readOnly": false,
            "description": "The e-mail address to use when contacting the store by e-mail.",
            "type": "string",
            "example": "..."
          },
          "openingHoursDeviation": {
            "readOnly": false,
            "description": "The potential deviation in opening hours.",
            "type": "string",
            "example": "..."
          },
          "openingHoursSaturday": {
            "readOnly": false,
            "description": "The opening hours on a Saturday.",
            "type": "string",
            "example": "..."
          },
          "openingHoursSunday": {
            "readOnly": false,
            "description": "The opening hours on a Sunday.",
            "type": "string",
            "example": "..."
          },
          "openingHoursWeekdays": {
            "readOnly": false,
            "description": "The opening hours on regular weekdays.",
            "type": "string",
            "example": "..."
          },
          "phone": {
            "readOnly": false,
            "description": "The phone number to use when contacting the store by phone.",
            "type": "string",
            "example": "..."
          },
          "storeId": {
            "readOnly": false,
            "description": "The identifier of the store.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "storeName": {
            "readOnly": false,
            "description": "The name of the store.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a physical store, containing contact details, geographical location and opening hours."
      },
      "PhysicalStoreStockBalance": {
        "type": "object",
        "title": "PhysicalStoreStockBalance",
        "required": [
          "totalQuantity"
        ],
        "properties": {
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "The stock keeping units containing information about stock balances.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PhysicalStoreStockKeepingUnit"
            }
          },
          "store": {
            "$ref": "#/components/schemas/PhysicalStore"
          },
          "totalQuantity": {
            "readOnly": false,
            "description": "The total quantity for all included stock keeping units.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains information about stock balances for a physical store. The stock balance information is separated by stock keeping units."
      },
      "PhysicalStoreStockKeepingUnit": {
        "type": "object",
        "title": "PhysicalStoreStockKeepingUnit",
        "required": [
          "articleId",
          "attribute1Id",
          "attribute2Id",
          "attribute3Id",
          "quantity",
          "stockKeepingUnitId"
        ],
        "properties": {
          "articleId": {
            "readOnly": false,
            "description": "The identifier of the article itself.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute1Id": {
            "readOnly": false,
            "description": "The identifier of the first attribute.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Id": {
            "readOnly": false,
            "description": "The identifier of the second attribute.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Id": {
            "readOnly": false,
            "description": "The identifier of the third attribute.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity currently in stock for this unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Information about the quantity in stock of a specific stock keeping unit."
      },
      "PresentationType": {
        "type": "string",
        "title": "PresentationType",
        "enum": [
          "FRONT",
          "BACK",
          "LIST",
          "RELATED",
          "SEARCH",
          "TECH",
          "INTERNAL",
          "EXTRA",
          "TOP",
          "BOTTOM",
          "FEED"
        ],
        "description": ""
      },
      "PreviousDelivery": {
        "type": "object",
        "title": "PreviousDelivery",
        "required": [
          "carriageFee",
          "invoicedAmount",
          "valueOfProducts",
          "vat"
        ],
        "properties": {
          "carriageFee": {
            "example": 10,
            "readOnly": false,
            "description": "The carriage fee of the previous delivery.",
            "type": "number",
            "format": "double"
          },
          "invoicedAmount": {
            "example": 100,
            "readOnly": false,
            "description": "The total invoiced amount of the previous delivery.",
            "type": "number",
            "format": "double"
          },
          "previousDeliveryDate": {
            "example": "2020-05-02",
            "readOnly": false,
            "description": "The previous delivery date of the subscription.",
            "type": "string",
            "format": "date"
          },
          "valueOfProducts": {
            "example": 90,
            "readOnly": false,
            "description": "The total cost of the products of the previous delivery.",
            "type": "number",
            "format": "double"
          },
          "vat": {
            "example": 10,
            "readOnly": false,
            "description": "The vat of the previous delivery.",
            "type": "number",
            "format": "double"
          }
        },
        "description": "Previous Delivery information"
      },
      "Price": {
        "type": "object",
        "title": "Price",
        "properties": {
          "active": {
            "example": false,
            "readOnly": false,
            "description": "Indicates if this product price is active.",
            "type": "boolean"
          },
          "comparisonPrice": {
            "example": 100,
            "readOnly": false,
            "description": "The optional comparison price per unit.",
            "type": "number"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2) of the price.",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "",
            "type": "string"
          },
          "priceList": {
            "$ref": "#/components/schemas/PriceList_Product"
          },
          "priceListName": {
            "example": "",
            "readOnly": false,
            "description": "The name of the optional price list. If not specified, the price is for the standard price list.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e The priceListName field is deprecated and no longer used.  Please use the new priceList field instead.\u003c/p\u003e",
            "type": "string"
          },
          "recommendedPrice": {
            "example": 100,
            "readOnly": false,
            "description": "The optional recommended price per unit.",
            "type": "number"
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The tax rate of this price. This tax rate must be a valid tax rate for the given country.",
            "type": "number"
          },
          "unitPrice": {
            "example": 100,
            "readOnly": false,
            "description": "The sales price per unit, including tax.",
            "type": "number"
          },
          "unitPriceOriginal": {
            "example": 100,
            "readOnly": false,
            "description": "The optional original price per unit, including tax. If present and is higher than the sales price, the unit price is considered reduced.",
            "type": "number"
          }
        },
        "description": "Defines a single price of a stock keeping unit."
      },
      "Price_response": {
        "type": "object",
        "title": "Price",
        "required": [
          "offerTypeId",
          "priceCampaignId",
          "priceListId"
        ],
        "properties": {
          "comparisonPrice": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "lowestPriceWithinPeriod": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "offerTypeId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "priceCampaignId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "priceListId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "recommendedUnitPrice": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "salePrice": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "taxRate": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "unitPrice": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          }
        },
        "description": ""
      },
      "PriceCampaign": {
        "type": "object",
        "title": "PriceCampaign",
        "required": [
          "customerType",
          "offerTypeId",
          "priceCampaignId"
        ],
        "properties": {
          "alternativeCampaignName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "campaignName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "customerType": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "offerTypeId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "parameters": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferParameter"
            }
          },
          "priceCampaignId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "stockKeepingUnitIds": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          }
        },
        "description": ""
      },
      "PriceChanges": {
        "type": "object",
        "title": "PriceChanges",
        "properties": {
          "rowsToUpdate": {
            "readOnly": false,
            "description": "Contains a collection of product-price to update.\nDeprecated in favour of rowsToUpdateOrAdd}.\nThe new format allows for add prices in addition to updates.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPriceUpdate"
            }
          },
          "rowsToUpdateOrAdd": {
            "readOnly": false,
            "description": "Contains a collection of product prices to update or add.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPriceUpdateOrAdd"
            }
          }
        },
        "description": "Contains information about price changes."
      },
      "PriceList": {
        "type": "object",
        "title": "PriceList",
        "properties": {
          "priceListCode": {
            "example": "Regular",
            "readOnly": false,
            "description": "The optional price list code. Mutually exclusive with priceListId",
            "type": "string"
          },
          "priceListId": {
            "example": 0,
            "readOnly": false,
            "description": "The identifier of the optional price list, the default standard priceListId is \u003ccode\u003e0\u003c/code\u003e. Mutually exclusive with priceListCode",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Price List"
      },
      "PriceList_Product": {
        "type": "object",
        "title": "PriceList",
        "properties": {
          "priceListCode": {
            "example": "PL1",
            "readOnly": false,
            "description": "The API code of the optional price list. If not specified, the price is for the standard price list.",
            "type": "string"
          },
          "priceListId": {
            "example": 100012,
            "readOnly": false,
            "description": "The internal identifier of the optional price list, the default standard priceListId is \u003ccode\u003e0\u003c/code\u003e.",
            "type": "integer",
            "format": "int32"
          },
          "priceListName": {
            "example": "",
            "readOnly": false,
            "description": "The name of the optional price list. If not specified, the price is for the standard price list.",
            "type": "string"
          }
        },
        "description": "Defines a price list of a stock keeping unit."
      },
      "PriceRangeFilter": {
        "type": "object",
        "title": "PriceRangeFilter",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "from": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "to": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "PriceTier": {
        "type": "object",
        "title": "PriceTier",
        "required": [
          "filterByPriceList",
          "presentTierExcludingTax"
        ],
        "properties": {
          "filterByPriceList": {
            "readOnly": false,
            "description": "If set to true, the price tier will only be applied if the customer is using the specified price list.",
            "type": "boolean",
            "example": true
          },
          "offerText": {
            "readOnly": false,
            "description": "Optional text that can be displayed with the offer. i.e. \"Buy 3 for 100 SEK\".",
            "type": "string",
            "example": "..."
          },
          "presentTierExcludingTax": {
            "readOnly": false,
            "description": "If set to true, the offer text will be displayed with the price excluding tax. Assumes that price is sent in including tax. False by default.",
            "type": "boolean",
            "example": true
          },
          "price": {
            "readOnly": false,
            "description": "The new price for the specified quantity of items.",
            "type": "number",
            "example": 12345
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity of items to purchase to get the new price. The tier is deactivated if not specified.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains information about a price tier. Only supports a single tier at the moment."
      },
      "PriceType": {
        "type": "string",
        "title": "PriceType",
        "enum": [
          "ON_SALE",
          "NOT_ON_SALE"
        ],
        "description": ""
      },
      "Product": {
        "type": "object",
        "title": "Product",
        "required": [
          "active",
          "defaultCategoryId",
          "productId",
          "published"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "Indicates if this product is active on Product level. There is also an active status on SKU level.",
            "type": "boolean",
            "example": true
          },
          "articleStatus": {
            "$ref": "#/components/schemas/ArticleStatus_article"
          },
          "brandCode": {
            "readOnly": false,
            "description": "A reference to the brand-code of the product.",
            "type": "string",
            "example": "..."
          },
          "brandName": {
            "readOnly": false,
            "description": "A reference to the brand-name of the product.",
            "type": "string",
            "example": "..."
          },
          "brandTag": {
            "readOnly": false,
            "description": "A reference to the brand-tag of the product. Used in the aggregations of the estore product API",
            "type": "string",
            "example": "..."
          },
          "categories": {
            "readOnly": false,
            "description": "All the active categories the product is connected to.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductCategory"
            }
          },
          "defaultAttributes": {
            "$ref": "#/components/schemas/DefaultAttributes"
          },
          "defaultCategoryId": {
            "readOnly": false,
            "description": "The default category-id of the product.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "The internal identifier of the product.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "The internal untranslated name of the product.",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "The unique number of the product.",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ArticleType"
          },
          "properties": {
            "readOnly": false,
            "description": "A list of properties for the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_Product"
            }
          },
          "publishDate": {
            "example": "2024-06-01",
            "readOnly": false,
            "description": "The date the product is or will be published. If the product is already published, this is the date it was published. If the article status is \u003ccode\u003eNOT_YET_FOR_SALE\u003c/code\u003e and this date is in the future, the product is considered \"coming soon\".",
            "type": "string",
            "format": "date"
          },
          "published": {
            "readOnly": false,
            "description": "Indicates if this product is published on site on Product level. There is also a published status on SKU level.",
            "type": "boolean",
            "example": true
          },
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "All the available stock keeping units of the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnit_Product"
            }
          },
          "taxCode": {
            "example": "T1",
            "readOnly": false,
            "description": "The tax code relevant to the product (VAT).",
            "type": "string"
          },
          "translations": {
            "readOnly": false,
            "description": "The translations for the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductTranslation"
            }
          }
        },
        "description": "Contains information about a new or updated products."
      },
      "MyPagesWishlistProductRequest": {
        "type": "object",
        "title": "Product",
        "properties": {
          "priceLookUpNumber": {
            "example": "10036-392",
            "readOnly": false,
            "description": "The price look up number of the product.",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "example": 513,
            "readOnly": false,
            "description": "The stock keeping unit ID of the product.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Request object for saving a product in a wishlist."
      },
      "MyPagesWishlistProductResponse": {
        "type": "object",
        "title": "Product",
        "properties": {
          "attribute1Id": {
            "example": 1,
            "readOnly": false,
            "description": "The attribute1 ID.",
            "type": "integer",
            "format": "int32"
          },
          "attribute2Id": {
            "example": 1,
            "readOnly": false,
            "description": "The attribute2 ID.",
            "type": "integer",
            "format": "int32"
          },
          "attribute3Id": {
            "example": 1,
            "readOnly": false,
            "description": "The attribute3 ID.",
            "type": "integer",
            "format": "int32"
          },
          "priceLookUpNumber": {
            "example": "10036-392",
            "readOnly": false,
            "description": "The price look up number of the product.",
            "type": "string"
          },
          "productId": {
            "example": 1,
            "readOnly": false,
            "description": "The product ID.",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "example": 513,
            "readOnly": false,
            "description": "The stock keeping unit ID of the product.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Response object for a product in a wishlist."
      },
      "ProductCategory": {
        "type": "object",
        "title": "ProductCategory",
        "required": [
          "categoryId"
        ],
        "properties": {
          "categoryId": {
            "readOnly": false,
            "description": "The id of the category.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "A category the product is connected to."
      },
      "ProductChanges": {
        "type": "object",
        "title": "ProductChanges",
        "properties": {
          "productsToAddOrUpdate": {
            "readOnly": false,
            "description": "The products to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductToAddOrUpdate"
            }
          }
        },
        "description": "Contains changes that applies to a product."
      },
      "ProductDetailRequest": {
        "type": "object",
        "title": "ProductDetailRequest",
        "required": [
          "countryId",
          "excludeAddons",
          "includeCustomerCategoryOffers",
          "preview",
          "requireContentCategoryConnection"
        ],
        "properties": {
          "countryId": {
            "readOnly": false,
            "description": "The country id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerReducedPricePercentage": {
            "readOnly": false,
            "description": "The customers reduced price in percentage",
            "type": "number",
            "example": 12345
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "excludeAddons": {
            "readOnly": false,
            "description": "If addon products should be excluded from the result",
            "type": "boolean",
            "example": true
          },
          "includeCustomerCategoryOffers": {
            "readOnly": false,
            "description": "If we want to return offers connected to the category of a customer",
            "type": "boolean",
            "example": true
          },
          "languageId": {
            "readOnly": false,
            "description": "The language you want to load the product with",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "A link friendly name that can be used to identify the product",
            "type": "string",
            "example": "..."
          },
          "preview": {
            "readOnly": false,
            "description": "Whether to include preview articles in the result",
            "type": "boolean",
            "example": true
          },
          "priceListIds": {
            "readOnly": false,
            "description": "The price list ids used for filtering",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "productId": {
            "readOnly": false,
            "description": "A product id that can be used to identify the product",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productUUID": {
            "readOnly": false,
            "description": "A product UUID that can be used to identify the product",
            "type": "string",
            "example": "..."
          },
          "requireContentCategoryConnection": {
            "readOnly": false,
            "description": "If content category table connections are required in the database for a category to appear",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Defines a request for getting the details of a product"
      },
      "ProductDetailResponse": {
        "type": "object",
        "title": "ProductDetailResponse",
        "required": [
          "brandNew",
          "comingSoon",
          "preview",
          "productId"
        ],
        "properties": {
          "articleStatus": {
            "$ref": "#/components/schemas/ArticleStatus"
          },
          "brand": {
            "$ref": "#/components/schemas/Brand_response"
          },
          "brandNew": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "categories": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category_response"
            }
          },
          "comingSoon": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "longDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "media": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Media"
            }
          },
          "offers": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Offer"
            }
          },
          "preview": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "priceCampaigns": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceCampaign"
            }
          },
          "productId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ProductType"
          },
          "productUUID": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "providerData": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "publishDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "relations": {
            "$ref": "#/components/schemas/Relations"
          },
          "shortDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "stock": {
            "$ref": "#/components/schemas/Stock"
          },
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnit_response"
            }
          },
          "subscriptionTemplates": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionTemplate"
            }
          }
        },
        "description": "Holds information about a product detail response"
      },
      "ProductDimensions": {
        "type": "object",
        "title": "ProductDimensions",
        "properties": {
          "height": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "length": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "volume": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "weight": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "width": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          }
        },
        "description": ""
      },
      "ProductFeedRequest": {
        "type": "object",
        "title": "ProductFeedRequest",
        "required": [
          "countryId",
          "from",
          "includeAllVariants",
          "includeProperties",
          "includeRelatedArticles",
          "preview",
          "size"
        ],
        "properties": {
          "categoryUUID": {
            "readOnly": false,
            "description": "The category UUID used for filtering",
            "type": "string",
            "example": "..."
          },
          "countryId": {
            "readOnly": false,
            "description": "The country id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "defaultColorCategoryId": {
            "example": 1,
            "readOnly": false,
            "description": "The default color to be displayed on a product (customer Unique for Engelsons)",
            "type": "integer",
            "format": "int32"
          },
          "from": {
            "readOnly": false,
            "description": "Where to start getting products",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "includeAllVariants": {
            "readOnly": false,
            "description": "If a list is split by attribute1 this setting can be used to get all variants in the stock keeping unit list",
            "type": "boolean",
            "example": true
          },
          "includeProperties": {
            "readOnly": false,
            "description": "If the stockKeepingUnits should include properties data, false by default, can lead to large amounts of data.",
            "type": "boolean",
            "example": true
          },
          "includeRelatedArticles": {
            "readOnly": false,
            "description": "Whether related articles should be included",
            "type": "boolean",
            "example": true
          },
          "languageId": {
            "readOnly": false,
            "description": "The language id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "modifiedAfter": {
            "example": "2025-03-18T10:55:28.123Z",
            "readOnly": false,
            "description": "Date for pagination",
            "type": "string",
            "format": "date-time"
          },
          "preview": {
            "readOnly": false,
            "description": "Whether to include preview articles in the result",
            "type": "boolean",
            "example": true
          },
          "size": {
            "readOnly": false,
            "description": "How many products to get",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "splitByAttribute1": {
            "readOnly": false,
            "description": "If we should split the result by attribute1 or not, or empty if the server should auto-determine",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Defines a request for getting a list of products"
      },
      "ProductFeedResponse": {
        "type": "object",
        "title": "ProductFeedResponse",
        "required": [
          "total"
        ],
        "properties": {
          "aggregations": {
            "$ref": "#/components/schemas/Aggregations"
          },
          "products": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductForFeed"
            }
          },
          "total": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "ProductForFeed": {
        "type": "object",
        "title": "ProductForFeed",
        "required": [
          "attribute1Id",
          "attribute1IdToDisplay",
          "brandNew",
          "comingSoon",
          "preview",
          "productId"
        ],
        "properties": {
          "articleStatus": {
            "$ref": "#/components/schemas/ArticleStatus"
          },
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute1IdToDisplay": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brand": {
            "$ref": "#/components/schemas/BrandForFeed"
          },
          "brandNew": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "categories": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category_response"
            }
          },
          "categoryPaths": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "comingSoon": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "longDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "lowestPriceWithinPeriod": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "media": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Media"
            }
          },
          "offers": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Offer"
            }
          },
          "preview": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "priceCampaigns": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceCampaign"
            }
          },
          "productId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ProductType"
          },
          "productUUID": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "providerData": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "publishDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "relations": {
            "$ref": "#/components/schemas/Relations"
          },
          "shortDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "stock": {
            "$ref": "#/components/schemas/Stock"
          },
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitForFeed"
            }
          },
          "subscriptionTemplates": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionTemplate"
            }
          }
        },
        "description": ""
      },
      "ProductForList": {
        "type": "object",
        "title": "ProductForList",
        "required": [
          "attribute1Id",
          "attribute1IdToDisplay",
          "brandNew",
          "comingSoon",
          "preview",
          "productId"
        ],
        "properties": {
          "articleStatus": {
            "$ref": "#/components/schemas/ArticleStatus"
          },
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute1IdToDisplay": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brand": {
            "$ref": "#/components/schemas/Brand_response"
          },
          "brandNew": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "comingSoon": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "lowestPriceWithinPeriod": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "media": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Media"
            }
          },
          "offers": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Offer"
            }
          },
          "preview": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "priceCampaigns": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceCampaign"
            }
          },
          "productId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ProductType"
          },
          "productUUID": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "providerData": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "publishDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "shortDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "stock": {
            "$ref": "#/components/schemas/Stock"
          },
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnit_response"
            }
          },
          "subscriptionTemplates": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionTemplate"
            }
          }
        },
        "description": "Holds information about a product"
      },
      "ProductListRequest": {
        "type": "object",
        "title": "ProductListRequest",
        "required": [
          "countryId",
          "from",
          "includeAllVariants",
          "includeCustomerCategoryOffers",
          "includeProperties",
          "preview",
          "requireBalance",
          "requireBalancesForRelatedProducts",
          "requireMedia",
          "requireMediaForRelatedProducts",
          "requireStoreBalances",
          "serviceProviderConfigId",
          "size"
        ],
        "properties": {
          "aggregations": {
            "$ref": "#/components/schemas/Aggregations_request"
          },
          "categoryId": {
            "readOnly": false,
            "description": "The category id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categoryUUID": {
            "readOnly": false,
            "description": "The category UUID used for filtering",
            "type": "string",
            "example": "..."
          },
          "countryId": {
            "readOnly": false,
            "description": "The country id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerReducedPricePercentage": {
            "readOnly": false,
            "description": "Calculates a percentage price reduction in product list prices",
            "type": "number",
            "example": 12345
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "daysAsNew": {
            "readOnly": false,
            "description": "Specifies how many days \"new\" is defined as",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "filter": {
            "$ref": "#/components/schemas/Filter"
          },
          "from": {
            "readOnly": false,
            "description": "Where to start getting products",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "helloRetailData": {
            "$ref": "#/components/schemas/HelloRetailData"
          },
          "includeAllVariants": {
            "readOnly": false,
            "description": "If a list is split by attribute1 this setting can be used to get all variants in the stock keeping unit list",
            "type": "boolean",
            "example": true
          },
          "includeCustomerCategoryOffers": {
            "readOnly": false,
            "description": "If we should include customer category offers or not",
            "type": "boolean",
            "example": true
          },
          "includeProperties": {
            "readOnly": false,
            "description": "If the stockKeepingUnits should include properties data, false by default, can lead to large amounts of data.",
            "type": "boolean",
            "example": true
          },
          "languageId": {
            "readOnly": false,
            "description": "The language id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "mediaRowIds": {
            "readOnly": false,
            "description": "If provided, media must match one of the given row ids",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "preview": {
            "readOnly": false,
            "description": "Whether to include preview articles in the result",
            "type": "boolean",
            "example": true
          },
          "priceListIds": {
            "readOnly": false,
            "description": "The price list ids used for filtering",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "productNumbers": {
            "readOnly": false,
            "description": "If loading a list these product numbers can be used to identify the products",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "productSources": {
            "readOnly": false,
            "description": "Used to set what product sources should be used instead getting them via filters or product providers",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSource"
            }
          },
          "requireBalance": {
            "readOnly": false,
            "description": "If the product needs balances or not to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireBalancesForRelatedProducts": {
            "readOnly": false,
            "description": "If a related product requires balance to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireMedia": {
            "readOnly": false,
            "description": "If the product needs a media or not to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireMediaForRelatedProducts": {
            "readOnly": false,
            "description": "If a related product requires media to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireStoreBalances": {
            "readOnly": false,
            "description": "If the product requires store balance to be in the result",
            "type": "boolean",
            "example": true
          },
          "serviceProviderConfigId": {
            "readOnly": false,
            "description": "The id of the external service provider config, if any.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "size": {
            "readOnly": false,
            "description": "How many products to get",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sort": {
            "$ref": "#/components/schemas/Sort"
          },
          "splitByAttribute1": {
            "readOnly": false,
            "description": "If we should split the result by attribute1 or not, or empty if the server should auto-determine",
            "type": "boolean",
            "example": true
          },
          "stockKeepingUnitStatusExclusions": {
            "readOnly": false,
            "description": "What stock keeping unit statuses to exclude in the result",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitStatus"
            }
          }
        },
        "description": "Defines a request for getting a list of products"
      },
      "ProductListResponse": {
        "type": "object",
        "title": "ProductListResponse",
        "required": [
          "total"
        ],
        "properties": {
          "aggregations": {
            "$ref": "#/components/schemas/Aggregations"
          },
          "products": {
            "readOnly": false,
            "description": "The products",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductForList"
            }
          },
          "total": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds information about a product list response"
      },
      "ProductPriceUpdate": {
        "type": "object",
        "title": "ProductPriceUpdate",
        "properties": {
          "clearSalePrice": {
            "readOnly": false,
            "description": "\u003cp\u003eIf this boolean flag \u003cb\u003eis not\u003c/b\u003e set, the products sale price is set to salePrice and unit price is set to unitPrice (if present).\u003c/p\u003e\n\u003cp\u003eIf this boolean flag \u003cb\u003eis\u003c/b\u003e set, the products sale price is set to unitPrice - if present - or otherwise to the products unit price (which in turn is set to zero).\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with salePrice.",
            "type": "boolean"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "\u003cp\u003eThe country code (ISO 3166-1 alpha-2) of the product to update.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with currencyCode.\u003c/p\u003e",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The currency code (ISO 4217) of the product to update.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with countryCode.\u003c/p\u003e",
            "type": "string"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe European article number (EAN13) of the stock keeping unit to update price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId and stockKeepingUnitId.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e European article numbers in Viskan are no longer unique and is therefore not a reliable way of identifying stock keeping units with.\u003c/p\u003e",
            "type": "string"
          },
          "productId": {
            "readOnly": false,
            "description": "\u003cp\u003eThe internal identifier of the product (including variants) to update price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with stockKeepingUnitId and europeanArticleNumber.\u003c/p\u003e",
            "type": "integer",
            "format": "int32"
          },
          "salePrice": {
            "readOnly": false,
            "description": "\u003cp\u003eThe new sale price of the product.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with clearSalePrice.\u003c/p\u003e",
            "type": "number"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "\u003cp\u003eThe internal identifier of the stock keeping unit to update price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId and europeanArticleNumber.\u003c/p\u003e",
            "type": "integer",
            "format": "int32"
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The new unit price of the product.",
            "type": "number"
          }
        },
        "description": "Contains information about product-price update."
      },
      "ProductPriceUpdateOrAdd": {
        "type": "object",
        "title": "ProductPriceUpdateOrAdd",
        "properties": {
          "active": {
            "example": false,
            "readOnly": false,
            "description": "Enable or disable product pricing based on specified country, currency, or product identifier.",
            "type": "boolean"
          },
          "clearSalePrice": {
            "example": false,
            "readOnly": false,
            "description": "\u003cp\u003eIf this boolean flag \u003cb\u003eis not\u003c/b\u003e set, the products sale price is set to salePrice and unit price is set to unitPrice (if present).\u003c/p\u003e\n\u003cp\u003eIf this boolean flag \u003cb\u003eis\u003c/b\u003e set, the products sale price is set to unitPrice - if present - or otherwise to the products unit price (which in turn is set to zero).\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with salePrice. And it is only used when updating prices.\u003c/p\u003e",
            "type": "boolean"
          },
          "comparisonPrice": {
            "example": 420,
            "readOnly": false,
            "description": "Comparison product price (this is what we specify to other companies when selling the product). If not specified, the default value is 0",
            "type": "number"
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "\u003cp\u003eThe country code (ISO 3166-1 alpha-2) of the product to update or add.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with currencyCode.\u003c/p\u003e",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The currency code (ISO 4217) of the product to update or add.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with countryCode.\u003c/p\u003e",
            "type": "string"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe European article number (EAN13) of the stock keeping unit to update or add price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId, productNumber, priceLookupUnitNumber and stockKeepingUnitId.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e European article numbers in Viskan are no longer unique and is therefore not a reliable way of identifying stock keeping units with.\u003c/p\u003e",
            "type": "string"
          },
          "priceListId": {
            "example": 0,
            "readOnly": false,
            "description": "The internal identifier of the optional price list to add the price to.\nIf not specified, then the price will be added to the standard price list.",
            "type": "integer",
            "format": "int32"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit to update or add price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId, productNumber, stockKeepingUnitId and europeanArticleNumber.\u003c/p\u003e",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit to update or add price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId, productNumber, stockKeepingUnitId and europeanArticleNumber.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e priceLookupUnitNumber is not used due to incorrect field name.\u003c/p\u003e",
            "type": "string"
          },
          "priceTier": {
            "$ref": "#/components/schemas/PriceTier"
          },
          "productId": {
            "example": 24,
            "readOnly": false,
            "description": "\u003cp\u003eThe internal identifier of the product (including variants) to update or add price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productNumber, stockKeepingUnitId, priceLookupUnitNumber and europeanArticleNumber.\u003c/p\u003e",
            "type": "integer",
            "format": "int32"
          },
          "productNumber": {
            "example": "5149761",
            "readOnly": false,
            "description": "\u003cp\u003eThe public identifier of the product (including variants) to update or add price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId, stockKeepingUnitId, priceLookupUnitNumber and europeanArticleNumber.\u003c/p\u003e",
            "type": "string"
          },
          "recommendedPrice": {
            "example": 470,
            "readOnly": false,
            "description": "Recommended price from product supplier. If not specified, the default value is 0",
            "type": "number"
          },
          "salePrice": {
            "example": 399,
            "readOnly": false,
            "description": "\u003cp\u003eThe new sale price of the product.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with clearSalePrice.\u003c/p\u003e",
            "type": "number"
          },
          "stockKeepingUnitId": {
            "example": 513,
            "readOnly": false,
            "description": "\u003cp\u003eThe internal identifier of the stock keeping unit to update or add price for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with productId, productNumber, priceLookupUnitNumber and europeanArticleNumber.\u003c/p\u003e",
            "type": "integer",
            "format": "int32"
          },
          "unitPrice": {
            "example": 499,
            "readOnly": false,
            "description": "The new unit price of the product.",
            "type": "number"
          },
          "vatRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The vat rate of the product price.\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mandatory when adding new prices.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field can be updated if sending in changed vat on existing price. Demands that countryCode is specified\u003c/p\u003e",
            "type": "number"
          }
        },
        "description": "Contains information about product price to update or add."
      },
      "ProductResult": {
        "type": "object",
        "title": "ProductResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The products in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of products."
      },
      "ProductSearchRequest": {
        "type": "object",
        "title": "ProductSearchRequest",
        "required": [
          "countryId",
          "from",
          "includeAllVariants",
          "includeCustomerCategoryOffers",
          "includeProperties",
          "preview",
          "requireBalance",
          "requireBalancesForRelatedProducts",
          "requireMedia",
          "requireMediaForRelatedProducts",
          "requireStoreBalances",
          "serviceProviderConfigId",
          "size"
        ],
        "properties": {
          "aggregations": {
            "$ref": "#/components/schemas/Aggregations_request"
          },
          "categoryId": {
            "readOnly": false,
            "description": "The category id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "categoryUUID": {
            "readOnly": false,
            "description": "The category UUID used for filtering",
            "type": "string",
            "example": "..."
          },
          "countryId": {
            "readOnly": false,
            "description": "The country id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerReducedPricePercentage": {
            "readOnly": false,
            "description": "Calculates a percentage price reduction in product list prices",
            "type": "number",
            "example": 12345
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "daysAsNew": {
            "readOnly": false,
            "description": "Specifies how many days \"new\" is defined as",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "filter": {
            "$ref": "#/components/schemas/Filter"
          },
          "from": {
            "readOnly": false,
            "description": "Where to start getting products",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "helloRetailData": {
            "$ref": "#/components/schemas/HelloRetailData"
          },
          "includeAllVariants": {
            "readOnly": false,
            "description": "If a list is split by attribute1 this setting can be used to get all variants in the stock keeping unit list",
            "type": "boolean",
            "example": true
          },
          "includeCustomerCategoryOffers": {
            "readOnly": false,
            "description": "If we should include customer category offers or not",
            "type": "boolean",
            "example": true
          },
          "includeProperties": {
            "readOnly": false,
            "description": "If the stockKeepingUnits should include properties data, false by default, can lead to large amounts of data.",
            "type": "boolean",
            "example": true
          },
          "languageId": {
            "readOnly": false,
            "description": "The language id used for filtering",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "matchFields": {
            "readOnly": false,
            "description": "The fields to match with. Uses Elasticsearch multi_match.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "mediaRowIds": {
            "readOnly": false,
            "description": "If provided, media must match one of the given row ids",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "preview": {
            "readOnly": false,
            "description": "Whether to include preview articles in the result",
            "type": "boolean",
            "example": true
          },
          "priceListIds": {
            "readOnly": false,
            "description": "The price list ids used for filtering",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "productNumbers": {
            "readOnly": false,
            "description": "If loading a list these product numbers can be used to identify the products",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "productSources": {
            "readOnly": false,
            "description": "Used to set what product sources should be used instead getting them via filters or product providers",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductSource"
            }
          },
          "query": {
            "readOnly": false,
            "description": "The query to search",
            "type": "string",
            "example": "..."
          },
          "requireBalance": {
            "readOnly": false,
            "description": "If the product needs balances or not to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireBalancesForRelatedProducts": {
            "readOnly": false,
            "description": "If a related product requires balance to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireMedia": {
            "readOnly": false,
            "description": "If the product needs a media or not to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireMediaForRelatedProducts": {
            "readOnly": false,
            "description": "If a related product requires media to be in the result",
            "type": "boolean",
            "example": true
          },
          "requireStoreBalances": {
            "readOnly": false,
            "description": "If the product requires store balance to be in the result",
            "type": "boolean",
            "example": true
          },
          "searchFields": {
            "readOnly": false,
            "description": "The fields to search with. Uses Elasticsearch query_string.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "serviceProviderConfigId": {
            "readOnly": false,
            "description": "The id of the external service provider config, if any.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "size": {
            "readOnly": false,
            "description": "How many products to get",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sort": {
            "$ref": "#/components/schemas/Sort"
          },
          "splitByAttribute1": {
            "readOnly": false,
            "description": "If we should split the result by attribute1 or not, or empty if the server should auto-determine",
            "type": "boolean",
            "example": true
          },
          "stockKeepingUnitStatusExclusions": {
            "readOnly": false,
            "description": "What stock keeping unit statuses to exclude in the result",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitStatus"
            }
          }
        },
        "description": "Defines a request for searching for products"
      },
      "ProductSource": {
        "type": "object",
        "title": "ProductSource",
        "required": [
          "attribute1Id",
          "productId"
        ],
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "ProductToAddOrUpdate": {
        "type": "object",
        "title": "ProductToAddOrUpdate",
        "required": [
          "active",
          "defaultCategoryId",
          "enforceUniqueEuropeanArticleNumbers"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "Changes if the product is active.",
            "type": "boolean",
            "example": true
          },
          "articleStatus": {
            "$ref": "#/components/schemas/ArticleStatus_article"
          },
          "brandName": {
            "example": "Brand Name",
            "readOnly": false,
            "description": "Changes to brand name.",
            "type": "string"
          },
          "brandTag": {
            "example": "Brand Name",
            "readOnly": false,
            "description": "Changes to brand tag. Can be used to group brands on the site when filtering for example if you have two brands Viskan Shirts and Viskan Pants that you want to group under Viskan.",
            "type": "string"
          },
          "categoriesToReplaceExisting": {
            "readOnly": false,
            "description": "Contains the product categories to replace any existing ones. An empty list will remove all connections.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoriesToReplaceExisting"
            }
          },
          "defaultAttributes": {
            "$ref": "#/components/schemas/DefaultAttributes"
          },
          "defaultCategoryId": {
            "readOnly": false,
            "description": "The default category-id for the product.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "enforceUniqueEuropeanArticleNumbers": {
            "readOnly": false,
            "description": "Specifies if European Article Numbers should be considered unique.",
            "type": "boolean",
            "example": true
          },
          "mediasToConnect": {
            "readOnly": false,
            "description": "Contains medias to connect to product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaToConnect"
            }
          },
          "productName": {
            "example": "Product Name",
            "readOnly": false,
            "description": "Changes to product name.",
            "type": "string"
          },
          "productNumber": {
            "example": "123PRODUCT",
            "readOnly": false,
            "description": "The identifier of the product. This is mandatory.",
            "type": "string"
          },
          "productType": {
            "$ref": "#/components/schemas/ArticleType"
          },
          "propertiesToAddOrUpdate": {
            "readOnly": false,
            "description": "Contains properties to add to the product, mutually exclusive with \u003ccode\u003epropertiesToReplace\u003c/code\u003e.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyToAddOrUpdate"
            }
          },
          "propertiesToReplace": {
            "readOnly": false,
            "description": "Contains changes to apply for product properties. This will replace any existing connections. An empty list will remove all connections. Mutually exclusive with \u003ccode\u003epropertiesToAddOrUpdate\u003c/code\u003e.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyToReplace"
            }
          },
          "publishDate": {
            "example": "2024-06-01",
            "readOnly": false,
            "description": "Changes to the publish date for the product. If the article status is \u003ccode\u003eNOT_YET_FOR_SALE\u003c/code\u003e and this date is in the future, the product is considered \"coming soon\".",
            "type": "string",
            "format": "date"
          },
          "stockKeepingUnitsToAddOrUpdate": {
            "readOnly": false,
            "description": "Contains changes to apply for product variants.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitToAddOrUpdate"
            }
          },
          "taxCode": {
            "example": "T1",
            "readOnly": false,
            "description": "The tax code relevant to the product (VAT). Send empty string (i.e. \"\") to remove tax code from the article.",
            "type": "string"
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "Changes to translations.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationToAddOrUpdate"
            }
          }
        },
        "description": "Contains changes that applies to a product."
      },
      "ProductTranslation": {
        "type": "object",
        "title": "ProductTranslation",
        "properties": {
          "brandName": {
            "example": "Nike",
            "readOnly": false,
            "description": "The translated brand name of the product.",
            "type": "string"
          },
          "brandTag": {
            "example": "Sportswear",
            "readOnly": false,
            "description": "The translated brand tag of the product used for aggregations in the estore product API",
            "type": "string"
          },
          "keywords": {
            "example": "yellow, shirt, cotton",
            "readOnly": false,
            "description": "A list of translated keywords for the product.",
            "type": "string"
          },
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "The link friendly name used in URLs.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e linkFriendlyName is not used due to incorrect field name. Replaced by path.\u003c/p\u003e",
            "type": "string"
          },
          "longDescription": {
            "example": "This is a high quality yellow shirt made from 100% cotton. It is very comfortable to wear and looks great.",
            "readOnly": false,
            "description": "The translated long description of the product.",
            "type": "string"
          },
          "metaDescription": {
            "example": "Buy high quality yellow shirt made from 100% cotton. Comfortable to wear and looks great.",
            "readOnly": false,
            "description": "The translated meta description of the product.",
            "type": "string"
          },
          "metaTitle": {
            "example": "Yellow shirt - High quality yellow shirt",
            "readOnly": false,
            "description": "The translated meta title of the product.",
            "type": "string"
          },
          "path": {
            "example": "yellow-shirt",
            "readOnly": false,
            "description": "The link friendly name used in URLs.",
            "type": "string"
          },
          "productName": {
            "example": "Yellow shirt",
            "readOnly": false,
            "description": "The translated name of the product.",
            "type": "string"
          },
          "shortDescription": {
            "example": "High quality yellow shirt.",
            "readOnly": false,
            "description": "The translated short description of the product.",
            "type": "string"
          }
        },
        "description": "Defines a translation of a product in a specific language."
      },
      "ProductType": {
        "type": "string",
        "title": "ProductType",
        "enum": [
          "NORMAL",
          "VOUCHER",
          "SUBSCRIPTION_MAIN_PRODUCT",
          "MIX_MATCH",
          "LOOKBOOK",
          "FLEXIBLE_PACKAGES",
          "COPY_PRODUCT",
          "STATIC_PACKAGE",
          "MULTI_PACKAGE"
        ],
        "description": ""
      },
      "ProductsToAdd": {
        "type": "object",
        "title": "ProductsToAdd",
        "required": [
          "priority",
          "quantity"
        ],
        "properties": {
          "priceLookupUnitNumber": {
            "example": "10036-392",
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of new unit.",
            "type": "string"
          },
          "priority": {
            "example": 202318,
            "readOnly": false,
            "description": "Specifies which priority to add the product to.",
            "type": "integer",
            "format": "int32"
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "Quantity to add.",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "example": 513,
            "readOnly": false,
            "description": "The internal identifier of the new unit.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Contains products to add to the subscription."
      },
      "PropertiesToConnect": {
        "type": "object",
        "title": "PropertiesToConnect",
        "properties": {
          "propertiesToConnect": {
            "readOnly": false,
            "description": "The properties to connect to the given customer.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyToConnect"
            }
          }
        },
        "description": "Contains a list of properties to connect or add/update translations for."
      },
      "PropertiesToDelete": {
        "type": "object",
        "title": "PropertiesToDelete",
        "properties": {
          "propertiesToDelete": {
            "readOnly": false,
            "description": "The properties to delete.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyToDelete"
            }
          }
        },
        "description": "Contains a list of properties to delete."
      },
      "Property": {
        "type": "object",
        "title": "Property",
        "properties": {
          "buckets": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyBucket"
            }
          },
          "keyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "Property_PropertyHit": {
        "type": "object",
        "title": "Property",
        "properties": {
          "presentation": {
            "readOnly": false,
            "description": "The presentation type of the key used",
            "type": "string",
            "example": "..."
          },
          "propertyKeyName": {
            "readOnly": false,
            "description": "The name of the property",
            "type": "string",
            "example": "..."
          },
          "translations": {
            "readOnly": false,
            "description": "The translations for the property key",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationKey"
            }
          },
          "values": {
            "readOnly": false,
            "description": "The property values and their translations",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValue"
            }
          }
        },
        "description": "Property information."
      },
      "Property_v2": {
        "type": "object",
        "title": "Property",
        "required": [
          "keyId"
        ],
        "properties": {
          "internalKeyName": {
            "readOnly": false,
            "description": "The internal name of the property",
            "type": "string",
            "example": "..."
          },
          "keyGroup": {
            "readOnly": false,
            "description": "The keygroup of the property",
            "type": "string",
            "example": "..."
          },
          "keyId": {
            "readOnly": false,
            "description": "The id of the property",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "keyName": {
            "readOnly": false,
            "description": "The translated name of the property",
            "type": "string",
            "example": "..."
          },
          "values": {
            "readOnly": false,
            "description": "The values connected to the given property",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Value"
            }
          }
        },
        "description": "Represents a customer property."
      },
      "Property_response": {
        "type": "object",
        "title": "Property",
        "required": [
          "usedForFilter"
        ],
        "properties": {
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "group": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "internalKeyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "keyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "usedForFilter": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "values": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValue_response"
            }
          }
        },
        "description": ""
      },
      "Property_Product": {
        "type": "object",
        "title": "Property",
        "properties": {
          "propertyKeyName": {
            "example": "CountryOfOrigin",
            "readOnly": false,
            "description": "The key name for this property.",
            "type": "string"
          },
          "propertyValues": {
            "readOnly": false,
            "description": "The values of this property.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValue_Product"
            }
          },
          "translations": {
            "readOnly": false,
            "description": "Optional. Contains translated names for the key of the property. This will REPLACE any existing translation key names.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyKeyNameTranslation"
            }
          }
        },
        "description": "Defines a property of a stock keeping unit."
      },
      "PropertyBucket": {
        "type": "object",
        "title": "PropertyBucket",
        "required": [
          "count"
        ],
        "properties": {
          "count": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "item": {
            "$ref": "#/components/schemas/PropertyBucketItem"
          }
        },
        "description": ""
      },
      "PropertyBucketItem": {
        "type": "object",
        "title": "PropertyBucketItem",
        "required": [
          "valueId"
        ],
        "properties": {
          "tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "valueId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "valueName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "PropertyFilter": {
        "type": "object",
        "title": "PropertyFilter",
        "properties": {
          "keyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "valueIds": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          }
        },
        "description": ""
      },
      "PropertyForFeed": {
        "type": "object",
        "title": "PropertyForFeed",
        "required": [
          "usedForFilter"
        ],
        "properties": {
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "group": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "internalKeyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "keyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "usedForFilter": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "values": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValueForFeed"
            }
          }
        },
        "description": ""
      },
      "PropertyHit": {
        "type": "object",
        "title": "PropertyHit",
        "required": [
          "customerId"
        ],
        "properties": {
          "customerId": {
            "example": 581,
            "readOnly": false,
            "description": "The internal identifier of the property.",
            "type": "integer",
            "format": "int32"
          },
          "customerNumber": {
            "example": "45874587",
            "readOnly": false,
            "description": "The external identifier of the customer.",
            "type": "string"
          },
          "properties": {
            "readOnly": false,
            "description": "The internal identifier of the property.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_PropertyHit"
            }
          }
        },
        "description": "Property hit information."
      },
      "PropertyKey": {
        "type": "object",
        "title": "PropertyKey",
        "properties": {
          "presentation": {
            "readOnly": false,
            "description": "The presentation of the property key. This needs to be specified when adding new properties!\nThe available presentations are:\n\u003cul\u003e\n\u003cli\u003etext - regular string values\u003c/li\u003e\n\u003cli\u003ecombobox - fixed set of values that should be selectable in a list\u003c/li\u003e\n\u003cli\u003echeckbox - boolean valued\u003c/li\u003e\n\u003cli\u003einteger - numeric integer values\u003c/li\u003e\n\u003cli\u003efloat - numeric decimal values\u003c/li\u003e\n\u003cli\u003ehtml - html text\u003c/li\u003e\n\u003c/ul\u003e",
            "type": "string",
            "example": "..."
          },
          "propertyKeyName": {
            "readOnly": false,
            "description": "The internal name of the property key",
            "type": "string",
            "example": "..."
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "The translations for the key",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationKey_PropertyKey"
            }
          }
        },
        "description": "The key of the property"
      },
      "PropertyKeyNameTranslation": {
        "type": "object",
        "title": "PropertyKeyNameTranslation",
        "properties": {
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "propertyKeyName": {
            "example": "Läder",
            "readOnly": false,
            "description": "The translated name of the property key.",
            "type": "string"
          },
          "propertyKeyNameDescription": {
            "example": "Läder av högsta kvalitet",
            "readOnly": false,
            "description": "The optional translated description of the property key.",
            "type": "string"
          }
        },
        "description": "Contains changes that applies to a property translation."
      },
      "PropertyResult": {
        "type": "object",
        "title": "PropertyResult",
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyHit"
            }
          }
        },
        "description": "Documentation Property API result class"
      },
      "PropertyTagFilter": {
        "type": "object",
        "title": "PropertyTagFilter",
        "properties": {
          "keyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "valueTags": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          }
        },
        "description": ""
      },
      "PropertyToAddOrUpdate": {
        "type": "object",
        "title": "PropertyToAddOrUpdate",
        "required": [
          "replaceValues"
        ],
        "properties": {
          "propertyKeyName": {
            "example": "Material",
            "readOnly": false,
            "description": "The property key of the property.",
            "type": "string"
          },
          "propertyValue": {
            "example": "Leather",
            "readOnly": false,
            "description": "",
            "type": "string"
          },
          "replaceValues": {
            "readOnly": false,
            "description": "Whether or not the given set of values should replace the existing set of values. This defaults to \u003ccode\u003efalse\u003c/code\u003e, but will change to \u003ccode\u003etrue\u003c/code\u003e in the future,\nand the flag will be removed completely. The idea is to always pass in the current set of values for each property key.\n\n\u003cb\u003eNote:\u003c/b\u003e Set this to \u003ccode\u003etrue\u003c/code\u003e as soon as possible to avoid issues when we remove change this behavior in the future.",
            "type": "boolean",
            "example": true
          },
          "translations": {
            "readOnly": false,
            "description": "Optional translations to add or update for the property key. \u003cb\u003eNote\u003c/b\u003e that if you use the old deprecated \u003ccode\u003epropertyValue\u003c/code\u003e field, this list of translations is actually for that value, and is not documented properly here.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyKeyNameTranslation"
            }
          },
          "values": {
            "readOnly": false,
            "description": "Contains the values to be used for the key. This will not replace any existing values. Mutually exclusive with \u003ccode\u003epropertyValue\u003c/code\u003e.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValue_PropertyToReplace"
            }
          }
        },
        "description": "Contains changes that applies to a product property."
      },
      "PropertyToConnect": {
        "type": "object",
        "title": "PropertyToConnect",
        "properties": {
          "customerId": {
            "example": "123",
            "readOnly": false,
            "description": "The customer id of the customer we want to control the property of.",
            "type": "string"
          },
          "key": {
            "$ref": "#/components/schemas/PropertyKey"
          },
          "values": {
            "readOnly": false,
            "description": "Get the property value",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValue_PropertyToConnect"
            }
          }
        },
        "description": "A property to connect to the customer (and/or add/update translations for)"
      },
      "PropertyToDelete": {
        "type": "object",
        "title": "PropertyToDelete",
        "properties": {
          "customerId": {
            "example": "100011",
            "readOnly": false,
            "description": "The customer id of the customer having the property we want to delete.",
            "type": "string"
          },
          "propertyKeyName": {
            "readOnly": false,
            "description": "The key of the property to delete.",
            "type": "string",
            "example": "..."
          },
          "values": {
            "readOnly": false,
            "description": "The values to be deleted.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValueToDelete"
            }
          }
        },
        "description": "Contains a property to delete"
      },
      "PropertyToReplace": {
        "type": "object",
        "title": "PropertyToReplace",
        "properties": {
          "propertyKeyName": {
            "example": "Material",
            "readOnly": false,
            "description": "The property key of the property.",
            "type": "string"
          },
          "translations": {
            "readOnly": false,
            "description": "Optional translations to add or update for the property key.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyKeyNameTranslation"
            }
          },
          "values": {
            "readOnly": false,
            "description": "Contains the values to be used for the key. This will \u003cb\u003ereplace\u003c/b\u003e all the existing values.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValue_PropertyToReplace"
            }
          }
        },
        "description": "Contains changes that applies to a product property."
      },
      "PropertyValue_response": {
        "type": "object",
        "title": "PropertyValue",
        "required": [
          "valueId"
        ],
        "properties": {
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "internalValueName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "valueId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "valueName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "PropertyValue": {
        "type": "object",
        "title": "PropertyValue",
        "properties": {
          "mediaURL": {
            "readOnly": false,
            "description": "An url to some image to be associated with this property",
            "type": "string",
            "example": "..."
          },
          "propertyValue": {
            "readOnly": false,
            "description": "The value of the property",
            "type": "string",
            "example": "..."
          },
          "translations": {
            "readOnly": false,
            "description": "The translations for the property value",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationValue"
            }
          }
        },
        "description": "The property value"
      },
      "PropertyValue_PropertyToConnect": {
        "type": "object",
        "title": "PropertyValue",
        "properties": {
          "mediaURL": {
            "readOnly": false,
            "description": "The media url to be associated with this value",
            "type": "string",
            "example": "..."
          },
          "propertyValue": {
            "readOnly": false,
            "description": "The value of the property",
            "type": "string",
            "example": "..."
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "The translations for the property value",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationValue_PropertyValue"
            }
          }
        },
        "description": "The value of the property"
      },
      "PropertyValue_PropertyToReplace": {
        "type": "object",
        "title": "PropertyValue",
        "properties": {
          "aggregationSort": {
            "example": "5",
            "readOnly": false,
            "description": "Optional. The sort order of the property value, used to control the order of filter aggregations in the product API. For example, to ensure sizes appear as S, M, L, XL rather than alphabetically.",
            "type": "string"
          },
          "propertyValue": {
            "example": "Leather",
            "readOnly": false,
            "description": "The property value of the property.",
            "type": "string"
          },
          "sort": {
            "example": "1",
            "readOnly": false,
            "description": "Optional. The sort order of the property on the product.",
            "type": "string"
          },
          "tag": {
            "example": "L",
            "readOnly": false,
            "description": "Optional. The tag of the property value, can be used to group property values in estore productAPI.",
            "type": "string"
          },
          "translations": {
            "readOnly": false,
            "description": "Optional translations to add or update for the property value.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValueTranslation"
            }
          }
        },
        "description": "Contains changes that applies to a product properties value and translation."
      },
      "PropertyValue_Product": {
        "type": "object",
        "title": "PropertyValue",
        "properties": {
          "propertyValue": {
            "example": "SWE",
            "readOnly": false,
            "description": "The value of this property.",
            "type": "string"
          },
          "translations": {
            "readOnly": false,
            "description": "The translations for this property value",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyValueTranslation"
            }
          }
        },
        "description": "Defines a property value of a property."
      },
      "PropertyValueForFeed": {
        "type": "object",
        "title": "PropertyValueForFeed",
        "required": [
          "valueId"
        ],
        "properties": {
          "description": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "internalValueName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tag": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "tagTranslation": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "valueId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "valueName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": ""
      },
      "PropertyValueTranslation": {
        "type": "object",
        "title": "PropertyValueTranslation",
        "properties": {
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "propertyValue": {
            "example": "95% Läder, 5% Polyester",
            "readOnly": false,
            "description": "The translated name of the property value.",
            "type": "string"
          },
          "propertyValueDescription": {
            "example": "Läder av högsta kvalitet",
            "readOnly": false,
            "description": "The optional translated description of the property value.",
            "type": "string"
          },
          "tag": {
            "example": "Läder",
            "readOnly": false,
            "description": "The optional tag that can be used to group properties in estore productAPI.",
            "type": "string"
          }
        },
        "description": "Contains changes that applies to a product property translation."
      },
      "PurchaseOrder": {
        "type": "object",
        "title": "PurchaseOrder",
        "required": [
          "purchaseOrderId"
        ],
        "properties": {
          "agreedDeliveryDate": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "The agreed delivery date of the purchase orders.",
            "type": "string",
            "format": "date-time"
          },
          "desiredDeliveryDate": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "The desired delivery date of the purchase orders.",
            "type": "string",
            "format": "date-time"
          },
          "orderDate": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "The order date of the purchase orders.",
            "type": "string",
            "format": "date-time"
          },
          "plannedArrivalDate": {
            "example": "2023-10-12T14:36:43.412+01:00",
            "readOnly": false,
            "description": "The planned arrival date of the purchase orders.",
            "type": "string",
            "format": "date-time"
          },
          "purchaseOrderId": {
            "readOnly": false,
            "description": "The internal identifier of the purchase order.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "purchaseOrderNumber": {
            "readOnly": false,
            "description": "The external number of the purchase order.",
            "type": "string",
            "example": "..."
          },
          "rows": {
            "readOnly": false,
            "description": "The goods that has been ordered by the supplier.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderRow"
            }
          },
          "status": {
            "$ref": "#/components/schemas/PurchaseOrderStatus"
          },
          "supplier": {
            "$ref": "#/components/schemas/Supplier"
          },
          "warehouse": {
            "$ref": "#/components/schemas/Warehouse"
          }
        },
        "description": "A purchase order is an order against a supplier to fill up stock balances."
      },
      "PurchaseOrderChanges": {
        "type": "object",
        "title": "PurchaseOrderChanges",
        "required": [
          "receiveComplete"
        ],
        "properties": {
          "receiveComplete": {
            "readOnly": false,
            "description": "Whether or not to report the purchase order, marking it as received.",
            "type": "boolean",
            "example": true
          },
          "receivedGoods": {
            "readOnly": false,
            "description": "Contains goods to mark as received.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderRowReceivedGoods"
            }
          }
        },
        "description": "Contains changes that applies to a return."
      },
      "PurchaseOrderResult": {
        "type": "object",
        "title": "PurchaseOrderResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The purchase orders in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrder"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of purchase orders."
      },
      "PurchaseOrderRow": {
        "type": "object",
        "title": "PurchaseOrderRow",
        "required": [
          "quantity",
          "quantityDelivered",
          "rowId",
          "stockKeepingUnitId"
        ],
        "properties": {
          "customFields": {
            "readOnly": false,
            "description": "Any custom data associated with this row, e.g. kolli-id",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField_PurchaseOrderAPI"
            }
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity ordered from the supplier.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantityDelivered": {
            "readOnly": false,
            "description": "The quantity that has already been delivered by the supplier.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row within the order.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "status": {
            "$ref": "#/components/schemas/PurchaseOrderStatus"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "unitPriceExcludingTax": {
            "readOnly": false,
            "description": "The unit price excluding tax for the stock keeping unit.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "A single row of a purchase order."
      },
      "PurchaseOrderRowReceivedGoods": {
        "type": "object",
        "title": "PurchaseOrderRowReceivedGoods",
        "required": [
          "stockKeepingUnitId"
        ],
        "properties": {
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe European article number (EAN13) of the stock keeping unit to mark as received.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with stockKeepingUnitId and priceLookupUnitNumber, or they must refer to the same stock keeping unit.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e European article numbers in Viskan are no longer unique and is therefore not a reliable way of identifying stock keeping units with.\u003c/p\u003e",
            "type": "string"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit to mark as received.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with stockKeepingUnitId and europeanArticleNumber, or they must refer to the same stock keeping unit.\u003c/p\u003e",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit to mark as received.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with stockKeepingUnitId and europeanArticleNumber, or they must refer to the same stock keeping unit.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e priceLookupUnitNumber is not used due to incorrect field name.\u003c/p\u003e",
            "type": "string"
          },
          "quantityReceived": {
            "readOnly": false,
            "description": "Quantity to mark as received. The total quantity marked (in one or multiple calls) cannot be larger than the registered quantity on the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "\u003cp\u003eThe internal identifier of the stock keeping unit to mark as received.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with priceLookupUnitNumber and europeanArticleNumber, or they must refer to the same stock keeping unit.\u003c/p\u003e",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains goods that should be marked as received."
      },
      "PurchaseOrderStatus": {
        "type": "string",
        "title": "PurchaseOrderStatus",
        "enum": [
          "PLANNED",
          "CREATED",
          "PART_DELIVERED",
          "DELIVERED",
          "CANCELED"
        ],
        "description": "The status of a purchase order."
      },
      "PurchaseResultAction": {
        "type": "string",
        "title": "PurchaseResultAction",
        "enum": [
          "NONE",
          "REDIRECT",
          "SUBMIT",
          "PROVIDER_UNIQUE_ACTION"
        ],
        "description": "Defines various purchase result actions."
      },
      "QueryServiceRequest": {
        "type": "object",
        "title": "QueryRequest",
        "required": [
          "fetchAll"
        ],
        "properties": {
          "fetchAll": {
            "readOnly": false,
            "description": "Indicates to the query framework that we want to retrieve every search result in the data mapping. No matter any sizing the template. Used when\nbulk fetching",
            "type": "boolean",
            "example": true
          },
          "params": {
            "readOnly": false,
            "description": "The parameters to pass along to the search templates/script.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "scriptName": {
            "readOnly": false,
            "description": "Name of processing script",
            "type": "string",
            "example": "..."
          },
          "scriptPostFunction": {
            "readOnly": false,
            "description": "Name of post function to execute post query",
            "type": "string",
            "example": "..."
          },
          "scriptPreFunction": {
            "readOnly": false,
            "description": "Name of pre function to execute pre query",
            "type": "string",
            "example": "..."
          },
          "scriptProcessFunction": {
            "readOnly": false,
            "description": "Name of function to process instead of query. Is mutual exclusive to #getTemplate()",
            "type": "string",
            "example": "..."
          },
          "template": {
            "readOnly": false,
            "description": "The search template to use when querying for data.",
            "type": "string",
            "example": "..."
          },
          "type": {
            "readOnly": false,
            "description": "The type of the dynamic data to get, for example \u0027ArticleAttribute1List\u0027.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information required to perform a dynamic data query to ETM."
      },
      "QueryServiceResultPayload": {
        "type": "object",
        "title": "QueryResponse",
        "required": [
          "total"
        ],
        "properties": {
          "aggregations": {
            "readOnly": false,
            "description": "The resulting aggregations in this payload.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "hits": {
            "readOnly": false,
            "description": "The actual hits in this payload.",
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "example": [
              {
                "property1": {},
                "property2": {}
              },
              {
                "property1": {},
                "property2": {}
              }
            ]
          },
          "total": {
            "readOnly": false,
            "description": "The total number of hits in this payload.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains the result of a dynamic query."
      },
      "RawPurchaseFlexibleSubscription": {
        "type": "object",
        "title": "RawPurchaseFlexibleSubscription",
        "required": [
          "createInitialOrderDirectly",
          "interval"
        ],
        "properties": {
          "createInitialOrderDirectly": {
            "readOnly": false,
            "description": "Whether an initial order creation is needed or not. If set any authorization or sale transactions to be used with the orders should be marked with forOrder",
            "type": "boolean",
            "example": true
          },
          "interval": {
            "readOnly": false,
            "description": "Interval of the subscription - how often products should be delivered in days.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rows": {
            "readOnly": false,
            "description": "Rows of the subscription - contain all products the subscription should include.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RawPurchaseFlexibleSubscriptionRow"
            }
          }
        },
        "description": "Raw purchase row for creating flexible subscriptions from a template."
      },
      "RawPurchaseFlexibleSubscriptionRow": {
        "type": "object",
        "title": "RawPurchaseFlexibleSubscriptionRow",
        "required": [
          "quantity",
          "stockKeepingUnitId"
        ],
        "properties": {
          "discounts": {
            "readOnly": false,
            "description": "Discounts that are to be applied to this row.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RawPurchaseSubscriptionDiscount"
            }
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The Price Look Up number of the stock keeping unit for this row. Mutually exclusive with stock keeping unit ID.",
            "type": "string",
            "example": "..."
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "The quantity of the row.",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit for this row. Mutually exclusive with Price Look Up number.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The tax rate of the row. The value should be between zero and one, meaning that it can be multiplied with in order to get the total amount of value added\ntax.\n\u003cp\u003e\nIf no taxRate is sent in, the rate specified in the product register will be used.",
            "type": "number"
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The price of one individual unit. Deprecated in favor of unitPriceIncludingTax",
            "type": "number"
          },
          "unitPriceExcludingTax": {
            "readOnly": false,
            "description": "The unit price excluding tax of one individual unit.",
            "type": "number",
            "example": 12345
          },
          "unitPriceIncludingTax": {
            "readOnly": false,
            "description": "The unit price including tax of one individual unit.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "A row of a raw purchase will result in a flexible subscription row. It has a stock keeping unit with the given quantity. Price information and\npotential discount is also provided."
      },
      "RawPurchaseOrderRow": {
        "type": "object",
        "title": "RawPurchaseOrderRow",
        "required": [
          "quantity",
          "stockKeepingUnitId"
        ],
        "properties": {
          "discount": {
            "readOnly": false,
            "description": "The total discount of the row. This value is \u003cb\u003enot\u003c/b\u003e per quantity. Deprecated in favor of \u003ccode\u003ediscountIncludingTax\u003c/code\u003e.\nHaving both values will cause the deprecated one to be overridden.",
            "type": "number"
          },
          "discountExcludingTax": {
            "readOnly": false,
            "description": "The total discount excluding tax of the row. This value is \u003cb\u003enot\u003c/b\u003e per quantity.",
            "type": "number",
            "example": 12345
          },
          "discountIncludingTax": {
            "readOnly": false,
            "description": "The total discount including tax of the row. This value is \u003cb\u003enot\u003c/b\u003e per quantity.",
            "type": "number",
            "example": 12345
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The Price Look Up number of the stock keeping unit for this row. Mutually exclusive with stock keeping unit ID.",
            "type": "string",
            "example": "..."
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "The quantity of the row.",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit for this row. Mutually exclusive with Price Look Up number.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The tax rate of the row. The value should be between zero and one, meaning that it can be multiplied with in order to get the total amount of value added\ntax.\n\u003cp\u003e\nIf no taxRate is sent in, the rate specified in the product register will be used.",
            "type": "number"
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The price of one individual unit. Deprecated in favor of unitPriceIncludingTax",
            "type": "number"
          },
          "unitPriceExcludingTax": {
            "readOnly": false,
            "description": "The unit price excluding tax of one individual unit.",
            "type": "number",
            "example": 12345
          },
          "unitPriceIncludingTax": {
            "readOnly": false,
            "description": "The unit price including tax of one individual unit.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "A row of a raw purchase will result in a regular order row. It has a stock keeping unit with the given quantity. Price information and potential\ndiscount is also provided."
      },
      "RawPurchasePaymentReference": {
        "type": "object",
        "title": "RawPurchasePaymentReference",
        "required": [
          "forOrder",
          "forSubscription"
        ],
        "properties": {
          "amount": {
            "readOnly": false,
            "description": "The amount of the reference. Optional for transaction type REFERENCE.",
            "type": "number",
            "example": 12345
          },
          "externalReference": {
            "readOnly": false,
            "description": "The external reference. May be used differently for different payment methods. Needs to be used if references should be grouped.\n\u003cp\u003e\nNOTE: For \u003cb\u003eAdyen\u003c/b\u003e recurring transactions it must contain shopperReference (original purchase number).",
            "type": "string",
            "example": "..."
          },
          "forOrder": {
            "readOnly": false,
            "description": "Whether this transaction is for order. True by default. Should be true for the AUTHORIZATION/SALE transaction of a subscription if\ncreateInitialOrderDirectly is used.",
            "type": "boolean",
            "example": true
          },
          "forSubscription": {
            "readOnly": false,
            "description": "Whether this transaction is for subscription. False by default. Should be true if the payment reference is used to create orders for the\nsubscription. Should be set to true when setting transactionType to REFERENCE for the .",
            "type": "boolean",
            "example": true
          },
          "parentReference": {
            "readOnly": false,
            "description": "The parent reference. Should be used if the transaction is related to another transaction. For example when doing an initial charge of\nsubscription payment agreement, the parent reference of the AUTHORIZATION should be the reference of the recurring transaction with transaction\ntype REFERENCE.",
            "type": "string",
            "example": "..."
          },
          "paymentMethodCode": {
            "readOnly": false,
            "description": "The payment method for the reference. If this is not specified, the reference will fallback to the purchase payment method.",
            "type": "string",
            "example": "..."
          },
          "paymentMethodType": {
            "readOnly": false,
            "description": "The payment method type.\n\u003cp\u003e\nNOTE: For \u003cb\u003eAdyen\u003c/b\u003e recurring transactions it must contain payment method type (i.e. paypal, ideal, klarna_pay_now).",
            "type": "string",
            "example": "..."
          },
          "reference": {
            "readOnly": false,
            "description": "The payment reference.",
            "type": "string",
            "example": "..."
          },
          "transactionType": {
            "$ref": "#/components/schemas/TransactionType"
          }
        },
        "description": "Represents a transaction of a payment."
      },
      "RawPurchaseRequest": {
        "type": "object",
        "title": "RawPurchaseRequest",
        "properties": {
          "additionalOrderText": {
            "readOnly": false,
            "description": "The Additional order text on the purchase.",
            "type": "string",
            "example": "..."
          },
          "address": {
            "$ref": "#/components/schemas/Address_address"
          },
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "The alternative email address of the customer.",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "readOnly": false,
            "description": "The cellphone number of the customer.",
            "type": "string",
            "example": "..."
          },
          "charge": {
            "readOnly": false,
            "description": "The charge of the purchase. Deprecated in favor of \u003ccode\u003eserviceFeeIncludingTax\u003c/code\u003e. Having both values will cause the deprecated one to be overridden.",
            "type": "number"
          },
          "companyName": {
            "readOnly": false,
            "description": "The company name of the customer. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e, \u003ccode\u003elastName\u003c/code\u003e and \u003ccode\u003esocialSecurityNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "customFields": {
            "readOnly": false,
            "description": "Custom fields.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            }
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The customer number.",
            "type": "string",
            "example": "..."
          },
          "dateOfBirth": {
            "readOnly": false,
            "description": "Date of birth of the customer.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "deliveryMethodCode": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003edeliveryMethodName\u003c/code\u003e",
            "type": "string"
          },
          "deliveryMethodName": {
            "readOnly": false,
            "description": "The name of the payment method.",
            "type": "string",
            "example": "..."
          },
          "deliveryPointCode": {
            "readOnly": false,
            "description": "The code of the optional delivery point.",
            "type": "string",
            "example": "..."
          },
          "discount": {
            "readOnly": false,
            "description": "The head-level discount of the purchase. Not to be confused with row-level discount.",
            "type": "number",
            "example": 12345
          },
          "email": {
            "readOnly": false,
            "description": "The email address of the customer.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer. Mutually exclusive with \u0027companyName\u0027.",
            "type": "string",
            "example": "..."
          },
          "flexibleSubscriptions": {
            "readOnly": false,
            "description": "The flexible subscriptions of this purchase.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RawPurchaseFlexibleSubscription"
            }
          },
          "gender": {
            "$ref": "#/components/schemas/Sex"
          },
          "googleAnalyticsId": {
            "readOnly": false,
            "description": "Google Analytics Client Id. This Id is used to track anonymous users and their actions. Purchase data will be pushed to google analytics with\nthis id.",
            "type": "string",
            "example": "..."
          },
          "integrities": {
            "example": "EMAIL_INFO",
            "readOnly": false,
            "description": "The list of integrities that the customer consents or opts in to.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "integritiesMap": {
            "readOnly": false,
            "description": "The map of integrities that the customer opts out or opts in to.",
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "example": {
              "EMAIL_INFO": true,
              "SMS_INFO": false
            }
          },
          "landline": {
            "readOnly": false,
            "description": "The landline phone number of the customer.",
            "type": "string",
            "example": "..."
          },
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer. Mutually exclusive with \u0027companyName\u0027.",
            "type": "string",
            "example": "..."
          },
          "marketingCampaignCode": {
            "readOnly": false,
            "description": "The code of the marketing campaign.",
            "type": "string",
            "example": "..."
          },
          "methodOfArrivalNumber": {
            "readOnly": false,
            "description": "The number of the method of arrival (or \"channel\").",
            "type": "string",
            "example": "..."
          },
          "nextDeliveryDate": {
            "readOnly": false,
            "description": "For orders: earliest delivery date. For subscriptions: suggested next delivery date. Defaulted to today\u0027s date.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "notes": {
            "readOnly": false,
            "description": "A free text that will be stored in the order\u0027s/subscription\u0027s list of notes.",
            "type": "string",
            "example": "..."
          },
          "orderDate": {
            "readOnly": false,
            "description": "For orders: the order date. For subscription: the starting date. Defaulted to nextDeliveryDate if specified, otherwise today\u0027s date",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number of the customer. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e, \u003ccode\u003elastName\u003c/code\u003e and\n\u003ccode\u003esocialSecurityNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "paymentFee": {
            "readOnly": false,
            "description": "The payment fee of the purchase. Deprecated in favor of \u003ccode\u003epaymentFeeIncludingTax\u003c/code\u003e. Having both values will cause the deprecated one to be overridden.",
            "type": "number"
          },
          "paymentFeeExcludingTax": {
            "readOnly": false,
            "description": "The payment fee excluding tax of the purchase.",
            "type": "number",
            "example": 12345
          },
          "paymentFeeIncludingTax": {
            "readOnly": false,
            "description": "The payment fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "paymentFeeTaxRate": {
            "readOnly": false,
            "description": "The tax rate of the payment fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "paymentMethodCode": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003epaymentMethodName\u003c/code\u003e",
            "type": "string"
          },
          "paymentMethodName": {
            "readOnly": false,
            "description": "The name of the payment method.",
            "type": "string",
            "example": "..."
          },
          "paymentReference": {
            "readOnly": false,
            "description": "Deprecated in favor of list of payment references.\n\u003cp\u003e\nUse RawPurchaseRequest#paymentReferences instead.",
            "type": "string"
          },
          "paymentReferences": {
            "readOnly": false,
            "description": "The references of the payment, if the payment method requires it.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RawPurchasePaymentReference"
            }
          },
          "remoteAddress": {
            "readOnly": false,
            "description": "The remote client address.",
            "type": "string",
            "example": "..."
          },
          "rows": {
            "readOnly": false,
            "description": "The regular stock keeping unit rows of this purchase.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RawPurchaseOrderRow"
            }
          },
          "sellerDepartment": {
            "readOnly": false,
            "description": "For sales handled by third parties, typically TM call centers - the department that the seller belongs to. The order/subscription\u0027s createdBy field will\nbe updated with the department (and sellerPerson)",
            "type": "string",
            "example": "..."
          },
          "sellerPerson": {
            "readOnly": false,
            "description": "For sales handled by third parties, typically TM call centers - the name/identifier of the seller person. The order/subscription\u0027s createdBy field will\nbe updated with the seller (and sellerDepartment)",
            "type": "string",
            "example": "..."
          },
          "serviceFeeExcludingTax": {
            "readOnly": false,
            "description": "The service fee excluding tax of the purchase. Only applicable for normal purchases.",
            "type": "number",
            "example": 12345
          },
          "serviceFeeIncludingTax": {
            "readOnly": false,
            "description": "The service fee of the purchase. Only applicable for normal purchases.",
            "type": "number",
            "example": 12345
          },
          "serviceFeeTaxRate": {
            "readOnly": false,
            "description": "The tax rate of the service fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "shippingFee": {
            "readOnly": false,
            "description": "The shipping fee of the purchase. Deprecated in favor of \u003ccode\u003eshippingFeeIncludingTax\u003c/code\u003e. Having both values will cause the deprecated one to be overridden.",
            "type": "number"
          },
          "shippingFeeExcludingTax": {
            "readOnly": false,
            "description": "The shipping fee excluding tax of the purchase.",
            "type": "number",
            "example": 12345
          },
          "shippingFeeIncludingTax": {
            "readOnly": false,
            "description": "The shipping fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "shippingFeeTaxRate": {
            "readOnly": false,
            "description": "The tax rate of the shipping fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "socialSecurityNumber": {
            "readOnly": false,
            "description": "The social security number of the customer. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e and \u003ccode\u003eorganizationNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "storeNumber": {
            "readOnly": false,
            "description": "The number of the physical store that this purchase was made within. This value is not to be confused with a delivery point when using Click \u0026\nCollect.",
            "type": "string",
            "example": "..."
          },
          "subscriptions": {
            "readOnly": false,
            "description": "The subscription rows of this purchase.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RawPurchaseSubscriptionRow"
            }
          },
          "termsOfDeliveryCode": {
            "readOnly": false,
            "description": "The code of the terms of delivery.",
            "type": "string",
            "example": "..."
          },
          "termsOfPaymentCode": {
            "readOnly": false,
            "description": "The code of the terms of payment.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A raw purchase contains all the necessary information for the order chain. It contains information about the customer, including contact\ninformation and shipping details. It contains content information, such as regular order information, with fees and rows, but also potential\nsubscriptions. It contains information about how payments are handled and how deliveries are handled."
      },
      "RawPurchaseResponse": {
        "type": "object",
        "title": "RawPurchaseResponse",
        "properties": {
          "purchaseNumber": {
            "readOnly": false,
            "description": "The identifier of the raw purchase that was created.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains the response from Raw Purchase API."
      },
      "RawPurchaseSubscriptionDiscount": {
        "type": "object",
        "title": "RawPurchaseSubscriptionDiscount",
        "required": [
          "numberOfUses",
          "sort"
        ],
        "properties": {
          "discountAmount": {
            "readOnly": false,
            "description": "The discount amount. Mutually exclusive with discount percent. Deprecated in favor of \u003ccode\u003ediscountAmountIncludingTax\u003c/code\u003e. Having both\nvalues will cause the deprecated one to be overridden.",
            "type": "number",
            "example": 12345
          },
          "discountAmountExcludingTax": {
            "readOnly": false,
            "description": "The discount amount excluding tax. Mutually exclusive with discount percent.",
            "type": "number",
            "example": 12345
          },
          "discountAmountIncludingTax": {
            "readOnly": false,
            "description": "The discount amount including tax. Mutually exclusive with discount percent.",
            "type": "number",
            "example": 12345
          },
          "discountPercent": {
            "readOnly": false,
            "description": "The optional discount percent. Mutually exclusive with discount amount. Must be a value between zero and one, e.g. 0.05 \u003d 5% discount.",
            "type": "number",
            "example": 12345
          },
          "numberOfUses": {
            "readOnly": false,
            "description": "The number of uses represents how many times the discount can be used. If there are multiple rows with discounts in the same subscription, then\nthe number of uses must be the same for identical sort. If the number of uses is zero, then the discount will be applied until the subscription\nis cancelled.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sort": {
            "readOnly": false,
            "description": "The discount sort represents the order in which the discounts will be applied. The discount with the lowest sort will be applied first. Lowest\nsort must be 1, sort must be unique per discount array and must be sequential.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Raw purchase subscription discount."
      },
      "RawPurchaseSubscriptionRow": {
        "type": "object",
        "title": "RawPurchaseSubscriptionRow",
        "required": [
          "createInitialOrderDirectly"
        ],
        "properties": {
          "createInitialOrderDirectly": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "templateCode": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Raw purchase row for creating subscriptions from a template."
      },
      "Receipt": {
        "type": "object",
        "title": "Receipt",
        "properties": {
          "countryCode": {
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2) of the receipt.",
            "type": "string",
            "example": "..."
          },
          "currencyCode": {
            "readOnly": false,
            "description": "The currency code (ISO 4217) of the receipt.",
            "type": "string",
            "example": "..."
          },
          "customer": {
            "$ref": "#/components/schemas/ReceiptCustomer"
          },
          "deliveryMethod": {
            "$ref": "#/components/schemas/ReceiptDeliveryMethod"
          },
          "identifier": {
            "readOnly": false,
            "description": "The identifier of the receipt.",
            "type": "string"
          },
          "integrities": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "example": {
              "property1": true,
              "property2": true
            }
          },
          "maskedCustomer": {
            "$ref": "#/components/schemas/ReceiptCustomer"
          },
          "offerCodes": {
            "readOnly": false,
            "description": "All offer codes used on the receipt. This data is duplicated on offers and rows.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "offers": {
            "readOnly": false,
            "description": "The head-level offers of the receipt.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptOffer"
            }
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The order number of the receipt. This field may or may not be set, depending on the payment method.",
            "type": "string",
            "example": "..."
          },
          "params": {
            "readOnly": false,
            "description": "Parameters from unique hooks, such as Klarna Checkout.",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "property1": "...",
              "property2": "..."
            }
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/ReceiptPaymentMethod"
          },
          "purchaseNumber": {
            "readOnly": false,
            "description": "The purchase number of the receipt.",
            "type": "string",
            "example": "..."
          },
          "rentals": {
            "readOnly": false,
            "description": "The rentals of this receipt.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptRental"
            }
          },
          "rows": {
            "readOnly": false,
            "description": "The order rows of the receipt.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptRow"
            }
          },
          "shopcartId": {
            "readOnly": false,
            "description": "The identifier of the shopping cart that caused this receipt. Useful to know whether or not to send tracking pixels to third party providers by\ncomparing against the consumers session.",
            "type": "string",
            "example": "..."
          },
          "streamlineExpressServiceCode": {
            "readOnly": false,
            "description": "Code of streamline express service if this receipt is a result of a Streamline express purchase.",
            "type": "string",
            "example": "..."
          },
          "subscriptions": {
            "readOnly": false,
            "description": "The subscriptions of the receipt.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptSubscription"
            }
          },
          "usedVouchers": {
            "readOnly": false,
            "description": "All vouchers (gift cards) used in the receipt.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptUsedVoucher"
            }
          },
          "value": {
            "$ref": "#/components/schemas/ReceiptValue"
          }
        },
        "description": "Defines a receipt for an order online."
      },
      "ReceiptAddOn": {
        "type": "object",
        "title": "ReceiptAddOn",
        "required": [
          "rowId",
          "stockKeepingUnitId"
        ],
        "properties": {
          "meta": {
            "readOnly": false,
            "description": "Dynamic meta data about the stock keeping unit of this row.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/ReceiptAddOnValue"
          }
        },
        "description": "Defines a single add-on row that belongs to a receipt row."
      },
      "ReceiptAddOnValue": {
        "type": "object",
        "title": "ReceiptAddOnValue",
        "properties": {
          "taxRate": {
            "readOnly": false,
            "description": "The tax rate of the row.",
            "type": "number",
            "example": 12345
          },
          "total": {
            "readOnly": false,
            "description": "The total value of the row, including taxes.",
            "type": "number",
            "example": 12345
          },
          "totalExcludingTax": {
            "readOnly": false,
            "description": "The total value of the row, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The price of a single item of the row, including taxes.",
            "type": "number",
            "example": 12345
          },
          "unitPriceExcludingTax": {
            "readOnly": false,
            "description": "The price of a single item of the row, excluding taxes.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines value details for receipt rows."
      },
      "ReceiptCustomer": {
        "type": "object",
        "title": "ReceiptCustomer",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/Address_address"
          },
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "The alternative email address.",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "readOnly": false,
            "description": "The cell-phone number.",
            "type": "string",
            "example": "..."
          },
          "companyName": {
            "readOnly": false,
            "description": "The name of the company.",
            "type": "string",
            "example": "..."
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The unique customer number.",
            "type": "string",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/AddressWithName"
          },
          "email": {
            "readOnly": false,
            "description": "The email address.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer.",
            "type": "string",
            "example": "..."
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer.",
            "type": "string",
            "example": "..."
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number of the company.",
            "type": "string",
            "example": "..."
          },
          "socialSecurityNumber": {
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Holds information about the customer of a receipt."
      },
      "ReceiptDeliveryMethod": {
        "type": "object",
        "title": "ReceiptDeliveryMethod",
        "required": [
          "deliveryMethodId"
        ],
        "properties": {
          "deliveryMethodId": {
            "readOnly": false,
            "description": "The identifier of the method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryMethodName": {
            "readOnly": false,
            "description": "The name of the delivery method.",
            "type": "string",
            "example": "..."
          },
          "methodName": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003eReceiptDeliveryMethod#deliveryMethodName\u003c/code\u003e",
            "type": "string"
          }
        },
        "description": "Contains information about the delivery method of a receipt."
      },
      "ReceiptOffer": {
        "type": "object",
        "title": "ReceiptOffer",
        "required": [
          "offerId"
        ],
        "properties": {
          "discount": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "offerDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "offerId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains information about a head-level offer of a receipt."
      },
      "ReceiptPaymentMethod": {
        "type": "object",
        "title": "ReceiptPaymentMethod",
        "required": [
          "paymentMethodId"
        ],
        "properties": {
          "methodName": {
            "readOnly": false,
            "description": "The name of the method.",
            "type": "string"
          },
          "paymentMethodId": {
            "readOnly": false,
            "description": "The identifier of the method.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "paymentMethodName": {
            "readOnly": false,
            "description": "The name of the payment method.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information about the payment method of a receipt."
      },
      "ReceiptRental": {
        "type": "object",
        "title": "ReceiptRental",
        "required": [
          "quantity",
          "stockKeepingUnitId"
        ],
        "properties": {
          "addOnRows": {
            "readOnly": false,
            "description": "The add-on rows of the rental.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptRentalAddOn"
            }
          },
          "meta": {
            "readOnly": false,
            "description": "Dynamic meta data about the stock keeping unit of this row.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity being rented.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rentalInfo": {
            "$ref": "#/components/schemas/RentalInfo"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit of the rental.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/ReceiptRentalValue"
          }
        },
        "description": "Defines a single rental of a receipt."
      },
      "ReceiptRentalAddOn": {
        "type": "object",
        "title": "ReceiptRentalAddOn",
        "required": [
          "stockKeepingUnitId"
        ],
        "properties": {
          "meta": {
            "readOnly": false,
            "description": "Dynamic meta data about the stock keeping unit of this row.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit of the add-on.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/ReceiptRentalValue"
          }
        },
        "description": "Defines a single add-on row that belongs to a rental."
      },
      "ReceiptRentalValue": {
        "type": "object",
        "title": "ReceiptRentalValue",
        "properties": {
          "taxRate": {
            "readOnly": false,
            "description": "The tax rate of the row.",
            "type": "number",
            "example": 12345
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The price of a single item of the row, including taxes.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines value details for receipt rows."
      },
      "ReceiptRow": {
        "type": "object",
        "title": "ReceiptRow",
        "required": [
          "offerGroup",
          "offerId",
          "quantity",
          "rowId",
          "stockKeepingUnitId"
        ],
        "properties": {
          "addOnRows": {
            "readOnly": false,
            "description": "The add-on rows of the row.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptAddOn"
            }
          },
          "meta": {
            "readOnly": false,
            "description": "Dynamic meta data about the stock keeping unit of this row.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "offerDescription": {
            "readOnly": false,
            "description": "The description of the offer gained for this row.",
            "type": "string",
            "example": "..."
          },
          "offerGroup": {
            "readOnly": false,
            "description": "The group that applied the offer gained for this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "offerId": {
            "readOnly": false,
            "description": "The identifier of the offer gained for this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/ReceiptRowValue"
          }
        },
        "description": "Defines a single order row of a receipt."
      },
      "ReceiptRowValue": {
        "type": "object",
        "title": "ReceiptRowValue",
        "properties": {
          "discount": {
            "readOnly": false,
            "description": "The total discount gained for this row.",
            "type": "number",
            "example": 12345
          },
          "discountExcludingTax": {
            "readOnly": false,
            "description": "The total discount gained for this row, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "taxRate": {
            "readOnly": false,
            "description": "The tax rate of the row.",
            "type": "number",
            "example": 12345
          },
          "total": {
            "readOnly": false,
            "description": "The total value of the row, including taxes.",
            "type": "number",
            "example": 12345
          },
          "totalExcludingTax": {
            "readOnly": false,
            "description": "The total value of the row, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The price of a single item of the row, including taxes.",
            "type": "number",
            "example": 12345
          },
          "unitPriceExcludingTax": {
            "readOnly": false,
            "description": "The price of a single item of the row, excluding taxes.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines value details for receipt rows."
      },
      "ReceiptSubscription": {
        "type": "object",
        "title": "ReceiptSubscription",
        "required": [
          "offerGroup",
          "offerId",
          "quantity",
          "rowId",
          "subscriptionTypeId"
        ],
        "properties": {
          "addOnRows": {
            "readOnly": false,
            "description": "The add-on rows of the row.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptAddOn"
            }
          },
          "meta": {
            "readOnly": false,
            "description": "Dynamic meta data about the stock keeping unit of this row.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "offerDescription": {
            "readOnly": false,
            "description": "The description of the offer gained for this row.",
            "type": "string",
            "example": "..."
          },
          "offerGroup": {
            "readOnly": false,
            "description": "The group that applied the offer gained for this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "offerId": {
            "readOnly": false,
            "description": "The identifier of the offer gained for this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionTypeId": {
            "readOnly": false,
            "description": "The subscription type of the subscription.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/ReceiptRowValue"
          }
        },
        "description": "Defines a single subscription of a receipt."
      },
      "ReceiptUsedVoucher": {
        "type": "object",
        "title": "ReceiptUsedVoucher",
        "properties": {
          "amountToReserve": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/ReceiptPaymentMethod"
          },
          "voucherNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information about used vouchers (gift cards)."
      },
      "ReceiptValue": {
        "type": "object",
        "title": "ReceiptValue",
        "properties": {
          "charge": {
            "readOnly": false,
            "description": "The packing fee, including taxes.",
            "type": "number",
            "example": 12345
          },
          "chargeExcludingTax": {
            "readOnly": false,
            "description": "The packing fee, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "discountTotal": {
            "readOnly": false,
            "description": "The total discount gained for the receipt, including taxes.",
            "type": "number",
            "example": 12345
          },
          "discountTotalExcludingTax": {
            "readOnly": false,
            "description": "The total discount gained for the receipt, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "paymentFee": {
            "readOnly": false,
            "description": "The cost for the payment method, such as invoice fee, including taxes.",
            "type": "number",
            "example": 12345
          },
          "paymentFeeExcludingTax": {
            "readOnly": false,
            "description": "The cost for the payment method, such as invoice fee, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "shippingFee": {
            "readOnly": false,
            "description": "The cost for shipping the goods, including taxes.",
            "type": "number",
            "example": 12345
          },
          "shippingFeeExcludingTax": {
            "readOnly": false,
            "description": "The cost for shipping the goods, excluding taxes.",
            "type": "number",
            "example": 12345
          },
          "total": {
            "readOnly": false,
            "description": "The total value for the receipt, including taxes.",
            "type": "number",
            "example": 12345
          },
          "totalExcludingTax": {
            "readOnly": false,
            "description": "The total value for the receipt, excluding taxes.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines value details for receipts."
      },
      "Referral": {
        "type": "object",
        "title": "Referral",
        "required": [
          "referringCustomerId"
        ],
        "properties": {
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2). This will be used for finding or creating the new referred customer.",
            "type": "string"
          },
          "referredEmailAddress": {
            "example": "anton.johansson@viskan.se",
            "readOnly": false,
            "description": "The email address of the customer being referred.",
            "type": "string"
          },
          "referringCustomerId": {
            "readOnly": false,
            "description": "The identifier of the customer that is referring.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Defines a referral from one customer to a (potentially) new customer."
      },
      "RegisterCustomerRequest": {
        "type": "object",
        "title": "RegisterCustomer",
        "required": [
          "checkPhoneNumberDuplicateEnabled",
          "companyUser",
          "priceListId",
          "serviceProviderConfigId"
        ],
        "properties": {
          "alternativeEmailAddress": {
            "example": "erik.brudzinskis@viskan.se",
            "readOnly": false,
            "description": "The second email address of the customer. This is used for order confirmations.",
            "type": "string"
          },
          "categoryIds": {
            "readOnly": false,
            "description": "The customer categoryIds for a customer",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          },
          "cellphone": {
            "example": "+46730485995",
            "readOnly": false,
            "description": "The cell phone number of the customer.",
            "type": "string"
          },
          "checkPhoneNumberDuplicateEnabled": {
            "readOnly": false,
            "description": "Checks if phone number duplication is enabled or not",
            "type": "boolean",
            "example": true
          },
          "companyName": {
            "example": "Viskan System AB",
            "readOnly": false,
            "description": "The organization name of the customer",
            "type": "string"
          },
          "companyUser": {
            "example": true,
            "readOnly": false,
            "description": "Define a customer is B2B customer or not",
            "type": "boolean"
          },
          "consents": {
            "readOnly": false,
            "description": "The consents of the customer.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerConsent_CustomerAPI"
            }
          },
          "contactPerson": {
            "example": "Erik Brudzinskis",
            "readOnly": false,
            "description": "The name of a contact person for a company",
            "type": "string"
          },
          "customerType": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "emailAddress": {
            "example": "anton.johansson@viskan.se",
            "readOnly": false,
            "description": "The email address of the customer. This is used for verification and to set a password.",
            "type": "string"
          },
          "firstName": {
            "example": "Anton",
            "readOnly": false,
            "description": "The first name of the customer.",
            "type": "string"
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "lastName": {
            "example": "Johansson",
            "readOnly": false,
            "description": "The last name of the customer.",
            "type": "string"
          },
          "organizationNumber": {
            "example": "5565901864",
            "readOnly": false,
            "description": "The organization number of the customer.",
            "type": "string"
          },
          "priceListId": {
            "readOnly": false,
            "description": "The default priceListId for a customer",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "providerParameters": {
            "readOnly": false,
            "description": "Custom parameters for the service provider.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          },
          "serviceProviderConfigId": {
            "readOnly": false,
            "description": "The 3rd party customer club provider to use.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "socialSecurityNumber": {
            "example": "199004141234",
            "readOnly": false,
            "description": "The social security number of the customer.",
            "type": "string"
          }
        },
        "description": "Request object for updating a customer."
      },
      "RegisterInterest": {
        "type": "object",
        "title": "RegisterInterest",
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "The attribute1 ID.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Id": {
            "readOnly": false,
            "description": "The attribute2 ID.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Id": {
            "readOnly": false,
            "description": "The attribute3 ID.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code of the customer",
            "type": "string"
          },
          "emailAddress": {
            "example": "john.doe@example.com",
            "readOnly": false,
            "description": "The email of the customer",
            "type": "string"
          },
          "productId": {
            "readOnly": false,
            "description": "The product ID. Mutually exclusive with #getStockKeepingUnitId().",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit ID of the product. Mutually exclusive with #getProductId().",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Describes a request to register interest in a product."
      },
      "RelatedProduct": {
        "type": "object",
        "title": "RelatedProduct",
        "required": [
          "mandatory",
          "matchQuantity",
          "quantity",
          "relationNumber"
        ],
        "properties": {
          "mandatory": {
            "example": false,
            "readOnly": false,
            "description": "If related article is mandatory or not.",
            "type": "boolean"
          },
          "matchQuantity": {
            "example": false,
            "readOnly": false,
            "description": "Determine if the quantity of related articles needs to be matched.",
            "type": "boolean"
          },
          "priceLookUpNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "Related price lookup number, PLUNO (SKU to connect). Not compatible with product number.",
            "type": "string"
          },
          "priceLookupUnitNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "Related price lookup number, PLUNO (SKU to connect). Not compatible with product number. Deprecated in favor of priceLookUpNumber.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "productNumber": {
            "example": "321PRODUCT",
            "readOnly": false,
            "description": "Related product number (product to connect). Not compatible with price lookup number (PLUNO).",
            "type": "string"
          },
          "quantity": {
            "example": 3,
            "readOnly": false,
            "description": "The number of related products. Default is 0.",
            "type": "integer",
            "format": "int32"
          },
          "relationNumber": {
            "example": 1,
            "readOnly": false,
            "description": "Relation number. Default is 0.",
            "type": "integer",
            "format": "int32"
          },
          "relationType": {
            "$ref": "#/components/schemas/RelationType"
          }
        },
        "description": "Related product information"
      },
      "RelatedProductChanges": {
        "type": "object",
        "title": "RelatedProductChanges",
        "properties": {
          "relatedProductsToAddOrUpdate": {
            "readOnly": false,
            "description": "Related products to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductToAddOrUpdate"
            }
          }
        },
        "description": "Contains new or changed related products for a given product."
      },
      "RelatedProductDeletes": {
        "type": "object",
        "title": "RelatedProductDeletes",
        "properties": {
          "relatedProductsToDelete": {
            "readOnly": false,
            "description": "Related products to delete.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductToDelete"
            }
          }
        },
        "description": "Contains related products for deletion."
      },
      "RelatedProductId": {
        "type": "object",
        "title": "RelatedProductId",
        "required": [
          "relationNumber"
        ],
        "properties": {
          "priceLookUpNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "Related price lookup number, PLUNO (SKU to connect). Not compatible with product number.",
            "type": "string"
          },
          "priceLookupNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "Related price lookup number, PLUNO (SKU to connect). Not compatible with product number. Deprecated due to incorrect field name in favor of priceLookUpNumber.",
            "type": "string"
          },
          "priceLookupUnitNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "Related price lookup number, PLUNO (SKU to connect). Not compatible with product number. Deprecated in favor of priceLookupNumber.",
            "type": "string"
          },
          "productNumber": {
            "example": "321PRODUCT",
            "readOnly": false,
            "description": "Related product number (product to connect). Not compatible with price lookup number (PLUNO).",
            "type": "string"
          },
          "relationNumber": {
            "example": 1,
            "readOnly": false,
            "description": "Relation number. Default is 0.",
            "type": "integer",
            "format": "int32"
          },
          "relationType": {
            "$ref": "#/components/schemas/RelationType"
          }
        },
        "description": "Related product information"
      },
      "RelatedProductToAddOrUpdate": {
        "type": "object",
        "title": "RelatedProductToAddOrUpdate",
        "properties": {
          "masterPriceLookupNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "The identifier of the master stock keeping unit. Not compatible with product number.",
            "type": "string"
          },
          "masterProductNumber": {
            "example": "123PRODUCT",
            "readOnly": false,
            "description": "The identifier of the master product. Not compatible with price lookup number (PLUNO).",
            "type": "string"
          },
          "relatedProducts": {
            "readOnly": false,
            "description": "Related products to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProduct"
            }
          },
          "translationsToAddOrUpdate": {
            "readOnly": false,
            "description": "Changes to relation translations.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationToAddOrUpdate_RelatedProductToAddOrUpdate"
            }
          }
        },
        "description": "Related products to add or update."
      },
      "RelatedProductToDelete": {
        "type": "object",
        "title": "RelatedProductToDelete",
        "properties": {
          "masterPriceLookupNumber": {
            "example": "123SKU",
            "readOnly": false,
            "description": "The identifier of the master stock keeping unit. Not compatible with product number.",
            "type": "string"
          },
          "masterProductNumber": {
            "example": "123PRODUCT",
            "readOnly": false,
            "description": "The identifier of the master product. Not compatible with price lookup number (PLUNO).",
            "type": "string"
          },
          "relatedProducts": {
            "readOnly": false,
            "description": "Related products to delete.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductId"
            }
          },
          "translationsToDelete": {
            "readOnly": false,
            "description": "Translations to delete",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranslationToDelete"
            }
          }
        },
        "description": "Related products to delete."
      },
      "RelationProduct": {
        "type": "object",
        "title": "RelationProduct",
        "required": [
          "attribute1IdToDisplay",
          "brandNew",
          "mandatory",
          "matchQuantity",
          "productId"
        ],
        "properties": {
          "attribute1IdToDisplay": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brand": {
            "$ref": "#/components/schemas/Brand_response"
          },
          "brandNew": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "connection": {
            "$ref": "#/components/schemas/Connection"
          },
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "longDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "mandatory": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "matchQuantity": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "media": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Media"
            }
          },
          "offers": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Offer"
            }
          },
          "priceCampaigns": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceCampaign"
            }
          },
          "productId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ProductType"
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "relationNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "relationType": {
            "readOnly": false,
            "description": "",
            "type": "object",
            "example": {}
          },
          "shortDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "stock": {
            "$ref": "#/components/schemas/Stock"
          },
          "stockKeepingUnits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnit_response"
            }
          }
        },
        "description": ""
      },
      "RelationTranslation": {
        "type": "object",
        "title": "RelationTranslation",
        "properties": {
          "languageCode": {
            "example": "en",
            "readOnly": false,
            "description": "The language code of the translation, this is the identifier. This value is mandatory. (BCP 47 code)",
            "type": "string"
          },
          "shortDescription": {
            "example": "Short description of the product",
            "readOnly": false,
            "description": "Changes to the short description for this translation.",
            "type": "string"
          }
        },
        "description": ""
      },
      "RelationType": {
        "type": "string",
        "title": "RelationType",
        "enum": [
          "MATCHING",
          "REPLACEMENT",
          "SET",
          "ALREADY_PACKAGED",
          "ALSO_BOUGHT",
          "ADD_ON",
          "AUTOMATIC_REPLACEMENT",
          "CONTENTS",
          "PURCHASE_OPTIONS",
          "SHOPCART_OFFER",
          "GIFT",
          "EXTRA_SUBSCRIPTION_SHIPMENT",
          "GENERIC_1",
          "GENERIC_2"
        ],
        "description": ""
      },
      "Relations": {
        "type": "object",
        "title": "Relations",
        "properties": {
          "products": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelationProduct"
            }
          }
        },
        "description": ""
      },
      "RenewalAction": {
        "type": "string",
        "title": "RenewalAction",
        "enum": [
          "RENDER_SNIPPET"
        ],
        "description": "Defines various actions that needs to be done by the client when renewing payment information."
      },
      "RenewalResult": {
        "type": "object",
        "title": "RenewalResult",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/RenewalAction"
          },
          "snippetParams": {
            "readOnly": false,
            "description": "Parameters required to render the snippet.",
            "type": "object",
            "additionalProperties": {
              "type": "object"
            },
            "example": {
              "property1": {},
              "property2": {}
            }
          }
        },
        "description": "Information about successfully renewed payment information."
      },
      "Rental": {
        "type": "object",
        "title": "Rental",
        "required": [
          "active",
          "minimumRentalLength",
          "rentalId"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "The active status of the rental.",
            "type": "boolean"
          },
          "fee": {
            "example": 100,
            "readOnly": false,
            "description": "The periodic fee of the rental.",
            "type": "number"
          },
          "feeAt": {
            "example": "2021-05-25",
            "readOnly": false,
            "description": "The next payment date for the rental.",
            "type": "string",
            "format": "date"
          },
          "minimumRentalLength": {
            "example": 12,
            "readOnly": false,
            "description": "The shortest possible time of rental for the rental, in months.",
            "type": "integer",
            "format": "int32"
          },
          "paymentInfo": {
            "$ref": "#/components/schemas/PaymentInfo"
          },
          "rentalId": {
            "example": 123,
            "readOnly": false,
            "description": "The ID of the rental. If rentalId is 0, it means the rental is pending.",
            "type": "integer",
            "format": "int32"
          },
          "rentalName": {
            "example": "ACME Mini Freezer X-5000",
            "readOnly": false,
            "description": "The name of the rental.",
            "type": "string"
          },
          "rentalRows": {
            "readOnly": false,
            "description": "The rows of the rental, containing detailed information of the rental product(s).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RentalRow"
            }
          },
          "startedAt": {
            "example": "2019-05-25",
            "readOnly": false,
            "description": "The start date of the rental.",
            "type": "string",
            "format": "date"
          }
        },
        "description": "Defines information about one rental. One Rental can include multiple products such as insurance and add-on products."
      },
      "RentalInfo": {
        "type": "object",
        "title": "RentalInfo",
        "required": [
          "minimumRentalLength",
          "rentalPeriodId"
        ],
        "properties": {
          "minimumRentalLength": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rentalPeriodId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "RentalRow": {
        "type": "object",
        "title": "RentalRow",
        "required": [
          "quantity"
        ],
        "properties": {
          "fee": {
            "example": 100,
            "readOnly": false,
            "description": "The fee per one single product, insurance or add-on to rent.",
            "type": "number"
          },
          "linkFriendlyName": {
            "example": "white-goods-insurance",
            "readOnly": false,
            "description": "The link friendly name of the product.",
            "type": "string"
          },
          "mediaFileName": {
            "example": "white_goods_insurance.jpg",
            "readOnly": false,
            "description": "The name of the media file of the product.",
            "type": "string"
          },
          "productName": {
            "example": "White Goods Insurance",
            "readOnly": false,
            "description": "The name of the product, insurance or add-on to rent.",
            "type": "string"
          },
          "quantity": {
            "example": 2,
            "readOnly": false,
            "description": "The quantity of products on this row.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Defines a product included in a rental."
      },
      "RentalHead": {
        "type": "object",
        "title": "Rentals",
        "properties": {
          "nextFee": {
            "example": 100,
            "readOnly": false,
            "description": "The next fee to pay.",
            "type": "number"
          },
          "nextFeeAt": {
            "example": "2021-05-25",
            "readOnly": false,
            "description": "The date of the next payment.",
            "type": "string",
            "format": "date"
          },
          "rentals": {
            "readOnly": false,
            "description": "The list of rentals.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Rental"
            }
          },
          "totalFee": {
            "example": 1000,
            "readOnly": false,
            "description": "The total fee of all rentals for one customer.",
            "type": "number"
          }
        },
        "description": "A RentalHead defines information on all of one customer\u0027s rentals, including meta information such as total fee."
      },
      "ReservationRequest": {
        "type": "object",
        "title": "ReservationRequest",
        "required": [
          "desiredQuantity",
          "stockKeepingUnitId",
          "warehouseId"
        ],
        "properties": {
          "desiredQuantity": {
            "readOnly": false,
            "description": "The desired quantity to reserve.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "reference": {
            "readOnly": false,
            "description": "The unique reference of this reservation.",
            "type": "string",
            "example": "..."
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with priceLookupUnitNumber.\u003c/p\u003e",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseId": {
            "readOnly": false,
            "description": "The internal identifier of the warehouse and mutually exclusive with WarehouseNumber",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The identifying number for the warehouse. Mutually exclusive with warehouseId.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a reservation request."
      },
      "ResetPasswordRequest": {
        "type": "object",
        "title": "ResetPasswordRequest",
        "required": [
          "companyUser",
          "customerId",
          "serviceProviderConfigId",
          "timeToLiveMinutes"
        ],
        "properties": {
          "companyUser": {
            "readOnly": false,
            "description": "The type of the customer, B2B company user or normal user",
            "type": "boolean",
            "example": true
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2) of the customer that the password reset is intended for.",
            "type": "string"
          },
          "customerId": {
            "example": 68,
            "readOnly": false,
            "description": "The customerId of the customer to reset the password for.",
            "type": "integer",
            "format": "int32"
          },
          "existingPasswordRequired": {
            "readOnly": false,
            "description": "If an existing password is require for the customer to reset their own password",
            "type": "boolean",
            "example": true
          },
          "identifier": {
            "example": "anton.johansson@viskan.se",
            "readOnly": false,
            "description": "The identifier of the customer.",
            "type": "string"
          },
          "identifierType": {
            "$ref": "#/components/schemas/IdentifierType"
          },
          "noMatchTemplateCode": {
            "example": "MY_PAGES_RESET_PASSWORD_NO_MATCH",
            "readOnly": false,
            "description": "In case if email is not registered in the system then email will be sent to email address generated using this template code.",
            "type": "string"
          },
          "serviceProviderConfigId": {
            "readOnly": false,
            "description": "The service provider configuration to use. This is needed if you are connecting to a third party customer club provider.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "timeToLiveMinutes": {
            "example": 60,
            "readOnly": false,
            "description": "The number of minutes that the token should remain valid for. Defaults to \u003ccode\u003e60\u003c/code\u003e.",
            "type": "integer",
            "format": "int32"
          },
          "tokenType": {
            "$ref": "#/components/schemas/TokenType"
          }
        },
        "description": "Contains information for requesting a new reset password token."
      },
      "Return": {
        "type": "object",
        "title": "Return",
        "required": [
          "customerId",
          "deliveryId",
          "orderId",
          "returnId"
        ],
        "properties": {
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code (ISO 3166-1 alpha-2) of the return.",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The The currency code (ISO 4217) of the return.",
            "type": "string"
          },
          "customFields": {
            "readOnly": false,
            "description": "The custom fields to add to the return. Any existing custom field will be overwritten.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReturnResult"
            }
          },
          "customerId": {
            "readOnly": false,
            "description": "The internal identifier of the customer connected to the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The external number of the customer.",
            "type": "string",
            "example": "..."
          },
          "deliveryId": {
            "readOnly": false,
            "description": "The internal identifier of the delivery connected to the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryNumber": {
            "readOnly": false,
            "description": "The external number of the delivery.",
            "type": "string",
            "example": "..."
          },
          "methodOfArrivalNumber": {
            "readOnly": false,
            "description": "Specifies the arrival method number associated with the returned order.",
            "type": "string",
            "example": "..."
          },
          "orderId": {
            "readOnly": false,
            "description": "The internal identifier of the order connected to the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "orderNumber": {
            "readOnly": false,
            "description": "The external number of the order.",
            "type": "string",
            "example": "..."
          },
          "purchaseNumber": {
            "readOnly": false,
            "description": "The external number of the purchase.",
            "type": "string",
            "example": "..."
          },
          "returnDate": {
            "example": "2020-09-21",
            "readOnly": false,
            "description": "The date of the return.",
            "type": "string",
            "format": "date"
          },
          "returnId": {
            "readOnly": false,
            "description": "The internal identifier of the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "returnNumber": {
            "readOnly": false,
            "description": "The external number of the return.",
            "type": "string",
            "example": "..."
          },
          "returnReason": {
            "$ref": "#/components/schemas/ReturnReason"
          },
          "returnValue": {
            "$ref": "#/components/schemas/ReturnValue"
          },
          "rows": {
            "readOnly": false,
            "description": "The rows of the return.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReturnRow"
            }
          },
          "status": {
            "$ref": "#/components/schemas/ReturnStatus"
          },
          "warehouse": {
            "$ref": "#/components/schemas/Warehouse_ReturnAPI"
          },
          "webStoreNumber": {
            "readOnly": false,
            "description": "Specifies the store number where the returned order was placed.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A return."
      },
      "ReturnChanges": {
        "type": "object",
        "title": "ReturnChanges",
        "required": [
          "received"
        ],
        "properties": {
          "received": {
            "readOnly": false,
            "description": "Indicate whether or not the return has been received and should be marked for completion.",
            "type": "boolean",
            "example": true
          },
          "rowsToUpdate": {
            "readOnly": false,
            "description": "Contains changes to apply for return rows.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReturnRowChanges"
            }
          }
        },
        "description": "Contains changes that applies to a return."
      },
      "ReturnReason": {
        "type": "object",
        "title": "ReturnReason",
        "required": [
          "reasonId"
        ],
        "properties": {
          "note": {
            "readOnly": false,
            "description": "The comment/note of the reason for the return.",
            "type": "string",
            "example": "..."
          },
          "reasonId": {
            "readOnly": false,
            "description": "The identifier of the reason for the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "reasonName": {
            "readOnly": false,
            "description": "The name of the reason for the return.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The reason for a return."
      },
      "ReturnReasonSearch": {
        "type": "object",
        "title": "ReturnReasonSearch",
        "required": [
          "active",
          "reasonId",
          "requiresPreview"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "If the reason is active and can be used or not.",
            "type": "boolean",
            "example": true
          },
          "reasonId": {
            "readOnly": false,
            "description": "The internal identifier of the reason.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "reasonName": {
            "example": "Return Name!",
            "readOnly": false,
            "description": "The name of the reason.",
            "type": "string"
          },
          "reasonType": {
            "$ref": "#/components/schemas/ReturnReasonType"
          },
          "requiresPreview": {
            "readOnly": false,
            "description": "Specifies if this reason requires review before reporting a return.",
            "type": "boolean",
            "example": true
          }
        },
        "description": "Contains data that defines a return reason."
      },
      "ReturnReasonType": {
        "type": "string",
        "title": "ReturnReasonType",
        "enum": [
          "RETURN",
          "COMPLAINT",
          "UNDISCHARGED",
          "UNSPECIFIED"
        ],
        "description": "The status of a return."
      },
      "ReturnResult": {
        "type": "object",
        "title": "ReturnResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The returns in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Return"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of returns."
      },
      "ReturnRow": {
        "type": "object",
        "title": "ReturnRow",
        "required": [
          "quantity",
          "reasonId",
          "rowId",
          "stockKeepingUnitId"
        ],
        "properties": {
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity being returned.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "reasonId": {
            "readOnly": false,
            "description": "The internal identifier of the reason for a specific row",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row within the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "value": {
            "$ref": "#/components/schemas/ReturnRowValue"
          }
        },
        "description": "A single row of a return."
      },
      "ReturnRowChanges": {
        "type": "object",
        "title": "ReturnRowChanges",
        "required": [
          "rowId"
        ],
        "properties": {
          "quantity": {
            "readOnly": false,
            "description": "Quantity to mark as received/returned. The total quantity marked (in one or multiple calls) cannot be larger than the registered quantity on the return row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rowId": {
            "readOnly": false,
            "description": "The identifier of the row to update. This value is mandatory.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains changes that applies to a return row."
      },
      "ReturnRowValue": {
        "type": "object",
        "title": "ReturnRowValue",
        "properties": {
          "taxRate": {
            "readOnly": false,
            "description": "The tax rate of the row.",
            "type": "number",
            "example": 12345
          },
          "total": {
            "readOnly": false,
            "description": "The total amount returned for the row.",
            "type": "number",
            "example": 12345
          },
          "totalExcludingTax": {
            "readOnly": false,
            "description": "The total amount excluding tax returned for the row.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Contains values of a return row."
      },
      "ReturnStatus": {
        "type": "string",
        "title": "ReturnStatus",
        "enum": [
          "CREATED",
          "RECEIVED",
          "REPORTED",
          "CANCELED"
        ],
        "description": "The status of a return."
      },
      "ReturnToCreate": {
        "type": "object",
        "title": "ReturnToCreate",
        "required": [
          "completed",
          "deliveryId",
          "reasonId",
          "warehouseId"
        ],
        "properties": {
          "completed": {
            "readOnly": false,
            "description": "\u003cp\u003eSpecifies if this return should be considered complete. If this flag is set, return will be reported in ETM.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e The return will not be completed if the return reason does not allow it.\u003c/p\u003e",
            "type": "boolean",
            "example": true
          },
          "customFieldsToAdd": {
            "readOnly": false,
            "description": "The custom fields to add to the return. Any existing custom field will be overwritten.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReturnToCreate"
            }
          },
          "deliveryId": {
            "readOnly": false,
            "description": "The internal identifier of the delivery. Mutually exclusive with other delivery identifiers.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryNumber": {
            "example": "DELIVERYNUMBER123",
            "readOnly": false,
            "description": "The external identifier of a delivery. Mutually exclusive with other delivery identifiers.",
            "type": "string"
          },
          "note": {
            "readOnly": false,
            "description": "The return comment/note.",
            "type": "string",
            "example": "..."
          },
          "reasonCode": {
            "readOnly": false,
            "description": "The code for the reason a return is created. Mutually exclusive with reasonId.",
            "type": "string",
            "example": "..."
          },
          "reasonId": {
            "readOnly": false,
            "description": "The identifier for the reason a return is created. Mutually exclusive with reasonCode.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "rows": {
            "readOnly": false,
            "description": "The returns in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReturnToCreateRow"
            }
          },
          "warehouseId": {
            "readOnly": false,
            "description": "The identifier for the warehouse to register the return for. Mutually exclusive with WarehouseNumber.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The identifying number for the warehouse to register the return for. Mutually exclusive with warehouseId.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains data used to create a return."
      },
      "ReturnToCreateRow": {
        "type": "object",
        "title": "ReturnToCreateRow",
        "required": [
          "quantity",
          "reasonId",
          "stockKeepingUnitId"
        ],
        "properties": {
          "priceLookUpNumber": {
            "example": "PLUNO123",
            "readOnly": false,
            "description": "An identifier for a stock keeping unit in the format of PLUNO. Mutually exclusive with other stock keeping unit identifiers.",
            "type": "string"
          },
          "priceLookupUnitNumber": {
            "example": "PLUNO123",
            "readOnly": false,
            "description": "An identifier for a stock keeping unit in the format of PLUNO. Mutually exclusive with other stock keeping unit identifiers.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "quantity": {
            "readOnly": false,
            "description": "The quantity to return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "reasonCode": {
            "readOnly": false,
            "description": "The code for the reason this row is returned. Mutually exclusive with reasonId.",
            "type": "string",
            "example": "..."
          },
          "reasonId": {
            "readOnly": false,
            "description": "The identifier of the reason for a return at specific row. Mutually exclusive with reasonCode.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of a stock keeping unit. Mutually exclusive with other stock keeping unit identifiers.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains data used to create a return."
      },
      "ReturnValue": {
        "type": "object",
        "title": "ReturnValue",
        "properties": {
          "charge": {
            "readOnly": false,
            "description": "The reimbursed charge associated with the order.",
            "type": "number",
            "example": 12345
          },
          "deliveryFee": {
            "readOnly": false,
            "description": "The reimbursed delivery fee associated with the order.",
            "type": "number",
            "example": 12345
          },
          "discount": {
            "readOnly": false,
            "description": "The imposed discount associated with the return.",
            "type": "number",
            "example": 12345
          },
          "paymentFee": {
            "readOnly": false,
            "description": "The reimbursed payment fee associated with the order.",
            "type": "number",
            "example": 12345
          },
          "returnFee": {
            "readOnly": false,
            "description": "The imposed fee associated with the return.",
            "type": "number",
            "example": 12345
          },
          "rounding": {
            "readOnly": false,
            "description": "The imposed rounding associated with the return.",
            "type": "number",
            "example": 12345
          },
          "totalAmount": {
            "readOnly": false,
            "description": "The total value of the return.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "The value of a return."
      },
      "Scale": {
        "type": "string",
        "title": "Scale",
        "enum": [
          "THUMBNAIL",
          "LIST",
          "NORMAL",
          "ORIGINAL",
          "LARGE"
        ],
        "description": "The different media scales/sizes. Scale is typically only defined for images, for other types of media it\u0027s undefined how a size is to be\ninterpreted."
      },
      "Seller": {
        "type": "object",
        "title": "Seller",
        "required": [
          "sellerId"
        ],
        "properties": {
          "sellerId": {
            "readOnly": false,
            "description": "The ID of the seller.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sellerName": {
            "readOnly": false,
            "description": "The name or the description of the seller.",
            "type": "string",
            "example": "..."
          },
          "sellerNumber": {
            "readOnly": false,
            "description": "The number of the seller.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a seller."
      },
      "ServiceProvider": {
        "type": "string",
        "title": "ServiceProvider",
        "enum": [
          "INGRID",
          "NSHIFT"
        ],
        "description": "The Service provider"
      },
      "ServiceProviderConfiguration": {
        "type": "object",
        "title": "ServiceProviderConfiguration",
        "required": [
          "serviceProviderConfigurationId"
        ],
        "properties": {
          "parameters": {
            "readOnly": false,
            "description": "The parameters of the service provider configuration.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceProviderConfigurationParameter"
            }
          },
          "serviceProviderCode": {
            "example": "diggecard",
            "readOnly": false,
            "description": "The code of the service provider.",
            "type": "string"
          },
          "serviceProviderConfigurationId": {
            "readOnly": false,
            "description": "The identifier of the service provider configuration.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Defines a service provider configuration. A Service provider configuration are usually used when communication with third parties."
      },
      "ServiceProviderConfigurationParameter": {
        "type": "object",
        "title": "ServiceProviderConfigurationParameter",
        "required": [
          "active"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "If the parameter is active or not.",
            "type": "boolean",
            "example": true
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country the parameter is configured for.",
            "type": "string"
          },
          "serviceProviderParameterCode": {
            "readOnly": false,
            "description": "The internal code of the parameter.",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "The value of the parameter.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a service provider configuration parameter."
      },
      "SetPasswordRequest": {
        "type": "object",
        "title": "SetPasswordRequest",
        "properties": {
          "password": {
            "example": "s3cr3t",
            "readOnly": false,
            "description": "The new password to set.",
            "type": "string"
          }
        },
        "description": "Contains the new password that will be set for a customer. Notice that we only accept a single password value here, so it is recommended to perform\na confirmation check on the API client side before passing it to this API."
      },
      "Sex": {
        "type": "string",
        "title": "Sex",
        "enum": [
          "UNISEX",
          "MAN",
          "WOMAN"
        ],
        "description": "Represents a customers sex"
      },
      "ShipmentProduct": {
        "type": "object",
        "title": "ShipmentProduct",
        "required": [
          "attribute1Id",
          "attribute2Id",
          "attribute3Id",
          "productId",
          "quantity"
        ],
        "properties": {
          "attribute1Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute2Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "attribute3Id": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "ShippingOption_v2": {
        "type": "object",
        "title": "ShippingOption",
        "properties": {
          "deliveryInstructions": {
            "readOnly": false,
            "description": "The delivery instruction for this shipping option if any",
            "type": "string",
            "example": "..."
          },
          "timeSlot": {
            "$ref": "#/components/schemas/TimeSlot_v2"
          }
        },
        "description": "Represents shipping options"
      },
      "ShippingOption": {
        "type": "object",
        "title": "ShippingOption",
        "properties": {
          "deliveryInstructions": {
            "example": "The port code is 4912",
            "readOnly": false,
            "description": "The delivery instructions of this delivery.",
            "type": "string"
          },
          "timeSlot": {
            "$ref": "#/components/schemas/TimeSlot_DeliveryAPI"
          }
        },
        "description": "The shipping options of the delivery."
      },
      "Sort": {
        "type": "string",
        "title": "Sort",
        "enum": [
          "RELEVANCE_DESC",
          "PRICE_ASC",
          "PRICE_DESC",
          "CATEGORY_SORT_ASC",
          "CATEGORY_SORT_DESC",
          "PUBLISHED_ASC",
          "PUBLISHED_DESC"
        ],
        "description": ""
      },
      "Source": {
        "type": "string",
        "title": "Source",
        "enum": [
          "INTERNAL",
          "EXTERNAL"
        ],
        "description": "Source of order"
      },
      "Stock": {
        "type": "object",
        "title": "Stock",
        "required": [
          "incoming"
        ],
        "properties": {
          "incoming": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "incomingAt": {
            "example": "2025-06-01",
            "readOnly": false,
            "description": "",
            "type": "string"
          },
          "physicalStore": {
            "$ref": "#/components/schemas/StockState"
          },
          "web": {
            "$ref": "#/components/schemas/StockState"
          }
        },
        "description": ""
      },
      "StockBalance": {
        "type": "object",
        "title": "StockBalance",
        "required": [
          "availableBalance",
          "balance",
          "balanceIncoming",
          "stockKeepingUnitId",
          "warehouseId"
        ],
        "properties": {
          "availableBalance": {
            "example": 9,
            "readOnly": false,
            "description": "Number of items stored in the warehouse, taking reservations into account.",
            "type": "integer",
            "format": "int32"
          },
          "balance": {
            "example": 12,
            "readOnly": false,
            "description": "Number of items stored in the warehouse.",
            "type": "integer",
            "format": "int32"
          },
          "balanceIncoming": {
            "example": 5,
            "readOnly": false,
            "description": "Number of incoming items to the warehouse.",
            "type": "integer",
            "format": "int32"
          },
          "estimatedDeliveryDate": {
            "example": "2024-02-15",
            "readOnly": false,
            "description": "The estimated date for incoming stock to arrive at the warehouse.",
            "type": "string"
          },
          "estimatedShippingDate": {
            "example": "2024-10-25",
            "readOnly": false,
            "description": "The estimated date the stock will be ready for shipment to the end customer.",
            "type": "string"
          },
          "europeanArticleNumber": {
            "example": "14114192",
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string"
          },
          "modifiedAt": {
            "example": "2024-03-21T14:36:43.412+01:00",
            "readOnly": false,
            "description": "Last changed date for the balance",
            "type": "string",
            "format": "date-time"
          },
          "priceLookUpNumber": {
            "example": "14114192",
            "readOnly": false,
            "description": "The price lookup number (PLUNO) of the stock keeping unit.",
            "type": "string"
          },
          "priceLookupNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "example": 619,
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32"
          },
          "warehouseId": {
            "example": 1,
            "readOnly": false,
            "description": "The internal identifier of the warehouse that balance belongs to. Mutually exclusive with WarehouseNumber.",
            "type": "integer",
            "format": "int32"
          },
          "warehouseNumber": {
            "example": "W01",
            "readOnly": false,
            "description": "The external identifier of the warehouse that balance belongs to. Mutually exclusive with warehouseId.",
            "type": "string"
          }
        },
        "description": "Contains information about stock balance for a specific stock keeping unit in a specific warehouse, optionally at a specific stock location."
      },
      "StockBalanceResult": {
        "type": "object",
        "title": "StockBalanceResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "page": {
            "example": 1,
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32"
          },
          "pagesLeft": {
            "example": 1,
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32"
          },
          "searchId": {
            "example": "236c000d-70a8-4a6c-beed-36e788c107b9",
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string"
          },
          "stockBalances": {
            "readOnly": false,
            "description": "The stock balances in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockBalance"
            }
          },
          "totalHits": {
            "example": 29,
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Holds a search result of stock balances."
      },
      "StockBalanceUpdate": {
        "type": "object",
        "title": "StockBalanceUpdate",
        "required": [
          "balance",
          "balanceIncoming",
          "warehouseId"
        ],
        "properties": {
          "balance": {
            "readOnly": false,
            "description": "The physical number of units stored in the warehouse.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "balanceIncoming": {
            "readOnly": false,
            "description": "The incoming number of units to be delivered to the warehouse.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "estimatedDeliveryDate": {
            "example": "2024-09-12",
            "readOnly": false,
            "description": "Changes to the estimated delivery date. The date when the incoming units are estimated to arrive at the warehouse.",
            "type": "string"
          },
          "estimatedShippingDate": {
            "example": "2024-10-25",
            "readOnly": false,
            "description": "Changes to the estimated shipping date. The estimated date the stock will be ready for shipment to the end customer.",
            "type": "string"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe European article number (EAN13) of the stock keeping unit to update stock balance for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with stockKeepingUnitId and priceLookupUnitNumber.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e European article numbers in Viskan are no longer unique and is therefore not a reliable way of identifying stock keeping units with.\u003c/p\u003e",
            "type": "string"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The Price Look-Up number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of this stock keeping unit.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookupNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "\u003cp\u003eThe internal identifier of the stock keeping unit to update stock balance for.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eNote:\u003c/b\u003e This field is mutually exclusive with europeanArticleNumber and priceLookupUnitNumber.\u003c/p\u003e",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseId": {
            "readOnly": false,
            "description": "The identifier of the warehouse to update stock balance in. Mutually exclusive with warehouseNumber.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The unique number of the warehouse to update stock balance in. Mutually exclusive with warehouseId.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information about stock balance update or creation for a specific stock keeping unit in a specific warehouse."
      },
      "StockKeepingUnit_Product": {
        "type": "object",
        "title": "StockKeepingUnit",
        "required": [
          "active",
          "published",
          "stockKeepingUnitId"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "Indicates if this unit is active on unit level. There is also an active status on product level and if that is \u003ccode\u003efalse\u003c/code\u003e it will override this unit status.",
            "type": "boolean",
            "example": true
          },
          "attribute1Code": {
            "readOnly": false,
            "description": "A reference to the attribute 1 code.",
            "type": "string",
            "example": "..."
          },
          "attribute1Number": {
            "readOnly": false,
            "description": "A reference to the attribute 1 number.",
            "type": "string",
            "example": "..."
          },
          "attribute1Tag": {
            "readOnly": false,
            "description": "A reference to the attribute 1 tag used for aggregations in the estore product API.",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "A reference to the attribute 2 code.",
            "type": "string",
            "example": "..."
          },
          "attribute2Number": {
            "readOnly": false,
            "description": "A reference to the attribute 2 number.",
            "type": "string",
            "example": "..."
          },
          "attribute2Tag": {
            "readOnly": false,
            "description": "A reference to the attribute 2 tag used for aggregations in the estore product API.",
            "type": "string",
            "example": "..."
          },
          "attribute3Code": {
            "readOnly": false,
            "description": "A reference to the attribute 3 code.",
            "type": "string",
            "example": "..."
          },
          "attribute3Number": {
            "readOnly": false,
            "description": "A reference to the attribute 3 number.",
            "type": "string",
            "example": "..."
          },
          "attribute3Tag": {
            "readOnly": false,
            "description": "A reference to the attribute 3 tag used for aggregations in the estore product API.",
            "type": "string",
            "example": "..."
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of this unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of this unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of this unit.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e priceLookupUnitNumber is not used due to incorrect field name.\u003c/p\u003e",
            "type": "string"
          },
          "prices": {
            "readOnly": false,
            "description": "A list of available prices for this unit.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Price"
            }
          },
          "properties": {
            "readOnly": false,
            "description": "A list of sku properties for the product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_Product"
            }
          },
          "publishDate": {
            "example": "2024-06-01",
            "readOnly": false,
            "description": "The date the stock keeping unit is or will be published.",
            "type": "string",
            "format": "date"
          },
          "published": {
            "readOnly": false,
            "description": "Indicates if this unit is published to site on unit level. There is also a published status on product level and if that is \u003ccode\u003efalse\u003c/code\u003e it will override this unit status.",
            "type": "boolean",
            "example": true
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of this unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "suppliers": {
            "readOnly": false,
            "description": "A list of suppliers for this unit.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Supplier_Product"
            }
          },
          "translations": {
            "readOnly": false,
            "description": "A list of translations for this unit.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitTranslation"
            }
          },
          "volume": {
            "readOnly": false,
            "description": "The volume of this unit in cubic millimeters.",
            "type": "number",
            "example": 12345
          },
          "weight": {
            "readOnly": false,
            "description": "The weight of this unit in grams.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "The purchasable unit of a product."
      },
      "StockKeepingUnit": {
        "type": "object",
        "title": "StockKeepingUnit",
        "required": [
          "stockKeepingUnitId"
        ],
        "properties": {
          "medias": {
            "readOnly": false,
            "description": "The medias of this stock keeping unit.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitMedia"
            }
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupUnitNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of this stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "The collection of media for a product."
      },
      "StockKeepingUnit_response": {
        "type": "object",
        "title": "StockKeepingUnit",
        "required": [
          "balance",
          "brandNew",
          "comingSoon",
          "stockKeepingUnitId"
        ],
        "properties": {
          "attribute1": {
            "$ref": "#/components/schemas/Attribute1_response"
          },
          "attribute2": {
            "$ref": "#/components/schemas/Attribute2_response"
          },
          "attribute3": {
            "$ref": "#/components/schemas/Attribute3_response"
          },
          "balance": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brandNew": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "closestEstimatedShippingDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "comingSoon": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "dimensions": {
            "$ref": "#/components/schemas/ProductDimensions"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "price": {
            "$ref": "#/components/schemas/Price_response"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property_response"
            }
          },
          "publishDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "status": {
            "$ref": "#/components/schemas/StockKeepingUnitStatus"
          },
          "stock": {
            "$ref": "#/components/schemas/Stock"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "StockKeepingUnitForFeed": {
        "type": "object",
        "title": "StockKeepingUnitForFeed",
        "required": [
          "balance",
          "brandNew",
          "comingSoon",
          "stockKeepingUnitId"
        ],
        "properties": {
          "attribute1": {
            "$ref": "#/components/schemas/Attribute1ForFeed"
          },
          "attribute2": {
            "$ref": "#/components/schemas/Attribute2ForFeed"
          },
          "attribute3": {
            "$ref": "#/components/schemas/Attribute3ForFeed"
          },
          "balance": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "brandNew": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "closestEstimatedShippingDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "comingSoon": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "dimensions": {
            "$ref": "#/components/schemas/ProductDimensions"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "price": {
            "$ref": "#/components/schemas/Price_response"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "properties": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyForFeed"
            }
          },
          "publishDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "status": {
            "$ref": "#/components/schemas/StockKeepingUnitStatus"
          },
          "stock": {
            "$ref": "#/components/schemas/Stock"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": ""
      },
      "StockKeepingUnitMedia": {
        "type": "object",
        "title": "StockKeepingUnitMedia",
        "properties": {
          "scales": {
            "readOnly": false,
            "description": "The different scales of this media.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MediaScale"
            }
          },
          "type": {
            "$ref": "#/components/schemas/Type"
          }
        },
        "description": "The specific media details for a product."
      },
      "StockKeepingUnitStatus": {
        "type": "string",
        "title": "StockKeepingUnitStatus",
        "enum": [
          "FOR_SALE",
          "NOT_YET_FOR_SALE",
          "PREVIEW",
          "DISCONTINUED"
        ],
        "description": ""
      },
      "StockKeepingUnitStockBalancesChanges": {
        "type": "object",
        "title": "StockKeepingUnitStockBalancesChanges",
        "required": [
          "balance",
          "balanceIncoming",
          "warehouseId"
        ],
        "properties": {
          "balance": {
            "readOnly": false,
            "description": "Changes to the stock balance.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "balanceIncoming": {
            "readOnly": false,
            "description": "Changes to the incoming stock balance. The number of incoming units to be delivered to the warehouse.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "estimatedDeliveryDate": {
            "example": "2026-10-25",
            "readOnly": false,
            "description": "Changes to the estimated delivery date. The date when the incoming units are estimated to arrive at the warehouse.",
            "type": "string"
          },
          "estimatedShippingDate": {
            "example": "2024-10-25",
            "readOnly": false,
            "description": "Changes to the estimated shipping date. The estimated date the stock will be ready for shipment to the end customer.",
            "type": "string"
          },
          "warehouseId": {
            "readOnly": false,
            "description": "The internal identifier of this warehouse.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The number of the warehouse. Mutually exclusive with warehouseId",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains changes that applies to a stockkeepingunit balances."
      },
      "StockKeepingUnitSupplierChanges": {
        "type": "object",
        "title": "StockKeepingUnitSupplierChanges",
        "required": [
          "supplierId"
        ],
        "properties": {
          "currencyCode": {
            "example": "EUR",
            "readOnly": false,
            "description": "Changes to currency.",
            "type": "string"
          },
          "price": {
            "example": 10,
            "readOnly": false,
            "description": "Changes to the price (exvat).",
            "type": "number"
          },
          "supplierId": {
            "readOnly": false,
            "description": "The internal identifier of this supplier.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "supplierNumber": {
            "example": "sup_no1",
            "readOnly": false,
            "description": "The number of this supplier (only used without supplier ID)",
            "type": "string"
          },
          "supplierProductNumber": {
            "example": "123PRODUCT",
            "readOnly": false,
            "description": "The identifier of the product for this supplier.",
            "type": "string"
          }
        },
        "description": "Contains changes that applies to a stockkeepingunit supplier."
      },
      "StockKeepingUnitToAddOrUpdate": {
        "type": "object",
        "title": "StockKeepingUnitToAddOrUpdate",
        "required": [
          "active"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "Changes if the unit is active.",
            "type": "boolean",
            "example": true
          },
          "attribute1": {
            "$ref": "#/components/schemas/Attribute1Changes"
          },
          "attribute2": {
            "$ref": "#/components/schemas/Attribute2Changes"
          },
          "attribute3": {
            "$ref": "#/components/schemas/Attribute3Changes"
          },
          "europeanArticleNumber": {
            "example": "12345ABCD",
            "readOnly": false,
            "description": "\u003cp\u003eThe European article number.\u003c/p\u003e\n\u003cp\u003e\n\u003cb\u003eNote:\u003c/b\u003e Previously, this field could be used to identify an existing row. But European article numbers are no longer unique in Viskan,\nso it\u0027s not advisable to use this as en identifier anymore. Please refer to using priceLookUpNumber instead.\n\u003c/p\u003e",
            "type": "string"
          },
          "height": {
            "readOnly": false,
            "description": "The height of this unit in millimeters.",
            "type": "number",
            "example": 12345
          },
          "length": {
            "readOnly": false,
            "description": "The length of this unit in millimeters.",
            "type": "number",
            "example": 12345
          },
          "priceLookUpNumber": {
            "example": "12345ABCD",
            "readOnly": false,
            "description": "The price lookup unit number. Can be used to identify an existing row.",
            "type": "string"
          },
          "priceLookupUnitNumber": {
            "example": "12345ABCD",
            "readOnly": false,
            "description": "The price lookup unit number. Can be used to identify an existing row.\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e priceLookupUnitNumber is not used due to incorrect field name.\u003c/p\u003e",
            "type": "string"
          },
          "propertiesToAddOrUpdate": {
            "readOnly": false,
            "description": "Contains properties to add to the stock keeping unit. Mutually exclusive with \u003ccode\u003epropertiesToReplace\u003c/code\u003e.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyToAddOrUpdate"
            }
          },
          "propertiesToReplace": {
            "readOnly": false,
            "description": "Contains changes to apply for properties of this stock keeping unit. This will replace any existing connections. An empty list will remove all connections. Mutually exclusive with \u003ccode\u003epropertiesToAddOrUpdate\u003c/code\u003e.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyToReplace"
            }
          },
          "publishDate": {
            "example": "2024-06-01",
            "readOnly": false,
            "description": "Changes to the publish date for this stock keeping unit.",
            "type": "string",
            "format": "date"
          },
          "stockBalances": {
            "readOnly": false,
            "description": "Changes to stock balances",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitStockBalancesChanges"
            }
          },
          "suppliers": {
            "readOnly": false,
            "description": "Changes to suppliers",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockKeepingUnitSupplierChanges"
            }
          },
          "volume": {
            "readOnly": false,
            "description": "The volume of this unit in cubic millimeters.\u003cbr\u003e\nNOTE! If not provided (and if possible) this value will be calculated",
            "type": "number",
            "example": 12345
          },
          "weight": {
            "readOnly": false,
            "description": "The weight of this unit in grams.",
            "type": "number",
            "example": 12345
          },
          "width": {
            "readOnly": false,
            "description": "The width of this unit in millimeters.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Contains changes that applies to a product variant."
      },
      "StockKeepingUnitTranslation": {
        "type": "object",
        "title": "StockKeepingUnitTranslation",
        "properties": {
          "attribute1Code": {
            "example": "Crimson",
            "readOnly": false,
            "description": "The translated attribute 1 code of the stock keeping unit.",
            "type": "string"
          },
          "attribute1Tag": {
            "example": "Red",
            "readOnly": false,
            "description": "The translated attribute 1 tag of the stock keeping unit used for grouping.",
            "type": "string"
          },
          "attribute2Code": {
            "example": "XL",
            "readOnly": false,
            "description": "The translated attribute 2 code of the stock keeping unit.",
            "type": "string"
          },
          "attribute2Tag": {
            "example": "Mens sizes",
            "readOnly": false,
            "description": "The translated attribute 2 tag of the stock keeping unit used for grouping.",
            "type": "string"
          },
          "attribute3Code": {
            "example": "33",
            "readOnly": false,
            "description": "The translated attribute 3 code of the stock keeping unit.",
            "type": "string"
          },
          "attribute3Tag": {
            "example": "A",
            "readOnly": false,
            "description": "The translated attribute 3 tag of the stock keeping unit used for grouping.",
            "type": "string"
          },
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          }
        },
        "description": "Defines a translation of a stock keeping unit in a specific language."
      },
      "StockState": {
        "type": "string",
        "title": "StockState",
        "enum": [
          "OUT_OF_STOCK",
          "FEW_LEFT",
          "IN_STOCK"
        ],
        "description": ""
      },
      "Store": {
        "type": "object",
        "title": "Store",
        "required": [
          "storeId"
        ],
        "properties": {
          "storeId": {
            "example": 123,
            "readOnly": false,
            "description": "The id of the store.",
            "type": "integer",
            "format": "int32"
          },
          "storeNumber": {
            "example": "ABC123",
            "readOnly": false,
            "description": "The number assigned to the store.",
            "type": "string"
          }
        },
        "description": "A marketplace where the offer is made available"
      },
      "MyPagesStore": {
        "type": "object",
        "title": "Store",
        "required": [
          "storeId"
        ],
        "properties": {
          "storeId": {
            "readOnly": false,
            "description": "The internal identifier of the store.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "storeName": {
            "readOnly": false,
            "description": "The name of the store.",
            "type": "string",
            "example": "..."
          },
          "storeNumber": {
            "readOnly": false,
            "description": "The external number of the store.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A store represents a physical store.\n\u003cp\u003e\nCould be favorite-store or store where the order was purchased from, for example"
      },
      "StoreSetting": {
        "type": "object",
        "title": "StoreSetting",
        "required": [
          "secret"
        ],
        "properties": {
          "groupTag": {
            "example": "colors",
            "readOnly": false,
            "description": "The tag of the group of the setting. Useful for only loading a subset of settings.",
            "type": "string"
          },
          "secret": {
            "example": true,
            "readOnly": false,
            "description": "Whether the setting value is classified, must be handled in a secure way and never be exposed to the public",
            "type": "boolean"
          },
          "settingKey": {
            "example": "mainFontColor",
            "readOnly": false,
            "description": "The key of the setting.",
            "type": "string"
          },
          "settingValue": {
            "example": "FF0000",
            "readOnly": false,
            "description": "The value of the setting.",
            "type": "string"
          }
        },
        "description": "Holds a single setting for a web store. A setting can be anything from external tokens (such as the Google Analytics token) to simple styling\nsettings (such as font names or colors)."
      },
      "StreamlineExpressRequest": {
        "type": "object",
        "title": "StreamlineExpressRequest",
        "required": [
          "interval"
        ],
        "properties": {
          "additionalOrderText": {
            "readOnly": false,
            "description": "The Additional order text on the purchase.",
            "type": "string",
            "example": "..."
          },
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "The alternative email address of the customer.",
            "type": "string",
            "example": "..."
          },
          "applicableIntegrities": {
            "readOnly": false,
            "description": "Defines integrities that the consumer has accepted.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "campaignCode": {
            "readOnly": false,
            "description": "The campaign to use for the purchase.",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "readOnly": false,
            "description": "The cellphone number of the customer.",
            "type": "string",
            "example": "..."
          },
          "companyName": {
            "readOnly": false,
            "description": "The company name of the customer. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e, \u003ccode\u003elastName\u003c/code\u003e and \u003ccode\u003esocialSecurityNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the customer, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "customFields": {
            "readOnly": false,
            "description": "Custom fields.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            }
          },
          "customerNumber": {
            "readOnly": false,
            "description": "The customer number of an existing customer. The order/subscription will be connected to the specified customer. Name, address and contact\ndetails will be updated.",
            "type": "string",
            "example": "..."
          },
          "dateOfBirth": {
            "readOnly": false,
            "description": "Date of birth of the customer.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "deliveryMethodCode": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003edeliveryMethodName\u003c/code\u003e",
            "type": "string"
          },
          "deliveryMethodName": {
            "readOnly": false,
            "description": "The name of the delivery method.",
            "type": "string",
            "example": "..."
          },
          "deniedIntegrities": {
            "readOnly": false,
            "description": "Defines integrities that the consumer has opted out from.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "email": {
            "readOnly": false,
            "description": "The email address of the customer.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "The first name of the customer. Mutually exclusive with \u0027companyName\u0027.",
            "type": "string",
            "example": "..."
          },
          "gender": {
            "$ref": "#/components/schemas/Sex"
          },
          "interval": {
            "readOnly": false,
            "description": "The interval of the subscription.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "invoiceAddress": {
            "readOnly": false,
            "description": "The invoice address.",
            "type": "string",
            "example": "..."
          },
          "invoiceAddressDescription": {
            "readOnly": false,
            "description": "The description of the invoice address.",
            "type": "string",
            "example": "..."
          },
          "invoiceAdministrativeDivision": {
            "readOnly": false,
            "description": "The administrative division of the address, such as province, state, municipality or county",
            "type": "string",
            "example": "..."
          },
          "invoiceCity": {
            "readOnly": false,
            "description": "The city of the invoice address.",
            "type": "string",
            "example": "..."
          },
          "invoiceZipcode": {
            "readOnly": false,
            "description": "The zipcode of the invoice address.",
            "type": "string",
            "example": "..."
          },
          "landline": {
            "readOnly": false,
            "description": "The landline phone number of the customer.",
            "type": "string",
            "example": "..."
          },
          "languageCode": {
            "$ref": "#/components/schemas/Language_commons"
          },
          "lastName": {
            "readOnly": false,
            "description": "The last name of the customer. Mutually exclusive with \u0027companyName\u0027.",
            "type": "string",
            "example": "..."
          },
          "marketingCampaignCode": {
            "readOnly": false,
            "description": "The marketing campaign to use for the purchase",
            "type": "string",
            "example": "..."
          },
          "methodOfArrivalNumber": {
            "readOnly": false,
            "description": "The number of the method of arrival (or \"channel\").",
            "type": "string",
            "example": "..."
          },
          "nextDeliveryDate": {
            "readOnly": false,
            "description": "For orders: earliest delivery date. For subscriptions: suggested next delivery date. Defaulted to today\u0027s date.",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "notes": {
            "readOnly": false,
            "description": "A free text that will be stored in the order\u0027s/subscription\u0027s list of notes.",
            "type": "string",
            "example": "..."
          },
          "orderDate": {
            "readOnly": false,
            "description": "For orders: the order date. For subscription: the starting date. Defaulted to nextDeliveryDate if specified, otherwise today\u0027s date",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "The organization number of the customer. Mutually exclusive with \u003ccode\u003efirstName\u003c/code\u003e, \u003ccode\u003elastName\u003c/code\u003e and\n\u003ccode\u003esocialSecurityNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "page": {
            "readOnly": false,
            "description": "The Streamline Express page to use.",
            "type": "string",
            "example": "..."
          },
          "paymentMethodCode": {
            "readOnly": false,
            "description": "Deprecated in favor of \u003ccode\u003epaymentMethodName\u003c/code\u003e",
            "type": "string"
          },
          "paymentMethodName": {
            "readOnly": false,
            "description": "The name of the payment method.",
            "type": "string",
            "example": "..."
          },
          "remoteAddress": {
            "readOnly": false,
            "description": "The remote client address.",
            "type": "string",
            "example": "..."
          },
          "sellerDepartment": {
            "readOnly": false,
            "description": "For sales handled by third parties, typically TM call centers - the department that the seller belongs to. The order/subscription\u0027s createdBy field will\nbe updated with the department (and sellerPerson)",
            "type": "string",
            "example": "..."
          },
          "sellerNumber": {
            "readOnly": false,
            "description": "The number of the seller to use.",
            "type": "string",
            "example": "..."
          },
          "sellerPerson": {
            "readOnly": false,
            "description": "For sales handled by third parties, typically TM call centers - the name/identifier of the seller person. The order/subscription\u0027s createdBy field will\nbe updated with the seller (and sellerDepartment)",
            "type": "string",
            "example": "..."
          },
          "socialSecurityNumber": {
            "readOnly": false,
            "description": "The social security number of the customer. Mutually exclusive with \u003ccode\u003ecompanyName\u003c/code\u003e and \u003ccode\u003eorganizationNumber\u003c/code\u003e.",
            "type": "string",
            "example": "..."
          },
          "startDate": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "format": "date"
          },
          "termsOfDeliveryCode": {
            "readOnly": false,
            "description": "The code of the terms of delivery.",
            "type": "string",
            "example": "..."
          },
          "termsOfPaymentCode": {
            "readOnly": false,
            "description": "The code of the terms of payment.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Defines a request to the Streamline Express service. This information contains the page to use together with optional overrides (such as payment\nmethod to use) in addition to the customer information that should be used when creating the purchase."
      },
      "StreamlineExpressResponse": {
        "type": "object",
        "title": "StreamlineExpressResponse",
        "properties": {
          "charge": {
            "readOnly": false,
            "description": "The charge fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country of the customer, in ISO alpha-2 format, for example \u003ccode\u003eSE\u003c/code\u003e.",
            "type": "string"
          },
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The currency code (ISO 4217).",
            "type": "string"
          },
          "discount": {
            "readOnly": false,
            "description": "The discount value of the purchase.",
            "type": "number",
            "example": 12345
          },
          "paymentFee": {
            "readOnly": false,
            "description": "The payment fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "purchaseNumber": {
            "readOnly": false,
            "description": "The number of the generated purchase.",
            "type": "string",
            "example": "..."
          },
          "shippingFee": {
            "readOnly": false,
            "description": "The shipping fee of the purchase.",
            "type": "number",
            "example": 12345
          },
          "totalValue": {
            "readOnly": false,
            "description": "The total value of the purchase.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines a response from the Streamline Express service."
      },
      "MyPagesWishlistIdResponse": {
        "type": "object",
        "title": "String",
        "properties": {
          "wishlistId": {
            "example": "1797a278-fc75-48f9-b814-bb674d64abbb",
            "readOnly": false,
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist.",
            "type": "string"
          }
        },
        "description": "Response object for the ID of a wishlist."
      },
      "MyPagesWishlistNameRequest": {
        "type": "object",
        "title": "String",
        "properties": {
          "name": {
            "example": "New Name",
            "readOnly": false,
            "description": "The new name for the wishlist.",
            "type": "string"
          }
        },
        "description": "Request object for updating the name of a wishlist."
      },
      "SubProduct": {
        "type": "object",
        "title": "SubProduct",
        "properties": {
          "productNumber": {
            "example": "1234PRODUCT",
            "readOnly": false,
            "description": "The product number of the sub product",
            "type": "string"
          }
        },
        "description": "A product to be added to a package, the sub-product must already exist in the system."
      },
      "SubmitParameter": {
        "type": "object",
        "title": "SubmitParameter",
        "properties": {
          "key": {
            "readOnly": false,
            "description": "The parameter key.",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "The parameter value.",
            "type": "object",
            "example": {}
          }
        },
        "description": "Represents a submit parameter. It is a simple key/value pair that is retrieved n the result when creating new purchases."
      },
      "Subscription": {
        "type": "object",
        "title": "Subscription",
        "required": [
          "active",
          "deliveries",
          "interval",
          "subscriptionId",
          "totalHoldbacks"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "",
            "type": "boolean"
          },
          "arrivalMethod": {
            "$ref": "#/components/schemas/ArrivalMethod"
          },
          "campaign": {
            "$ref": "#/components/schemas/Campaign"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/CancellationReason"
          },
          "customFields": {
            "readOnly": false,
            "description": "The custom fields of the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField_OrderAPI"
            }
          },
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "deliveries": {
            "example": 2,
            "readOnly": false,
            "description": "The number of deliveries of this subscription.",
            "type": "integer",
            "format": "int32"
          },
          "endDate": {
            "example": "2022-02-02",
            "readOnly": false,
            "description": "The end date of the subscription.",
            "type": "string",
            "format": "date"
          },
          "interval": {
            "example": 30,
            "readOnly": false,
            "description": "The interval used for this subscription.",
            "type": "integer",
            "format": "int32"
          },
          "latestHoldback": {
            "example": "2020-06-01",
            "readOnly": false,
            "description": "The date of the latest holdback.",
            "type": "string",
            "format": "date"
          },
          "modifiedAt": {
            "example": "2023-05-08T14:28:04.120+02:00",
            "readOnly": false,
            "description": "The last changed date of the subscription.",
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "example": "Vitamin D Pills Subscription",
            "readOnly": false,
            "description": "The name of the subscription.",
            "type": "string"
          },
          "nextDeliveryDate": {
            "example": "2020-06-02",
            "readOnly": false,
            "description": "The next planned delivery of the subscription.",
            "type": "string",
            "format": "date"
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PaymentMethod_SubscriptionAPI"
          },
          "previousDelivery": {
            "$ref": "#/components/schemas/PreviousDelivery"
          },
          "previousDeliveryDate": {
            "readOnly": false,
            "description": "\u003cp\u003eThe previous delivery date.\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Use previousDelivery instead. \u003c/p\u003e",
            "type": "string",
            "format": "date"
          },
          "priceList": {
            "example": "Golden Prices",
            "readOnly": false,
            "description": "The price list of this subscription.",
            "type": "string"
          },
          "purchaseNumber": {
            "example": "34D5JZJ",
            "readOnly": false,
            "description": "The active status of the subscription.",
            "type": "string"
          },
          "startDate": {
            "example": "2020-02-02",
            "readOnly": false,
            "description": "The start date of the subscription.",
            "type": "string",
            "format": "date"
          },
          "subscriptionId": {
            "example": 123456,
            "readOnly": false,
            "description": "The unique ID of the subscription.",
            "type": "integer",
            "format": "int64"
          },
          "subscriptionRows": {
            "readOnly": false,
            "description": "The rows of the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRows"
            }
          },
          "totalHoldbacks": {
            "example": 2,
            "readOnly": false,
            "description": "The total number of holdbacks.",
            "type": "integer",
            "format": "int32"
          },
          "upcomingDeliveries": {
            "readOnly": false,
            "description": "The upcoming deliveries of the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpcomingDeliveries"
            }
          }
        },
        "description": "Subscription information."
      },
      "MyPagesSubscription": {
        "type": "object",
        "title": "Subscription",
        "required": [
          "active",
          "minimumNumberOfDeliveries",
          "modifiable",
          "shipmentInProgress",
          "subscriptionId"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "If this subscription is active or not",
            "type": "boolean",
            "example": true
          },
          "cancellationEligibility": {
            "$ref": "#/components/schemas/CancellationEligibility"
          },
          "deactivateAfterNextDelivery": {
            "readOnly": false,
            "description": "If this subscription is going to be deactivated after the next delivery.",
            "type": "boolean",
            "example": true
          },
          "deliveryCount": {
            "readOnly": false,
            "description": "The number of deliveries that have been done",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryEveryNth": {
            "$ref": "#/components/schemas/DeliveryEveryNth"
          },
          "estimatedNextDelivery": {
            "readOnly": false,
            "description": "The estimated next delivery of the subscription if any",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "interval": {
            "readOnly": false,
            "description": "The delivery interval of the subscription, in days.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "latestChangeDate": {
            "readOnly": false,
            "description": "The latest date for changes before changes done to the subscription affects the next delivery",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "minimumNumberOfDeliveries": {
            "readOnly": false,
            "description": "Minimum number of deliveries before customer can cancel the subscription",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "modifiable": {
            "readOnly": false,
            "description": "If the user is currently permitted to make edits to this subscription.",
            "type": "boolean",
            "example": true
          },
          "numberOfProductsPerDelivery": {
            "readOnly": false,
            "description": "Specifies how many products are required per delivery. Only applicable for period based subscriptions. Zero means that the there are no\nlimitations.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "shipmentInProgress": {
            "readOnly": false,
            "description": "If a physical shipment is actively being processed by the warehouse.",
            "type": "boolean",
            "example": true
          },
          "subscriptionId": {
            "readOnly": false,
            "description": "The identifier for the subscription",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionName": {
            "readOnly": false,
            "description": "The name of the subscription",
            "type": "string",
            "example": "..."
          },
          "subscriptionType": {
            "$ref": "#/components/schemas/SubscriptionType"
          },
          "subscriptionTypeId": {
            "readOnly": false,
            "description": "The identifier of the subscription template used for this subscription",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Defines a subscription.\n\u003cp\u003e\nOne customer can have multiple subscriptions and a subscription can potentially have several rows.\n\u003c/p\u003e"
      },
      "Subscription_CustomerAPI": {
        "type": "object",
        "title": "Subscription",
        "required": [
          "active",
          "deliveries",
          "interval",
          "subscriptionId",
          "totalHoldbacks"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "The active status of the subscription.",
            "type": "boolean"
          },
          "arrivalMethod": {
            "$ref": "#/components/schemas/ArrivalMethod_CustomerAPI"
          },
          "campaign": {
            "$ref": "#/components/schemas/Campaign"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/CancellationReason_CustomerAPI"
          },
          "customFields": {
            "readOnly": false,
            "description": "The custom fields of the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField_OrderAPI"
            }
          },
          "deliveries": {
            "example": 2,
            "readOnly": false,
            "description": "The number of deliveries of this subscription.",
            "type": "integer",
            "format": "int32"
          },
          "endDate": {
            "example": "2022-02-03",
            "readOnly": false,
            "description": "The end date of the subscription.",
            "type": "string",
            "format": "date"
          },
          "interval": {
            "example": 30,
            "readOnly": false,
            "description": "The interval used for this subscription.",
            "type": "integer",
            "format": "int32"
          },
          "latestHoldback": {
            "example": "2020-06-01",
            "readOnly": false,
            "description": "The date of the latest holdback.",
            "type": "string",
            "format": "date"
          },
          "modifiedAt": {
            "example": "2023-05-08T14:28:04.120+02:00",
            "readOnly": false,
            "description": "The last changed date of the subscription.",
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "example": "Vitamin D Pills Subscription",
            "readOnly": false,
            "description": "The name of the subscription.",
            "type": "string"
          },
          "nextDeliveryDate": {
            "example": "2020-06-02",
            "readOnly": false,
            "description": "The next planned delivery of the subscription.",
            "type": "string",
            "format": "date"
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/PaymentMethod_CustomerAPI"
          },
          "previousDelivery": {
            "$ref": "#/components/schemas/PreviousDelivery"
          },
          "priceList": {
            "example": "Golden Prices",
            "readOnly": false,
            "description": "The price list of this subscription.",
            "type": "string"
          },
          "startDate": {
            "example": "2020-02-02",
            "readOnly": false,
            "description": "The start date of the subscription.",
            "type": "string",
            "format": "date"
          },
          "subscriptionId": {
            "example": 123650,
            "readOnly": false,
            "description": "The unique ID of the subscription.",
            "type": "integer",
            "format": "int64"
          },
          "totalHoldbacks": {
            "example": 2,
            "readOnly": false,
            "description": "The total number of holdbacks.",
            "type": "integer",
            "format": "int32"
          },
          "upcomingDeliveries": {
            "readOnly": false,
            "description": "The upcoming deliveries of the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpcomingDeliveries"
            }
          }
        },
        "description": "Subscription information."
      },
      "SubscriptionDeliveryProduct": {
        "type": "object",
        "title": "SubscriptionDeliveryProduct",
        "required": [
          "discountAmountExcludingTax",
          "discountAmountIncludingTax",
          "discountPercentage",
          "priceExcludingTax",
          "priceIncludingTax",
          "productId",
          "quantity",
          "quantityMax",
          "sendOnlyWithDeliveryX",
          "stockKeepingUnitId",
          "subscriptionRowId"
        ],
        "properties": {
          "additionalProduct": {
            "example": false,
            "readOnly": false,
            "description": "Whether the stock keeping unit has been added additionally.",
            "type": "boolean"
          },
          "attribute1Code": {
            "readOnly": false,
            "description": "The code of the first attribute of the product.",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "The code of the second attribute of the product.",
            "type": "string",
            "example": "..."
          },
          "attribute3Code": {
            "readOnly": false,
            "description": "The code of the third attribute of the product.",
            "type": "string",
            "example": "..."
          },
          "discountAmountExcludingTax": {
            "example": 4,
            "readOnly": false,
            "description": "The discount (excluding taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "discountAmountIncludingTax": {
            "example": 5,
            "readOnly": false,
            "description": "The discount (including taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "discountPercentage": {
            "example": 0.1,
            "readOnly": false,
            "description": "The discount percentage (decimal 0-1) specified to be used on the upcoming delivery. This is NOT discount / price ratio!",
            "type": "number",
            "format": "double"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceExcludingTax": {
            "example": 8,
            "readOnly": false,
            "description": "The price (excluding taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "priceIncludingTax": {
            "example": 10,
            "readOnly": false,
            "description": "The price (including taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price look up number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "productId": {
            "readOnly": false,
            "description": "The internal identifier of the product (all variants).",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "The quantity that is going to be delivered.",
            "type": "integer",
            "format": "int32"
          },
          "quantityMax": {
            "example": 3,
            "readOnly": false,
            "description": "How many products can be shipped in total for this row.\nIf the subscription is cyclical the quantity count is reset on the next cycle and the max quantity can once again be shipped.\nA value of 0 means it\u0027s infinite.",
            "type": "integer",
            "format": "int32"
          },
          "sendOnlyWithDeliveryX": {
            "example": 3,
            "readOnly": false,
            "description": "If specified the given row will only be delivered on delivery number X.",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The unique internal identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "templateProduct": {
            "example": true,
            "readOnly": false,
            "description": "Whether the stock keeping unit is default on the subscription template.",
            "type": "boolean"
          }
        },
        "description": "Subscription delivery product"
      },
      "MyPagesSubscriptionDetails": {
        "type": "object",
        "title": "SubscriptionDetails",
        "required": [
          "active",
          "minimumNumberOfDeliveries",
          "modifiable",
          "productId",
          "shipmentInProgress",
          "subscriptionId"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "If this subscription is active or not",
            "type": "boolean",
            "example": true
          },
          "cancellationEligibility": {
            "$ref": "#/components/schemas/CancellationEligibility"
          },
          "deactivateAfterNextDelivery": {
            "readOnly": false,
            "description": "If this subscription is going to be deactivated after the next delivery.",
            "type": "boolean",
            "example": true
          },
          "deliveryCount": {
            "readOnly": false,
            "description": "The number of deliveries that have been done",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "deliveryEveryNth": {
            "$ref": "#/components/schemas/DeliveryEveryNth"
          },
          "discountNextDelivery": {
            "readOnly": false,
            "description": "The discount on next delivery for the subscription. Does not include the discounts on the rows.",
            "type": "number",
            "example": 12345
          },
          "estimatedNextDelivery": {
            "readOnly": false,
            "description": "The estimated next delivery of the subscription if any",
            "type": "string",
            "format": "date",
            "example": "..."
          },
          "interval": {
            "readOnly": false,
            "description": "The delivery interval of the subscription, in days.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "latestChangeDate": {
            "readOnly": false,
            "description": "The latest date for changes before changes done to the subscription affects the next delivery",
            "type": "string",
            "format": "date-time",
            "example": "..."
          },
          "minimumNumberOfDeliveries": {
            "readOnly": false,
            "description": "Minimum number of deliveries before customer can cancel the subscription",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "modifiable": {
            "readOnly": false,
            "description": "If the user is currently permitted to make edits to this subscription.",
            "type": "boolean",
            "example": true
          },
          "numberOfProductsPerDelivery": {
            "readOnly": false,
            "description": "Specifies how many products are required per delivery. Only applicable for period based subscriptions. Zero means that the there are no\nlimitations.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "The internal identifier for the subscription product. \u003c/br\u003e\nThe subscription product is optional and represents the core product to which the customer is subscribing. \u003c/br\u003e\nHowever, the subscription may contain additional secondary products.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "The product name of the subscription product",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "The product number of the subscription product",
            "type": "string",
            "example": "..."
          },
          "rows": {
            "readOnly": false,
            "description": "The rows of the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPagesSubscriptionRow"
            }
          },
          "shipmentInProgress": {
            "readOnly": false,
            "description": "If a physical shipment is actively being processed by the warehouse.",
            "type": "boolean",
            "example": true
          },
          "shippingFee": {
            "readOnly": false,
            "description": "The shipping fee for the subscription.",
            "type": "number",
            "example": 12345
          },
          "shippingOption": {
            "$ref": "#/components/schemas/ShippingOption_v2"
          },
          "subscriptionId": {
            "readOnly": false,
            "description": "The identifier for the subscription",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionName": {
            "readOnly": false,
            "description": "The name of the subscription",
            "type": "string",
            "example": "..."
          },
          "subscriptionType": {
            "$ref": "#/components/schemas/SubscriptionType"
          },
          "subscriptionTypeId": {
            "readOnly": false,
            "description": "The identifier of the subscription template used for this subscription",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "upcomingDiscounts": {
            "readOnly": false,
            "description": "A list of upcoming discounts.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionUpcomingDiscount"
            }
          },
          "useAttribute1": {
            "$ref": "#/components/schemas/UseAttributeX"
          },
          "useAttribute2": {
            "$ref": "#/components/schemas/UseAttributeX"
          },
          "useAttribute3": {
            "$ref": "#/components/schemas/UseAttributeX"
          },
          "validQuantities": {
            "readOnly": false,
            "description": "Valid quantities for the subscription\u0027s product. These represent the allowed purchase amounts. \u003c/br\u003e\nIf a subscription template includes a main product, defining at least one valid quantity is mandatory.",
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              12345,
              12345
            ]
          }
        },
        "description": "Defines a subscription.\n\u003cp\u003e\nOne customer can have multiple subscriptions and a subscription can potentially have several rows.\n\u003c/p\u003e"
      },
      "SubscriptionInformation_OrderAPI": {
        "type": "object",
        "title": "SubscriptionInformation",
        "required": [
          "deliveryCount",
          "subscriptionId"
        ],
        "properties": {
          "deliveryCount": {
            "readOnly": false,
            "description": "The number of deliveries of the subscription.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "description": {
            "example": "",
            "readOnly": false,
            "description": "The description of the subscription.",
            "type": "string"
          },
          "offerCodes": {
            "example": [
              "",
              "..."
            ],
            "readOnly": false,
            "description": "The offer codes used (if any)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subscriptionId": {
            "example": 123650,
            "readOnly": false,
            "description": "The unique number of the subscription.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Contains subscription information for a order."
      },
      "SubscriptionInformation": {
        "type": "object",
        "title": "SubscriptionInformation",
        "required": [
          "subscriptionTypeId"
        ],
        "properties": {
          "campaignName": {
            "readOnly": false,
            "description": "The name of the campaign that was used when the subscription was created.",
            "type": "string",
            "example": "..."
          },
          "deliveriesSent": {
            "readOnly": false,
            "description": "The number of deliveries sent for this subscription.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "lastChangeDate": {
            "readOnly": false,
            "description": "The last date for changing the subscription.",
            "type": "string",
            "example": "..."
          },
          "nextDeliveryDate": {
            "readOnly": false,
            "description": "The next delivery date.",
            "type": "string",
            "example": "..."
          },
          "subscriptionTypeCode": {
            "readOnly": false,
            "description": "The code of the subscription type.",
            "type": "string",
            "example": "..."
          },
          "subscriptionTypeId": {
            "readOnly": false,
            "description": "The internal identifier of the subscription type.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds information about the subscription if the underlying order was created via one."
      },
      "SubscriptionResult": {
        "type": "object",
        "title": "SubscriptionResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The subscriptions in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Subscription_CustomerAPI"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of subscriptions."
      },
      "SubscriptionResult_SubscriptionAPI": {
        "type": "object",
        "title": "SubscriptionResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The subscriptions in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Subscription"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of subscriptions."
      },
      "MyPagesSubscriptionRow": {
        "type": "object",
        "title": "SubscriptionRow",
        "required": [
          "active",
          "fullyDelivered",
          "manuallyAdded",
          "priority",
          "quantity",
          "sendDeliveryEveryNth",
          "sendOnlyWithDeliveryX",
          "shipsIndefinitely",
          "stockKeepingUnitId",
          "subscriptionRowId"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "Shows if the row has been fully delivered. An inactive row won\u0027t be sent until activated again",
            "type": "boolean",
            "example": true
          },
          "attribute1Code": {
            "readOnly": false,
            "description": "The attribute1 code of the product",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "The attribute2 code of the product",
            "type": "string",
            "example": "..."
          },
          "attribute3Code": {
            "readOnly": false,
            "description": "The attribute3 code of the product",
            "type": "string",
            "example": "..."
          },
          "discount": {
            "readOnly": false,
            "description": "The discount in monetary value of this row",
            "type": "number",
            "example": 12345
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "fullyDelivered": {
            "readOnly": false,
            "description": "Shows if the row has been fully delivered. A fully delivered row wont be sent again",
            "type": "boolean",
            "example": true
          },
          "manuallyAdded": {
            "readOnly": false,
            "description": "If the product has been added manually. (Specific for one time items in period based subscriptions)",
            "type": "boolean",
            "example": true
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup unit number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priority": {
            "readOnly": false,
            "description": "Shows the priority of the row. The group with the lowest priority will be sent on the next delivery",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "The internal product identifier",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productName": {
            "readOnly": false,
            "description": "The product name",
            "type": "string",
            "example": "..."
          },
          "productNumber": {
            "readOnly": false,
            "description": "The product number",
            "type": "string",
            "example": "..."
          },
          "productType": {
            "$ref": "#/components/schemas/ArticleType"
          },
          "quantity": {
            "readOnly": false,
            "description": "The number of items of this row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sendDeliveryEveryNth": {
            "readOnly": false,
            "description": "Defines how often the customer wants to get deliveries.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sendOnlyWithDeliveryX": {
            "readOnly": false,
            "description": "Specifies if the product should be restricted to a particular delivery. If 0 include the product in all deliveries. \u003c/br\u003e\nIf set to a value greater than 0, the product is included only in the delivery matching the specified value.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "shipsIndefinitely": {
            "readOnly": false,
            "description": "Indicates whether products should be shipped indefinitely.",
            "type": "boolean",
            "example": true
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit ID of the product.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The identifier of the subscription row",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "totalDiscount": {
            "readOnly": false,
            "description": "The total discount of a row",
            "type": "number",
            "example": 12345
          },
          "totalSum": {
            "readOnly": false,
            "description": "The total sum of a row",
            "type": "number",
            "example": 12345
          },
          "unitPrice": {
            "readOnly": false,
            "description": "The unit price of this row.",
            "type": "number",
            "example": 12345
          }
        },
        "description": "Defines a subscription row"
      },
      "SubscriptionRowAddedOrUpdatedResultRow": {
        "type": "object",
        "title": "SubscriptionRowAddedOrUpdatedResultRow",
        "required": [
          "subscriptionRowId"
        ],
        "properties": {
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The internal identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds details about a created or updated subscriptions."
      },
      "SubscriptionRowProduct": {
        "type": "object",
        "title": "SubscriptionRowProduct",
        "required": [
          "discountAmountExcludingTax",
          "discountAmountIncludingTax",
          "discountPercentage",
          "priceExcludingTax",
          "priceIncludingTax",
          "productId",
          "quantity",
          "quantityMax",
          "sendOnlyWithDeliveryX",
          "stockKeepingUnitId",
          "subscriptionRowId"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "Whether row is active.",
            "type": "boolean"
          },
          "attribute1Code": {
            "readOnly": false,
            "description": "The code of the first attribute of the product.",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "The code of the second attribute of the product.",
            "type": "string",
            "example": "..."
          },
          "attribute3Code": {
            "readOnly": false,
            "description": "The code of the third attribute of the product.",
            "type": "string",
            "example": "..."
          },
          "discountAmountExcludingTax": {
            "example": 4,
            "readOnly": false,
            "description": "The discount (excluding taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "discountAmountIncludingTax": {
            "example": 5,
            "readOnly": false,
            "description": "The discount (including taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "discountPercentage": {
            "example": 0.1,
            "readOnly": false,
            "description": "The discount percentage (decimal 0-1) specified to be used on the upcoming delivery. This is NOT discount / price ratio!",
            "type": "number",
            "format": "double"
          },
          "europeanArticleNumber": {
            "readOnly": false,
            "description": "The European article number (EAN13) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "fullyDelivered": {
            "example": false,
            "readOnly": false,
            "description": "Whether the row is fully delivered.",
            "type": "boolean"
          },
          "priceExcludingTax": {
            "example": 8,
            "readOnly": false,
            "description": "The price (excluding taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "priceIncludingTax": {
            "example": 10,
            "readOnly": false,
            "description": "The price (including taxes) of the upcoming delivery.",
            "type": "number",
            "format": "double"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price look up number (PLUNO) of the stock keeping unit.",
            "type": "string",
            "example": "..."
          },
          "priceLookupNumber": {
            "readOnly": false,
            "description": "\u003cp\u003eThe price lookup unit number (PLUNO) of the stock keeping unit. \u003c/p\u003e\n\u003cp\u003e\u003cb\u003eDeprecated:\u003c/b\u003e Deprecated due to incorrect field name. Use priceLookUpNumber instead \u003c/p\u003e",
            "type": "string"
          },
          "productId": {
            "readOnly": false,
            "description": "The internal identifier of the product (all variants).",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "The quantity that is going to be delivered.",
            "type": "integer",
            "format": "int32"
          },
          "quantityMax": {
            "example": 3,
            "readOnly": false,
            "description": "How many products can be shipped in total for this row.\nIf the subscription is cyclical the quantity count is reset on the next cycle and the max quantity can once again be shipped.\nA value of 0 means it\u0027s infinite.",
            "type": "integer",
            "format": "int32"
          },
          "sendOnlyWithDeliveryX": {
            "example": 3,
            "readOnly": false,
            "description": "If specified the given row will only be delivered on delivery number X.",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The internal identifier of the stock keeping unit.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The unique internal identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Subscription row product"
      },
      "SubscriptionRowToAddOrUpdate": {
        "type": "object",
        "title": "SubscriptionRowToAddOrUpdate",
        "required": [
          "active",
          "discountAmountExcludingTax",
          "discountAmountIncludingTax",
          "discountPercentage",
          "priceExcludingTax",
          "priceIncludingTax",
          "priority",
          "quantity",
          "quantityMax",
          "sendOnlyWithDeliveryX",
          "taxRate"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "If the given row should be active.",
            "type": "boolean",
            "example": true
          },
          "attribute1Code": {
            "readOnly": false,
            "description": "The attribute code of the first attribute for the product to be added on the new row.",
            "type": "string",
            "example": "..."
          },
          "attribute2Code": {
            "readOnly": false,
            "description": "The attribute code of the second attribute for the product to be added on the new row.",
            "type": "string",
            "example": "..."
          },
          "attribute3Code": {
            "readOnly": false,
            "description": "The attribute code of the third attribute for the product to be added on the new row.",
            "type": "string",
            "example": "..."
          },
          "discountAmountExcludingTax": {
            "example": 1,
            "readOnly": false,
            "description": "The discount (excluding tax) to be used for the given row (mutually exclusive with percentage).",
            "type": "number",
            "format": "double"
          },
          "discountAmountIncludingTax": {
            "example": 1.25,
            "readOnly": false,
            "description": "The discount (including tax) to be used for the given row (mutually exclusive with percentage).",
            "type": "number",
            "format": "double"
          },
          "discountPercentage": {
            "example": 0.1,
            "readOnly": false,
            "description": "The discount percentage to be used for the given row (mutually exclusive with amount).",
            "type": "number",
            "format": "double"
          },
          "priceExcludingTax": {
            "example": 100,
            "readOnly": false,
            "description": "The price (excluding tax) to be used for the given row. Only applicable if the subscription is for a country with external tax service provider.",
            "type": "number",
            "format": "double"
          },
          "priceIncludingTax": {
            "example": 125,
            "readOnly": false,
            "description": "The price (including tax) to be used for the given row.",
            "type": "number",
            "format": "double"
          },
          "priceLookUpNumber": {
            "readOnly": false,
            "description": "The price lookup number of the product to be added on the new row.",
            "type": "string",
            "example": "..."
          },
          "priority": {
            "readOnly": false,
            "description": "The priority of the row. This is the order in which the products are shipped out. Lower priority ships first. Same priority ships together.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "productId": {
            "readOnly": false,
            "description": "The product id of the product to be added on the new row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "quantity": {
            "example": 1,
            "readOnly": false,
            "description": "The quantity to be used for the given row.",
            "type": "integer",
            "format": "int32"
          },
          "quantityMax": {
            "example": 5,
            "readOnly": false,
            "description": "The max quantity to be used as the limit for the given row.",
            "type": "integer",
            "format": "int32"
          },
          "sendOnlyWithDeliveryX": {
            "readOnly": false,
            "description": "Here it can be specified if the new row only should be sent with a specific delivery.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "stockKeepingUnitId": {
            "readOnly": false,
            "description": "The stock keeping unit id of the product to be added on the new row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The id of the row to update (if this is not specified a new row will be added).",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The taxrate to be used for the given row. If not specified the taxrate gets taken from the price registered for the product used.",
            "type": "number",
            "format": "double"
          }
        },
        "description": "Contains a list of subscriptions rows to add or update."
      },
      "SubscriptionRowToAddOrUpdateResultRow": {
        "type": "object",
        "title": "SubscriptionRowToAddOrUpdateResultRow",
        "required": [
          "subscriptionRowId"
        ],
        "properties": {
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The internal identifier of the row.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds information about a created or updated subscriptions."
      },
      "SubscriptionRows": {
        "type": "object",
        "title": "SubscriptionRows",
        "properties": {
          "priority": {
            "example": 3,
            "readOnly": false,
            "description": "The priority of the row (rows with same priority gets delivered together, lowest priority first).",
            "type": "integer",
            "format": "int32"
          },
          "products": {
            "readOnly": false,
            "description": "The products of the upcoming delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowProduct"
            }
          }
        },
        "description": "Subscription rows"
      },
      "SubscriptionRowsAddedOrUpdatedResult": {
        "type": "object",
        "title": "SubscriptionRowsAddedOrUpdatedResult",
        "properties": {
          "created": {
            "readOnly": false,
            "description": "The list of created subscription rows.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowAddedOrUpdatedResultRow"
            }
          },
          "updated": {
            "readOnly": false,
            "description": "The list of updated subscription rows.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowAddedOrUpdatedResultRow"
            }
          }
        },
        "description": "Holds details about created and updated subscription rows."
      },
      "SubscriptionRowsToAddOrUpdate": {
        "type": "object",
        "title": "SubscriptionRowsToAddOrUpdate",
        "properties": {
          "subscriptionRowsToAddOrUpdate": {
            "readOnly": false,
            "description": "The customers to add or update.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowToAddOrUpdate"
            }
          }
        },
        "description": "Contains a list of subscriptions rows to add or update."
      },
      "SubscriptionRowsToAddOrUpdateResult": {
        "type": "object",
        "title": "SubscriptionRowsToAddOrUpdateResult",
        "properties": {
          "created": {
            "readOnly": false,
            "description": "The list of subscription rows that were created.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowToAddOrUpdateResultRow"
            }
          },
          "updated": {
            "readOnly": false,
            "description": "The list of subscription rows that were updated.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowToAddOrUpdateResultRow"
            }
          }
        },
        "description": "Holds information about created \u0026 updated subscription rows."
      },
      "SubscriptionRowsToUpdate": {
        "type": "object",
        "title": "SubscriptionRowsToUpdate",
        "required": [
          "quantity",
          "subscriptionRowId"
        ],
        "properties": {
          "active": {
            "example": true,
            "readOnly": false,
            "description": "Used to deactivate or reactivate a subscription row. (Also used for deleting a one time item in a period based subscription)",
            "type": "boolean"
          },
          "quantity": {
            "example": 123,
            "readOnly": false,
            "description": "Changes to the quantity (setting this to 0 will cancel the subscription row).",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "example": 513,
            "readOnly": false,
            "description": "The internal identifier of the replacement unit. Please note changing a stock keeping unit doesn\u0027t affect the prices of the row.",
            "type": "integer",
            "format": "int32"
          },
          "subscriptionRowId": {
            "readOnly": false,
            "description": "The identifier of the subscription row. This is mandatory.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Contains changes that applies to a subscription row."
      },
      "SubscriptionShipment": {
        "type": "object",
        "title": "SubscriptionShipment",
        "required": [
          "infinite",
          "interval",
          "shipmentNumber"
        ],
        "properties": {
          "infinite": {
            "readOnly": false,
            "description": "",
            "type": "boolean",
            "example": true
          },
          "interval": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "priceIncludingTax": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          },
          "products": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShipmentProduct"
            }
          },
          "shipmentNumber": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "shippingFee": {
            "readOnly": false,
            "description": "",
            "type": "number",
            "example": 12345
          }
        },
        "description": ""
      },
      "SubscriptionTemplate": {
        "type": "object",
        "title": "SubscriptionTemplate",
        "required": [
          "subscriptionTemplateId"
        ],
        "properties": {
          "linkFriendlyName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "longDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "shipmentPlan": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionShipment"
            }
          },
          "shortDescription": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "subscriptionTemplateId": {
            "readOnly": false,
            "description": "",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "templateName": {
            "readOnly": false,
            "description": "",
            "type": "string",
            "example": "..."
          },
          "useAttribute1": {
            "$ref": "#/components/schemas/UseAttributeX"
          },
          "useAttribute2": {
            "$ref": "#/components/schemas/UseAttributeX"
          },
          "useAttribute3": {
            "$ref": "#/components/schemas/UseAttributeX"
          }
        },
        "description": ""
      },
      "SubscriptionToUpdate": {
        "type": "object",
        "title": "SubscriptionToUpdate",
        "properties": {
          "deliveryEveryNth": {
            "$ref": "#/components/schemas/DeliveryEveryNth"
          },
          "deliveryEveryNthUpdateDate": {
            "example": "2024-02-26",
            "readOnly": false,
            "description": "For Weekly subscriptions only, defines when the DeliveryEveryNth update takes affect.",
            "type": "string",
            "format": "date"
          },
          "deliveryInstructions": {
            "example": "Open gate with code: 12345",
            "readOnly": false,
            "description": "The delivery instructions of the subscription.",
            "type": "string"
          },
          "interval": {
            "example": 30,
            "readOnly": false,
            "description": "Change of the interval in days.",
            "type": "integer",
            "format": "int32"
          },
          "nextDeliveryDate": {
            "example": "2021-12-01",
            "readOnly": false,
            "description": "Change of the next delivery date.",
            "type": "string",
            "format": "date"
          },
          "productsToAdd": {
            "readOnly": false,
            "description": "Products to add to the subscription.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductsToAdd"
            }
          },
          "subscriptionRowsToUpdate": {
            "readOnly": false,
            "description": "Changes to the subscription rows.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionRowsToUpdate"
            }
          },
          "timeSlotId": {
            "example": 1,
            "readOnly": false,
            "description": "The timeslot id of the subscription.",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Contains changes that applies to a subscription."
      },
      "SubscriptionType": {
        "type": "string",
        "title": "SubscriptionType",
        "enum": [
          "TAILORED_SUBSCRIPTION",
          "WEEKLY_BASED_SUBSCRIPTION"
        ],
        "description": "Defines possible types of subscriptions."
      },
      "SubscriptionUpcomingDiscount": {
        "type": "object",
        "title": "SubscriptionUpcomingDiscount",
        "required": [
          "active",
          "numberOfUses",
          "sort",
          "unlimitedNumberOfUses",
          "used"
        ],
        "properties": {
          "active": {
            "readOnly": false,
            "description": "If the discount is active",
            "type": "boolean",
            "example": true
          },
          "appliesTo": {
            "$ref": "#/components/schemas/AppliesTo"
          },
          "discountAmount": {
            "readOnly": false,
            "description": "The amount of discount if specified",
            "type": "number",
            "example": 12345
          },
          "discountPercentage": {
            "readOnly": false,
            "description": "The percentage of discount if specified",
            "type": "number",
            "example": 12345
          },
          "freeText": {
            "readOnly": false,
            "description": "An arbitrary text connected to the discount.",
            "type": "string",
            "example": "..."
          },
          "numberOfUses": {
            "readOnly": false,
            "description": "The number of total uses this discount can be used. Zero indicates infinite amount.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "sort": {
            "readOnly": false,
            "description": "What sort this specific discount has.\n\u003cp\u003e\nThese subscriptions are automatically used upon the next delivery and the sort decides which subscription is next.\n\u003c/p\u003e",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "unlimitedNumberOfUses": {
            "readOnly": false,
            "description": "Indicates that this discount has unlimited amount of uses",
            "type": "boolean",
            "example": true
          },
          "used": {
            "readOnly": false,
            "description": "How many times this discount has been used.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Represents an available subscription discount"
      },
      "Supplier": {
        "type": "object",
        "title": "Supplier",
        "required": [
          "supplierId"
        ],
        "properties": {
          "supplierId": {
            "readOnly": false,
            "description": "The internal identifier of the supplier.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "supplierName": {
            "readOnly": false,
            "description": "The public name of the supplier.",
            "type": "string",
            "example": "..."
          },
          "supplierNumber": {
            "readOnly": false,
            "description": "The supplier number",
            "type": "string",
            "example": "..."
          }
        },
        "description": "A supplier is a company that deliver goods to us."
      },
      "Supplier_Product": {
        "type": "object",
        "title": "Supplier",
        "required": [
          "supplierId"
        ],
        "properties": {
          "currencyCode": {
            "example": "SEK",
            "readOnly": false,
            "description": "The currency code of the product for this supplier.",
            "type": "string"
          },
          "previousDeliveryDate": {
            "example": "2020-01-01",
            "readOnly": false,
            "description": "The date of the previous delivery for this supplier.",
            "type": "string",
            "format": "date"
          },
          "supplierId": {
            "example": 123,
            "readOnly": false,
            "description": "The internal identifier of this supplier.",
            "type": "integer",
            "format": "int32"
          },
          "supplierNumber": {
            "example": "12345678",
            "readOnly": false,
            "description": "The number of this supplier",
            "type": "string"
          },
          "supplierProductNumber": {
            "example": "123PRODUCT",
            "readOnly": false,
            "description": "The identifier of the product for this supplier.",
            "type": "string"
          },
          "unitPriceExcludingTax": {
            "example": 123.1234,
            "readOnly": false,
            "description": "The price of the product for this supplier.",
            "type": "number"
          }
        },
        "description": "Defines a supplier of a stock keeping unit."
      },
      "SupplierResult": {
        "type": "object",
        "title": "SupplierResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Supplier"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of supplier."
      },
      "TargetType": {
        "type": "string",
        "title": "TargetType",
        "enum": [
          "ARTICLE",
          "CATEGORY",
          "REDIRECT"
        ],
        "description": "Defines the type of the path destination target."
      },
      "TaxRateAddressRequest": {
        "type": "object",
        "title": "TaxRateAddressRequest",
        "properties": {
          "addressLine1": {
            "example": "Druveforsvägen 8",
            "readOnly": false,
            "description": "The first address line, usually street address.",
            "type": "string"
          },
          "administrativeDivision": {
            "example": "Borås kommun",
            "readOnly": false,
            "description": "The administrative division, such as region or state.",
            "type": "string"
          },
          "city": {
            "example": "BORÅS",
            "readOnly": false,
            "description": "The city of the address.",
            "type": "string"
          },
          "zipcode": {
            "example": "50454",
            "readOnly": false,
            "description": "The zipcode/postal code of the address.",
            "type": "string"
          }
        },
        "description": "The address for the tax rate calculation."
      },
      "TaxRateFeeResponse": {
        "type": "object",
        "title": "TaxRateFeeResponse",
        "required": [
          "fixedTaxRate"
        ],
        "properties": {
          "amountExcludingTax": {
            "example": 22.49,
            "readOnly": false,
            "description": "The amount excluding tax",
            "type": "number"
          },
          "amountIncludingTax": {
            "example": 29.99,
            "readOnly": false,
            "description": "The amount including tax",
            "type": "number"
          },
          "fixedTaxRate": {
            "readOnly": false,
            "description": "Whether the tax rate is fixed. If it is false, then the tax rate is weighted (average of total tax rate)",
            "type": "boolean",
            "example": true
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The tax rate",
            "type": "number"
          }
        },
        "description": "Response with calculated tax rate for different fees, i.e. shipping fee, payment fee, etc."
      },
      "TaxRateLineRequest": {
        "type": "object",
        "title": "TaxRateLineRequest",
        "required": [
          "quantity",
          "stockKeepingUnitId"
        ],
        "properties": {
          "discountExcludingTax": {
            "example": 10,
            "readOnly": false,
            "description": "The discount amount to calculate tax for",
            "type": "number"
          },
          "lineId": {
            "example": 1,
            "readOnly": false,
            "description": "The unique identifier for the line. Optional",
            "type": "integer",
            "format": "int32"
          },
          "priceLookUpNumber": {
            "example": "57968634",
            "readOnly": false,
            "description": "The price look up number for the product. Mutually exclusive with stockKeepingUnitId",
            "type": "string"
          },
          "quantity": {
            "example": 3,
            "readOnly": false,
            "description": "The quantity of the product. Defaults to 1",
            "type": "integer",
            "format": "int32"
          },
          "stockKeepingUnitId": {
            "example": 379667,
            "readOnly": false,
            "description": "The unique identifier for the stock keeping unit. Mutually exclusive with priceLookUpNumber",
            "type": "integer",
            "format": "int32"
          },
          "unitPriceExcludingTax": {
            "example": 99.99,
            "readOnly": false,
            "description": "The monetary amount to calculate tax for",
            "type": "number"
          }
        },
        "description": "Lines for CalculateTaxRateRequest representing each product we need to calculate tax for."
      },
      "TaxRateLineResponse": {
        "type": "object",
        "title": "TaxRateLineResponse",
        "required": [
          "stockKeepingUnitId"
        ],
        "properties": {
          "amountExcludingTax": {
            "example": 9.44,
            "readOnly": false,
            "description": "The monetary calculated amount excluding tax",
            "type": "number"
          },
          "amountIncludingTax": {
            "example": 11.79,
            "readOnly": false,
            "description": "The monetary calculated amount including tax",
            "type": "number"
          },
          "discountExcludingTax": {
            "example": 21.19,
            "readOnly": false,
            "description": "The monetary discount excluding tax",
            "type": "number"
          },
          "discountIncludingTax": {
            "example": 26.49,
            "readOnly": false,
            "description": "The monetary discount including tax",
            "type": "number"
          },
          "lineId": {
            "example": 1,
            "readOnly": false,
            "description": "The unique identifier for the line",
            "type": "integer",
            "format": "int32"
          },
          "priceLookUpNumber": {
            "example": "57968634",
            "readOnly": false,
            "description": "The price look up number for the product",
            "type": "string"
          },
          "stockKeepingUnitId": {
            "example": 379667,
            "readOnly": false,
            "description": "The unique identifier for the stock keeping unit",
            "type": "integer",
            "format": "int32"
          },
          "taxRate": {
            "example": 0.25,
            "readOnly": false,
            "description": "The applied tax rate",
            "type": "number"
          },
          "unitPriceExcludingTax": {
            "example": 10.21,
            "readOnly": false,
            "description": "The monetary unit price excluding tax",
            "type": "number"
          },
          "unitPriceIncludingTax": {
            "example": 12.76,
            "readOnly": false,
            "description": "The monetary unit price including tax",
            "type": "number"
          }
        },
        "description": "Lines for CalculateTaxRateRequest representing each product we calculated tax for."
      },
      "TaxRateRequest": {
        "type": "object",
        "title": "TaxRateRequest",
        "properties": {
          "countryCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The country code to calculate tax for",
            "type": "string"
          },
          "orderLines": {
            "readOnly": false,
            "description": "The order lines to calculate tax for",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxRateLineRequest"
            }
          },
          "paymentFeeExcludingTax": {
            "example": 0.99,
            "readOnly": false,
            "description": "The payment fee to calculate tax for. Optional",
            "type": "number"
          },
          "receiverAddress": {
            "$ref": "#/components/schemas/TaxRateAddressRequest"
          },
          "serviceFeeExcludingTax": {
            "example": 1.99,
            "readOnly": false,
            "description": "The service fee to calculate tax for. Optional",
            "type": "number"
          },
          "shippingFeeExcludingTax": {
            "example": 9.99,
            "readOnly": false,
            "description": "The shipping fee to calculate tax for",
            "type": "number"
          }
        },
        "description": "Request to calculate the tax rate based on passed SKUs/PLU numbers."
      },
      "TaxRateResponse": {
        "type": "object",
        "title": "TaxRateResponse",
        "properties": {
          "orderLines": {
            "readOnly": false,
            "description": "The calculated tax rate for each product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxRateLineResponse"
            }
          },
          "paymentFee": {
            "$ref": "#/components/schemas/TaxRateFeeResponse"
          },
          "serviceFee": {
            "$ref": "#/components/schemas/TaxRateFeeResponse"
          },
          "shippingFee": {
            "$ref": "#/components/schemas/TaxRateFeeResponse"
          }
        },
        "description": "Response with calculated tax rate for the passed SKUs/PLU numbers."
      },
      "TermsOfPayment": {
        "type": "object",
        "title": "TermsOfPayment",
        "required": [
          "daysToPay",
          "termsOfPaymentId"
        ],
        "properties": {
          "daysToPay": {
            "example": 14,
            "readOnly": false,
            "description": "Number of days the customer has to pay the invoice.",
            "type": "integer",
            "format": "int32"
          },
          "termsOfPaymentId": {
            "example": 100012,
            "readOnly": false,
            "description": "Default terms of payment id.",
            "type": "integer",
            "format": "int32"
          },
          "termsOfPaymentName": {
            "example": "Partial payment",
            "readOnly": false,
            "description": "Default terms of payment name.",
            "type": "string"
          }
        },
        "description": "Terms Of Payment"
      },
      "TermsOfPayment_OrderAPI": {
        "type": "object",
        "title": "TermsOfPayment",
        "required": [
          "daysToPay",
          "termsOfPaymentId"
        ],
        "properties": {
          "daysToPay": {
            "example": 14,
            "readOnly": false,
            "description": "Number of days the customer has to pay the invoice.",
            "type": "integer",
            "format": "int32"
          },
          "termsOfPaymentId": {
            "example": 100012,
            "readOnly": false,
            "description": "Default terms of payment id.",
            "type": "integer",
            "format": "int32"
          },
          "termsOfPaymentName": {
            "example": "Partial payment",
            "readOnly": false,
            "description": "Default terms of payment name.",
            "type": "string"
          }
        },
        "description": "Terms Of Payment"
      },
      "TimeSlot_v2": {
        "type": "object",
        "title": "TimeSlot",
        "required": [
          "timeSlotId"
        ],
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "timeFrom": {
            "example": "15:00:00",
            "readOnly": false,
            "description": "The time from of the time slot.",
            "type": "string"
          },
          "timeSlotId": {
            "readOnly": false,
            "description": "The internal identifier of the time slot.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "timeTo": {
            "example": "18:00:00",
            "readOnly": false,
            "description": "The time to of the time slot.",
            "type": "string"
          }
        },
        "description": "Represents a time slot"
      },
      "TimeSlot_DeliveryAPI": {
        "type": "object",
        "title": "TimeSlot",
        "required": [
          "timeSlotId"
        ],
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "timeFrom": {
            "example": "15:00:00",
            "readOnly": false,
            "description": "The time from of the time slot.",
            "type": "string"
          },
          "timeSlotId": {
            "example": 2,
            "readOnly": false,
            "description": "The internal identifier of the time slot.",
            "type": "integer",
            "format": "int32"
          },
          "timeTo": {
            "example": "18:00:00",
            "readOnly": false,
            "description": "The time to of the time slot.",
            "type": "string"
          }
        },
        "description": "The time slot of a delivery."
      },
      "TimeSlot": {
        "type": "object",
        "title": "TimeSlot",
        "required": [
          "timeSlotId"
        ],
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "timeFrom": {
            "readOnly": false,
            "description": "The time from of the time slot.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "timeSlotId": {
            "readOnly": false,
            "description": "The identifier of the time slot.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "timeTo": {
            "readOnly": false,
            "description": "The time to of the time slot.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Defines a time slot."
      },
      "TimeSlotRule": {
        "type": "string",
        "title": "TimeSlotRule",
        "enum": [
          "MANDATORY",
          "ILLEGAL"
        ],
        "description": "Controls the rules for time slots of a delivery method."
      },
      "TokenType": {
        "type": "string",
        "title": "TokenType",
        "enum": [
          "RESET_PASSWORD_TOKEN",
          "ACTIVATE_PASSWORD_TOKEN"
        ],
        "description": "Defines various token types."
      },
      "TransactionType": {
        "type": "string",
        "title": "TransactionType",
        "enum": [
          "REFERENCE",
          "AUTHORIZATION",
          "SALE",
          "CAPTURE",
          "REFUND",
          "CANCELLATION"
        ],
        "description": ""
      },
      "Translation": {
        "type": "object",
        "title": "Translation",
        "properties": {
          "groupName": {
            "example": "Paketprodukt",
            "readOnly": false,
            "description": "The name of the package product in the corresponding language.",
            "type": "string"
          },
          "languageCode": {
            "example": "SE",
            "readOnly": false,
            "description": "The iso2 language code.",
            "type": "string"
          }
        },
        "description": "Contains translations for the package."
      },
      "TranslationKey": {
        "type": "object",
        "title": "TranslationKey",
        "properties": {
          "languageCode": {
            "readOnly": false,
            "description": "The language code of the language used for the translation",
            "type": "string",
            "example": "..."
          },
          "propertyKeyName": {
            "readOnly": false,
            "description": "The translated name of the property key",
            "type": "string",
            "example": "..."
          },
          "propertyKeyNameDescription": {
            "readOnly": false,
            "description": "The translated description of the property",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The translation for a property value"
      },
      "TranslationKey_PropertyKey": {
        "type": "object",
        "title": "TranslationKey",
        "properties": {
          "description": {
            "readOnly": false,
            "description": "The translated name of the property keys description",
            "type": "string",
            "example": "..."
          },
          "languageCode": {
            "readOnly": false,
            "description": "The language code of the language used for the translation",
            "type": "string",
            "example": "..."
          },
          "name": {
            "readOnly": false,
            "description": "The translated name of the property key. Leave this empty to delete a translation for a given language",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The translations for the key"
      },
      "TranslationToAddOrUpdate_RelatedProductToAddOrUpdate": {
        "type": "object",
        "title": "TranslationToAddOrUpdate",
        "required": [
          "relationNumber"
        ],
        "properties": {
          "relationNumber": {
            "example": 1,
            "readOnly": false,
            "description": "Relation number",
            "type": "integer",
            "format": "int32"
          },
          "relationType": {
            "$ref": "#/components/schemas/RelationType"
          },
          "translations": {
            "readOnly": false,
            "description": "Changes to the product relation translations.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelationTranslation"
            }
          }
        },
        "description": "Product relation translations."
      },
      "TranslationToAddOrUpdate": {
        "type": "object",
        "title": "TranslationToAddOrUpdate",
        "properties": {
          "brandName": {
            "example": "Adidas Shirts",
            "readOnly": false,
            "description": "Changes to brand name for this translation.",
            "type": "string"
          },
          "brandTag": {
            "example": "Adidas",
            "readOnly": false,
            "description": "Changes to brand tag for this translation. Can be used to group brands on the site when filtering for example if you have two brands Viskan Shirts and Viskan Pants that you want to group under Viskan.",
            "type": "string"
          },
          "keywords": {
            "readOnly": false,
            "description": "Changes to the keywords for this translation. An empty array clears the keywords for the given article, to keep existing simply don\u0027t send keywords element.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "...",
              "..."
            ]
          },
          "languageCode": {
            "example": "en",
            "readOnly": false,
            "description": "The language code of the translation, this is the identifier. This value is mandatory. (BCP 47 code)",
            "type": "string"
          },
          "longDescription": {
            "example": "Long description of the product",
            "readOnly": false,
            "description": "Changes to the long description for this translation.",
            "type": "string"
          },
          "metaDescription": {
            "example": "Meta description of the product",
            "readOnly": false,
            "description": "Changes to the meta description for this translation.",
            "type": "string"
          },
          "metaTitle": {
            "example": "Meta title of the product",
            "readOnly": false,
            "description": "Changes to the meta title for this translation.",
            "type": "string"
          },
          "path": {
            "example": "mount-hood-jacket",
            "readOnly": false,
            "description": "Path for this translation.",
            "type": "string"
          },
          "productName": {
            "example": "Product Name Changed",
            "readOnly": false,
            "description": "Changes to the product name of this translation.",
            "type": "string"
          },
          "shortDescription": {
            "example": "Short description of the product",
            "readOnly": false,
            "description": "Changes to the short description for this translation.",
            "type": "string"
          }
        },
        "description": "Contains changes that applies to a product."
      },
      "TranslationToDelete": {
        "type": "object",
        "title": "TranslationToDelete",
        "required": [
          "relationNumber"
        ],
        "properties": {
          "languages": {
            "example": [
              "en",
              "sv"
            ],
            "readOnly": false,
            "description": "Language codes of translations to be deleted.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "relationNumber": {
            "example": 1,
            "readOnly": false,
            "description": "Relation number",
            "type": "integer",
            "format": "int32"
          },
          "relationType": {
            "$ref": "#/components/schemas/RelationType"
          }
        },
        "description": "Product relation translations."
      },
      "TranslationValue_PropertyValue": {
        "type": "object",
        "title": "TranslationValue",
        "properties": {
          "languageCode": {
            "readOnly": false,
            "description": "The language code of the language used for the translation",
            "type": "string",
            "example": "..."
          },
          "propertyValue": {
            "readOnly": false,
            "description": "The translated value of the property. Leave this empty to delete the translation for the given language",
            "type": "string",
            "example": "..."
          },
          "propertyValueDescription": {
            "readOnly": false,
            "description": "The translated description of the property",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The translations for the value"
      },
      "TranslationValue": {
        "type": "object",
        "title": "TranslationValue",
        "properties": {
          "languageCode": {
            "readOnly": false,
            "description": "The language code of the language used for the translation",
            "type": "string",
            "example": "..."
          },
          "propertyValue": {
            "readOnly": false,
            "description": "The translated name of the property value",
            "type": "string",
            "example": "..."
          },
          "propertyValueDescription": {
            "readOnly": false,
            "description": "The translated description of the property description",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The translation for a property value"
      },
      "Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "Front",
          "Back",
          "List",
          "Related",
          "Search",
          "Tech",
          "Internal",
          "Extra"
        ],
        "description": "Represents media type"
      },
      "UpcomingDeliveries": {
        "type": "object",
        "title": "UpcomingDeliveries",
        "properties": {
          "cancelled": {
            "example": false,
            "readOnly": false,
            "description": "Whether the delivery is cancelled or not.",
            "type": "boolean"
          },
          "estimatedDeliveryDate": {
            "example": "2024-04-02",
            "readOnly": false,
            "description": "The estimated delivery date of the delivery.",
            "type": "string",
            "format": "date"
          },
          "products": {
            "readOnly": false,
            "description": "The products of the upcoming delivery.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionDeliveryProduct"
            }
          }
        },
        "description": "Upcoming deliveries"
      },
      "UpdateCustomerRequest": {
        "type": "object",
        "title": "UpdateCustomer",
        "properties": {
          "alternativeEmailAddress": {
            "readOnly": false,
            "description": "If set, the email address will be updated.",
            "type": "string",
            "example": "..."
          },
          "cellphone": {
            "readOnly": false,
            "description": "If set, the cell phone number will be updated.",
            "type": "string",
            "example": "..."
          },
          "companyName": {
            "readOnly": false,
            "description": "If set, the company name will be updated. Note that only B2B customer can change this.",
            "type": "string",
            "example": "..."
          },
          "consents": {
            "readOnly": false,
            "description": "If set, the consents will be updated.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerConsent_CustomerAPI"
            }
          },
          "contactPerson": {
            "readOnly": false,
            "description": "If set, the name of a contact person will be updated.",
            "type": "string",
            "example": "..."
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/Address_address"
          },
          "emailAddress": {
            "readOnly": false,
            "description": "If set, the email address will be updated.",
            "type": "string",
            "example": "..."
          },
          "firstName": {
            "readOnly": false,
            "description": "If set, the first name will be updated.",
            "type": "string",
            "example": "..."
          },
          "invoiceAddress": {
            "$ref": "#/components/schemas/LocalAddress"
          },
          "lastName": {
            "readOnly": false,
            "description": "If set, the last name will be updated.",
            "type": "string",
            "example": "..."
          },
          "organizationNumber": {
            "readOnly": false,
            "description": "If set, the organization number will be updated. Note that only B2B customer can change this.",
            "type": "string",
            "example": "..."
          },
          "password": {
            "$ref": "#/components/schemas/UpdatePassword"
          },
          "socialSecurityNumber": {
            "readOnly": false,
            "description": "If set, the social security number will be updated.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Request object for updating a customer."
      },
      "UpdatePassword": {
        "type": "object",
        "title": "UpdatePassword",
        "properties": {
          "currentPassword": {
            "readOnly": false,
            "description": "The current password of the customer. Needed to confirm the update of the password.",
            "type": "string",
            "example": "..."
          },
          "newPassword": {
            "readOnly": false,
            "description": "The new password to set. Notice that we only accept a single password value here, so it is recommended to perform a confirmation check on\nthe API client side before passing it to this API.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Contains information for updating the customer password. To update the customer password, the current password is required."
      },
      "UseAttributeX": {
        "type": "string",
        "title": "UseAttributeX",
        "enum": [
          "NOT_APPLICABLE",
          "SINGLE_SELECT",
          "MULTI_SELECT"
        ],
        "description": "Specifies if and how many variants may be selected for a subscription"
      },
      "Value": {
        "type": "object",
        "title": "Value",
        "required": [
          "valueId"
        ],
        "properties": {
          "internalValue": {
            "readOnly": false,
            "description": "The internal value",
            "type": "string",
            "example": "..."
          },
          "value": {
            "readOnly": false,
            "description": "The translated value",
            "type": "string",
            "example": "..."
          },
          "valueId": {
            "readOnly": false,
            "description": "The id of the value",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Represents a customer property value."
      },
      "ValueToDelete": {
        "type": "object",
        "title": "ValueToDelete",
        "properties": {
          "propertyValue": {
            "readOnly": false,
            "description": "The property value to delete.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The values to delete"
      },
      "Warehouse_WarehouseAPI": {
        "type": "object",
        "title": "Warehouse",
        "required": [
          "warehouseId"
        ],
        "properties": {
          "warehouseId": {
            "readOnly": false,
            "description": "The internal identifier of the warehouse.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseName": {
            "readOnly": false,
            "description": "The public name of the warehouse.",
            "type": "string",
            "example": "..."
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The public number of the warehouse.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "Warehouse"
      },
      "Warehouse_ReturnAPI": {
        "type": "object",
        "title": "Warehouse",
        "required": [
          "warehouseId"
        ],
        "properties": {
          "warehouseId": {
            "readOnly": false,
            "description": "The identifier of the warehouse of the return.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseName": {
            "readOnly": false,
            "description": "The name of the warehouse of the return.",
            "type": "string",
            "example": "..."
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The number of the warehouse of the return. Mutually exclusive with WarehouseId",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The warehouse of a return."
      },
      "Warehouse": {
        "type": "object",
        "title": "Warehouse",
        "required": [
          "warehouseId"
        ],
        "properties": {
          "warehouseId": {
            "readOnly": false,
            "description": "The internal identifier of the warehouse.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "warehouseName": {
            "readOnly": false,
            "description": "The external name of the warehouse. Mutually exclusive with warehouseNumber.",
            "type": "string",
            "example": "..."
          },
          "warehouseNumber": {
            "readOnly": false,
            "description": "The identifying number for the warehouse. Mutually exclusive with warehouseId.",
            "type": "string",
            "example": "..."
          }
        },
        "description": "The warehouse for the purchase order."
      },
      "WarehouseResult": {
        "type": "object",
        "title": "WarehouseResult",
        "required": [
          "page",
          "pagesLeft",
          "totalHits"
        ],
        "properties": {
          "hits": {
            "readOnly": false,
            "description": "The warehouses in this page.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warehouse_WarehouseAPI"
            }
          },
          "page": {
            "readOnly": false,
            "description": "The page retrieved.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "pagesLeft": {
            "readOnly": false,
            "description": "The number of pages that remain.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          },
          "searchId": {
            "readOnly": false,
            "description": "The identifier of the search. Used to get more pages.",
            "type": "string",
            "example": "..."
          },
          "totalHits": {
            "readOnly": false,
            "description": "The total number of hits for the search.",
            "type": "integer",
            "format": "int32",
            "example": 12345
          }
        },
        "description": "Holds a search result of warehouse."
      },
      "MyPagesWishlistRequest": {
        "type": "object",
        "title": "Wishlist",
        "properties": {
          "name": {
            "example": "Wishlist Name",
            "readOnly": false,
            "description": "The name of the wishlist.",
            "type": "string"
          },
          "products": {
            "readOnly": false,
            "description": "The products in the wishlist.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPagesWishlistProductRequest"
            }
          }
        },
        "description": "Request object for saving a wishlist."
      },
      "MyPagesWishlistResponse": {
        "type": "object",
        "title": "Wishlist",
        "properties": {
          "name": {
            "example": "My Wishlist",
            "readOnly": false,
            "description": "The name of the wishlist.",
            "type": "string"
          },
          "products": {
            "readOnly": false,
            "description": "The products in the wishlist.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPagesWishlistProductResponse"
            }
          },
          "wishlistId": {
            "example": "1797a278-fc75-48f9-b814-bb674d64abbb",
            "readOnly": false,
            "description": "The \u003ccode\u003euuid\u003c/code\u003e of the wishlist.",
            "type": "string"
          }
        },
        "description": "Response object for a wishlist."
      },
      "JournalItem": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "The journal number.",
            "example": "INV-2025-00001"
          },
          "type": {
            "type": "string",
            "description": "The journal type: INVOICE or PAYMENT.",
            "enum": [
              "INVOICE",
              "PAYMENT"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the journal was created."
          },
          "rows": {
            "type": "array",
            "description": "The accounting rows that belong to this journal.",
            "items": {
              "$ref": "#/components/schemas/JournalRowItem"
            }
          }
        }
      },
      "JournalRowItem": {
        "type": "object",
        "properties": {
          "currencyCode": {
            "type": "string",
            "description": "ISO 4217 currency code.",
            "example": "SEK"
          },
          "countryCode": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code. Null when grouping on country is not used.",
            "x-viskan-nullable": "true"
          },
          "accountNumber": {
            "type": "string",
            "description": "Account number.",
            "example": 3001
          },
          "clubName": {
            "type": "string",
            "description": "Club name. Null when grouping on club is not used.",
            "x-viskan-nullable": "true"
          },
          "accountDescription": {
            "type": "string",
            "description": "Description of the account number."
          },
          "taxRate": {
            "type": "number",
            "description": "VAT / tax rate as a decimal fraction, e.g. 0.25 for 25%.",
            "example": 0.25
          },
          "amount": {
            "type": "number",
            "description": "Net amount for this grouping. Rows with a zero net amount are excluded."
          }
        }
      },
      "PeriodItem": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the accounting period, e.g. \u00272025-09\u0027.",
            "example": "2025-09"
          },
          "dateFrom": {
            "type": "string",
            "format": "date",
            "description": "First day of the accounting period."
          },
          "dateTo": {
            "type": "string",
            "format": "date",
            "description": "Last day of the accounting period."
          },
          "journals": {
            "type": "array",
            "description": "The journals that belong to this period.",
            "items": {
              "$ref": "#/components/schemas/JournalItem"
            }
          }
        }
      },
      "ThreadItem": {
        "type": "object",
        "properties": {
          "threadId": {
            "type": "string",
            "description": "The ID of the thread.",
            "example": "0566e5fa-e9d6-4d1a-9e63-14987ab1608a",
            "x-viskan-field-format": "uuid"
          },
          "threadState": {
            "type": "string",
            "description": "The current state of the thread.",
            "example": "IDLE",
            "enum": [
              "IDLE",
              "WORKING"
            ]
          },
          "title": {
            "type": "string",
            "description": "The title of the thread.",
            "example": "Most sold product in January"
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the thread was created.",
            "example": "2025-01-15T08:12:51.841+01:00",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date when the thread was last modified.",
            "example": "2025-01-15T09:23:11.991+01:00",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "ThreadDetails": {
        "type": "object",
        "properties": {
          "threadId": {
            "type": "string",
            "description": "The ID of the thread.",
            "example": "0566e5fa-e9d6-4d1a-9e63-14987ab1608a",
            "x-viskan-field-format": "uuid"
          },
          "threadState": {
            "type": "string",
            "description": "The current state of the thread.",
            "example": "IDLE",
            "enum": [
              "IDLE",
              "WORKING"
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the thread was created.",
            "example": "2025-01-15T08:12:51.841+01:00",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date when the thread was last modified.",
            "example": "2025-01-15T09:23:11.991+01:00",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "AddMessage": {
        "type": "object",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "type": "string",
            "description": "The content of the message.",
            "example": "What was the most sold product in January?",
            "maxLength": 1000
          }
        }
      },
      "UpdateThread": {
        "type": "object",
        "required": [
          "title"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The new title of the thread.",
            "example": "Updated thread title"
          }
        }
      },
      "UpdateMessage": {
        "type": "object",
        "properties": {
          "rating": {
            "type": "string",
            "description": "Rating for an agent message.",
            "enum": [
              "GOOD",
              "BAD"
            ]
          }
        }
      },
      "MessagesResponse": {
        "type": "object",
        "properties": {
          "searchAfterId": {
            "type": "string",
            "nullable": true,
            "description": "ID to use for next page of results, or null if no more results.",
            "example": "0566e5fa-e9d6-4d1a-9e63-14987ab1608a"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Message"
            }
          }
        }
      },
      "Message": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "description": "The ID of the message.",
            "example": "0566e5fa-e9d6-4d1a-9e63-14987ab1608a",
            "x-viskan-field-format": "uuid"
          },
          "role": {
            "type": "string",
            "description": "The role of the message sender.",
            "example": "AGENT",
            "enum": [
              "AGENT",
              "USER"
            ]
          },
          "content": {
            "type": "string",
            "description": "The content of the message.",
            "example": "The most sold product in January was..."
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the message was created.",
            "example": "2025-01-15T08:12:51.841+01:00",
            "x-viskan-field-format": "offset-date-time"
          },
          "rating": {
            "type": "string",
            "nullable": true,
            "description": "The rating of the message. Only present for AGENT role messages.",
            "example": "GOOD",
            "enum": [
              "GOOD",
              "BAD"
            ]
          }
        }
      },
      "TranslateRequest": {
        "type": "object",
        "required": [
          "text",
          "sourceLanguage",
          "targetLanguages"
        ],
        "properties": {
          "text": {
            "type": "string",
            "description": "The text to translate.",
            "example": "Hello, how are you?"
          },
          "sourceLanguage": {
            "type": "string",
            "description": "The source language of the text.",
            "example": "en"
          },
          "targetLanguages": {
            "type": "array",
            "description": "Target languages to translate the text to.",
            "items": {
              "type": "string"
            },
            "example": [
              "sv",
              "de",
              "fr"
            ]
          }
        }
      },
      "TranslateResponse": {
        "type": "object",
        "properties": {
          "translations": {
            "type": "object",
            "description": "Map of target languages to their translated text.",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "sv": "Hej, hur mår du?",
              "de": "Hallo, wie geht es dir?",
              "fr": "Bonjour, comment allez-vous?"
            }
          }
        }
      },
      "AssignmentItem": {
        "type": "object",
        "description": "Assignment list item (excludes settings).",
        "properties": {
          "assignmentId": {
            "type": "string",
            "description": "The ID of the assignment.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "x-viskan-field-format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The name of the assignment.",
            "example": "Product descriptions - Summer 2025"
          },
          "assignmentType": {
            "type": "string",
            "description": "The type of assignment.",
            "example": "create-product-description",
            "enum": [
              "create-product-description"
            ]
          },
          "status": {
            "type": "string",
            "description": "The current status of the assignment.",
            "example": "created",
            "enum": [
              "created",
              "running",
              "scheduled",
              "completed"
            ]
          },
          "tonality": {
            "type": "string",
            "nullable": true,
            "description": "The tonality for generated content.",
            "example": "Professional and informative"
          },
          "customInstructions": {
            "type": "string",
            "nullable": true,
            "description": "Custom instructions for the assignment."
          },
          "interval": {
            "type": "string",
            "nullable": true,
            "description": "The scheduling interval."
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the assignment was created.",
            "example": "2025-01-15T08:12:51.841+01:00",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date when the assignment was last modified.",
            "example": "2025-01-15T09:23:11.991+01:00",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "AssignmentDetails": {
        "type": "object",
        "description": "Full assignment details including settings.",
        "properties": {
          "assignmentId": {
            "type": "string",
            "description": "The ID of the assignment.",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
            "x-viskan-field-format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The name of the assignment.",
            "example": "Product descriptions - Summer 2025"
          },
          "assignmentType": {
            "type": "string",
            "description": "The type of assignment.",
            "example": "create-product-description",
            "enum": [
              "create-product-description"
            ]
          },
          "status": {
            "type": "string",
            "description": "The current status of the assignment.",
            "example": "created",
            "enum": [
              "created",
              "running",
              "scheduled",
              "completed"
            ]
          },
          "tonality": {
            "type": "string",
            "nullable": true,
            "description": "The tonality for generated content.",
            "example": "Professional and informative"
          },
          "customInstructions": {
            "type": "string",
            "nullable": true,
            "description": "Custom instructions for the assignment."
          },
          "interval": {
            "type": "string",
            "nullable": true,
            "description": "The scheduling interval."
          },
          "settings": {
            "type": "object",
            "description": "Key-value settings for the assignment.",
            "additionalProperties": {
              "type": "boolean"
            },
            "example": {
              "overwriteExisting": true,
              "includeMetaTags": false
            }
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the assignment was created.",
            "example": "2025-01-15T08:12:51.841+01:00",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date when the assignment was last modified.",
            "example": "2025-01-15T09:23:11.991+01:00",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "AssignmentWithRuns": {
        "type": "object",
        "description": "Assignment details with embedded runs list.",
        "properties": {
          "assignmentId": {
            "type": "string",
            "description": "The ID of the assignment.",
            "x-viskan-field-format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The name of the assignment."
          },
          "assignmentType": {
            "type": "string",
            "description": "The type of assignment.",
            "enum": [
              "create-product-description"
            ]
          },
          "status": {
            "type": "string",
            "description": "The current status of the assignment.",
            "enum": [
              "created",
              "running",
              "scheduled",
              "completed"
            ]
          },
          "tonality": {
            "type": "string",
            "nullable": true,
            "description": "The tonality for generated content."
          },
          "customInstructions": {
            "type": "string",
            "nullable": true,
            "description": "Custom instructions for the assignment."
          },
          "interval": {
            "type": "string",
            "nullable": true,
            "description": "The scheduling interval."
          },
          "settings": {
            "type": "object",
            "description": "Key-value settings for the assignment.",
            "additionalProperties": {
              "type": "boolean"
            }
          },
          "runs": {
            "type": "array",
            "description": "List of runs for this assignment.",
            "items": {
              "type": "object",
              "properties": {
                "runId": {
                  "type": "string",
                  "description": "The ID of the run.",
                  "x-viskan-field-format": "uuid"
                },
                "status": {
                  "type": "string",
                  "description": "The status of the run.",
                  "enum": [
                    "running",
                    "success",
                    "failed",
                    "aborted"
                  ]
                },
                "createdAt": {
                  "type": "string",
                  "description": "The date when the run was created.",
                  "x-viskan-field-format": "offset-date-time"
                },
                "completedAt": {
                  "type": "string",
                  "nullable": true,
                  "description": "The date when the run completed, or null if still running.",
                  "x-viskan-field-format": "offset-date-time"
                }
              }
            }
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the assignment was created.",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date when the assignment was last modified.",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "CreateAssignment": {
        "type": "object",
        "required": [
          "assignmentType"
        ],
        "properties": {
          "assignmentType": {
            "type": "string",
            "description": "The type of assignment to create.",
            "enum": [
              "create-product-description"
            ]
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The name of the assignment."
          },
          "tonality": {
            "type": "string",
            "nullable": true,
            "description": "The tonality for generated content."
          },
          "customInstructions": {
            "type": "string",
            "nullable": true,
            "description": "Custom instructions for the assignment."
          },
          "interval": {
            "type": "string",
            "nullable": true,
            "description": "The scheduling interval."
          },
          "settings": {
            "type": "object",
            "description": "Key-value settings for the assignment.",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        }
      },
      "UpdateAssignment": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "description": "The name of the assignment."
          },
          "tonality": {
            "type": "string",
            "nullable": true,
            "description": "The tonality for generated content."
          },
          "customInstructions": {
            "type": "string",
            "nullable": true,
            "description": "Custom instructions for the assignment."
          },
          "status": {
            "type": "string",
            "description": "The status of the assignment.",
            "enum": [
              "created",
              "running",
              "scheduled",
              "completed"
            ]
          },
          "interval": {
            "type": "string",
            "nullable": true,
            "description": "The scheduling interval."
          },
          "settings": {
            "type": "object",
            "description": "Key-value settings for the assignment.",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        }
      },
      "AssignmentRun": {
        "type": "object",
        "properties": {
          "runId": {
            "type": "string",
            "description": "The ID of the run.",
            "example": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
            "x-viskan-field-format": "uuid"
          },
          "assignmentId": {
            "type": "string",
            "description": "The ID of the assignment this run belongs to.",
            "x-viskan-field-format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "The status of the run.",
            "example": "running",
            "enum": [
              "running",
              "success",
              "failed",
              "aborted"
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the run was created.",
            "example": "2025-01-15T08:12:51.841+01:00",
            "x-viskan-field-format": "offset-date-time"
          },
          "completedAt": {
            "type": "string",
            "nullable": true,
            "description": "The date when the run completed, or null if still running.",
            "example": "2025-01-15T09:23:11.991+01:00",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "RunResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful.",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "A human-readable message about the result.",
            "example": "Run started successfully."
          },
          "runId": {
            "type": "string",
            "description": "The ID of the run.",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "AbortRunResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the operation was successful.",
            "example": true
          },
          "message": {
            "type": "string",
            "description": "A human-readable message about the result.",
            "example": "Run aborted successfully."
          }
        }
      },
      "AssignmentLogsResponse": {
        "type": "object",
        "properties": {
          "searchAfterId": {
            "type": "string",
            "nullable": true,
            "description": "ID to use for next page of results, or null if no more results.",
            "example": "c3d4e5f6-a7b8-9012-cdef-123456789012"
          },
          "logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssignmentLog"
            }
          }
        }
      },
      "AssignmentLog": {
        "type": "object",
        "properties": {
          "logId": {
            "type": "string",
            "description": "The ID of the log entry.",
            "x-viskan-field-format": "uuid"
          },
          "logType": {
            "type": "string",
            "description": "The type of log entry.",
            "example": "run_started",
            "enum": [
              "update_product",
              "run_started",
              "fetch_products_started",
              "fetch_products_completed",
              "fetch_products_failed",
              "process_product_started",
              "enrich_product_completed",
              "enrich_product_skipped",
              "enrich_product_failed",
              "run_completed",
              "run_aborted",
              "run_abort_requested",
              "run_failed"
            ]
          },
          "toolName": {
            "type": "string",
            "nullable": true,
            "description": "The name of the tool that generated the log."
          },
          "status": {
            "type": "string",
            "description": "The status of the log entry.",
            "enum": [
              "success",
              "error"
            ]
          },
          "summary": {
            "type": "string",
            "description": "A human-readable summary of the log entry."
          },
          "durationMs": {
            "type": "number",
            "nullable": true,
            "description": "The duration of the operation in milliseconds."
          },
          "data": {
            "type": "object",
            "description": "Additional data specific to the log type.",
            "additionalProperties": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true,
            "description": "Error message if the log entry represents an error."
          },
          "createdAt": {
            "type": "string",
            "description": "The date when the log entry was created.",
            "x-viskan-field-format": "offset-date-time"
          }
        }
      },
      "AggregationBucket": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The bucket key."
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "Number of logs in the bucket.",
            "example": 42
          }
        }
      },
      "RequestLogResult": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of logs matching the query.",
            "example": 1234
          },
          "logs": {
            "type": "array",
            "description": "The logs in the current page, ordered from newest to oldest.",
            "items": {
              "$ref": "#/components/schemas/ResultLog"
            }
          },
          "searchAfter": {
            "type": "string",
            "description": "Cursor to pass as \u003ccode\u003esearchAfter\u003c/code\u003e in a subsequent request to fetch the next page. \u003ccode\u003enull\u003c/code\u003e when there are no more pages."
          },
          "aggregations": {
            "$ref": "#/components/schemas/Aggregations_2",
            "description": "Aggregations over the full result set, useful for building filter facets."
          }
        }
      },
      "ResultLog": {
        "type": "object",
        "properties": {
          "logId": {
            "type": "string",
            "description": "Unique identifier of the log entry."
          },
          "loggedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp at which the request was logged."
          },
          "clientId": {
            "type": "string",
            "description": "Identifier of the client that made the request.",
            "example": "isv_my_integration"
          },
          "pathPattern": {
            "type": "string",
            "description": "The API path pattern matched by the request.",
            "example": "/orders/{orderId}"
          },
          "path": {
            "type": "string",
            "description": "The actual request URL path.",
            "example": "/orders/4711"
          },
          "method": {
            "type": "string",
            "description": "The HTTP method used.",
            "example": "GET"
          },
          "query": {
            "type": "string",
            "description": "The raw query string of the request, if any.",
            "example": "limit\u003d20\u0026offset\u003d0"
          },
          "correlationId": {
            "type": "string",
            "description": "Correlation (trace) identifier for the request."
          },
          "remoteAddress": {
            "type": "string",
            "description": "IP address of the client that made the request.",
            "example": "203.0.113.42"
          },
          "requestTime": {
            "type": "number",
            "description": "Time spent processing the request, in seconds.",
            "example": 0.123
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "description": "HTTP response status code.",
            "example": 200
          }
        }
      },
      "Aggregations_2": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "array",
            "description": "Buckets grouped by client identifier.",
            "items": {
              "$ref": "#/components/schemas/AggregationBucket"
            }
          },
          "method": {
            "type": "array",
            "description": "Buckets grouped by HTTP method.",
            "items": {
              "$ref": "#/components/schemas/AggregationBucket"
            }
          },
          "pathPattern": {
            "type": "array",
            "description": "Buckets grouped by API path pattern.",
            "items": {
              "$ref": "#/components/schemas/AggregationBucket"
            }
          },
          "statusCode": {
            "type": "array",
            "description": "Buckets grouped by HTTP response status code.",
            "items": {
              "$ref": "#/components/schemas/AggregationBucket"
            }
          }
        }
      },
      "CreatePriceListRequest": {
        "type": "object",
        "properties": {
          "priceListName": {
            "type": "string",
            "description": "The name of the price list.",
            "example": "Standard"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the price list is active and can be used. Defaults to \u003ccode\u003etrue\u003c/code\u003e.",
            "example": true
          }
        }
      },
      "CreatePriceListResponse": {
        "type": "object",
        "properties": {
          "priceListId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the created price list.",
            "example": 1
          }
        }
      },
      "UpdatePriceListRequest": {
        "type": "object",
        "properties": {
          "priceListName": {
            "type": "string",
            "description": "The name to give the price list, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "Standard"
          },
          "active": {
            "type": "boolean",
            "description": "Whether to set the price list as active or inactive, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": true
          }
        }
      },
      "PriceListItem": {
        "type": "object",
        "properties": {
          "priceListId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the price list.",
            "example": 1
          },
          "priceListName": {
            "type": "string",
            "description": "The name of the price list.",
            "example": "Standard"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the price list is active and can be used.",
            "example": true
          }
        }
      },
      "Unassign": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "The current version of the ticket.",
            "example": 7
          }
        }
      },
      "Activity": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "When the activity occurred.",
            "example": "2025-09-11T08:16:02Z"
          },
          "type": {
            "type": "string",
            "description": "Type of activity.",
            "enum": [
              "ASSIGN",
              "UNASSIGN",
              "ADD_LABELS",
              "REMOVE_LABELS",
              "CONNECT_CUSTOMER",
              "DISCONNECT_CUSTOMER",
              "SET_RESOLUTION",
              "FORWARD"
            ],
            "example": "SET_RESOLUTION"
          },
          "centralUserId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the user that triggered the activity, or \u003ccode\u003enull\u003c/code\u003e if it was triggered by an automation.",
            "example": 55
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Additional activity data as key/value map."
          }
        }
      },
      "DisconnectCustomer": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "format": "int64",
            "description": "The current version of the ticket.",
            "example": 7
          }
        }
      },
      "MessageInfo": {
        "type": "object",
        "properties": {
          "receivedAt": {
            "type": "string",
            "format": "date-time",
            "deprecated": true,
            "description": "When the message was received.",
            "example": "2025-09-11T08:15:30Z"
          },
          "direction": {
            "type": "string",
            "description": "Message direction.",
            "enum": [
              "INBOUND",
              "OUTBOUND",
              "AUTO_REPLY"
            ],
            "example": "INBOUND"
          },
          "messageId": {
            "type": "string",
            "description": "The identifier of the message.",
            "example": "\u003cgenerated@id\u003e"
          },
          "mailSendId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the sent email. Only applicable to outgoing messages.",
            "example": "c2277230-b0d2-4684-92b8-55c76cc759e5"
          },
          "senderName": {
            "type": "string",
            "description": "Sender display name.",
            "example": "Jane Smith"
          },
          "senderAddress": {
            "type": "string",
            "description": "Sender email address.",
            "example": "jane@example.com"
          },
          "replyTo": {
            "type": "string",
            "description": "Reply-To address.",
            "example": "greg@example.com"
          },
          "deliveredTo": {
            "type": "string",
            "description": "Delivered-To address.",
            "example": "support@example.com"
          },
          "recipients": {
            "type": "array",
            "description": "To recipients.",
            "example": [
              "support@example.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "recipientsCC": {
            "type": "array",
            "description": "CC recipients.",
            "items": {
              "type": "string"
            }
          },
          "recipientsBCC": {
            "type": "array",
            "description": "BCC recipients.",
            "items": {
              "type": "string"
            }
          },
          "subject": {
            "type": "string",
            "description": "Subject line.",
            "example": "Re: Your order"
          },
          "contentType": {
            "type": "string",
            "description": "Body content type."
          },
          "numberOfAttachments": {
            "type": "integer",
            "format": "int32",
            "description": "Number of attachments in the message.",
            "example": 2
          }
        }
      },
      "TicketResponse": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string",
            "description": "Identifier of the ticket.",
            "example": "a5a1b1a9-2ad0-4bb9-86b1-3fae3b1e3dc6",
            "x-viskan-field-format": "uuid"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "Version of the ticket document.",
            "example": 7
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the ticket was created.",
            "example": "2025-09-11T08:15:30Z",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the ticket was last modified.",
            "example": "2025-09-11T08:16:02Z",
            "x-viskan-field-format": "offset-date-time"
          },
          "customerId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the customer that this ticket is connected to, or \u003ccode\u003enull\u003c/code\u003e if it is not connected to a customer.",
            "example": 352951,
            "x-viskan-nullable": "true"
          },
          "ticketNumber": {
            "type": "string",
            "description": "External ticket number.",
            "example": 1001
          },
          "helpdeskAccountId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the Helpdesk account that this ticket belongs to, or \u003ccode\u003enull\u003c/code\u003e if it does not belong to any account.",
            "example": 1,
            "x-viskan-nullable": "true"
          },
          "centralUserId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the assigned user, or \u003ccode\u003enull\u003c/code\u003e when unassigned.",
            "example": 41,
            "x-viskan-nullable": "true"
          },
          "resolution": {
            "type": "string",
            "description": "Ticket resolution state.",
            "enum": [
              "UNRESOLVED",
              "RESOLVED",
              "NO_ACTION_REQUIRED",
              "SPAM",
              "TRASH"
            ],
            "example": "UNRESOLVED"
          },
          "labels": {
            "type": "array",
            "description": "The labels set on this ticket.",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "autoReply": {
            "type": "boolean",
            "description": "Whether the latest update was an automatic reply.",
            "example": false
          },
          "activities": {
            "type": "array",
            "description": "History of ticket activities.",
            "items": {
              "$ref": "#/components/schemas/Activity"
            }
          },
          "messages": {
            "type": "array",
            "description": "Brief information about all messages of this ticket, without content or attachments.",
            "items": {
              "$ref": "#/components/schemas/MessageInfo"
            }
          }
        }
      },
      "PatchTicketRequest": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the customer to connect the ticket to. Set to \u003ccode\u003enull\u003c/code\u003e to keep unchanged.",
            "example": 352951
          },
          "resolution": {
            "type": "string",
            "description": "The resolution status of the ticket. Set to \u003ccode\u003enull\u003c/code\u003e to keep unchanged.",
            "enum": [
              "UNRESOLVED",
              "RESOLVED",
              "NO_ACTION_REQUIRED",
              "SPAM",
              "TRASH"
            ],
            "example": "UNRESOLVED"
          },
          "assignee": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the user to assign the ticket to. Set to \u003ccode\u003enull\u003c/code\u003e to keep unchanged.",
            "example": 41
          },
          "labels": {
            "type": "array",
            "description": "The set of label IDs to apply to the ticket. Set to \u003ccode\u003enull\u003c/code\u003e to keep unchanged.",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          },
          "helpdeskAccountId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the helpdesk account the ticket belongs to. Set to \u003ccode\u003enull\u003c/code\u003e to keep unchanged.",
            "example": 1
          }
        }
      },
      "TicketSearchResponse": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string",
            "description": "Identifier of the ticket.",
            "example": "a5a1b1a9-2ad0-4bb9-86b1-3fae3b1e3dc6",
            "x-viskan-field-format": "uuid"
          },
          "version": {
            "type": "integer",
            "format": "int32",
            "description": "Version of the ticket document.",
            "example": 7
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the ticket was created.",
            "example": "2025-09-11T08:15:30Z",
            "x-viskan-field-format": "offset-date-time"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the ticket was last modified.",
            "example": "2025-09-11T08:16:02Z",
            "x-viskan-field-format": "offset-date-time"
          },
          "customerId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the customer that this ticket is connected to, or \u003ccode\u003enull\u003c/code\u003e if it is not connected to a customer.",
            "example": 352951,
            "x-viskan-nullable": "true"
          },
          "ticketNumber": {
            "type": "string",
            "description": "External ticket number.",
            "example": 1001
          },
          "helpdeskAccountId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the Helpdesk account that this ticket belongs to, or \u003ccode\u003enull\u003c/code\u003e if it does not belong to any account.",
            "example": 1,
            "x-viskan-nullable": "true"
          },
          "centralUserId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the assigned user, or \u003ccode\u003enull\u003c/code\u003e when unassigned.",
            "example": 41,
            "x-viskan-nullable": "true"
          },
          "resolution": {
            "type": "string",
            "description": "Ticket resolution state.",
            "enum": [
              "UNRESOLVED",
              "RESOLVED",
              "NO_ACTION_REQUIRED",
              "SPAM",
              "TRASH"
            ],
            "example": "UNRESOLVED"
          },
          "labels": {
            "type": "array",
            "description": "The labels set on this ticket.",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          },
          "autoReply": {
            "type": "boolean",
            "description": "Whether the latest update was an automatic reply.",
            "example": false
          },
          "senderAddress": {
            "type": "string",
            "description": "The sender email address of the first message.",
            "example": "jane@example.com"
          },
          "senderName": {
            "type": "string",
            "description": "The sender display name of the first message.",
            "example": "Jane Smith"
          },
          "subject": {
            "type": "string",
            "description": "The subject line of the first message.",
            "example": "Order inquiry"
          },
          "firstMessageId": {
            "type": "string",
            "description": "The ID of the first message.",
            "example": "\u003cgenerated@id\u003e"
          },
          "lastMessageId": {
            "type": "string",
            "description": "The ID of the last message.",
            "example": "\u003cgenerated@id\u003e"
          },
          "activities": {
            "type": "array",
            "description": "History of ticket activities.",
            "items": {
              "$ref": "#/components/schemas/Activity"
            }
          },
          "numberOfMessages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of messages in the ticket.",
            "example": 5
          },
          "numberOfAttachments": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of attachments in the ticket.",
            "example": 2
          },
          "participants": {
            "type": "array",
            "description": "List of unique participant email addresses in the conversation, excluding the sender of the first message.",
            "example": [
              "bob@example.com",
              "charlie@example.com"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "TicketSearchResult": {
        "type": "object",
        "properties": {
          "totalNumberOfHits": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of results.",
            "example": 123
          },
          "totalHitsRelation": {
            "type": "string",
            "description": "Relation for total hits.",
            "enum": [
              "EQUAL_TO",
              "GREATER_THAN_OR_EQUAL_TO",
              "OFF"
            ]
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Requested page number."
          },
          "hitsPerPage": {
            "type": "integer",
            "format": "int32",
            "description": "Requested page size."
          },
          "tickets": {
            "type": "array",
            "description": "The tickets found, without messages. It includes a number of messages and attachments and the ID of the of the first message.",
            "items": {
              "$ref": "#/components/schemas/TicketSearchResponse"
            }
          }
        }
      },
      "StreamingResponseBody": {},
      "Attachment_2": {
        "type": "object",
        "properties": {
          "attachmentId": {
            "type": "string"
          },
          "fileName": {
            "type": "string"
          },
          "contentType": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "REGULAR",
              "POTENTIALLY_DANGEROUS",
              "BLOCKED",
              "NOT_AVAILABLE"
            ]
          },
          "size": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "Message_2": {
        "type": "object",
        "properties": {
          "receivedAt": {
            "type": "string",
            "format": "date-time",
            "deprecated": true,
            "description": "When the message was received.",
            "example": "2025-09-11T08:15:30Z"
          },
          "direction": {
            "type": "string",
            "description": "Message direction.",
            "enum": [
              "INBOUND",
              "OUTBOUND",
              "AUTO_REPLY"
            ],
            "example": "INBOUND"
          },
          "messageId": {
            "type": "string",
            "description": "The identifier of the message.",
            "example": "\u003cgenerated@id\u003e"
          },
          "mailSendId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the sent email. Only applicable to outgoing messages.",
            "example": "c2277230-b0d2-4684-92b8-55c76cc759e5"
          },
          "senderName": {
            "type": "string",
            "description": "Sender display name.",
            "example": "Jane Smith"
          },
          "senderAddress": {
            "type": "string",
            "description": "Sender email address.",
            "example": "jane@example.com"
          },
          "replyTo": {
            "type": "string",
            "description": "Reply-To address.",
            "example": "greg@example.com"
          },
          "deliveredTo": {
            "type": "string",
            "description": "Delivered-To address.",
            "example": "support@example.com"
          },
          "recipients": {
            "type": "array",
            "description": "To recipients.",
            "example": [
              "support@example.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "recipientsCC": {
            "type": "array",
            "description": "CC recipients.",
            "items": {
              "type": "string"
            }
          },
          "recipientsBCC": {
            "type": "array",
            "description": "BCC recipients.",
            "items": {
              "type": "string"
            }
          },
          "subject": {
            "type": "string",
            "description": "Subject line.",
            "example": "Re: Your order"
          },
          "contentType": {
            "type": "string",
            "description": "Body content type."
          },
          "body": {
            "type": "string"
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attachment_2"
            }
          },
          "jobConfigId": {
            "type": "integer",
            "format": "int32"
          },
          "verifiedDomain": {
            "type": "boolean"
          }
        }
      },
      "Aggregations_3": {
        "type": "object",
        "properties": {
          "numberOfOpenTickets": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of open tickets.",
            "example": 42
          },
          "numberOfOpenTicketsAssignedToMe": {
            "type": "integer",
            "format": "int64",
            "description": "Number of open tickets assigned to the current user.",
            "example": 15
          },
          "numberOfOpenUnassignedTickets": {
            "type": "integer",
            "format": "int64",
            "description": "Number of open tickets that are unassigned.",
            "example": 8
          }
        }
      },
      "CreateDraftRequest": {
        "type": "object",
        "properties": {
          "draftName": {
            "type": "string",
            "description": "Displayed name of a new draft.",
            "example": "Black Friday"
          }
        },
        "required": [
          "draftName"
        ]
      },
      "CreateDraftResponse": {
        "type": "object",
        "properties": {
          "draftId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the created draft.",
            "example": "e104abc6-6355-42a3-8b4d-08ff838d028f",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "CreateStoreSettingRequest": {
        "type": "object",
        "properties": {
          "storeSettingKey": {
            "type": "string",
            "description": "Key part of key-value pair for store settings.",
            "example": "remarketing"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "Value part of key-value pair for store settings.",
            "example": true
          },
          "countryCode": {
            "type": "string",
            "description": "Country (in ISO 3166-1 alpha-2 format) this store setting should apply to. If not specified, then the store setting applies to all countries.",
            "example": "SE"
          },
          "languageCode": {
            "type": "string",
            "description": "Language (in ISO 639-1 format) this store setting should apply to. If not specified, then the store setting applies to all languages.",
            "example": "sv"
          }
        },
        "required": [
          "storeSettingKey",
          "storeSettingValue"
        ]
      },
      "CreateStoreSettingResponse": {
        "type": "object",
        "properties": {
          "storeSettingId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the created store setting.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "CreateSectionRequest": {
        "type": "object",
        "properties": {
          "sectionName": {
            "type": "string",
            "description": "Displayed name of a section.",
            "example": "Start Page Hero"
          },
          "sectionDescription": {
            "type": "string",
            "description": "Displayed description of a section.",
            "example": "Section for the start page displaying an image and text"
          },
          "sectionType": {
            "type": "string",
            "description": "Type of a section.",
            "enum": [
              "IMAGE_AND_TEXT",
              "SLIDER",
              "MENU",
              "GRIDS",
              "MISC"
            ],
            "example": "IMAGE_AND_TEXT"
          },
          "content": {
            "type": "string",
            "description": "The content of the section. Can be any useful format for the frontend, such as JSON, HTML, scripts, etc.",
            "example": "\u003cp\u003e{4dd9fd6f-9403-49e6-83df-2550abac538e}\u003c/p\u003e\u003cimage url\u003d{a8eecb0e-b06a-4b2c-882f-376cff259454}\u003e"
          },
          "variables": {
            "type": "array",
            "description": "List of variables for this section.",
            "items": {
              "$ref": "#/components/schemas/CreateSectionVariableRequest"
            }
          },
          "searchableContent": {
            "type": "string",
            "description": "Searchable contents of this section.",
            "example": "Start page"
          }
        },
        "required": [
          "sectionName",
          "sectionType"
        ]
      },
      "CreateSectionVariableRequest": {
        "type": "object",
        "properties": {
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "New variable will have the specified UUID. Must be in UUID V4 format.",
            "example": "4dd9fd6f-9403-49e6-83df-2550abac538e",
            "x-viskan-field-format": "uuid"
          },
          "variableName": {
            "type": "string",
            "description": "Displayed name of a variable.",
            "example": "Hero paragraph"
          },
          "variableType": {
            "type": "string",
            "description": "Type of a variable.",
            "enum": [
              "TEXT",
              "IMAGE_URL"
            ],
            "example": "TEXT"
          }
        },
        "required": [
          "variableId",
          "variableName",
          "variableType"
        ]
      },
      "CreateSectionResponse": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the created section.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "ConnectProductRequest": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the layout to connect the product to.",
            "example": "a1f4e3b2-7c89-4d56-b123-9e8f7a6b5c4d",
            "x-viskan-field-format": "uuid"
          },
          "variables": {
            "type": "array",
            "description": "List of variables to set for the product-to-layout connection.",
            "items": {
              "$ref": "#/components/schemas/CreateProductVariableRequest"
            }
          }
        },
        "required": [
          "layoutId"
        ]
      },
      "CreateProductVariableRequest": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableValue": {
            "type": "string",
            "description": "The value of the variable.",
            "example": "Welcome to start page!"
          }
        },
        "required": [
          "layoutSectionId",
          "variableId",
          "variableValue"
        ]
      },
      "CreatePageRequest": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Sets the category this page is attached to.",
            "example": "fb831d92-c7b3-42fe-ac92-a2c2014d72f6",
            "x-viskan-field-format": "uuid"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "Sets the content locale this page is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Sets the language (in ISO 639-1 format) of this page. Exclusive with content locale.",
            "example": "en"
          },
          "countryCode": {
            "type": "string",
            "description": "Sets the country (in ISO 3166-1 alpha-2 format) of this page. Exclusive with content locale.",
            "example": "US"
          },
          "metaTitle": {
            "type": "string",
            "description": "Sets the metaTitle of this page.",
            "example": "Start Page for Black Week Sale"
          },
          "metaDescription": {
            "type": "string",
            "description": "Sets the metaDescription of this page.",
            "example": "Temporary page for Black Week Sale"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a layout which should be applied to this page.",
            "example": "e8391697-5592-434a-9e20-ac2316adc235",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "Displayed title of this page.",
            "example": "Black Week Sale"
          },
          "path": {
            "type": "string",
            "description": "URL path for this page.",
            "example": "/black-week-sale"
          },
          "variables": {
            "type": "array",
            "description": "Variable values that should be updated.",
            "items": {
              "$ref": "#/components/schemas/CreateVariableRequest"
            }
          },
          "searchableContent": {
            "type": "string",
            "description": "Searchable contents of this page.",
            "example": "Black week sale 2025"
          }
        },
        "required": [
          "categoryId",
          "layoutId",
          "title"
        ]
      },
      "CreateVariableRequest": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableValue": {
            "type": "string",
            "description": "Variable value for this particular page.",
            "example": "Welcome to start page!"
          }
        },
        "required": [
          "layoutSectionId",
          "variableId",
          "variableValue"
        ]
      },
      "CreatePageResponse": {
        "type": "object",
        "properties": {
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the created page.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "LanguageAlternativeResponse": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this alternative version is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Language code (in ISO 639-1 format) for the alternative version. Exclusive with content locale.",
            "example": "sv"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code (in ISO 3166-1 alpha-2 format) for the alternative version. Exclusive with content locale.",
            "example": "SE"
          },
          "path": {
            "type": "string",
            "description": "Path for the alternative version.",
            "example": "/hem"
          }
        }
      },
      "PageSearchResponse": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the category.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "categoryName": {
            "type": "string",
            "description": "The name of the category.",
            "example": "Start Page"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether the page is hidden. Is null for categories that are not part of the content category tree.",
            "example": false
          },
          "indexed": {
            "type": "boolean",
            "description": "Whether the page is indexed. Is null for categories that are not part of the content category tree.",
            "example": true
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category. A protected category requires the user to be logged in to access it. Defaults to NONE.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the fallback category used when the user does not have access to this protected category.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid"
          },
          "path": {
            "type": "string",
            "description": "The path of the page.",
            "example": "/start"
          },
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the page.",
            "example": "d8ff524e-1272-4a15-b23f-261964c3554a",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "The title of the page.",
            "example": "Black Week Sale"
          },
          "metaTitle": {
            "type": "string",
            "description": "Meta title of the page.",
            "example": "Start Page for Black Week Sale"
          },
          "metaDescription": {
            "type": "string",
            "description": "Meta description of the page.",
            "example": "Temporary page for Black Week Sale"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this page is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Language code (in ISO 639-1 format) of the page. Exclusive with content locale.",
            "example": "en"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code (in ISO 3166-1 alpha-2 format) of the page. Exclusive with content locale.",
            "example": "US"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the layout associated with the page.",
            "example": "e8391697-5592-434a-9e20-ac2316adc235",
            "x-viskan-field-format": "uuid"
          },
          "parentCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the parent category.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid"
          },
          "siblingCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the sibling category.",
            "example": "04e0069f-8f37-43ce-952e-9c248feacb11",
            "x-viskan-field-format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "languageAlternatives": {
            "type": "array",
            "description": "Other language versions of this page within the same category, each with its locale and path.",
            "items": {
              "$ref": "#/components/schemas/LanguageAlternativeResponse"
            }
          },
          "variables": {
            "type": "array",
            "description": "Variables associated with the page, including their current values and change status.",
            "items": {
              "$ref": "#/components/schemas/PageVariableResponse"
            }
          },
          "searchableContent": {
            "type": "string",
            "description": "Searchable content for a section is only returned if the section is drafted. After publishing, this section\u0027s searchable content becomes part of the page\u0027s searchable content.",
            "example": "Start page"
          }
        }
      },
      "PageVariableResponse": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableValue": {
            "type": "string",
            "description": "The value of the variable.",
            "example": "Welcome to start page!"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "CreateLayoutRequest": {
        "type": "object",
        "properties": {
          "layoutName": {
            "type": "string",
            "description": "Displayed name of a layout.",
            "example": "Start Page layout"
          },
          "layoutDescription": {
            "type": "string",
            "description": "Displayed description of a layout.",
            "example": "Layout created for start pages"
          },
          "layoutType": {
            "type": "string",
            "description": "Type of a layout.",
            "enum": [
              "START_PAGE",
              "PRODUCT_PAGE",
              "PRODUCT_LIST",
              "CHECKOUT",
              "SEARCH",
              "NOT_FOUND",
              "LOCALE",
              "INFO",
              "HEADER",
              "FOOTER",
              "MISC"
            ],
            "example": "START_PAGE"
          },
          "sections": {
            "type": "array",
            "description": "Sections that should be included in this layout.",
            "items": {
              "$ref": "#/components/schemas/CreateLayoutSectionRequest"
            }
          }
        },
        "required": [
          "layoutName",
          "layoutType"
        ]
      },
      "CreateLayoutSectionRequest": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a section.",
            "example": "fb831d92-c7b3-42fe-ac92-a2c2014d72f6",
            "x-viskan-field-format": "uuid"
          }
        },
        "required": [
          "sectionId"
        ]
      },
      "CreateLayoutResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the created layout.",
            "example": "ae3b1645-9722-42bd-b3ab-1a6a6cbe3565",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "CreateCategoryRequest": {
        "type": "object",
        "properties": {
          "categoryName": {
            "type": "string",
            "description": "The name of the category",
            "example": "Start Page"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether a category should be hidden. Defaults to false.",
            "example": false
          },
          "indexed": {
            "type": "boolean",
            "description": "Whether a category should be indexed. Defaults to true.",
            "example": true
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category. A protected category requires the user to be logged in to access it. Defaults to NONE.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the fallback category used when the user does not have access to this protected category.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid"
          },
          "parentCategoryId": {
            "type": "string",
            "format": "uuid",
            "deprecated": true,
            "description": "Parent category for this category. Must refer to an existing category in the category tree. Deprecated - treePlacement should be used instead.",
            "example": "0118434c-9053-4d78-a9b5-06966052f5dd",
            "x-viskan-field-format": "uuid"
          },
          "siblingCategoryId": {
            "type": "string",
            "format": "uuid",
            "deprecated": true,
            "description": "Sibling category for this category. Sibling category must have the same parent as created category. Deprecated - treePlacement should be used instead.",
            "example": "3edd0eea-9a63-4305-95d8-b281c71ce243",
            "x-viskan-field-format": "uuid"
          },
          "treePlacement": {
            "type": "array",
            "description": "The list of tree placements for the new category. Each tree placement specifies a parent category and an optional sibling category to determine where the new category should be placed in the category tree.",
            "items": {
              "$ref": "#/components/schemas/TreePlacementRequest"
            }
          }
        },
        "required": [
          "categoryName"
        ]
      },
      "TreePlacementRequest": {
        "type": "object",
        "properties": {
          "categoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the category tree node. If not provided, a new UUID will be generated.",
            "example": "6b2a2871-f20d-4fa0-895e-e3c41976db7a",
            "x-viskan-field-format": "uuid"
          },
          "parentCategoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the parent category tree node. This field is required.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "siblingCategoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the sibling category tree node that will be the next in order after this placement. This field is optional; if not provided, the new category will be placed at the end among its siblings.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "x-viskan-field-format": "uuid"
          }
        },
        "required": [
          "parentCategoryTreeId"
        ]
      },
      "CreateCategoryResponse": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the created category.",
            "example": "415eede9-b5ce-4992-ab10-a553acf5c0bb",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "UpdateDraftRequest": {
        "type": "object",
        "properties": {
          "draftName": {
            "type": "string",
            "description": "Displayed name of a draft.",
            "example": "Black Week Updated Draft"
          }
        }
      },
      "UpdateStoreSettingRequest": {
        "type": "object",
        "properties": {
          "storeSettingKey": {
            "type": "string",
            "description": "Key part of key-value pair for store settings.",
            "example": "checkMediaEnabled"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "Value part of key-value pair for store settings.",
            "example": true
          },
          "countryCode": {
            "type": "string",
            "description": "Country (in ISO 3166-1 alpha-2 format) this store setting should apply to. If not specified, then the store setting applies to all countries.",
            "example": "SE"
          },
          "languageCode": {
            "type": "string",
            "description": "Language (in ISO 639-1 format) this store setting should apply to. If not specified, then the store setting applies to all languages.",
            "example": "sv"
          },
          "action": {
            "type": "string",
            "description": "Action to be performed on the entity.",
            "enum": [
              "REMOVE"
            ],
            "example": "REMOVE"
          }
        }
      },
      "UpdateSectionRequest": {
        "type": "object",
        "properties": {
          "sectionName": {
            "type": "string",
            "description": "Displayed name of a section.",
            "example": "Start Page Hero"
          },
          "sectionDescription": {
            "type": "string",
            "description": "Displayed description of a section.",
            "example": "Section for the start page displaying an image and text"
          },
          "sectionType": {
            "type": "string",
            "description": "Type of a section.",
            "enum": [
              "IMAGE_AND_TEXT",
              "SLIDER",
              "MENU",
              "GRIDS",
              "MISC"
            ],
            "example": "IMAGE_AND_TEXT"
          },
          "content": {
            "type": "string",
            "description": "The content of the section. Can be any useful format for the frontend, such as JSON, HTML, scripts, etc.",
            "example": "\u003cp\u003e{4dd9fd6f-9403-49e6-83df-2550abac538e}\u003c/p\u003e\u003cimage url\u003d{a8eecb0e-b06a-4b2c-882f-376cff259454}\u003e"
          },
          "action": {
            "type": "string",
            "description": "Action to be performed on the entity.",
            "enum": [
              "REMOVE"
            ],
            "example": "REMOVE"
          },
          "variables": {
            "type": "array",
            "description": "List of variables for this section.",
            "items": {
              "$ref": "#/components/schemas/UpdateSectionVariableRequest"
            }
          },
          "searchableContent": {
            "type": "string",
            "description": "Searchable contents of this section.",
            "example": "Start page"
          }
        }
      },
      "UpdateSectionVariableRequest": {
        "type": "object",
        "properties": {
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a variable.",
            "example": "4dd9fd6f-9403-49e6-83df-2550abac538e",
            "x-viskan-field-format": "uuid"
          },
          "variableName": {
            "type": "string",
            "description": "Displayed name of a variable.",
            "example": "Hero paragraph"
          },
          "variableType": {
            "type": "string",
            "description": "Type of a variable.",
            "enum": [
              "TEXT",
              "IMAGE_URL"
            ],
            "example": "TEXT"
          }
        },
        "required": [
          "variableId",
          "variableName",
          "variableType"
        ]
      },
      "UpdateProductRequest": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "description": "Action to perform on the product-to-layout connection. Set to REMOVE to mark the connection for removal upon publish.",
            "enum": [
              "REMOVE"
            ],
            "example": "REMOVE"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the layout to connect the product to.",
            "example": "a1f4e3b2-7c89-4d56-b123-9e8f7a6b5c4d",
            "x-viskan-field-format": "uuid"
          },
          "variables": {
            "type": "array",
            "description": "List of variables to update for the product-to-layout connection.",
            "items": {
              "$ref": "#/components/schemas/UpdateProductVariableRequest"
            }
          }
        }
      },
      "UpdateProductVariableRequest": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableValue": {
            "type": "string",
            "description": "The value of the variable.",
            "example": "Welcome to start page!"
          }
        },
        "required": [
          "layoutSectionId",
          "variableId",
          "variableValue"
        ]
      },
      "UpdatePageRequest": {
        "type": "object",
        "properties": {
          "metaTitle": {
            "type": "string",
            "description": "Updated metaTitle of this page.",
            "example": "Start Page for Black Week Sale"
          },
          "metaDescription": {
            "type": "string",
            "description": "Updated metaDescription of this page.",
            "example": "Temporary page for Black Week Sale"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a layout which should be applied to this page.",
            "example": "e8391697-5592-434a-9e20-ac2316adc235",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "Displayed title of this page.",
            "example": "Black Week Sale"
          },
          "path": {
            "type": "string",
            "description": "URL path for this page.",
            "example": "/black-week-sale"
          },
          "action": {
            "type": "string",
            "description": "Action to be performed on the entity.",
            "enum": [
              "REMOVE"
            ],
            "example": "REMOVE"
          },
          "variables": {
            "type": "array",
            "description": "Variable values that should be updated.",
            "items": {
              "$ref": "#/components/schemas/UpdateVariableRequest"
            }
          },
          "searchableContent": {
            "type": "string",
            "description": "Searchable contents of this page.",
            "example": "Black week 2025"
          }
        }
      },
      "UpdateVariableRequest": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableValue": {
            "type": "string",
            "description": "Variable value for this particular page.",
            "example": "Welcome to start page!"
          }
        },
        "required": [
          "layoutSectionId",
          "variableId",
          "variableValue"
        ]
      },
      "UpdateCountryRequest": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "Country code (in ISO 3166-1 alpha-2 format).",
            "example": "SE"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the locale is enabled for the country.",
            "example": true
          }
        },
        "required": [
          "countryCode",
          "enabled"
        ]
      },
      "UpdateLocaleRequest": {
        "type": "object",
        "properties": {
          "countries": {
            "type": "array",
            "description": "List of countries associated with this locale, each with a country code (ISO 3166-1 alpha-2) and an enabled flag indicating whether the locale is active for that country.",
            "items": {
              "$ref": "#/components/schemas/UpdateCountryRequest"
            }
          }
        }
      },
      "UpdateLayoutRequest": {
        "type": "object",
        "properties": {
          "layoutName": {
            "type": "string",
            "description": "Displayed name of a layout.",
            "example": "Start Page layout"
          },
          "layoutDescription": {
            "type": "string",
            "description": "Displayed description of a layout.",
            "example": "Layout created for start pages"
          },
          "layoutType": {
            "type": "string",
            "description": "Type of a layout.",
            "enum": [
              "START_PAGE",
              "PRODUCT_PAGE",
              "PRODUCT_LIST",
              "CHECKOUT",
              "SEARCH",
              "NOT_FOUND",
              "LOCALE",
              "INFO",
              "HEADER",
              "FOOTER",
              "MISC"
            ],
            "example": "START_PAGE"
          },
          "action": {
            "type": "string",
            "description": "Action to be performed on the entity.",
            "enum": [
              "REMOVE"
            ],
            "example": "REMOVE"
          },
          "sections": {
            "type": "array",
            "description": "Sections that should be included in this layout.",
            "items": {
              "$ref": "#/components/schemas/UpdateLayoutSectionRequest"
            }
          }
        }
      },
      "UpdateLayoutSectionRequest": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of a section.",
            "example": "fb831d92-c7b3-42fe-ac92-a2c2014d72f6",
            "x-viskan-field-format": "uuid"
          },
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "fb831d92-c7b3-42fe-ac92-a2c2014d72f6",
            "x-viskan-field-format": "uuid"
          }
        },
        "required": [
          "sectionId"
        ]
      },
      "UpdateCategoryRequest": {
        "type": "object",
        "properties": {
          "categoryName": {
            "type": "string",
            "description": "Internal category name.",
            "example": "Start Page"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether a category should be hidden.",
            "example": false
          },
          "indexed": {
            "type": "boolean",
            "description": "Whether a category should be indexed.",
            "example": true
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category. A protected category requires the user to be logged in to access it. Defaults to NONE.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "description": "ID of the fallback category used when the user does not have access to this protected category. Send an empty string to clear the fallback.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135"
          },
          "parentCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Parent category for this category. Must refer to an existing category in the category tree.",
            "example": "0118434c-9053-4d78-a9b5-06966052f5dd",
            "x-viskan-field-format": "uuid"
          },
          "siblingCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Sibling category for this category. Sibling category must have the same parent as the updated category.",
            "example": "3edd0eea-9a63-4305-95d8-b281c71ce243",
            "x-viskan-field-format": "uuid"
          },
          "treePlacement": {
            "type": "array",
            "description": "The list of tree placements for the category. Each tree placement specifies a parent category and an optional sibling category to determine where the new category should be placed in the category tree. Null value keeps tree placements unchanged, empty array clears all tree placements.",
            "items": {
              "$ref": "#/components/schemas/TreePlacementRequest"
            }
          },
          "action": {
            "type": "string",
            "description": "Action to be performed on the entity.",
            "enum": [
              "REMOVE"
            ],
            "example": "REMOVE"
          }
        }
      },
      "DraftListResponse": {
        "type": "object",
        "properties": {
          "draftId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the draft.",
            "example": "3e6cce60-79ee-4a40-b6f4-c7ef640418b7",
            "x-viskan-field-format": "uuid"
          },
          "draftName": {
            "type": "string",
            "description": "Displayed name of the draft.",
            "example": "Black Week"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the draft was last edited.",
            "example": "2025-02-13T10:10:00.000Z"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the draft was created.",
            "example": "2025-02-01T19:00:00.000Z"
          }
        }
      },
      "DraftCategoryResponse": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the category.",
            "example": "8c03d0fd-e15e-494b-b3f9-c3584e64de01",
            "x-viskan-field-format": "uuid"
          },
          "categoryName": {
            "type": "string",
            "description": "The name of the category.",
            "example": "Start Page Category"
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this category was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the category was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftItemResponse": {
        "type": "object",
        "properties": {
          "draftId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the draft.",
            "example": "3e6cce60-79ee-4a40-b6f4-c7ef640418b7",
            "x-viskan-field-format": "uuid"
          },
          "draftName": {
            "type": "string",
            "description": "Displayed name of the draft.",
            "example": "Black Week"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the draft was last edited.",
            "example": "2025-02-13T10:10:00.000Z"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the draft was created.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "pages": {
            "type": "array",
            "description": "Pages that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftPageResponse"
            }
          },
          "layouts": {
            "type": "array",
            "description": "Layouts that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftLayoutResponse"
            }
          },
          "sections": {
            "type": "array",
            "description": "Sections that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftSectionResponse"
            }
          },
          "categories": {
            "type": "array",
            "description": "Categories that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftCategoryResponse"
            }
          },
          "storeSettings": {
            "type": "array",
            "description": "Store settings that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftStoreSettingResponse"
            }
          },
          "locales": {
            "type": "array",
            "description": "Locales that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftLocaleResponse"
            }
          },
          "products": {
            "type": "array",
            "description": "Products that have been created, modified, or removed in this draft. Each entry includes a comparison status indicating the type of change relative to the current publishment.",
            "items": {
              "$ref": "#/components/schemas/DraftProductResponse"
            }
          },
          "warnings": {
            "type": "array",
            "description": "Validation warnings for the draft, such as pages missing variable values or referencing non-existent layouts.",
            "items": {
              "$ref": "#/components/schemas/DraftWarningResponse"
            }
          }
        }
      },
      "DraftLayoutResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout.",
            "example": "31166915-7c44-46a8-b035-988f860043e1",
            "x-viskan-field-format": "uuid"
          },
          "layoutName": {
            "type": "string",
            "description": "The name of the layout.",
            "example": "Standard sale page layout"
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this layout was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the layout was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftLocaleResponse": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the content locale.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) of the locale.",
            "example": "en"
          },
          "countries": {
            "type": "array",
            "description": "Countries the locale applies to and their enabled state.",
            "items": {
              "$ref": "#/components/schemas/Country_2"
            }
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this locale was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the locale was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftPageResponse": {
        "type": "object",
        "properties": {
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the page.",
            "example": "5cf50fd6-5ab3-43bc-8291-e74665d1f8ab",
            "x-viskan-field-format": "uuid"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this page is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "The title of the page.",
            "example": "Start Page"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) of the page. Exclusive with content locale.",
            "example": "en"
          },
          "countryCode": {
            "type": "string",
            "description": "The country code (in ISO 3166-1 alpha-2 format) of the page. Exclusive with content locale.",
            "example": "US"
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this page was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the page was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftProductResponse": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the product.",
            "example": "3e6cce60-79ee-4a40-b6f4-c7ef640418b7",
            "x-viskan-field-format": "uuid"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout the product is connected to.",
            "example": "a1f4e3b2-7c89-4d56-b123-9e8f7a6b5c4d",
            "x-viskan-field-format": "uuid"
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the product-to-layout connection was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the product-to-layout connection was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftSectionResponse": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the section.",
            "example": "5a331c07-b203-444e-88ed-d5ddeb2212ff",
            "x-viskan-field-format": "uuid"
          },
          "sectionName": {
            "type": "string",
            "description": "The name of the section.",
            "example": "Start Page Hero"
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this section was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the section was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftStoreSettingResponse": {
        "type": "object",
        "properties": {
          "storeSettingId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the store setting.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "storeSettingKey": {
            "type": "string",
            "description": "The key of the store setting.",
            "example": "searchUrlPrefix"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "The value of the store setting.",
            "example": "search"
          },
          "countryCode": {
            "type": "string",
            "description": "The country (in ISO 3166-1 alpha-2 format) this store setting applies to.",
            "example": "SE"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) for the store setting.",
            "example": "sv"
          },
          "draftedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this store setting was drafted.",
            "example": "2025-02-01T19:00:00.000Z"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the store setting was published.",
            "example": "2025-01-11T19:00:00.000Z"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "DraftWarningResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier for the entity with warning. For example, if type \u003d PAGE, then id \u003d pageId.",
            "example": "5da0525d-01da-427f-859f-947fa3c33aa2",
            "x-viskan-field-format": "uuid"
          },
          "type": {
            "type": "string",
            "description": "The type of the warning.",
            "enum": [
              "DRAFT",
              "PAGE",
              "LAYOUT",
              "SECTION",
              "VARIABLE",
              "PRODUCT"
            ],
            "example": "PAGE"
          },
          "code": {
            "type": "string",
            "description": "The specific code for the warning.",
            "example": "page-missing-variable-value"
          },
          "message": {
            "type": "string",
            "description": "The warning message detailing the issue.",
            "example": "\u0027Startpage\u0027 is missing a value for the variable \u0027Hero - Title\u0027"
          }
        }
      },
      "AvailableTranslationResponse": {
        "type": "object",
        "properties": {
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the translated page.",
            "example": "946fe813-1c54-42f9-9e75-f87072badc22",
            "x-viskan-field-format": "uuid"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this translation is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) for the translation. Exclusive with content locale.",
            "example": "sv"
          },
          "countryCode": {
            "type": "string",
            "description": "The country code (in ISO 3166-1 alpha-2 format) for the translation. Exclusive with content locale.",
            "example": "SE"
          },
          "path": {
            "type": "string",
            "description": "The URL path for the translated page.",
            "example": "/start"
          }
        }
      },
      "CategoryTreeResponse": {
        "type": "object",
        "properties": {
          "categoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the category tree node. Allows the same category to appear multiple times in the tree.",
            "example": "6b2a2871-f20d-4fa0-895e-e3c41976db7a",
            "x-viskan-field-format": "uuid"
          },
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the category.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "categoryName": {
            "type": "string",
            "description": "The name of the category.",
            "example": "Start Page"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether the category is hidden.",
            "example": false
          },
          "indexed": {
            "type": "boolean",
            "description": "Whether the category is indexed.",
            "example": true
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category. A protected category requires the user to be logged in to access it. Defaults to NONE.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the fallback category used when the user does not have access to this protected category.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid"
          },
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the page for this category.",
            "example": "5cf50fd6-5ab3-43bc-8291-e74665d1f8ab",
            "x-viskan-field-format": "uuid"
          },
          "path": {
            "type": "string",
            "description": "The URL path of the page for this category.",
            "example": "/start"
          },
          "title": {
            "type": "string",
            "description": "The title of the page.",
            "example": "Start Page"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time the page was published.",
            "example": "2025-01-15T10:30:00+01:00"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "availableTranslations": {
            "type": "array",
            "description": "Translations of the page in other locales, each with its own path and locale information.",
            "items": {
              "$ref": "#/components/schemas/AvailableTranslationResponse"
            }
          },
          "children": {
            "type": "array",
            "description": "Child categories in the hierarchy, each with their own pages and further children forming a recursive tree.",
            "items": {
              "$ref": "#/components/schemas/CategoryTreeResponse"
            }
          }
        }
      },
      "StoreSettingListResponse": {
        "type": "object",
        "properties": {
          "storeSettingId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the store setting.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "storeSettingKey": {
            "type": "string",
            "description": "The key of the store setting.",
            "example": "searchUrlPrefix"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "The value of the store setting.",
            "example": "search"
          },
          "countryCode": {
            "type": "string",
            "description": "The country (in ISO 3166-1 alpha-2 format) this store setting applies to.",
            "example": "SE"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) for the store setting.",
            "example": "sv"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "StoreSettingItemResponse": {
        "type": "object",
        "properties": {
          "storeSettingId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the store setting.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "storeSettingKey": {
            "type": "string",
            "description": "The key of the store setting.",
            "example": "searchUrlPrefix"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "The value of the store setting.",
            "example": "search"
          },
          "countryCode": {
            "type": "string",
            "description": "The country (in ISO 3166-1 alpha-2 format) this store setting applies to. If not specified, then the store setting applies to all countries.",
            "example": "SE"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) for the store setting. If not specified, then the store setting applies to all languages.",
            "example": "sv"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "SectionListResponse": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the section.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "sectionName": {
            "type": "string",
            "description": "Name of the section.",
            "example": "Start Page Hero"
          },
          "sectionDescription": {
            "type": "string",
            "description": "Description of the section.",
            "example": "Section for the start page displaying an image and text"
          },
          "sectionType": {
            "type": "string",
            "description": "Type of a section.",
            "enum": [
              "IMAGE_AND_TEXT",
              "SLIDER",
              "MENU",
              "GRIDS",
              "MISC"
            ],
            "example": "IMAGE_AND_TEXT"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "SectionItemResponse": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the section.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "sectionName": {
            "type": "string",
            "description": "Name of the section.",
            "example": "Start Page Hero"
          },
          "sectionDescription": {
            "type": "string",
            "description": "Description of the section.",
            "example": "Section for the start page displaying an image and text"
          },
          "sectionType": {
            "type": "string",
            "description": "Type of a section.",
            "enum": [
              "IMAGE_AND_TEXT",
              "SLIDER",
              "MENU",
              "GRIDS",
              "MISC"
            ],
            "example": "IMAGE_AND_TEXT"
          },
          "content": {
            "type": "string",
            "description": "Content of the section.",
            "example": "\u003cp\u003e{e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0}\u003c/p\u003e\u003cimage url\u003d{b6238f26-929b-41a2-862b-3029525e8b2f}\u003e"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "variables": {
            "type": "array",
            "description": "Variables defined in this section. Variables act as placeholders in the section content that can be given different values per page.",
            "items": {
              "$ref": "#/components/schemas/SectionVariableResponse"
            }
          },
          "layouts": {
            "type": "array",
            "description": "Layouts that include this section. Useful for understanding the impact of changes to this section.",
            "items": {
              "$ref": "#/components/schemas/SectionLayoutResponse"
            }
          },
          "searchableContent": {
            "type": "string",
            "description": "Searchable contents of this section.",
            "example": "Start page"
          }
        }
      },
      "SectionLayoutResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the layout.",
            "example": "ede165df-ff75-45aa-8cac-ec6a851b2433",
            "x-viskan-field-format": "uuid"
          },
          "layoutName": {
            "type": "string",
            "description": "Name of the layout.",
            "example": "Main layout"
          }
        }
      },
      "SectionVariableResponse": {
        "type": "object",
        "properties": {
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableName": {
            "type": "string",
            "description": "Name of the variable.",
            "example": "Hero paragraph"
          },
          "variableType": {
            "type": "string",
            "description": "Type of a variable.",
            "enum": [
              "TEXT",
              "IMAGE_URL"
            ],
            "example": "TEXT"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "ProductItemResponse": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the product.",
            "example": "3e6cce60-79ee-4a40-b6f4-c7ef640418b7",
            "x-viskan-field-format": "uuid"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout the product is connected to.",
            "example": "a1f4e3b2-7c89-4d56-b123-9e8f7a6b5c4d",
            "x-viskan-field-format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "variables": {
            "type": "array",
            "description": "List of variables for the product-to-layout connection.",
            "items": {
              "$ref": "#/components/schemas/PageVariableResponse"
            }
          }
        }
      },
      "PageLayoutResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout.",
            "example": "e8391697-5592-434a-9e20-ac2316adc235",
            "x-viskan-field-format": "uuid"
          },
          "layoutName": {
            "type": "string",
            "description": "The name of the layout.",
            "example": "Product List default layout"
          },
          "layoutDescription": {
            "type": "string",
            "description": "Description of the layout.",
            "example": "Default layout created for product list pages"
          },
          "layoutType": {
            "type": "string",
            "description": "Type of a layout.",
            "enum": [
              "START_PAGE",
              "PRODUCT_PAGE",
              "PRODUCT_LIST",
              "CHECKOUT",
              "SEARCH",
              "NOT_FOUND",
              "LOCALE",
              "INFO",
              "HEADER",
              "FOOTER",
              "MISC"
            ],
            "example": "PRODUCT_LIST"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "sections": {
            "type": "array",
            "description": "Sections that make up this layout, including their content and variables with any page-level overrides.",
            "items": {
              "$ref": "#/components/schemas/PageSectionResponse"
            }
          }
        }
      },
      "PageResponse": {
        "type": "object",
        "properties": {
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the page.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the category associated with the page.",
            "example": "fb831d92-c7b3-42fe-ac92-a2c2014d72f6",
            "x-viskan-field-format": "uuid"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this page is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "The title of the page.",
            "example": "Black Week Sale"
          },
          "metaTitle": {
            "type": "string",
            "description": "Meta title of the page.",
            "example": "Start Page for Black Week Sale"
          },
          "metaDescription": {
            "type": "string",
            "description": "Meta description of the page.",
            "example": "Temporary page for Black Week Sale"
          },
          "languageCode": {
            "type": "string",
            "description": "The language code (in ISO 639-1 format) of the page. Exclusive with content locale.",
            "example": "en"
          },
          "countryCode": {
            "type": "string",
            "description": "The country code (in ISO 3166-1 alpha-2 format) of the page. Exclusive with content locale.",
            "example": "US"
          },
          "path": {
            "type": "string",
            "description": "The URL path of the page.",
            "example": "/black-week-sale"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "layout": {
            "$ref": "#/components/schemas/PageLayoutResponse",
            "description": "Layout associated with the page, including its sections and variables with any page-level value overrides."
          },
          "searchableContent": {
            "type": "string",
            "description": "searchableContent on a page returns only the content related to that page if the page is drafted. If it is published, it returns the combined content of the page and all sections within it.",
            "example": "Black week sale 2025"
          }
        }
      },
      "PageSectionResponse": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the section.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "sectionName": {
            "type": "string",
            "description": "Name of the section.",
            "example": "Start Page Hero"
          },
          "sectionDescription": {
            "type": "string",
            "description": "Description of the section.",
            "example": "Section for the start page displaying an image and text"
          },
          "sectionType": {
            "type": "string",
            "description": "Type of the section.",
            "enum": [
              "IMAGE_AND_TEXT",
              "SLIDER",
              "MENU",
              "GRIDS",
              "MISC"
            ],
            "example": "IMAGE_AND_TEXT"
          },
          "content": {
            "type": "string",
            "description": "Content of the section.",
            "example": "\u003cp\u003e{e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0}\u003c/p\u003e\u003cimage url\u003d{b6238f26-929b-41a2-862b-3029525e8b2f}\u003e"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "variables": {
            "type": "array",
            "description": "Variables associated with the section. If the variable value has never been assigned, then the status is null.",
            "items": {
              "$ref": "#/components/schemas/VariableResponse"
            }
          }
        }
      },
      "VariableResponse": {
        "type": "object",
        "properties": {
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the variable.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableName": {
            "type": "string",
            "description": "Name of the variable.",
            "example": "Hero paragraph"
          },
          "variableType": {
            "type": "string",
            "description": "Type of the variable.",
            "enum": [
              "TEXT",
              "IMAGE_URL"
            ],
            "example": "TEXT"
          },
          "variableValue": {
            "type": "string",
            "description": "Value of the variable.",
            "example": "Welcome to start page!"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "LocaleListResponse": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the content locale.",
            "example": "1a7c7f65-1d4e-4c3d-8f6d-5e2cbb9f2e11",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Language code of the locale (ISO 639-1).",
            "example": "en"
          },
          "countries": {
            "type": "array",
            "description": "List of countries associated with this locale, each with a country code (ISO 3166-1 alpha-2) and an enabled flag indicating whether the locale is active for that country.",
            "items": {
              "$ref": "#/components/schemas/Country_2"
            }
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "LocaleItemResponse": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the content locale.",
            "example": "1a7c7f65-1d4e-4c3d-8f6d-5e2cbb9f2e11",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Language code of the locale (ISO 639-1).",
            "example": "en"
          },
          "countries": {
            "type": "array",
            "description": "List of countries associated with this locale, each with a country code (ISO 3166-1 alpha-2) and an enabled flag indicating whether the locale is active for that country.",
            "items": {
              "$ref": "#/components/schemas/Country_2"
            }
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "LayoutListResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout.",
            "example": "acbbeca5-e63d-49fb-ba71-f32ba63e6073",
            "x-viskan-field-format": "uuid"
          },
          "layoutName": {
            "type": "string",
            "description": "The name of the layout.",
            "example": "Start Page layout"
          },
          "layoutDescription": {
            "type": "string",
            "description": "Description of the layout.",
            "example": "Layout created for start pages"
          },
          "layoutType": {
            "type": "string",
            "description": "Type of a layout.",
            "enum": [
              "START_PAGE",
              "PRODUCT_PAGE",
              "PRODUCT_LIST",
              "CHECKOUT",
              "SEARCH",
              "NOT_FOUND",
              "LOCALE",
              "INFO",
              "HEADER",
              "FOOTER",
              "MISC"
            ],
            "example": "START_PAGE"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "LayoutItemResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout.",
            "example": "e8391697-5592-434a-9e20-ac2316adc235",
            "x-viskan-field-format": "uuid"
          },
          "layoutName": {
            "type": "string",
            "description": "The name of the layout.",
            "example": "Product List default layout"
          },
          "layoutDescription": {
            "type": "string",
            "description": "Description of the layout.",
            "example": "Default layout created for product list pages"
          },
          "layoutType": {
            "type": "string",
            "description": "Type of a layout.",
            "enum": [
              "START_PAGE",
              "PRODUCT_PAGE",
              "PRODUCT_LIST",
              "CHECKOUT",
              "SEARCH",
              "NOT_FOUND",
              "LOCALE",
              "INFO",
              "HEADER",
              "FOOTER",
              "MISC"
            ],
            "example": "START_PAGE"
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          },
          "sections": {
            "type": "array",
            "description": "Sections included in this layout, each identified by a layout-section ID and the underlying section ID.",
            "items": {
              "$ref": "#/components/schemas/LayoutSectionResponse"
            }
          },
          "pages": {
            "type": "array",
            "description": "Pages that reference this layout. Useful for understanding the impact of changes to this layout.",
            "items": {
              "$ref": "#/components/schemas/LayoutPageResponse"
            }
          }
        }
      },
      "LayoutPageResponse": {
        "type": "object",
        "properties": {
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the page.",
            "example": "3629bd11-e45d-4c63-8b5a-6190b5dfd0e7",
            "x-viskan-field-format": "uuid"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this page is associated with.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "Title of the page.",
            "example": "Start Page"
          }
        }
      },
      "LayoutSectionResponse": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of a section as part of a layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the section.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "sectionName": {
            "type": "string",
            "description": "Name of the section.",
            "example": "Start Page Hero"
          }
        }
      },
      "CategoryResponse": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the category.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "categoryName": {
            "type": "string",
            "description": "Name of the category.",
            "example": "Start Page"
          },
          "hidden": {
            "type": "boolean",
            "description": "Indicates if the category is hidden.",
            "example": false
          },
          "indexed": {
            "type": "boolean",
            "description": "Indicates if the category is indexed.",
            "example": true
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category. A protected category requires the user to be logged in to access it. Defaults to NONE.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the fallback category used when the user does not have access to this protected category.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid"
          },
          "parentCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the parent category. Null, if category is not part of the category tree.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid"
          },
          "siblingCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "ID of the sibling category.",
            "example": "04e0069f-8f37-43ce-952e-9c248feacb11",
            "x-viskan-field-format": "uuid"
          },
          "treePlacement": {
            "type": "array",
            "description": "The list of tree placements for the category. Each tree placement specifies a parent category and an optional sibling category to determine where the new category should be placed in the category tree.",
            "items": {
              "$ref": "#/components/schemas/TreePlacementResponse"
            }
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "TreePlacementResponse": {
        "type": "object",
        "properties": {
          "categoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the category tree node.",
            "example": "6b2a2871-f20d-4fa0-895e-e3c41976db7a",
            "x-viskan-field-format": "uuid"
          },
          "parentCategoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the parent category tree node.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "siblingCategoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier of the sibling category tree node that will be the next in order after this placement.",
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "x-viskan-field-format": "uuid"
          }
        },
        "required": [
          "parentCategoryTreeId"
        ]
      },
      "Country_2": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "Country code (in ISO 3166-1 alpha-2 format).",
            "example": "SE"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the locale is enabled for this country.",
            "example": true
          }
        }
      },
      "ProductListResponse_2": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the product.",
            "example": "3e6cce60-79ee-4a40-b6f4-c7ef640418b7",
            "x-viskan-field-format": "uuid"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "The identifier of the layout the product is connected to.",
            "example": "a1f4e3b2-7c89-4d56-b123-9e8f7a6b5c4d",
            "x-viskan-field-format": "uuid"
          },
          "variables": {
            "type": "array",
            "description": "List of variables for the product-to-layout connection.",
            "items": {
              "$ref": "#/components/schemas/PageVariableResponse"
            }
          },
          "status": {
            "type": "string",
            "description": "Status of the entity in comparison to published version.",
            "enum": [
              "NEW",
              "MODIFIED",
              "REMOVED",
              "CURRENT"
            ],
            "example": "MODIFIED"
          }
        }
      },
      "CreateJobExecutionExclusionRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the exclusion.",
            "example": "Christmas freeze"
          },
          "intervals": {
            "type": "array",
            "description": "The intervals during which jobs should not execute.",
            "items": {
              "$ref": "#/components/schemas/IntervalRequest"
            }
          }
        }
      },
      "IntervalRequest": {
        "type": "object",
        "properties": {
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The start date and time of the exclusion interval.",
            "example": "2026-12-24T00:00:00+01:00"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The end date and time of the exclusion interval.",
            "example": "2026-12-26T23:59:59+01:00"
          }
        }
      },
      "CreateJobExecutionExclusionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the created exclusion.",
            "example": 1
          }
        }
      },
      "ExecuteJobConfigResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "The status of the execution.",
            "example": "OK"
          },
          "messages": {
            "type": "array",
            "description": "The messages generated during execution.",
            "items": {
              "$ref": "#/components/schemas/JobMessageItem"
            }
          }
        }
      },
      "JobMessageItem": {
        "type": "object",
        "properties": {
          "severity": {
            "type": "string",
            "description": "The severity of the message.",
            "example": "INFO"
          },
          "description": {
            "type": "string",
            "description": "The message description."
          }
        }
      },
      "IntervalsDelta": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "Intervals to add.",
            "items": {
              "$ref": "#/components/schemas/IntervalRequest"
            }
          },
          "modified": {
            "type": "array",
            "description": "Intervals to modify.",
            "items": {
              "$ref": "#/components/schemas/UpdateIntervalRequest"
            }
          },
          "removed": {
            "type": "array",
            "description": "Interval IDs to remove.",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "UpdateIntervalRequest": {
        "type": "object",
        "properties": {
          "intervalId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the interval to update.",
            "example": 1
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The start date and time of the exclusion interval.",
            "example": "2026-12-24T00:00:00+01:00"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The end date and time of the exclusion interval.",
            "example": "2026-12-26T23:59:59+01:00"
          }
        }
      },
      "UpdateJobExecutionExclusionRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name to give the exclusion, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "Christmas freeze"
          },
          "intervals": {
            "$ref": "#/components/schemas/IntervalsDelta",
            "description": "Delta updates for the intervals."
          }
        }
      },
      "UpdateJobConfigRequest": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Whether to set the config as active or inactive, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": true
          },
          "jobExecutionExclusionId": {
            "type": "integer",
            "format": "int32",
            "description": "The job execution exclusion ID to assign, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": 1
          }
        }
      },
      "JobHistoryItem": {
        "type": "object",
        "properties": {
          "jobHistoryId": {
            "type": "integer",
            "format": "int64",
            "description": "The unique identifier of the history entry."
          },
          "jobConfigName": {
            "type": "string",
            "description": "The name of the job configuration.",
            "example": "Process orders"
          },
          "status": {
            "type": "string",
            "description": "The execution status.",
            "example": "OK"
          },
          "acknowledged": {
            "type": "boolean",
            "description": "Whether the failure has been acknowledged."
          },
          "startTime": {
            "type": "string",
            "description": "When execution started.",
            "example": "2026-03-30T10:00:00"
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration in milliseconds.",
            "example": 15000
          },
          "interactive": {
            "type": "boolean",
            "description": "Whether the execution was triggered manually by a user."
          },
          "messageCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of messages from the execution.",
            "example": 3
          },
          "executedBy": {
            "type": "string",
            "description": "The user who executed the job (external UUID).",
            "example": "1f79b421-e91b-4491-bd7f-6beafa0f0fc6"
          },
          "userAllowedToExecute": {
            "type": "boolean",
            "description": "Whether the user is allowed to execute the job config."
          }
        }
      },
      "JobHistoryDetail": {
        "type": "object",
        "properties": {
          "jobHistoryId": {
            "type": "integer",
            "format": "int64",
            "description": "The unique identifier of the history entry."
          },
          "jobConfigName": {
            "type": "string",
            "description": "The name of the job configuration."
          },
          "status": {
            "type": "string",
            "description": "The execution status."
          },
          "acknowledged": {
            "type": "boolean",
            "description": "Whether the failure has been acknowledged."
          },
          "startTime": {
            "type": "string",
            "description": "When execution started."
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration in milliseconds."
          },
          "interactive": {
            "type": "boolean",
            "description": "Whether the execution was triggered manually by a user."
          },
          "firedOn": {
            "type": "string",
            "description": "Host that fired the scheduled trigger."
          },
          "scheduledFireTime": {
            "type": "string",
            "description": "When the job was scheduled to fire."
          },
          "actualFireTime": {
            "type": "string",
            "description": "When the trigger actually fired."
          },
          "executedOn": {
            "type": "string",
            "description": "Host that executed the job."
          },
          "executedBy": {
            "type": "string",
            "description": "Name of the user who executed the job."
          },
          "messages": {
            "type": "array",
            "description": "Translated messages from the execution.",
            "items": {
              "$ref": "#/components/schemas/JobHistoryMessageItem"
            }
          }
        }
      },
      "JobHistoryMessageItem": {
        "type": "object",
        "properties": {
          "severity": {
            "type": "string",
            "description": "The severity of the message.",
            "example": "INFO"
          },
          "description": {
            "type": "string",
            "description": "The translated message description."
          }
        }
      },
      "JobExecutionExclusionItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the exclusion.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the exclusion.",
            "example": "Christmas freeze"
          }
        }
      },
      "IntervalItem": {
        "type": "object",
        "properties": {
          "intervalId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the interval.",
            "example": 1
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The start date and time of the exclusion interval.",
            "example": "2026-12-24T00:00:00+01:00"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The end date and time of the exclusion interval.",
            "example": "2026-12-26T23:59:59+01:00"
          }
        }
      },
      "JobExecutionExclusionDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the exclusion.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the exclusion.",
            "example": "Christmas freeze"
          },
          "intervals": {
            "type": "array",
            "description": "The intervals during which jobs should not execute.",
            "items": {
              "$ref": "#/components/schemas/IntervalItem"
            }
          }
        }
      },
      "JobConfigItem": {
        "type": "object",
        "properties": {
          "jobConfigId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the job config.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the job config.",
            "example": "Process order cancellations"
          },
          "description": {
            "type": "string",
            "description": "The description of the job config."
          },
          "active": {
            "type": "boolean",
            "description": "Whether the job config is active.",
            "example": true
          },
          "userAllowedToActivate": {
            "type": "boolean",
            "description": "Whether the user is allowed to activate/deactivate this config.",
            "example": true
          },
          "userAllowedToExecute": {
            "type": "boolean",
            "description": "Whether the user is allowed to manually execute this config.",
            "example": false
          },
          "jobExecutionExclusionId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the assigned job execution exclusion. 0 means none.",
            "example": 0
          }
        }
      },
      "SetPropertyValueRequest": {
        "type": "object",
        "description": "Request to set or update the value of a single property key on a customer. The three fields are mutually exclusive — exactly one must be provided, depending on the property key\u0027s presentation type.",
        "properties": {
          "value": {
            "description": "The raw value. Only for \u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eINTEGER\u003c/code\u003e, \u003ccode\u003eFLOAT\u003c/code\u003e, \u003ccode\u003eBOOLEAN\u003c/code\u003e and \u003ccode\u003eHTML\u003c/code\u003e presentation types.",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer",
                "format": "int32"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "boolean"
              }
            ],
            "x-viskan-nullable": "true"
          },
          "propertyValueId": {
            "type": "integer",
            "format": "int32",
            "description": "The predefined property value ID. Only for \u003ccode\u003eSINGLE_SELECT\u003c/code\u003e presentation type.",
            "x-viskan-nullable": "true"
          },
          "propertyValueIds": {
            "type": "array",
            "description": "The list of predefined property value IDs. Only for \u003ccode\u003eMULTI_SELECT\u003c/code\u003e presentation type.",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "x-viskan-nullable": "true"
          }
        }
      },
      "PropertyKeyItem": {
        "type": "object",
        "properties": {
          "propertyKeyId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the property key.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the property key.",
            "example": "Color"
          },
          "presentation": {
            "type": "string",
            "description": "The presentation type.",
            "enum": [
              "STRING",
              "SINGLE_SELECT",
              "BOOLEAN",
              "MULTI_SELECT",
              "INTEGER",
              "FLOAT",
              "HTML"
            ],
            "example": "SINGLE_SELECT"
          },
          "keyGroup": {
            "type": "string",
            "description": "The key group."
          },
          "values": {
            "type": "array",
            "description": "The predefined values. Only present for \u003ccode\u003eSINGLE_SELECT\u003c/code\u003e and \u003ccode\u003eMULTI_SELECT\u003c/code\u003e presentation types, omitted otherwise.",
            "items": {
              "$ref": "#/components/schemas/PropertyValueItem"
            }
          }
        }
      },
      "PropertyValueItem": {
        "type": "object",
        "properties": {
          "propertyValueId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the property value.",
            "example": 1
          },
          "value": {
            "type": "string",
            "description": "The value.",
            "example": "Red"
          },
          "mediaURL": {
            "type": "string",
            "description": "The media URL associated with this value."
          },
          "filterTag": {
            "type": "string",
            "description": "The filter tag associated with this value."
          }
        }
      },
      "CustomerPropertyItem": {
        "type": "object",
        "properties": {
          "propertyKeyId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the property key.",
            "example": 1
          },
          "propertyKeyName": {
            "type": "string",
            "description": "The name of the property key.",
            "example": "Color"
          },
          "presentation": {
            "type": "string",
            "description": "The presentation type.",
            "enum": [
              "STRING",
              "SINGLE_SELECT",
              "BOOLEAN",
              "MULTI_SELECT",
              "INTEGER",
              "FLOAT",
              "HTML"
            ],
            "example": "SINGLE_SELECT"
          },
          "value": {
            "description": "The raw value. Only present for \u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eINTEGER\u003c/code\u003e, \u003ccode\u003eFLOAT\u003c/code\u003e, \u003ccode\u003eBOOLEAN\u003c/code\u003e and \u003ccode\u003eHTML\u003c/code\u003e presentation types, omitted otherwise.",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer",
                "format": "int32"
              },
              {
                "type": "number",
                "format": "double"
              },
              {
                "type": "boolean"
              }
            ],
            "x-viskan-nullable": "true"
          },
          "propertyValue": {
            "$ref": "#/components/schemas/CustomerPropertyValueItem",
            "description": "The selected property value. Only present for \u003ccode\u003eSINGLE_SELECT\u003c/code\u003e presentation type, omitted otherwise.",
            "x-viskan-nullable": "true"
          },
          "propertyValues": {
            "type": "array",
            "description": "The selected property values. Only present for \u003ccode\u003eMULTI_SELECT\u003c/code\u003e presentation type, omitted otherwise.",
            "items": {
              "$ref": "#/components/schemas/CustomerPropertyValueItem"
            },
            "x-viskan-nullable": "true"
          }
        }
      },
      "CustomerPropertyValueItem": {
        "type": "object",
        "properties": {
          "propertyValueId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the property value.",
            "example": 1
          },
          "value": {
            "type": "string",
            "description": "The value.",
            "example": "Red"
          },
          "mediaURL": {
            "type": "string",
            "description": "The media URL associated with this value."
          }
        }
      },
      "CreateTenantRequest": {
        "type": "object",
        "properties": {
          "tenantName": {
            "type": "string",
            "description": "The name of the tenant.",
            "example": "Viskan System AB"
          },
          "countryCode": {
            "type": "string",
            "description": "The country of the legal entity. Must be a valid \u003ca href\u003d\"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes\"\u003eISO 3166-1 alpha-2\u003c/a\u003e country code.",
            "example": "SE"
          },
          "organizationNumber": {
            "type": "string",
            "description": "The organization number of the company that owns this tenant.",
            "example": 5565901864
          },
          "databaseHost": {
            "type": "string",
            "description": "The hostname of the database server of the main database of this tenant.",
            "example": "viskanssql.viskan.local"
          },
          "databaseNameKey": {
            "type": "string",
            "description": "The company name part of the database name of the new database. A prefix and a suffix will be added to this value.",
            "example": "Viskan"
          }
        }
      },
      "CreatedTenant": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "description": "The identifier of the created tenant.",
            "example": "46c5b0b0-c42a-44b0-97e2-39ef2f9118ac",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "UpdateTenantRequest": {
        "type": "object",
        "properties": {
          "tenantName": {
            "type": "string",
            "description": "The name of the tenant, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "Viskan System AB"
          },
          "countryCode": {
            "type": "string",
            "description": "The country of the legal entity, or \u003ccode\u003enull\u003c/code\u003e. Must be a valid \u003ca href\u003d\"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes\"\u003eISO 3166-1 alpha-2\u003c/code\u003e country code if present.",
            "example": "SE"
          },
          "organizationNumber": {
            "type": "string",
            "description": "The organization number of the company that owns this tenant, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": 5565901864
          },
          "browserKey": {
            "type": "string",
            "description": "The short and unique key that is used in the browser to identify this tenant, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "lf1dk8"
          },
          "databaseName": {
            "type": "string",
            "description": "The name of the main database of this tenant, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "ViskanProd"
          },
          "databaseHost": {
            "type": "string",
            "description": "The hostname of the database server of the main database of this tenant, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "viskanssql.viskan.local"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the tenant is active, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": true
          }
        }
      },
      "TenantInfo": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "description": "The identifier of the tenant.",
            "example": "46c5b0b0-c42a-44b0-97e2-39ef2f9118ac",
            "x-viskan-field-format": "uuid"
          },
          "tenantName": {
            "type": "string",
            "description": "The name of the tenant.",
            "example": "Viskan System AB"
          },
          "countryCode": {
            "type": "string",
            "description": "The country of the legal entity. This value is always a valid \u003ca href\u003d\"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes\"\u003eISO 3166-1 alpha-2\u003c/code\u003e country code.",
            "example": "SE"
          },
          "organizationNumber": {
            "type": "string",
            "description": "The organization number of the company that owns this tenant.",
            "example": 5565901864
          },
          "browserKey": {
            "type": "string",
            "description": "The short and unique key that is used in the browser to identify this tenant.",
            "example": "lf1dk8"
          },
          "databaseName": {
            "type": "string",
            "description": "The name of the main database of this tenant.",
            "example": "ViskanProd"
          },
          "databaseHost": {
            "type": "string",
            "description": "The hostname of the database server of the main database of this tenant.",
            "example": "viskanssql.viskan.local"
          },
          "companyId": {
            "type": "integer",
            "format": "int32",
            "deprecated": true,
            "description": "The ID of the company within the main database. This is a deprecated feature, all new tenants should have zero as the value of this field.",
            "example": 0
          },
          "active": {
            "type": "boolean",
            "description": "Whether the tenant is active.",
            "example": true
          }
        }
      },
      "AddUserToTenantRequest": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "description": "The identifier of the tenant to add the user to.",
            "example": "8811e13d-8359-4a63-90c8-4c178b02e564",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "SynchronizeUsersRequest": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "description": "The identifier of the tenant to synchronize users for.",
            "example": "8811e13d-8359-4a63-90c8-4c178b02e564",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "CreateUserRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user to create.",
            "example": "john.doe@viskan.com",
            "x-viskan-field-format": "email-address"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user. Can be \u003ccode\u003enull\u003c/code\u003e if the email address is already a registered account. Use the \u003ca href\u003d\"/api-reference/admin/user/check-availability.html\"\u003eCheck availability\u003c/a\u003e method to know this.",
            "example": "John",
            "x-viskan-nullable": "true"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user. Can be \u003ccode\u003enull\u003c/code\u003e if the email address is already a registered account. Use the \u003ca href\u003d\"/api-reference/admin/user/check-availability.html\"\u003eCheck availability\u003c/a\u003e method to know this.",
            "example": "Doe",
            "x-viskan-nullable": "true"
          },
          "permissionLevel": {
            "type": "string",
            "description": "The permission level to assign to the user.",
            "enum": [
              "NORMAL",
              "SUPERUSER",
              "ADMINISTRATOR"
            ],
            "example": "NORMAL"
          },
          "groupIds": {
            "type": "array",
            "description": "The IDs of the groups to add the user to.",
            "example": [
              1,
              3
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          },
          "connectedTenantIds": {
            "type": "array",
            "description": "The IDs of the connected tenants to add this user to. This is only applicable if the setup uses connected tenants. It is also only applicable for normal users and superusers. Administrators automatically get assigned to all connected tenants.",
            "example": [
              "8811e13d-8359-4a63-90c8-4c178b02e564",
              "bae25401-b6c1-465e-b2e6-607a2b40f854"
            ],
            "items": {
              "type": "string",
              "x-viskan-field-format": "uuid"
            },
            "uniqueItems": true,
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "CreateUserResult": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The identifier of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df",
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "AvailabilityRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "The email address to check availability of.",
            "example": "john.doe@viskan.com",
            "x-viskan-field-format": "email-address"
          }
        }
      },
      "AvailabilityResult": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "The exact email address of the user found.",
            "example": "john.doe@viskan.com",
            "x-viskan-field-format": "email-address"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the found user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the found user.",
            "example": "Doe"
          },
          "accessToTenant": {
            "type": "boolean",
            "description": "Whether the found user already has access to this tenant. If it does not, it can be added to this tenant.",
            "example": false
          },
          "legacyUser": {
            "type": "boolean",
            "description": "Whether the found user is a legacy user that can be upgraded to a next-gen user.",
            "example": false
          }
        }
      },
      "NewUserGroup": {
        "type": "object",
        "properties": {
          "groupName": {
            "type": "string",
            "description": "The name of the new user group.",
            "example": "Customer service"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user group is active. Defaults to \u003ccode\u003etrue\u003c/code\u003e.",
            "example": true
          },
          "roles": {
            "type": "array",
            "description": "The list of permission roles that the user group should have access to.",
            "example": [
              "country",
              "customer:read",
              "customer:update"
            ],
            "items": {
              "type": "string",
              "enum": [
                "base",
                "admin",
                "viskanAdmin",
                "accounting",
                "accountingconfig",
                "accountingjournal",
                "arrivalmethod",
                "bankaccount",
                "blockcode",
                "bonusconfig",
                "bulkmessaging",
                "campaign",
                "campaignconfig",
                "cancellationreason",
                "certificate",
                "city",
                "contentperiod",
                "country",
                "country:read",
                "country:create",
                "country:update",
                "country:delete",
                "creditreason",
                "creditrule",
                "currency",
                "customer",
                "customer:read",
                "customer:create",
                "customer:update",
                "customer:forget",
                "customercategory",
                "customerconfig",
                "customerimport",
                "customfield",
                "datasearch",
                "delivery",
                "dispatchplanning",
                "dropshipping",
                "duplicatecontrol",
                "duplicatecontrolconfig",
                "exchangerate",
                "filecomm",
                "helpdesk",
                "instorearrival",
                "instorecollect",
                "instoreconfig",
                "instoreoverview",
                "instorepick",
                "instorereturn",
                "inventory",
                "illegalword",
                "invoicetext",
                "invoicetype",
                "jobconfig",
                "jobconfigoverview",
                "jobhistory",
                "logisticsprovider",
                "media",
                "offer",
                "offer:create",
                "offer:delete",
                "offer:read",
                "offer:update",
                "orderoverview",
                "payment",
                "paymentmethod",
                "paymentterms",
                "physicalstore",
                "postalcode",
                "pricecampaign",
                "pricelist",
                "product",
                "productcategory",
                "productconfig",
                "productreplacement",
                "purchaseorder",
                "redirect",
                "refund",
                "remarketingconfig",
                "reminder",
                "reminderconfig",
                "return",
                "returnreason",
                "seller",
                "serviceprovider",
                "settings",
                "shipmentbatchconfig",
                "shipmentoverview",
                "shipmentoverview:read",
                "shipmentoverview:create",
                "shipmentoverview:update",
                "shipmentoverview:cancel",
                "shipmentpicking",
                "shippingmethod",
                "shippingterms",
                "standardnote",
                "stocklocation",
                "stockmodule",
                "stockoverview",
                "stockvalue",
                "streamlineexpress",
                "streamlineexpress:read",
                "streamlineexpress:create",
                "streamlineexpress:update",
                "streamlineexpress:delete",
                "subscriptionmassupdate",
                "subscriptiontemplate",
                "subscriptiontemplate:read",
                "subscriptiontemplate:create",
                "subscriptiontemplate:update",
                "subscriptiontemplate:delete",
                "subscriptiontemplateconfig",
                "supplier",
                "templatetext",
                "user",
                "usergroup",
                "validname",
                "warehouse"
              ]
            }
          },
          "reports": {
            "type": "array",
            "description": "The list of report IDs that the user group should have access to.",
            "example": [
              10000,
              10001
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "warehouses": {
            "type": "array",
            "description": "The list of warehouses that the user group should have access to.",
            "items": {
              "$ref": "#/components/schemas/WarehouseKey"
            }
          },
          "returnReasonIds": {
            "type": "array",
            "description": "The list of return reasons IDs that the user group should have access to.",
            "example": [
              1,
              3
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "storeIds": {
            "type": "array",
            "description": "The list of web store IDs that the user group should have access to.",
            "example": [
              1
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "WarehouseKey": {
        "type": "object",
        "properties": {
          "warehouseCompanyId": {
            "type": "integer",
            "format": "int32",
            "description": "The company ID of the warehouse.",
            "example": 0
          },
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the warehouse.",
            "example": 1
          }
        }
      },
      "CreatedUserGroup": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "format": "int32",
            "description": "The identifier of the created user group.",
            "example": 1
          }
        }
      },
      "UpdateGlobalUserRequest": {
        "type": "object",
        "properties": {
          "blocked": {
            "type": "boolean",
            "description": "The block status to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": true,
            "x-viskan-nullable": "true"
          },
          "firstName": {
            "type": "string",
            "description": "The first name to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "John",
            "x-viskan-nullable": "true"
          },
          "lastName": {
            "type": "string",
            "description": "The last name to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "Doe",
            "x-viskan-nullable": "true"
          }
        }
      },
      "GroupModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "The list of group IDs to add to the user.",
            "example": [
              1,
              3
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "removed": {
            "type": "array",
            "description": "The list of group IDs to remove from the user.",
            "example": [
              7
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "TenantModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "The list of connected tenant IDs to add to the user.",
            "example": [
              "8811e13d-8359-4a63-90c8-4c178b02e564",
              "bae25401-b6c1-465e-b2e6-607a2b40f854"
            ],
            "items": {
              "type": "string",
              "x-viskan-field-format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          },
          "removed": {
            "type": "array",
            "description": "The list of connected tenant IDs to remove from the user.",
            "example": [
              "e34d6c1c-da01-4dd8-95a7-8bc5d2beab8f"
            ],
            "items": {
              "type": "string",
              "x-viskan-field-format": "uuid"
            },
            "x-viskan-field-format": "uuid"
          }
        }
      },
      "UpdateUserRequest": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "The first name to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "John",
            "x-viskan-nullable": "true"
          },
          "lastName": {
            "type": "string",
            "description": "The last name to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "Doe",
            "x-viskan-nullable": "true"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user is active or not, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": true,
            "x-viskan-nullable": "true"
          },
          "permissionLevel": {
            "type": "string",
            "description": "The permission level to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "enum": [
              "NORMAL",
              "SUPERUSER",
              "ADMINISTRATOR"
            ],
            "example": "NORMAL",
            "x-viskan-nullable": "true"
          },
          "groups": {
            "$ref": "#/components/schemas/GroupModifications",
            "description": "Modifications to the list of user groups that the user is a member of."
          },
          "connectedTenants": {
            "$ref": "#/components/schemas/TenantModifications",
            "description": "Modifications to the list of connected tenants that the user is a member of."
          },
          "username": {
            "type": "string",
            "deprecated": true,
            "description": "The legacy username of the user. This is only needed to access the older generations of Viskan Backoffice. Avoid using this.",
            "x-viskan-nullable": "true"
          },
          "password": {
            "type": "string",
            "deprecated": true,
            "description": "The legacy password of the user. This is only needed by Viskan customers that access the older generation of Viskan Backoffice and they don\u0027t use matching usernames between the Citrix accounts and these users.",
            "x-viskan-nullable": "true"
          },
          "languageId": {
            "type": "integer",
            "format": "int32",
            "deprecated": true,
            "description": "The legacy language of the user. This is only used by the older generations of Viskan Backoffice. Avoid using this.",
            "x-viskan-nullable": "true"
          }
        }
      },
      "ReportModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "Reports that should be added.",
            "example": [
              10000,
              10001
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          },
          "removed": {
            "type": "array",
            "description": "Reports that should be removed.",
            "example": [
              10002
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          }
        }
      },
      "ReturnReasonModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "Return reasons that should be added.",
            "items": {
              "$ref": "#/components/schemas/ReturnReason_2"
            },
            "uniqueItems": true
          },
          "removed": {
            "type": "array",
            "description": "Return reasons that should be removed.",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          }
        }
      },
      "RoleModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "Roles that should be added.",
            "example": [
              "currency"
            ],
            "items": {
              "type": "string",
              "enum": [
                "base",
                "admin",
                "viskanAdmin",
                "accounting",
                "accountingconfig",
                "accountingjournal",
                "arrivalmethod",
                "bankaccount",
                "blockcode",
                "bonusconfig",
                "bulkmessaging",
                "campaign",
                "campaignconfig",
                "cancellationreason",
                "certificate",
                "city",
                "contentperiod",
                "country",
                "country:read",
                "country:create",
                "country:update",
                "country:delete",
                "creditreason",
                "creditrule",
                "currency",
                "customer",
                "customer:read",
                "customer:create",
                "customer:update",
                "customer:forget",
                "customercategory",
                "customerconfig",
                "customerimport",
                "customfield",
                "datasearch",
                "delivery",
                "dispatchplanning",
                "dropshipping",
                "duplicatecontrol",
                "duplicatecontrolconfig",
                "exchangerate",
                "filecomm",
                "helpdesk",
                "instorearrival",
                "instorecollect",
                "instoreconfig",
                "instoreoverview",
                "instorepick",
                "instorereturn",
                "inventory",
                "illegalword",
                "invoicetext",
                "invoicetype",
                "jobconfig",
                "jobconfigoverview",
                "jobhistory",
                "logisticsprovider",
                "media",
                "offer",
                "offer:create",
                "offer:delete",
                "offer:read",
                "offer:update",
                "orderoverview",
                "payment",
                "paymentmethod",
                "paymentterms",
                "physicalstore",
                "postalcode",
                "pricecampaign",
                "pricelist",
                "product",
                "productcategory",
                "productconfig",
                "productreplacement",
                "purchaseorder",
                "redirect",
                "refund",
                "remarketingconfig",
                "reminder",
                "reminderconfig",
                "return",
                "returnreason",
                "seller",
                "serviceprovider",
                "settings",
                "shipmentbatchconfig",
                "shipmentoverview",
                "shipmentoverview:read",
                "shipmentoverview:create",
                "shipmentoverview:update",
                "shipmentoverview:cancel",
                "shipmentpicking",
                "shippingmethod",
                "shippingterms",
                "standardnote",
                "stocklocation",
                "stockmodule",
                "stockoverview",
                "stockvalue",
                "streamlineexpress",
                "streamlineexpress:read",
                "streamlineexpress:create",
                "streamlineexpress:update",
                "streamlineexpress:delete",
                "subscriptionmassupdate",
                "subscriptiontemplate",
                "subscriptiontemplate:read",
                "subscriptiontemplate:create",
                "subscriptiontemplate:update",
                "subscriptiontemplate:delete",
                "subscriptiontemplateconfig",
                "supplier",
                "templatetext",
                "user",
                "usergroup",
                "validname",
                "warehouse"
              ]
            },
            "uniqueItems": true
          },
          "removed": {
            "type": "array",
            "description": "Roles that should be removed.",
            "example": [
              "customer:update"
            ],
            "items": {
              "type": "string",
              "enum": [
                "base",
                "admin",
                "viskanAdmin",
                "accounting",
                "accountingconfig",
                "accountingjournal",
                "arrivalmethod",
                "bankaccount",
                "blockcode",
                "bonusconfig",
                "bulkmessaging",
                "campaign",
                "campaignconfig",
                "cancellationreason",
                "certificate",
                "city",
                "contentperiod",
                "country",
                "country:read",
                "country:create",
                "country:update",
                "country:delete",
                "creditreason",
                "creditrule",
                "currency",
                "customer",
                "customer:read",
                "customer:create",
                "customer:update",
                "customer:forget",
                "customercategory",
                "customerconfig",
                "customerimport",
                "customfield",
                "datasearch",
                "delivery",
                "dispatchplanning",
                "dropshipping",
                "duplicatecontrol",
                "duplicatecontrolconfig",
                "exchangerate",
                "filecomm",
                "helpdesk",
                "instorearrival",
                "instorecollect",
                "instoreconfig",
                "instoreoverview",
                "instorepick",
                "instorereturn",
                "inventory",
                "illegalword",
                "invoicetext",
                "invoicetype",
                "jobconfig",
                "jobconfigoverview",
                "jobhistory",
                "logisticsprovider",
                "media",
                "offer",
                "offer:create",
                "offer:delete",
                "offer:read",
                "offer:update",
                "orderoverview",
                "payment",
                "paymentmethod",
                "paymentterms",
                "physicalstore",
                "postalcode",
                "pricecampaign",
                "pricelist",
                "product",
                "productcategory",
                "productconfig",
                "productreplacement",
                "purchaseorder",
                "redirect",
                "refund",
                "remarketingconfig",
                "reminder",
                "reminderconfig",
                "return",
                "returnreason",
                "seller",
                "serviceprovider",
                "settings",
                "shipmentbatchconfig",
                "shipmentoverview",
                "shipmentoverview:read",
                "shipmentoverview:create",
                "shipmentoverview:update",
                "shipmentoverview:cancel",
                "shipmentpicking",
                "shippingmethod",
                "shippingterms",
                "standardnote",
                "stocklocation",
                "stockmodule",
                "stockoverview",
                "stockvalue",
                "streamlineexpress",
                "streamlineexpress:read",
                "streamlineexpress:create",
                "streamlineexpress:update",
                "streamlineexpress:delete",
                "subscriptionmassupdate",
                "subscriptiontemplate",
                "subscriptiontemplate:read",
                "subscriptiontemplate:create",
                "subscriptiontemplate:update",
                "subscriptiontemplate:delete",
                "subscriptiontemplateconfig",
                "supplier",
                "templatetext",
                "user",
                "usergroup",
                "validname",
                "warehouse"
              ]
            },
            "uniqueItems": true
          }
        }
      },
      "UpdateUserGroup": {
        "type": "object",
        "properties": {
          "groupName": {
            "type": "string",
            "description": "The name to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": "Customer service",
            "x-viskan-nullable": "true"
          },
          "active": {
            "type": "boolean",
            "description": "The active-status to set, or \u003ccode\u003enull\u003c/code\u003e to not update it.",
            "example": true,
            "x-viskan-nullable": "true"
          },
          "reports": {
            "$ref": "#/components/schemas/ReportModifications",
            "description": "Modifications to the list of report IDs that the user group have access to."
          },
          "roles": {
            "$ref": "#/components/schemas/RoleModifications",
            "description": "Modifications to the list of permission roles that the user group have access to."
          },
          "warehouses": {
            "$ref": "#/components/schemas/WarehouseModifications",
            "description": "Modifications to the list of warehouses that the user group have access to."
          },
          "returnReasons": {
            "$ref": "#/components/schemas/ReturnReasonModifications",
            "description": "Modifications to the list of return reasons that the user group have access to."
          },
          "webStores": {
            "$ref": "#/components/schemas/WebStoreModifications",
            "description": "Modifications to the list of web stores that the user group have access to."
          }
        }
      },
      "WarehouseModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "Warehouses that should be added.",
            "items": {
              "$ref": "#/components/schemas/WarehouseKey"
            },
            "uniqueItems": true
          },
          "removed": {
            "type": "array",
            "description": "Warehouses that should be removed.",
            "items": {
              "$ref": "#/components/schemas/WarehouseKey"
            },
            "uniqueItems": true
          }
        }
      },
      "WebStore": {
        "type": "object",
        "properties": {
          "storeId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the web store.",
            "example": 1
          }
        }
      },
      "WebStoreModifications": {
        "type": "object",
        "properties": {
          "added": {
            "type": "array",
            "description": "Web stores that should be added.",
            "items": {
              "$ref": "#/components/schemas/WebStore"
            },
            "uniqueItems": true
          },
          "removed": {
            "type": "array",
            "description": "Web stores that should be removed.",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          }
        }
      },
      "GlobalUser": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The identifier of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df",
            "x-viskan-field-format": "uuid"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "john.doe@viskan.com",
            "x-viskan-field-format": "email-address"
          },
          "profilePictureURL": {
            "type": "string",
            "description": "The URL of the user\u0027s profile picture.",
            "example": "https://profilepicture.connect.visma.com/v1.0/08ce1500-a817-40e8-8e5a-36d3cef125df?client_id\u003dviskan",
            "x-viskan-field-format": "url"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "example": "Doe"
          },
          "blocked": {
            "type": "boolean",
            "description": "Whether the user is blocked.",
            "example": false
          }
        }
      },
      "ProfileInfo": {
        "type": "object",
        "description": "Information about the user profile.",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The identifier of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df",
            "x-viskan-field-format": "uuid"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "john.doe@example.com",
            "x-viskan-field-format": "email-address"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "example": "Doe"
          },
          "profilePictureURL": {
            "type": "string",
            "description": "The URL of their profile picture.",
            "example": "https://profilepicture.connect.visma.com/v1.0/08ce1500-a817-40e8-8e5a-36d3cef125df?client_id\u003dviskan",
            "x-viskan-field-format": "url"
          }
        }
      },
      "ProfileDetails": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The identifier of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df",
            "x-viskan-field-format": "uuid"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "john.doe@viskan.com",
            "x-viskan-field-format": "email-address"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "example": "Doe"
          },
          "viskanEmployee": {
            "type": "boolean",
            "description": "Indicates whether the user is a Viskan employee.",
            "example": false
          },
          "profilePictureURL": {
            "type": "string",
            "description": "The URL of their profile picture.",
            "example": "https://profilepicture.connect.visma.com/v1.0/08ce1500-a817-40e8-8e5a-36d3cef125df?client_id\u003dviskan",
            "x-viskan-field-format": "url"
          }
        }
      },
      "UserListItem": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The identifier of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df",
            "x-viskan-field-format": "uuid"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "john.doe@viskan.se",
            "x-viskan-field-format": "email-address"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "example": "Doe"
          },
          "profilePictureURL": {
            "type": "string",
            "description": "The URL of the user\u0027s profile picture. This value is empty for users that have not yet accepted their initial invitation.",
            "example": "https://profilepicture.connect.visma.com/v1.0/08ce1500-a817-40e8-8e5a-36d3cef125df?client_id\u003dviskan",
            "x-viskan-field-format": "url"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user is active.",
            "example": true
          },
          "inConnectedTenantsOnly": {
            "type": "boolean",
            "description": "Whether the user is only active in connected tenants, and not the current one. This is only applicable for setups with connected tenants. Otherwise, it always has the value \u003ccode\u003efalse\u003c/code\u003e.",
            "example": false
          },
          "blocked": {
            "type": "boolean",
            "description": "Whether the user is blocked centrally by Viskan.",
            "example": false
          },
          "permissionLevel": {
            "type": "string",
            "description": "The permission level of the user.",
            "enum": [
              "NORMAL",
              "SUPERUSER",
              "ADMINISTRATOR"
            ],
            "example": "NORMAL"
          }
        }
      },
      "ConnectedTenant": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "description": "The identifier of the connected tenant.",
            "example": "46c5b0b0-c42a-44b0-97e2-39ef2f9118ac",
            "x-viskan-field-format": "uuid"
          },
          "tenantName": {
            "type": "string",
            "description": "The name of the tenant.",
            "example": "Viskan System AB"
          }
        }
      },
      "GroupData": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "format": "int32",
            "description": "The identifier of the group.",
            "example": 1
          },
          "groupName": {
            "type": "string",
            "description": "The name of the group.",
            "example": "Customer service"
          }
        }
      },
      "UserData": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The identifier of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df",
            "x-viskan-field-format": "uuid"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "john.doe@viskan.se",
            "x-viskan-field-format": "email-address"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "example": "Doe"
          },
          "profilePictureURL": {
            "type": "string",
            "description": "The URL of the user\u0027s profile picture. This value is empty for users that have not yet accepted their initial invitation.",
            "example": "https://profilepicture.connect.visma.com/v1.0/08ce1500-a817-40e8-8e5a-36d3cef125df?client_id\u003dviskan",
            "x-viskan-field-format": "url"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user is active.",
            "example": true
          },
          "blocked": {
            "type": "boolean",
            "description": "Whether the user is blocked centrally by Viskan.",
            "example": false
          },
          "permissionLevel": {
            "type": "string",
            "description": "The permission level of the user.",
            "enum": [
              "NORMAL",
              "SUPERUSER",
              "ADMINISTRATOR"
            ],
            "example": "NORMAL"
          },
          "groups": {
            "type": "array",
            "description": "The user groups that the user is a member of.",
            "items": {
              "$ref": "#/components/schemas/GroupData"
            }
          },
          "connectedTenants": {
            "type": "array",
            "description": "The connected tenants that this user is a member of. Only applicable in setups that use connected tenants. If connected tenants are not used, the value will be an empty list.",
            "items": {
              "$ref": "#/components/schemas/ConnectedTenant"
            }
          },
          "username": {
            "type": "string",
            "deprecated": true,
            "description": "The legacy username of the user. This is only needed to access the older generations of Viskan Backoffice. Avoid using this."
          },
          "languageId": {
            "type": "integer",
            "format": "int32",
            "deprecated": true,
            "description": "The legacy language of the user. This is only used by the older generations of Viskan Backoffice. Avoid using this."
          }
        }
      },
      "UserGroupListItem": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "format": "int32",
            "description": "The identifier of the user group.",
            "example": 1
          },
          "groupName": {
            "type": "string",
            "description": "The name of the user group.",
            "example": "Customer service"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user group is active.",
            "example": true
          }
        }
      },
      "UserGroupData": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "format": "int32",
            "description": "The identifier of the user group.",
            "example": 1
          },
          "groupName": {
            "type": "string",
            "description": "The name of the user group.",
            "example": "Customer service"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user group is active.",
            "example": true
          },
          "roles": {
            "type": "array",
            "description": "The list of permission roles that the user group have access to.",
            "example": [
              "country",
              "customer:read",
              "customer:update"
            ],
            "items": {
              "type": "string",
              "enum": [
                "base",
                "admin",
                "viskanAdmin",
                "accounting",
                "accountingconfig",
                "accountingjournal",
                "arrivalmethod",
                "bankaccount",
                "blockcode",
                "bonusconfig",
                "bulkmessaging",
                "campaign",
                "campaignconfig",
                "cancellationreason",
                "certificate",
                "city",
                "contentperiod",
                "country",
                "country:read",
                "country:create",
                "country:update",
                "country:delete",
                "creditreason",
                "creditrule",
                "currency",
                "customer",
                "customer:read",
                "customer:create",
                "customer:update",
                "customer:forget",
                "customercategory",
                "customerconfig",
                "customerimport",
                "customfield",
                "datasearch",
                "delivery",
                "dispatchplanning",
                "dropshipping",
                "duplicatecontrol",
                "duplicatecontrolconfig",
                "exchangerate",
                "filecomm",
                "helpdesk",
                "instorearrival",
                "instorecollect",
                "instoreconfig",
                "instoreoverview",
                "instorepick",
                "instorereturn",
                "inventory",
                "illegalword",
                "invoicetext",
                "invoicetype",
                "jobconfig",
                "jobconfigoverview",
                "jobhistory",
                "logisticsprovider",
                "media",
                "offer",
                "offer:create",
                "offer:delete",
                "offer:read",
                "offer:update",
                "orderoverview",
                "payment",
                "paymentmethod",
                "paymentterms",
                "physicalstore",
                "postalcode",
                "pricecampaign",
                "pricelist",
                "product",
                "productcategory",
                "productconfig",
                "productreplacement",
                "purchaseorder",
                "redirect",
                "refund",
                "remarketingconfig",
                "reminder",
                "reminderconfig",
                "return",
                "returnreason",
                "seller",
                "serviceprovider",
                "settings",
                "shipmentbatchconfig",
                "shipmentoverview",
                "shipmentoverview:read",
                "shipmentoverview:create",
                "shipmentoverview:update",
                "shipmentoverview:cancel",
                "shipmentpicking",
                "shippingmethod",
                "shippingterms",
                "standardnote",
                "stocklocation",
                "stockmodule",
                "stockoverview",
                "stockvalue",
                "streamlineexpress",
                "streamlineexpress:read",
                "streamlineexpress:create",
                "streamlineexpress:update",
                "streamlineexpress:delete",
                "subscriptionmassupdate",
                "subscriptiontemplate",
                "subscriptiontemplate:read",
                "subscriptiontemplate:create",
                "subscriptiontemplate:update",
                "subscriptiontemplate:delete",
                "subscriptiontemplateconfig",
                "supplier",
                "templatetext",
                "user",
                "usergroup",
                "validname",
                "warehouse"
              ]
            }
          },
          "reports": {
            "type": "array",
            "description": "The list of report IDs that the user group have access to.",
            "example": [
              10000,
              10001
            ],
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "warehouses": {
            "type": "array",
            "description": "The list of warehouses that the user group have access to.",
            "items": {
              "$ref": "#/components/schemas/WarehouseKey"
            }
          },
          "returnReasons": {
            "type": "array",
            "description": "The list of return reasons that the user group have access to.",
            "items": {
              "$ref": "#/components/schemas/ReturnReason_2"
            }
          },
          "webStores": {
            "type": "array",
            "description": "The list of web stores that the user group have access to.",
            "items": {
              "$ref": "#/components/schemas/WebStore"
            }
          }
        }
      },
      "Member": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The ID of the user.",
            "example": "08ce1500-a817-40e8-8e5a-36d3cef125df"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user.",
            "example": "Doe"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address of the user.",
            "example": "john.doe@viskan.com"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the user is active.",
            "example": true
          }
        }
      },
      "ReportData": {
        "type": "object",
        "properties": {
          "reportId": {
            "type": "integer",
            "format": "int32",
            "description": "The identifier of the report.",
            "example": 10305
          },
          "reportName": {
            "type": "string",
            "description": "The name of the report.",
            "example": "General invoice (SE)"
          },
          "reportGroupId": {
            "type": "integer",
            "format": "int32",
            "description": "An identifier of the report group that the report belongs to.",
            "example": 1
          }
        }
      },
      "ReturnReason_2": {
        "type": "object",
        "properties": {
          "returnReasonId": {
            "type": "integer",
            "format": "int32",
            "description": "The ID of the return reason.",
            "example": 1
          }
        }
      },
      "AddressInput": {
        "type": "object",
        "properties": {
          "addressLine1": {
            "type": "string",
            "description": "Street address.",
            "example": "Allégatan 1"
          },
          "careOf": {
            "type": "string",
            "description": "Care of / address description."
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code.",
            "example": 50344
          },
          "city": {
            "type": "string",
            "description": "City.",
            "example": "Borås"
          },
          "administrativeDivision": {
            "type": "string",
            "description": "Administrative division / province."
          },
          "countryCode": {
            "type": "string",
            "description": "ISO country code.",
            "example": "SE"
          }
        }
      },
      "WarehouseContactInfo": {
        "type": "object",
        "properties": {
          "contactPerson": {
            "type": "string",
            "description": "Contact person.",
            "example": "John Doe"
          },
          "primaryPhoneNumber": {
            "type": "string",
            "description": "Primary phone number.",
            "example": "+46701234567"
          },
          "alternativePhoneNumber": {
            "type": "string",
            "description": "Alternative phone number."
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address.",
            "example": "warehouse@example.com"
          }
        }
      },
      "WarehouseCreateRequest": {
        "type": "object",
        "properties": {
          "warehouseName": {
            "type": "string",
            "description": "The name of the warehouse.",
            "example": "New Warehouse"
          },
          "warehouseNumber": {
            "type": "string",
            "description": "The warehouse number.",
            "example": "WH-002"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the warehouse is active. Defaults to true.",
            "example": true
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO currency code.",
            "example": "SEK"
          },
          "settings": {
            "$ref": "#/components/schemas/WarehouseSettings",
            "description": "Warehouse configuration settings."
          },
          "address": {
            "$ref": "#/components/schemas/AddressInput",
            "description": "Warehouse address details."
          },
          "contactInfo": {
            "$ref": "#/components/schemas/WarehouseContactInfo",
            "description": "Warehouse contact information."
          }
        }
      },
      "WarehouseSettings": {
        "type": "object",
        "properties": {
          "managedByExternalSystem": {
            "type": "boolean",
            "description": "Whether the warehouse is managed by an external system."
          },
          "balancesUpdatedByExternalSystem": {
            "type": "boolean",
            "description": "Whether stock balances are updated by an external system.",
            "example": false
          },
          "locationsAllowed": {
            "type": "boolean",
            "description": "Whether stock locations are allowed.",
            "example": true
          },
          "usedForDeliveries": {
            "type": "boolean",
            "description": "Whether the warehouse is used for deliveries.",
            "example": true
          },
          "usedForReturns": {
            "type": "boolean",
            "description": "Whether the warehouse is used for returns.",
            "example": false
          },
          "purchasingAllowed": {
            "type": "boolean",
            "description": "Whether purchasing is allowed.",
            "example": false
          },
          "manualSelectionOnly": {
            "type": "boolean",
            "description": "Whether the warehouse can only be selected manually.",
            "example": false
          },
          "includeInStockBalances": {
            "type": "boolean",
            "description": "Whether to include in stock balances.",
            "example": true
          }
        }
      },
      "WarehouseCreatedResponse": {
        "type": "object",
        "properties": {
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the created warehouse.",
            "example": 123
          }
        }
      },
      "WarehouseUpdateRequest": {
        "type": "object",
        "properties": {
          "warehouseName": {
            "type": "string",
            "description": "The name of the warehouse, or null to not update.",
            "example": "Main Warehouse"
          },
          "warehouseNumber": {
            "type": "string",
            "description": "The warehouse number, or null to not update.",
            "example": "WH-001"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the warehouse is active, or null to not update.",
            "example": true
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO currency code, or null to not update.",
            "example": "SEK"
          },
          "settings": {
            "$ref": "#/components/schemas/WarehouseSettings",
            "description": "Warehouse configuration settings, or null to not update."
          },
          "address": {
            "$ref": "#/components/schemas/AddressInput",
            "description": "Warehouse address details, or null to not update."
          },
          "contactInfo": {
            "$ref": "#/components/schemas/WarehouseContactInfo",
            "description": "Warehouse contact information, or null to not update."
          }
        }
      },
      "WarehouseListItem": {
        "type": "object",
        "properties": {
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the warehouse.",
            "example": 1
          },
          "warehouseName": {
            "type": "string",
            "description": "The name of the warehouse.",
            "example": "Main Warehouse"
          },
          "warehouseNumber": {
            "type": "string",
            "description": "The warehouse number.",
            "example": "WH-001"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the warehouse is active.",
            "example": true
          }
        }
      },
      "WarehouseAddress": {
        "type": "object",
        "properties": {
          "addressLine1": {
            "type": "string",
            "description": "Street address.",
            "example": "Allégatan 1"
          },
          "careOf": {
            "type": "string",
            "description": "Care of / address description."
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code.",
            "example": 50344
          },
          "city": {
            "type": "string",
            "description": "City.",
            "example": "Borås"
          },
          "administrativeDivision": {
            "type": "string",
            "description": "Administrative division / province."
          },
          "countryCode": {
            "type": "string",
            "description": "ISO country code.",
            "example": "SE"
          }
        }
      },
      "WarehouseResponse": {
        "type": "object",
        "properties": {
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the warehouse.",
            "example": 1
          },
          "warehouseName": {
            "type": "string",
            "description": "The name of the warehouse.",
            "example": "Main Warehouse"
          },
          "warehouseNumber": {
            "type": "string",
            "description": "The warehouse number.",
            "example": "WH-001"
          },
          "active": {
            "type": "boolean",
            "description": "Whether the warehouse is active.",
            "example": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The ISO currency code.",
            "example": "SEK"
          },
          "settings": {
            "$ref": "#/components/schemas/WarehouseSettings",
            "description": "Warehouse configuration settings."
          },
          "address": {
            "$ref": "#/components/schemas/WarehouseAddress",
            "description": "Warehouse address details."
          },
          "contactInfo": {
            "$ref": "#/components/schemas/WarehouseContactInfo",
            "description": "Warehouse contact information."
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the warehouse was last modified."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the warehouse was created."
          }
        }
      },
      "StocklocationListItem": {
        "type": "object",
        "properties": {
          "stocklocationId": {
            "type": "integer",
            "format": "int32",
            "description": "The unique identifier of the stock location.",
            "example": 1
          },
          "warehouseId": {
            "type": "integer",
            "format": "int32",
            "description": "The identifier of the warehouse.",
            "example": 1
          },
          "locationId": {
            "type": "integer",
            "format": "int32",
            "description": "The location identifier within the warehouse.",
            "example": 0
          },
          "description": {
            "type": "string",
            "description": "The description of the stock location.",
            "example": "(None)"
          },
          "alternativeDescription": {
            "type": "string",
            "description": "The alternative description of the stock location.",
            "example": "(None)"
          },
          "active": {
            "type": "boolean",
            "description": "Indicates whether the stock location is active.",
            "example": true
          },
          "sort": {
            "type": "integer",
            "format": "int32",
            "description": "The sort order of the stock location.",
            "example": 0
          }
        }
      },
      "LayoutResponse": {
        "type": "object",
        "properties": {
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the layout template.",
            "example": "acbbeca5-e63d-49fb-ba71-f32ba63e6073",
            "x-viskan-field-format": "uuid"
          },
          "layoutName": {
            "type": "string",
            "description": "The display name of the layout template, used for identification in the CMS.",
            "example": "Start Page layout"
          },
          "layoutDescription": {
            "type": "string",
            "description": "An optional human-readable description of the layout\u0027s purpose and intended use.",
            "example": "Layout created for start pages",
            "x-viskan-nullable": "true"
          },
          "layoutType": {
            "type": "string",
            "description": "The page type this layout is designed for, determining where it can be used (e.g. START_PAGE for landing pages, PRODUCT_PAGE for product detail pages, HEADER/FOOTER for shared page sections).",
            "enum": [
              "START_PAGE",
              "PRODUCT_PAGE",
              "PRODUCT_LIST",
              "CHECKOUT",
              "SEARCH",
              "NOT_FOUND",
              "LOCALE",
              "INFO",
              "HEADER",
              "FOOTER",
              "MISC"
            ],
            "example": "START_PAGE"
          },
          "sections": {
            "type": "array",
            "description": "The sections included in this layout, defining the structure and content areas of pages using this layout.",
            "items": {
              "$ref": "#/components/schemas/LayoutSectionResponse_2"
            }
          }
        }
      },
      "LayoutSectionVariableResponse": {
        "type": "object",
        "properties": {
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the variable. This ID is referenced as a placeholder in the section\u0027s content template (e.g. {variableId}) and used to match variable values from pages.",
            "example": "4dd9fd6f-9403-49e6-83df-2550abac538e",
            "x-viskan-field-format": "uuid"
          },
          "variableName": {
            "type": "string",
            "description": "The display name of the variable, used for identification in the CMS editor when editing page content.",
            "example": "Hero paragraph"
          },
          "variableType": {
            "type": "string",
            "description": "The data type of the variable, determining what kind of content it holds. TEXT for text content, IMAGE_URL for image references.",
            "enum": [
              "TEXT",
              "IMAGE_URL"
            ],
            "example": "TEXT"
          }
        }
      },
      "LanguageAlternativeResponse_2": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this alternative version is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Language code (in ISO 639-1 format) for the alternative version. Exclusive with content locale.",
            "example": "sv"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code (in ISO 3166-1 alpha-2 format) for the alternative version. Exclusive with content locale.",
            "example": "SE"
          },
          "path": {
            "type": "string",
            "description": "The URL path for this language version of the page, used for hreflang links and language switching.",
            "example": "/start-sv",
            "x-viskan-nullable": "true"
          }
        }
      },
      "PageSearchResponse_2": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the category this page belongs to in the web page hierarchy.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "categoryName": {
            "type": "string",
            "description": "The display name of the category, typically used in navigation menus and breadcrumbs. Null for categories that are not part of the content category tree.",
            "example": "Start Page",
            "x-viskan-nullable": "true"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether the page is hidden from navigation. Hidden pages are not shown in menus or category trees but can still be accessed via direct URL. Null for categories that are not part of the content category tree.",
            "example": false,
            "x-viskan-nullable": "true"
          },
          "indexed": {
            "type": "boolean",
            "description": "Whether the page is indexed by search engines. Non-indexed pages are excluded from sitemaps and include a noindex directive. Null for categories that are not part of the content category tree.",
            "example": true,
            "x-viskan-nullable": "true"
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category, determining access restrictions. A protected category (protectionLevel other than NONE) requires authentication to access.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE",
            "x-viskan-nullable": "true"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Fallback category in case protection level of a user is not met, i.e. user is not logged in.",
            "example": "093ffd95-76b6-4249-a410-c984327c94eb",
            "x-viskan-field-format": "uuid"
          },
          "path": {
            "type": "string",
            "description": "The URL path segment used for routing to this page, e.g. \u0027/start\u0027 or \u0027/black-week-sale\u0027.",
            "example": "/start",
            "x-viskan-nullable": "true"
          },
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the page.",
            "example": "d8ff524e-1272-4a15-b23f-261964c3554a",
            "x-viskan-field-format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "The display title of the page, typically shown as the page heading and in browser tabs.",
            "example": "Black Week Sale"
          },
          "metaTitle": {
            "type": "string",
            "description": "The HTML meta title used for SEO, displayed in browser tabs and search engine results.",
            "example": "Start Page for Black Week Sale"
          },
          "metaDescription": {
            "type": "string",
            "description": "The HTML meta description used for SEO, typically displayed as the snippet in search engine results.",
            "example": "Temporary page for Black Week Sale"
          },
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The content locale this page is associated with. Exclusive with language code and country code.",
            "example": "774ab227-18fe-4541-ba3b-06ad3e95ae75",
            "x-viskan-field-format": "uuid"
          },
          "languageCode": {
            "type": "string",
            "description": "Language code (in ISO 639-1 format) of the page. Exclusive with content locale.",
            "example": "en"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code (in ISO 3166-1 alpha-2 format) of the page. Exclusive with content locale.",
            "example": "SE"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the layout template that defines the structure and sections of this page.",
            "example": "e8391697-5592-434a-9e20-ac2316adc235",
            "x-viskan-field-format": "uuid"
          },
          "parentCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the parent category in the category tree hierarchy. Null for root-level categories.",
            "example": "0ee32a6e-0c4d-4f7b-bd89-f21ddad81135",
            "x-viskan-field-format": "uuid",
            "x-viskan-nullable": "true"
          },
          "siblingCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the next sibling category in the tree, used for ordered navigation between categories at the same level. Null if this is the last sibling.",
            "example": "04e0069f-8f37-43ce-952e-9c248feacb11",
            "x-viskan-field-format": "uuid",
            "x-viskan-nullable": "true"
          },
          "languageAlternatives": {
            "type": "array",
            "description": "Alternative language versions of the page, used for hreflang links and language switching.",
            "items": {
              "$ref": "#/components/schemas/LanguageAlternativeResponse_2"
            }
          },
          "variables": {
            "type": "array",
            "description": "List of variable values for this page. Each variable provides the actual content that populates a placeholder defined in the page\u0027s layout sections.",
            "items": {
              "$ref": "#/components/schemas/PageVariableResponse_2"
            }
          }
        }
      },
      "PageVariableResponse_2": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the layout section this variable belongs to, linking the variable value to a specific section in the page\u0027s layout.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "variableId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the variable, matching a variable definition in the layout section.",
            "example": "e7f65f98-e2a6-4ffd-a985-6e6a4180f5e0",
            "x-viskan-field-format": "uuid"
          },
          "variableValue": {
            "type": "string",
            "description": "The actual content value for this variable (e.g. text or an image URL) that replaces the variable\u0027s placeholder in the section content template.",
            "example": "Welcome to start page!"
          }
        }
      },
      "CategoryTreeResponse_2": {
        "type": "object",
        "properties": {
          "categoryTreeId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the category in the web page hierarchy.",
            "example": "6b2a2871-f20d-4fa0-895e-e3c41976db7a",
            "x-viskan-field-format": "uuid"
          },
          "categoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of the category in the web page hierarchy.",
            "example": "fb840e50-8a8b-477c-a3c8-fffe2bf97e1c",
            "x-viskan-field-format": "uuid"
          },
          "categoryName": {
            "type": "string",
            "description": "The display name of the category, typically used in navigation menus and breadcrumbs.",
            "example": "Start Page"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether the category is hidden from navigation. Hidden categories are not shown in menus or category trees but can still be accessed via direct URL.",
            "example": false
          },
          "indexed": {
            "type": "boolean",
            "description": "Whether the category page is indexed by search engines. Non-indexed pages are excluded from sitemaps and include a noindex directive.",
            "example": true
          },
          "protectionLevel": {
            "type": "string",
            "description": "The protection level of the category, determining access restrictions. A protected category (protectionLevel other than NONE) requires authentication to access.",
            "enum": [
              "NONE",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "example": "NONE",
            "x-viskan-nullable": "true"
          },
          "protectionFallbackCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "Fallback category in case protection level of a user is not met, i.e. user is not logged in.",
            "example": "093ffd95-76b6-4249-a410-c984327c94eb",
            "x-viskan-field-format": "uuid"
          },
          "pageId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the page associated with this category. Null if no page has been created for this category yet.",
            "example": "5cf50fd6-5ab3-43bc-8291-e74665d1f8ab",
            "x-viskan-field-format": "uuid",
            "x-viskan-nullable": "true"
          },
          "path": {
            "type": "string",
            "description": "The URL path segment used for routing to this category\u0027s page, e.g. \u0027/start\u0027 or \u0027/black-week-sale\u0027. Null if no page exists for this category.",
            "example": "/start",
            "x-viskan-nullable": "true"
          },
          "title": {
            "type": "string",
            "description": "The display title of the page, typically shown as the page heading and in browser tabs.",
            "example": "Start Page"
          },
          "children": {
            "type": "array",
            "description": "Nested child categories forming the tree structure. Each child has the same structure and may in turn contain its own children.",
            "items": {
              "$ref": "#/components/schemas/CategoryTreeResponse_2"
            }
          }
        }
      },
      "ProductListResponse_3": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of a product, which does not use default product detail layout and is connected to a separate layout.",
            "example": "23e4ff9e-2e3d-4a82-a347-424cd8772683",
            "x-viskan-field-format": "uuid"
          },
          "layoutId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of a layout the product is connected to.",
            "example": "23e4ff9e-2e3d-4a82-a347-424cd8772683",
            "x-viskan-field-format": "uuid"
          },
          "variables": {
            "type": "array",
            "description": "The list of variables for the product. These variables are used to populate the layout connected to the product.",
            "items": {
              "$ref": "#/components/schemas/PageVariableResponse_2"
            }
          }
        }
      },
      "LayoutSectionResponse_2": {
        "type": "object",
        "properties": {
          "layoutSectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of this specific section instance within the layout. Used to link page variable values to their corresponding section.",
            "example": "be0111c5-a24b-47bd-86f7-77c12d632bdc",
            "x-viskan-field-format": "uuid"
          },
          "sectionId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the section template. Multiple layouts can reference the same section template.",
            "example": "fb831d92-c7b3-42fe-ac92-a2c2014d72f6",
            "x-viskan-field-format": "uuid"
          },
          "sectionName": {
            "type": "string",
            "description": "The display name of the section, used for identification in the CMS editor.",
            "example": "Start Page Hero"
          },
          "sectionDescription": {
            "type": "string",
            "description": "An optional human-readable description of the section\u0027s purpose and visual appearance.",
            "example": "Section for the start page displaying an image and text",
            "x-viskan-nullable": "true"
          },
          "sectionType": {
            "type": "string",
            "description": "The type of content this section represents, such as IMAGE_AND_TEXT, SLIDER, MENU, GRIDS, or MISC.",
            "enum": [
              "IMAGE_AND_TEXT",
              "SLIDER",
              "MENU",
              "GRIDS",
              "MISC"
            ],
            "example": "IMAGE_AND_TEXT"
          },
          "content": {
            "type": "string",
            "description": "The content template of the section. Can be any format useful for the frontend (JSON, HTML, scripts, etc.). Contains variable placeholders as UUIDs in curly braces that are replaced with actual values per page.",
            "example": "\u003cp\u003e{4dd9fd6f-9403-49e6-83df-2550abac538e}\u003c/p\u003e\u003cimage url\u003d{a8eecb0e-b06a-4b2c-882f-376cff259454}\u003e"
          },
          "variables": {
            "type": "array",
            "description": "The variable definitions for this section. These define the editable placeholders in the content template that can be filled with content per page.",
            "items": {
              "$ref": "#/components/schemas/LayoutSectionVariableResponse"
            }
          }
        }
      },
      "CreateLocaleDTO": {
        "type": "object",
        "properties": {
          "languageCode": {
            "type": "string",
            "description": "The language of this locale.",
            "example": "sv"
          },
          "countries": {
            "type": "array",
            "description": "The list of countries available for this locale.",
            "items": {
              "$ref": "#/components/schemas/Country_3"
            }
          }
        }
      },
      "CreateWebStoreRequest": {
        "type": "object",
        "properties": {
          "localeMode": {
            "type": "string",
            "description": "What locale mode the store should use.",
            "enum": [
              "DOMAIN_ONLY",
              "COUNTRY_IN_PATH",
              "DOMAIN_WITH_LANGUAGE_PATH",
              "LANGUAGE_AND_COUNTRY_IN_PATH"
            ],
            "example": "COUNTRY_IN_PATH"
          },
          "rootProductCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the root category for products.",
            "example": "d0bc44ec-1efd-4af9-a825-7deb4f0712ce"
          },
          "startPageCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the start page category. Root category for content - content category hierarchy always starts with this category.",
            "example": "5650586e-34e5-4de4-97f5-15ea3dc3f80a"
          },
          "headerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the header category.",
            "example": "10d835f7-b46c-48e0-8996-ea75d3de3500"
          },
          "footerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the footer category.",
            "example": "1bbae4b1-c1fe-42b3-90a5-20dc9b5522f4"
          },
          "productDetailPageCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the product detail page category.",
            "example": "82c82cec-5381-4e23-ac8f-0e88eb9ac54f"
          },
          "notFoundCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the not found category.",
            "example": "05616617-3a4a-4c7c-b825-95e54362f344"
          },
          "notFoundGlobalCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the global not found category. Must be \u003ccode\u003enull\u003c/code\u003e when \u003ccode\u003elocaleMode\u003c/code\u003e is \u003ccode\u003eDOMAIN_ONLY\u003c/code\u003e.",
            "example": "f629c1fd-b73e-41eb-a2b1-a6178702c51a",
            "x-viskan-nullable": "true"
          },
          "checkoutCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the checkout category.",
            "example": "7e2b6869-24ee-4c1d-9b62-24472a72cd2b"
          },
          "receiptCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the receipt category.",
            "example": "16d64e15-a80c-4ec7-b575-2e5bb8238ea0"
          },
          "localePickerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the locale picker category. Always \u003ccode\u003enull\u003c/code\u003e for DOMAIN_ONLY locale mode.",
            "example": "50372cca-b819-4809-8d26-ea87dcdd7195",
            "x-viskan-nullable": "true"
          },
          "searchResultCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the search result category.",
            "example": "7c9fd76d-d6fd-40ad-a351-571b3839506b"
          },
          "storeSettings": {
            "type": "array",
            "description": "The store settings for the web store.",
            "items": {
              "$ref": "#/components/schemas/StoreSettingDTO"
            }
          },
          "locales": {
            "type": "array",
            "description": "The locales to create for this web store.",
            "items": {
              "$ref": "#/components/schemas/CreateLocaleDTO"
            }
          }
        }
      },
      "StoreSettingDTO": {
        "type": "object",
        "properties": {
          "storeSettingId": {
            "type": "string",
            "format": "uuid",
            "description": "The store setting ID.",
            "example": "f9ba6266-24d3-49bd-ac4d-5bac5059effa"
          },
          "storeSettingKey": {
            "type": "string",
            "description": "The store setting key.",
            "example": "showMenu"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "The store setting value.",
            "example": true
          },
          "countryCode": {
            "type": "string",
            "description": "The store setting country code. If \u003ccode\u003enull\u003c/code\u003e, then this store setting is considered to be global.",
            "example": "SE",
            "x-viskan-nullable": "true"
          },
          "languageCode": {
            "type": "string",
            "description": "The store setting language code. If \u003ccode\u003enull\u003c/code\u003e, then this store setting is considered to be global.",
            "example": "sv",
            "x-viskan-nullable": "true"
          }
        }
      },
      "CreateWebStoreResponse": {
        "type": "object",
        "properties": {
          "webStoreId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the created web store.",
            "example": "f9ba6266-24d3-49bd-ac4d-5bac5059effa"
          }
        }
      },
      "UpdateLocaleDTO": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the locale.",
            "example": "78dd64ef-ee64-494d-af21-3f4ac7e226a3"
          },
          "languageCode": {
            "type": "string",
            "description": "The language of this locale.",
            "example": "sv"
          },
          "countries": {
            "type": "array",
            "description": "The list of countries available for this locale.",
            "items": {
              "$ref": "#/components/schemas/Country_3"
            }
          }
        }
      },
      "UpdateWebStoreRequest": {
        "type": "object",
        "properties": {
          "localeMode": {
            "type": "string",
            "description": "What locale mode the store should use, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "enum": [
              "DOMAIN_ONLY",
              "COUNTRY_IN_PATH",
              "DOMAIN_WITH_LANGUAGE_PATH",
              "LANGUAGE_AND_COUNTRY_IN_PATH"
            ],
            "example": "COUNTRY_IN_PATH",
            "x-viskan-nullable": "true"
          },
          "rootProductCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the root category for products, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "d0bc44ec-1efd-4af9-a825-7deb4f0712ce",
            "x-viskan-nullable": "true"
          },
          "startPageCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the start page category, or \u003ccode\u003enull\u003c/code\u003e to not update. Root category for content - content category hierarchy always starts with this category.",
            "example": "5650586e-34e5-4de4-97f5-15ea3dc3f80a",
            "x-viskan-nullable": "true"
          },
          "headerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the header category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "10d835f7-b46c-48e0-8996-ea75d3de3500",
            "x-viskan-nullable": "true"
          },
          "footerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the footer category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "1bbae4b1-c1fe-42b3-90a5-20dc9b5522f4",
            "x-viskan-nullable": "true"
          },
          "productDetailPageCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the product detail page category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "82c82cec-5381-4e23-ac8f-0e88eb9ac54f",
            "x-viskan-nullable": "true"
          },
          "notFoundCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the not found category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "05616617-3a4a-4c7c-b825-95e54362f344",
            "x-viskan-nullable": "true"
          },
          "notFoundGlobalCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the global not found category, or \u003ccode\u003enull\u003c/code\u003e to not update. Must be \u003ccode\u003enull\u003c/code\u003e when \u003ccode\u003elocaleMode\u003c/code\u003e is \u003ccode\u003eDOMAIN_ONLY\u003c/code\u003e.",
            "example": "f629c1fd-b73e-41eb-a2b1-a6178702c51a",
            "x-viskan-nullable": "true"
          },
          "checkoutCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the checkout category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "7e2b6869-24ee-4c1d-9b62-24472a72cd2b",
            "x-viskan-nullable": "true"
          },
          "receiptCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the receipt category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "16d64e15-a80c-4ec7-b575-2e5bb8238ea0",
            "x-viskan-nullable": "true"
          },
          "localePickerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the locale picker category, or \u003ccode\u003enull\u003c/code\u003e to not update. Always \u003ccode\u003enull\u003c/code\u003e for DOMAIN_ONLY locale mode.",
            "example": "50372cca-b819-4809-8d26-ea87dcdd7195",
            "x-viskan-nullable": "true"
          },
          "searchResultCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the search result category, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "example": "7c9fd76d-d6fd-40ad-a351-571b3839506b",
            "x-viskan-nullable": "true"
          },
          "storeSettings": {
            "type": "array",
            "description": "The store settings to update, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "items": {
              "$ref": "#/components/schemas/StoreSettingDTO"
            }
          },
          "locales": {
            "type": "array",
            "description": "The locales to update for this web store, or \u003ccode\u003enull\u003c/code\u003e to not update.",
            "items": {
              "$ref": "#/components/schemas/UpdateLocaleDTO"
            }
          }
        }
      },
      "GetWebStoreResponse": {
        "type": "object",
        "properties": {
          "webStoreId": {
            "type": "string",
            "format": "uuid",
            "description": "The internal identifier of the web store.",
            "example": "0e1ad1e6-5ad2-4df1-981b-4db39e44a684",
            "x-viskan-field-format": "uuid"
          },
          "localeMode": {
            "type": "string",
            "description": "What locale mode the store uses.",
            "enum": [
              "DOMAIN_ONLY",
              "COUNTRY_IN_PATH",
              "DOMAIN_WITH_LANGUAGE_PATH",
              "LANGUAGE_AND_COUNTRY_IN_PATH"
            ],
            "example": "COUNTRY_IN_PATH"
          },
          "rootProductCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the root category for products.",
            "example": "d0bc44ec-1efd-4af9-a825-7deb4f0712ce",
            "x-viskan-field-format": "uuid"
          },
          "startPageCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the start page category. Root category for content - content category hierarchy always starts with this category.",
            "example": "5650586e-34e5-4de4-97f5-15ea3dc3f80a",
            "x-viskan-field-format": "uuid"
          },
          "headerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the header category.",
            "example": "10d835f7-b46c-48e0-8996-ea75d3de3500",
            "x-viskan-field-format": "uuid"
          },
          "footerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the footer category.",
            "example": "1bbae4b1-c1fe-42b3-90a5-20dc9b5522f4",
            "x-viskan-field-format": "uuid"
          },
          "productDetailPageCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the product detail page category.",
            "example": "82c82cec-5381-4e23-ac8f-0e88eb9ac54f",
            "x-viskan-field-format": "uuid"
          },
          "notFoundCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the not found category.",
            "example": "05616617-3a4a-4c7c-b825-95e54362f344",
            "x-viskan-field-format": "uuid"
          },
          "notFoundGlobalCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the global not found category. Always \u003ccode\u003enull\u003c/code\u003e when \u003ccode\u003elocaleMode\u003c/code\u003e has the value \u003ccode\u003eDOMAIN_ONLY\u003c/code\u003e.",
            "example": "f629c1fd-b73e-41eb-a2b1-a6178702c51a",
            "x-viskan-field-format": "uuid",
            "x-viskan-nullable": "true"
          },
          "checkoutCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the checkout category.",
            "example": "7e2b6869-24ee-4c1d-9b62-24472a72cd2b",
            "x-viskan-field-format": "uuid"
          },
          "receiptCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the receipt category.",
            "example": "16d64e15-a80c-4ec7-b575-2e5bb8238ea0",
            "x-viskan-field-format": "uuid"
          },
          "localePickerCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the locale picker category. Always \u003ccode\u003enull\u003c/code\u003e for \u003ccode\u003eDOMAIN_ONLY\u003c/code\u003e locale mode.",
            "example": "50372cca-b819-4809-8d26-ea87dcdd7195",
            "x-viskan-field-format": "uuid",
            "x-viskan-nullable": "true"
          },
          "searchResultCategoryId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the search result category.",
            "example": "7c9fd76d-d6fd-40ad-a351-571b3839506b",
            "x-viskan-field-format": "uuid"
          },
          "storeSettings": {
            "type": "array",
            "description": "The store settings.",
            "items": {
              "$ref": "#/components/schemas/StoreSettingResponse"
            }
          },
          "locales": {
            "type": "array",
            "description": "The locales for this web store.",
            "items": {
              "$ref": "#/components/schemas/LocaleResponse"
            }
          }
        }
      },
      "LocaleResponse": {
        "type": "object",
        "properties": {
          "contentLocaleId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the locale.",
            "example": "78dd64ef-ee64-494d-af21-3f4ac7e226a3"
          },
          "languageCode": {
            "type": "string",
            "description": "The language of this locale.",
            "example": "sv"
          },
          "countries": {
            "type": "array",
            "description": "The list of countries available for this locale.",
            "items": {
              "$ref": "#/components/schemas/Country_3"
            }
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this locale was published, or \u003ccode\u003enull\u003c/code\u003e if unpublished.",
            "x-viskan-nullable": "true"
          }
        }
      },
      "StoreSettingResponse": {
        "type": "object",
        "properties": {
          "storeSettingId": {
            "type": "string",
            "format": "uuid",
            "description": "The store setting ID.",
            "example": "f9ba6266-24d3-49bd-ac4d-5bac5059effa",
            "x-viskan-field-format": "uuid"
          },
          "storeSettingKey": {
            "type": "string",
            "description": "The store setting key.",
            "example": "showMenu"
          },
          "storeSettingValue": {
            "type": "string",
            "description": "The store setting value.",
            "example": true
          },
          "countryCode": {
            "type": "string",
            "description": "The store setting country code. If \u003ccode\u003enull\u003c/code\u003e, then this store setting is considered to be global.",
            "example": "SE",
            "x-viskan-nullable": "true"
          },
          "languageCode": {
            "type": "string",
            "description": "The store setting language code. If \u003ccode\u003enull\u003c/code\u003e, then this store setting is considered to be global.",
            "example": "sv",
            "x-viskan-nullable": "true"
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time this store setting was published, or \u003ccode\u003enull\u003c/code\u003e if unpublished.",
            "x-viskan-nullable": "true"
          }
        }
      },
      "Country_3": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "The country code for a locale.",
            "example": "SE"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether this country is enabled in this locale.",
            "example": true
          }
        }
      }
    }
  }
}