{
  "openapi": "3.1.0",
  "info": {
    "title": "DealPOS API",
    "description": "## Welcome Developer\n\nThis page lists the reference documentation for DealPOS APIs. For guides and tutorials.",
    "contact": {
      "name": "Customer Support",
      "url": "https://www.dealpos.com",
      "email": "info@dealpos.com"
    },
    "version": "3.1.0"
  },
  "servers": [
    {
      "url": "https://{subdomain}/api/v3",
      "description": "Production Server",
      "variables": {
        "subdomain": {
          "default": "subdomain.dealpos.net",
          "description": "Your DealPOS Subdomain"
        }
      }
    }
  ],
  "security": [
    {
      "OAuth2_clientCredentials": [
        "read",
        "write"
      ]
    }
  ],
  "tags": [
    {
      "name": "Token",
      "description": "Operations related to authentication tokens"
    },
    {
      "name": "Category",
      "description": "Operations related to category, including create, get, etc"
    },
    {
      "name": "Product",
      "description": "Operations related to product, including create, get, etc"
    },
    {
      "name": "Variant",
      "description": "Operations related to variant, including create, get, etc"
    },
    {
      "name": "Serial",
      "description": "Operation related to Serial product type"
    },
    {
      "name": "Estimate",
      "description": "Operations related to estimate, including create, get, etc <br>"
    },
    {
      "name": "Sales Order",
      "description": "Operations related to sales order, including create, get, etc"
    },
    {
      "name": "Invoice",
      "description": "Operations related to invoice, including create, get, etc"
    },
    {
      "name": "Shift",
      "description": "Operation related to shift, including create, get, etc"
    },
    {
      "name": "Report",
      "description": "Operations related to report page, including create, get, etc"
    },
    {
      "name": "Customer",
      "description": "Operations related to customer data, including create, get, etc"
    },
    {
      "name": "Comment",
      "description": "Operations related to comment (Contact Feedback), including create, get, etc"
    },
    {
      "name": "Supplier",
      "description": "Operations related to supplier data, including create, get, etc"
    },
    {
      "name": "Invoice Payment",
      "description": "Operations related to invoice payment, including create, get, etc"
    },
    {
      "name": "Bill Payment",
      "description": "Operations related to bill payment, including create, get, etc"
    },
    {
      "name": "Invoice Write Off",
      "description": "Operations related to invoice write off, including create, get, etc"
    },
    {
      "name": "Inventory",
      "description": "Operations related to inventory, including create, get, etc"
    },
    {
      "name": "Inventory Log",
      "description": "Operations related to inventory log, including create, get, etc"
    },
    {
      "name": "Inventory Adjustment",
      "description": "Operations related to inventory adjustment, including create, get, etc"
    },
    {
      "name": "Bill",
      "description": "Operations related to bill, including create, get, etc"
    },
    {
      "name": "OutboundLogistic",
      "description": "Operations related to outbound logistic, including create, get, etc"
    },
    {
      "name": "InboundLogistic",
      "description": "Operations related to inbound logistic, including create, get, etc"
    },
    {
      "name": "TransferOrder",
      "description": "Operations related to transfer order, including create, get, etc"
    },
    {
      "name": "Fulfillment",
      "description": "Operations related to fulfillment, including create, get, etc"
    },
    {
      "name": "Prepaid Package",
      "description": "Operations related to prepaid package, including create, get, etc"
    },
    {
      "name": "Promotion Coupon",
      "description": "Operations related to promotion coupon, including create, get, etc"
    },
    {
      "name": "Promotion Event",
      "description": "Operations related to promotion event, including create, get, etc"
    },
    {
      "name": "Pricebook",
      "description": "Operations related to promotion event, including create, get, etc"
    },
    {
      "name": "Outlet",
      "description": "Operations related to outlet, including create, get, etc"
    },
    {
      "name": "User",
      "description": "Operations related to user, including create, get, etc"
    },
    {
      "name": "Outlet Price",
      "description": "Operations related to outlet price, including create, get, etc"
    },
    {
      "name": "Loyalty Point",
      "description": "Operations related to loyalty point, including create, get, etc"
    },
    {
      "name": "Notification",
      "description": "Operations related to notification, including create, get, etc"
    },
    {
      "name": "Payment Method",
      "description": "Operations related to payment method, including create, get, etc"
    },
    {
      "name": "Invoice Write Off Option",
      "description": "Operations related to invoice write off option, including create, get, etc"
    },
    {
      "name": "Tax",
      "description": "Operations related to tax, including create, get, etc"
    },
    {
      "name": "Expense",
      "description": "Operations related to get expense"
    },
    {
      "name": "Logistics Service",
      "description": "Operations related to logistics service, including create, get, etc"
    },
    {
      "name": "Park Order Display",
      "description": "Operations related to parked order display, including create, get, etc"
    },
    {
      "name": "Midtrans Payment Gateway",
      "description": "Operations related to Midtrans Payment Gateway, including create, get, etc"
    },
    {
      "name": "Apps",
      "description": "Operations related to Apps, including create, get, etc"
    },
    {
      "name": "Client Secret",
      "description": "Operations related to client secret, including create, get, etc"
    },
    {
      "name": "Rate Limit",
      "description": "Operations related to rate limit, including create, get, etc"
    }
  ],
  "paths": {
    "/WriteOff/Invoice/Number": {
      "get": {
        "tags": [
          "Invoice Write Off"
        ],
        "operationId": "getWriteOffInvoiceByNumber",
        "summary": "Get WriteOff Invoice by Number",
        "description": "Get detail of Write Off Invoice by Number",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Number of invoice which want to cancel write off",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Number": {
                      "type": "string",
                      "description": "Number of Invoice"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet Name"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Write off time created"
                    },
                    "CreatedBy": {
                      "type": "string",
                      "description": "User that write off the invoice"
                    },
                    "Amount": {
                      "type": "integer",
                      "description": "Amount of write off payment"
                    },
                    "Tag": {
                      "type": "string",
                      "description": "Reason of WriteOff Invoice"
                    }
                  },
                  "example": {
                    "Number": "OLT1/22/12/0058",
                    "Outlet": "Outlet1",
                    "Created": "2023-01-04T11:13:21.33",
                    "CreatedBy": "dealpos",
                    "Amount": 2000,
                    "Reason": "Logistics"
                  }
                }
              },
              "Example": {
                "example": {
                  "Number": "OLT1/22/12/0058",
                  "Outlet": "Outlet1",
                  "Created": "2023-01-04T11:13:21.33",
                  "CreatedBy": "dealpos",
                  "Amount": 2000,
                  "Tag": "Logistics"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/WriteOff/Invoice": {
      "get": {
        "tags": [
          "Invoice Write Off"
        ],
        "operationId": "listWriteOffInvoices",
        "summary": "List WriteOff Invoice",
        "description": "List of WriteOff Invoice can filter by date and outlet",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy/mm/dd)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2023-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy/mm/dd)",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2023-01-01"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Number": {
                        "type": "string",
                        "description": "Number of Invoice"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Customer's Name"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Write off time created"
                      },
                      "CreatedBy": {
                        "type": "string",
                        "description": "User that write off the invoice"
                      },
                      "Amount": {
                        "type": "integer",
                        "description": "Amount of write off payment"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Reason of WriteOff Invoice"
                      }
                    }
                  },
                  "example": [
                    {
                      "Number": "OLT1/22/12/0059",
                      "Outlet": "Outlet1",
                      "Customer": "John",
                      "Created": "2023-01-04T11:13:21.33",
                      "CreatedBy": "dealpos",
                      "Amount": 5000,
                      "Tag": "Logistics"
                    },
                    {
                      "Number": "OLT1/22/12/0058",
                      "Outlet": "Outlet1",
                      "Customer": "Jane",
                      "Created": "2023-01-04T11:13:21.33",
                      "CreatedBy": "dealpos",
                      "Amount": 10000,
                      "Tag": "BadDebt"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Invoice Write Off"
        ],
        "summary": "Update Write Off",
        "description": "UpdateWrite Off Payment in Invoice.\r\nYou must have \"ADD\" role in \"Payment\" Module",
        "operationId": "put-WriteOff-Invoice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "Date": {
                        "type": "string",
                        "description": "Write Off date created (yyyy/mm/dd), if value is null it will be set to today"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number to be writed off"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Get from Write off list option"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Reason of write off"
                      }
                    },
                    "example": {
                      "date": "2024/02/28",
                      "Outlet": "Outlet1",
                      "Number": "OLT1.02.01.23.004",
                      "Type": "logistic",
                      "Note": "not paid"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "Date": {
                        "type": "string",
                        "description": "Write Off date created (yyyy/mm/dd), if value is null it will be set to today",
                        "x-stoplight": {
                          "id": "5ltemcn7bgqbu"
                        }
                      },
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number to be writed off"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Get from Write off list option"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Reason of write off"
                      }
                    },
                    "example": {
                      "date": "2024/02/28",
                      "OutletID": "123e4567-e89b-12d3-a456-426614174000",
                      "Number": "OLT1.02.01.23.004",
                      "Type": "logistic",
                      "Note": "not paid"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Your Invoice has been successfully Write Off"
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "5xf1g393ybyfq"
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "tags": [
          "Invoice Write Off"
        ],
        "summary": "Add Write Off",
        "description": "Write Off Payment in Invoice. This API still backwards compatibility with Endpoint **api/v3/Payment/Invoice/WriteOff**.\n\nYou must have \"ADD\" role in \"Payment\" Module",
        "operationId": "post-WriteOff-Invoice",
        "parameters": [
          {
            "name": "MatchUnpaidAmount",
            "in": "header",
            "description": "If true, Items Amount must match with remaining unpaid amount in the invoice. If false or not provided, Items Amount can be different from the unpaid amount in the invoice.",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "example": true
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Items",
                    "required": [
                      "Number",
                      "Outlet",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "Date": {
                        "type": "string",
                        "description": "Write Off date created (yyyy/mm/dd), if value is null it will be set to today"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number to be writed off"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Get from Write off list option"
                      },
                      "Items": {
                        "type": "array",
                        "description": "List of items to be write off",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Name": {
                              "type": "string",
                              "description": "Name of the item"
                            },
                            "Amount": {
                              "type": "integer",
                              "description": "Amount of the item to be write off"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Date": "2024/02/28",
                      "Outlet": "Outlet1",
                      "Number": "OLT1.02.01.23.004",
                      "Tag": "logistic",
                      "Items": [
                        {
                          "Name": "AdminFee",
                          "Amount": 57531
                        },
                        {
                          "Name": "PremiFee",
                          "Amount": 2966
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "Date": {
                        "type": "string",
                        "description": "Write Off date created (yyyy/mm/dd), if value is null it will be set to today"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number to be writed off"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Get from Write off list option"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Reason of write off"
                      }
                    },
                    "example": {
                      "date": "2024/02/28",
                      "Outlet": "Outlet1",
                      "Number": "OLT1.02.01.23.004",
                      "Tag": "logistic",
                      "Note": "not paid"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "Date": {
                        "type": "string",
                        "description": "Write Off date created (yyyy/mm/dd), if value is null it will be set to today",
                        "x-stoplight": {
                          "id": "5ltemcn7bgqbu"
                        }
                      },
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number to be writed off"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Get from Write off list option"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Reason of write off"
                      }
                    },
                    "example": {
                      "date": "2024/02/28",
                      "OutletID": "123e4567-e89b-12d3-a456-426614174000",
                      "Number": "OLT1.02.01.23.004",
                      "Tag": "logistic",
                      "Note": "not paid"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Your Invoice has been successfully Write Off"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Cannot Write off, cause Invoice OLT1.02.01.23.004 had already voided"
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Invoice Write Off"
        ],
        "summary": "Delete Write Off",
        "description": "Delete WriteOff payment in Invoice",
        "operationId": "delete-WriteOff-Invoice",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Number of invoice which want to cancel write off",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Write Off Invoice Number [OLT1/22/12/0058] has been cancelled"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/WriteOff/Option": {
      "get": {
        "tags": [
          "Invoice Write Off Option"
        ],
        "operationId": "listWriteOffOption",
        "summary": "List Write Off Option",
        "description": "Get Write Off Option. This API still backwards compatibility with Endpoint **api/v3/WriteOff**.\n\nYou must have \"**VIEW**\" role in \"**Setup**\" Module",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "Write Off"
                  },
                  {
                    "Name": "Bad Debt"
                  }
                ]
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Invoice Write Off Option"
        ],
        "summary": "Add WriteOff Option",
        "description": "Add new option in list WriteOff",
        "operationId": "post-WriteOff-Option",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string"
                  }
                }
              },
              "example": {
                "Name": "Bad Debt"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Name": {
                      "type": "string",
                      "description": "Name of Write Off"
                    }
                  },
                  "example": {
                    "Message": "Bad Debt added successfully"
                  }
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "Write off added successfully"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Invoice Write Off Option"
        ],
        "summary": "Delete Write Off Option",
        "description": "Delete option in list writeoff",
        "operationId": "delete-WriteOff-Option",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "Name of WriteOff"
                  }
                },
                "example": {
                  "Name": "Bad Debt"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Bad Debt deleted successfully"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Notification": {
      "get": {
        "tags": [
          "Notification"
        ],
        "operationId": "listNotifications",
        "summary": "List Notifications",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Notification/p)**\n\n<br>\nGet List of Notifications\n\nRequired Group Role: \"**My Profile**\" - \"**Notification**\" OR \"**Global**\" - \"**EDIT**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2022-03-17"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2022-03-17"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Notification's ID"
                      },
                      "ObjectID": {
                        "type": "string",
                        "description": "Notification Object Unique ID"
                      },
                      "OutletName": {
                        "type": "string"
                      },
                      "Header": {
                        "type": "string",
                        "description": "Title of notification message"
                      },
                      "Body": {
                        "type": "string",
                        "description": "Content of notification"
                      },
                      "URL": {
                        "type": "string",
                        "description": "Content URL of notification"
                      },
                      "Type": {
                        "type": "string"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Notification's created time"
                      },
                      "TypeID": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "7f7b85db-da32-4fe8-8118-f071ba36f0a0",
                    "ObjectID": "00000000-0000-0000-0000-000000000000",
                    "OutletName": "Offline",
                    "Header": "Customer has visited store 5 times",
                    "Body": "male, 30 years old",
                    "Created": "2022-03-17T08:10:10.15",
                    "URL": "https://www.google.com/",
                    "TypeID": "0",
                    "Type": "None"
                  },
                  {
                    "ID": "ce34ace3-2fec-4b87-8ae1-9338eed379a3",
                    "ObjectID": "00000000-0000-0000-0000-000000000000",
                    "OutletName": "Offline",
                    "Header": "Customer has visited store 5 times",
                    "Body": "male, 30 years old",
                    "Created": "2022-03-17T08:09:51.367",
                    "URL": "https://www.google.com/",
                    "TypeID": "0",
                    "Type": "None"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "tags": [
          "Notification"
        ],
        "summary": "Create a Notification",
        "description": "Push Notification to Cashier Point of Sales\n\nCreate a Notification based on outlets\n\nYou must have \"**Notification**\" role in \"**My Profile**\" Module",
        "operationId": "/api/Notification/Push",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Body",
                  "Header",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Name of the Outlet"
                  },
                  "Header": {
                    "type": "string",
                    "description": "Title of notification message. this is primary key for the object"
                  },
                  "Body": {
                    "type": "string",
                    "description": "Content of notification. this is primary key for the object"
                  },
                  "URL": {
                    "type": "string",
                    "description": "Content URL of notification"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Header": "Jane visits this store",
                "Body": "This customer likes to buy T-shirt",
                "URL": "https://www.mybrand.com/Products/1704"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Notification has been created"
                },
                "example": {
                  "Message": "Success"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Notification"
        ],
        "operationId": "deleteNotifications",
        "summary": "Delete Notifications",
        "description": "Delete a Notification\n\nYou must have \"**Notification**\" role in \"**My Profile**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "From",
                  "To"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string"
                  },
                  "From": {
                    "type": "string",
                    "description": "Date from of notification created which will be deleted. this is primary key for the object",
                    "default": "(yyyy/mm/dd)"
                  },
                  "To": {
                    "type": "string",
                    "description": "To date of notfication created which will be deleted. this is primary key for the object",
                    "default": "(yyyy/mm/dd)"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "From": "2022-03-17",
                "To": "2022-03-17"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Notification has been deleted"
                    }
                  }
                },
                "example": {
                  "Message": "Push Notification has been deleted!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Notification/WithTotalCount": {
      "get": {
        "tags": [
          "Notification"
        ],
        "operationId": "listNotificationsWithTotalCount",
        "summary": "List Notifications With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet List of Notifications With Total Count\n\nRequired Group Role: \"**My Profile**\" - \"**Notification**\" OR \"**Global**\" - \"**EDIT**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Notification ID"
                          },
                          "ObjectID": {
                            "type": "string",
                            "description": "Notification Object Unique ID"
                          },
                          "OutletName": {
                            "type": "string"
                          },
                          "Header": {
                            "type": "string",
                            "description": "Title of notification message"
                          },
                          "Body": {
                            "type": "string",
                            "description": "Content of notification"
                          },
                          "URL": {
                            "type": "string",
                            "description": "Content URL of notification"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Notification's created time"
                          },
                          "Type": {
                            "type": "string"
                          },
                          "TypeID": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "7f7b85db-da32-4fe8-8118-f071ba36f0a0",
                      "ObjectID": "00000000-0000-0000-0000-000000000000",
                      "OutletName": "Offline",
                      "Header": "Customer has visited store 5 times",
                      "Body": "male, 30 years old",
                      "Created": "2022-03-17T08:10:10.15",
                      "URL": "https://www.google.com/",
                      "TypeID": 0,
                      "Type": "None"
                    },
                    {
                      "ID": "ce34ace3-2fec-4b87-8ae1-9338eed379a3",
                      "ObjectID": "00000000-0000-0000-0000-000000000000",
                      "OutletName": "Offline",
                      "Header": "Customer has visited store 5 times",
                      "Body": "male, 30 years old",
                      "Created": "2022-03-17T08:09:51.367",
                      "URL": "https://www.google.com/",
                      "TypeID": 0,
                      "Type": "None"
                    }
                  ],
                  "TotalCount": 2
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "object",
                      "properties": {
                        "$": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "status": {
                      "type": "integer"
                    },
                    "title": {
                      "type": "string"
                    },
                    "traceId": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "errors": {
                    "$": [
                      "The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0."
                    ]
                  },
                  "status": 400,
                  "title": "One or more validation errors occurred.",
                  "traceId": "00-0fbab708e385644c8ca77a70aa9cf844-37d8fd3474e9d846-00",
                  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Bill": {
      "post": {
        "tags": [
          "Bill"
        ],
        "summary": "Create a Bill",
        "description": "Create a Supplier Bill\n\nYou must have \"**CREATE**\" role in \"**Buy**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "operationId": "createBill",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Variant Code",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Delivery"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Unique number for the transaction"
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Transaction date"
                      },
                      "DueDate": {
                        "type": "string",
                        "format": "date",
                        "description": "Due date for the transaction"
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Type of tax applied"
                      },
                      "Discount1": {
                        "type": "number",
                        "description": "Percentage of the discount"
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Total discount amount"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Bill notes"
                      },
                      "Delivery": {
                        "type": "string",
                        "description": "Delivery status"
                      },
                      "Supplier": {
                        "type": "object",
                        "required": [
                          "Name",
                          "Email"
                        ],
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of the supplier"
                          },
                          "Email": {
                            "type": "string",
                            "format": "email",
                            "description": "Supplier's email address"
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Supplier's phone number"
                          },
                          "Address": {
                            "type": "string",
                            "description": "Supplier's address"
                          },
                          "Gender": {
                            "type": "string",
                            "description": "Supplier's gender",
                            "enum": [
                              "Male",
                              "Female"
                            ]
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "description": "List of product variants",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Code of the product variant"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Quantity of the variant"
                            },
                            "Price": {
                              "type": "string",
                              "description": "Price of the variant"
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount Percentage applied to the variant"
                            },
                            "DiscountAmount": {
                              "type": "number",
                              "description": "Discount Percentage applied to the variant"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Notes about the variant"
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "description": "List of payments made",
                        "items": {
                          "type": "object",
                          "required": [
                            "Date",
                            "Amount",
                            "Method"
                          ],
                          "properties": {
                            "Date": {
                              "type": "string",
                              "format": "date",
                              "description": "Date of payment"
                            },
                            "Amount": {
                              "type": "string",
                              "description": "Amount paid"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "05.23.2018.0001",
                      "Date": "2018-02-23",
                      "DueDate": "2018-08-25",
                      "TaxType": "PPN 10%",
                      "Discount1": 5,
                      "DiscountAmount": 10000,
                      "Note": "Test note Outlet1",
                      "Delivery": "Waiting",
                      "Supplier": {
                        "Name": "Supplier A",
                        "Email": "supplier@dealpos.com",
                        "Phone": "085741254",
                        "Address": "JL. Muara Karang Cantik Blok P3 Timur No. 30",
                        "Gender": "Male"
                      },
                      "Variants": [
                        {
                          "Code": "2005",
                          "Quantity": "10",
                          "Price": "102000",
                          "Discount": 10,
                          "DiscountAmount": 10000,
                          "Note": "Cotton Combet 30's"
                        },
                        {
                          "Code": "2002",
                          "Quantity": "10",
                          "Price": "120000",
                          "Discount": 5,
                          "Note": "Denim Shirt(M)"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2018-02-23",
                          "Amount": "2140610",
                          "Method": "Cash"
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Serialized Variant",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Delivery"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Unique number for the transaction"
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Transaction date"
                      },
                      "DueDate": {
                        "type": "string",
                        "format": "date",
                        "description": "Due date for the transaction"
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Type of tax applied"
                      },
                      "Discount1": {
                        "type": "number",
                        "description": "Percentage of the discount"
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Total discount amount"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Bill notes"
                      },
                      "Delivery": {
                        "type": "string",
                        "description": "Delivery status"
                      },
                      "Supplier": {
                        "type": "object",
                        "required": [
                          "Name",
                          "Email"
                        ],
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of the supplier"
                          },
                          "Email": {
                            "type": "string",
                            "format": "email",
                            "description": "Supplier's email address"
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Supplier's phone number"
                          },
                          "Address": {
                            "type": "string",
                            "description": "Supplier's address"
                          },
                          "Gender": {
                            "type": "string",
                            "description": "Supplier's gender",
                            "enum": [
                              "Male",
                              "Female"
                            ]
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "description": "List of product variants",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Code of the product variant"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Quantity of the variant"
                            },
                            "Price": {
                              "type": "string",
                              "description": "Price of the variant"
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount Percentage applied to the variant"
                            },
                            "DiscountAmount": {
                              "type": "number",
                              "description": "Discount Percentage applied to the variant"
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "type": "object"
                              }
                            },
                            "Note": {
                              "type": "string",
                              "description": "Notes about the variant"
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "description": "List of payments made",
                        "items": {
                          "type": "object",
                          "required": [
                            "Date",
                            "Amount",
                            "Method"
                          ],
                          "properties": {
                            "Date": {
                              "type": "string",
                              "format": "date",
                              "description": "Date of payment"
                            },
                            "Amount": {
                              "type": "string",
                              "description": "Amount paid"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "05.23.2018.0001",
                      "Date": "2018-02-23",
                      "DueDate": "2018-08-25",
                      "TaxType": "PPN 10%",
                      "Discount1": 5,
                      "DiscountAmount": 10000,
                      "Note": "Test note Outlet1",
                      "Delivery": "Waiting",
                      "Supplier": {
                        "Name": "Supplier A",
                        "Email": "supplier@dealpos.com",
                        "Phone": "085741254",
                        "Address": "JL. Muara Karang Cantik Blok P3 Timur No. 30",
                        "Gender": "Male"
                      },
                      "Variants": [
                        {
                          "Code": "2005",
                          "Quantity": "2",
                          "Price": "102000",
                          "Discount": 10,
                          "DiscountAmount": 10000,
                          "Serial": [
                            {
                              "Number": "1234567890",
                              "Quantity": "Serial 1"
                            },
                            {
                              "Number": "1234567891",
                              "Quantity": "Serial 2"
                            }
                          ],
                          "Note": "Samsung Galaxy S24"
                        },
                        {
                          "Code": "2002",
                          "Quantity": "1",
                          "Price": "120000",
                          "Discount": 5,
                          "Serial": [
                            {
                              "Number": "1234567898",
                              "Quantity": "Serial 1"
                            }
                          ],
                          "Note": "Samsung Galaxy S25"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2018-02-23",
                          "Amount": "2140610",
                          "Method": "Cash"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ID": "410ba2b7-8eff-4759-b5f1-cf47b33ef1cc"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet {Outlet 1} Buy configuration is not enabled"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Bill"
        ],
        "operationId": "updateBill",
        "summary": "Update a Bill",
        "description": "Update a Supplier Bill based on number.\n\nYou must have \"**EDIT**\" role in \"**Orders**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Outlet",
                  "Number",
                  "Date",
                  "Delivery"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Name of the outlet"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Unique number for the transaction"
                  },
                  "Date": {
                    "type": "string",
                    "format": "date",
                    "description": "Transaction date"
                  },
                  "DueDate": {
                    "type": "string",
                    "format": "date",
                    "description": "Due date for the transaction"
                  },
                  "TaxType": {
                    "type": "string",
                    "description": "Type of tax applied"
                  },
                  "Discount1": {
                    "type": "number",
                    "description": "Percentage of the discount"
                  },
                  "DiscountAmount": {
                    "type": "number",
                    "description": "Total discount amount"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Bill notes"
                  },
                  "Delivery": {
                    "type": "string",
                    "description": "Delivery status"
                  },
                  "Supplier": {
                    "type": "object",
                    "required": [
                      "Name",
                      "Email"
                    ],
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "Name of the supplier"
                      },
                      "Email": {
                        "type": "string",
                        "format": "email",
                        "description": "Supplier's email address"
                      },
                      "Phone": {
                        "type": "string",
                        "description": "Supplier's phone number"
                      },
                      "Address": {
                        "type": "string",
                        "description": "Supplier's address"
                      },
                      "Gender": {
                        "type": "string",
                        "description": "Supplier's gender",
                        "enum": [
                          "Male",
                          "Female"
                        ]
                      }
                    }
                  },
                  "Variants": {
                    "type": "array",
                    "description": "List of product variants",
                    "items": {
                      "type": "object",
                      "required": [
                        "Code",
                        "Quantity",
                        "Price"
                      ],
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Code of the product variant"
                        },
                        "Quantity": {
                          "type": "string",
                          "description": "Quantity of the variant"
                        },
                        "Price": {
                          "type": "string",
                          "description": "Price of the variant"
                        },
                        "Discount": {
                          "type": "number",
                          "description": "Discount percentage applied to the variant"
                        },
                        "DiscountAmount": {
                          "type": "number",
                          "description": "Discount amount applied to the variant"
                        },
                        "Note": {
                          "type": "string",
                          "description": "Notes about the variant"
                        }
                      }
                    }
                  },
                  "Payments": {
                    "type": "array",
                    "description": "List of payments made",
                    "items": {
                      "type": "object",
                      "required": [
                        "Date",
                        "Amount",
                        "Method"
                      ],
                      "properties": {
                        "Date": {
                          "type": "string",
                          "format": "date",
                          "description": "Date of payment"
                        },
                        "Amount": {
                          "type": "string",
                          "description": "Amount paid"
                        },
                        "Method": {
                          "type": "string",
                          "description": "Payment method"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "05.23.2018.0001",
                "Date": "2018-02-23",
                "DueDate": "2018-08-25",
                "TaxType": "PPN 10%",
                "Discount1": 5,
                "DiscountAmount": 10000,
                "Note": "Test note Outlet1",
                "Delivery": "Waiting",
                "Supplier": {
                  "Name": "Supplier A",
                  "Email": "supplier@dealpos.com",
                  "Phone": "085741254",
                  "Address": "JL. Muara Karang Cantik Blok P3 Timur No. 30",
                  "Gender": "Male"
                },
                "Variants": [
                  {
                    "Code": "2005",
                    "Quantity": "10",
                    "Price": "102000",
                    "Discount": 10,
                    "DiscountAmount": 10000,
                    "Note": "Cotton Combet 30's"
                  },
                  {
                    "Code": "2002",
                    "Quantity": "10",
                    "Price": "120000",
                    "Discount": 5,
                    "DiscountAmount": 10000,
                    "Note": "Denim Shirt(M)"
                  }
                ],
                "Payments": [
                  {
                    "Date": "2018-02-23",
                    "Amount": "2130610",
                    "Method": "Cash"
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ID": "410ba2b7-8eff-4759-b5f1-cf47b33ef1cc"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "get": {
        "tags": [
          "Bill"
        ],
        "operationId": "listBills",
        "summary": "List Bills",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Bill/p)**\n\n<br>\nGet List of Supplier Bills based on Outlet\n\nYou must have \"**SupplierBill**\" role in \"**Orders**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "From",
                  "Outlet",
                  "PageNumber",
                  "PageSize",
                  "To"
                ],
                "type": "object",
                "properties": {
                  "From": {
                    "type": "string",
                    "description": "From date(yyyy/mm/dd)",
                    "default": "format : yyyy-mm-dd"
                  },
                  "To": {
                    "type": "string",
                    "description": "To date(yyyyy/mm/dd)",
                    "default": "format : yyyy-mm-dd"
                  },
                  "Outlet": {
                    "type": "string",
                    "description": "The name of the outlet making a purchase order. This is primary key for the object"
                  },
                  "PageNumber": {
                    "type": "number",
                    "description": "The number of page data to be displayed"
                  },
                  "PageSize": {
                    "type": "number",
                    "description": "The number of rows returned by the API"
                  }
                }
              },
              "example": {
                "From": "2020-06-01",
                "To": "2020-06-30",
                "Outlet": "Outlet1",
                "PageNumber": 1,
                "PageSize": 10
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of supplier bill that created"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name of bill transaction created"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Bill number transaction"
                      },
                      "Supplier": {
                        "type": "string",
                        "description": "Supplier Name"
                      },
                      "Type": {
                        "type": "integer",
                        "description": "Type of Supplier Bill"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Bill transaction created date"
                      },
                      "Due": {
                        "type": "string",
                        "description": "Due Date of payment"
                      },
                      "Amount": {
                        "type": "integer",
                        "description": "Total purchase amount"
                      },
                      "Delivery": {
                        "type": "string",
                        "description": "Delivery state of shipping",
                        "enum": [
                          "Waiting",
                          "Received",
                          "Partial"
                        ]
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Status payment of bill transaction"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Bill created time"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "d688ff9e-0671-456a-b6f0-223acaa5ee7b",
                    "Outlet": "Outlet1",
                    "Number": "20.06.00004",
                    "Supplier": "hendry",
                    "Type": 1,
                    "Date": "2020-06-24T00:00:00",
                    "Due": "2020-06-24T00:00:00",
                    "Amount": 100000,
                    "Delivery": "Received",
                    "Payment": "Paid",
                    "Created": "2020-06-24T13:36:12.97"
                  },
                  {
                    "ID": "ed6ffe55-f08e-4806-be1d-e55f3927e11b",
                    "Outlet": "Outlet1",
                    "Number": "20.06.00003",
                    "Supplier": "PT ABC",
                    "Type": 1,
                    "Date": "2020-06-24T00:00:00",
                    "Due": "2020-06-24T00:00:00",
                    "Amount": 100000,
                    "Delivery": "Received",
                    "Payment": "Paid",
                    "Created": "2020-06-24T11:40:27.703"
                  },
                  {
                    "ID": "8169eac5-c2a7-4845-8f96-0b5a8980957a",
                    "Outlet": "Outlet1",
                    "Number": "20.06.00002",
                    "Supplier": "PT ABC",
                    "Type": 1,
                    "Date": "2020-06-24T00:00:00",
                    "Due": "2020-06-24T00:00:00",
                    "Amount": 100000,
                    "Delivery": "Received",
                    "Payment": "Paid",
                    "Created": "2020-06-24T11:24:53.027"
                  },
                  {
                    "ID": "057a8d3f-3927-4d61-a533-cd554d2c01e8",
                    "Outlet": "Outlet1",
                    "Number": "OTL01-20-06-02",
                    "Supplier": "PT ABC",
                    "Type": 1,
                    "Date": "2020-06-19T00:00:00",
                    "Due": "2020-06-19T00:00:00",
                    "Amount": 87289,
                    "Delivery": "Received",
                    "Payment": "Paid",
                    "Created": "2020-06-19T14:13:13.817"
                  },
                  {
                    "ID": "1b5f9f1f-e836-4330-b79d-9e7737893a78",
                    "Outlet": "Outlet1",
                    "Number": "OTL01-20-06-01",
                    "Supplier": "PT ABC",
                    "Type": 1,
                    "Date": "2020-06-08T00:00:00",
                    "Due": "2020-06-08T00:00:00",
                    "Amount": 3138,
                    "Delivery": "Received",
                    "Payment": "Paid",
                    "Created": "2020-06-08T08:40:54.55"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Bill"
        ],
        "operationId": "deleteBill",
        "summary": "Delete a Bill",
        "description": "Delete a Supplier Bill based on Outlet and Number\n\nYou must have role \"**DELETE**\" role in \"**Buy**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "The name of the outlet making a purchase order"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Number of Supplier bill. This is primary key for the object"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "18.10.00009"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Supplier bill has been deleted!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Category": {
      "post": {
        "tags": [
          "Category"
        ],
        "operationId": "createCategory",
        "summary": "Create a Category",
        "description": "Create a Category based on name\n\nYou must have \"**CREATE**\" role in \"**Products**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/category"
              },
              "example": {
                "Name": "Top/Men",
                "Code": "TM"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "The ID from category created"
                    }
                  }
                },
                "example": {
                  "ID": "273d1184-a64b-4d2d-ad98-8b38b19c3ffb"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error Message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "\n"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Category"
        ],
        "operationId": "updateCategory",
        "summary": "Update a Category",
        "description": "Update a category based on name\n\nYou must have \"**EDIT**\" role in \"**Products**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Discontinued",
                  "Name",
                  "Rename"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string"
                  },
                  "Rename": {
                    "type": "string"
                  },
                  "Discontinued": {
                    "type": "boolean"
                  }
                },
                "example": {
                  "Name": "Top/Men",
                  "Rename": "Top/Women",
                  "Discontinued": false
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "The ID from category updated"
                    }
                  }
                },
                "example": {
                  "ID": "7dc2d2f8-9143-4d3b-bff5-6c00f3f52a23"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Category"
        ],
        "operationId": "deleteCategory",
        "summary": "Delete a Category",
        "description": "Delete a Category based on name\n\nYou must have \"**DELETE**\" role in \"**Products**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The name of the category that want to be deleted. This is primary key for the object"
                  }
                },
                "example": {
                  "Name": "Food/Snack/Pastries"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "ID"
                  ],
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "the category ID has been deleted"
                    }
                  }
                },
                "example": {
                  "ID": "273d1184-a64b-4d2d-ad98-8b38b19c3ffb"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "get": {
        "tags": [
          "Category"
        ],
        "operationId": "listCategories",
        "summary": "List Categories",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Category/p)**\n\n<br>\n\nGet list of product categories\n\nUse First example (empty object) to return all categories, and use second example to get spesific category with its children.\n\nRequired Group Role: **\"Products\"** - **\"View\"**\n",
        "parameters": [
          {
            "name": "Discontinued",
            "in": "query",
            "description": "If requester doesn't fill in the discontinued parameter, response will display all of the categories\n",
            "schema": {
              "type": "boolean",
              "example": false,
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "The ID from category"
                      },
                      "Name": {
                        "type": "string",
                        "description": "The name of category"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "Category's discontinued status",
                        "x-stoplight": {
                          "id": "pyxeye97wpt4h"
                        }
                      },
                      "SubCategory": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string"
                            },
                            "Name": {
                              "type": "string"
                            },
                            "Parent": {
                              "type": "string"
                            },
                            "Discontinued": {
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "All Categories": {
                    "summary": "All Categories",
                    "value": [
                      {
                        "ID": "328ca218-0f0b-449c-8d0d-2a55113ce432",
                        "Name": "Top/Men",
                        "Discontinued": false
                      },
                      {
                        "ID": "ed8e8964-d3ab-4101-834b-426b85b241b0",
                        "Name": "Top",
                        "Discontinued": false
                      }
                    ]
                  },
                  "Specific Category": {
                    "summary": "Specific Category",
                    "value": [
                      {
                        "ID": "b05bdeb0-b037-40a4-b05b-20d0d869f999",
                        "Name": "Top",
                        "SubCategory": [
                          {
                            "ID": "154b76b9-b2ee-44d5-84f4-32dbca3a5286",
                            "Name": "Top/Man",
                            "Parent": "Man",
                            "Discontinued": false
                          },
                          {
                            "ID": "e4821f45-4ab0-45b9-950e-4a6db8d0f9d1",
                            "Name": "Top/Women",
                            "Parent": "Women",
                            "Discontinued": false
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token submitted! Please retreive your token from MyProfile"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product": {
      "post": {
        "tags": [
          "Product"
        ],
        "operationId": "createProduct",
        "summary": "Create a Product",
        "description": "Create New Product\n\nYou must have \"**CREATE**\" role in \"**Products**\" Module \n",
        "parameters": [
          {
            "name": "UploadImageAsync",
            "in": "header",
            "description": "When true image is uploaded asynchronously meaning when you receive OK Status Code the image processing is still running in the background.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Standard Variant",
                    "required": [
                      "Category",
                      "Name",
                      "Brand",
                      "Code",
                      "Discontinued",
                      "ImageURL",
                      "Variants"
                    ],
                    "type": "object",
                    "properties": {
                      "Category": {
                        "type": "string",
                        "description": "The category of the product"
                      },
                      "Name": {
                        "type": "string",
                        "description": "The name of the product"
                      },
                      "Brand": {
                        "type": "string",
                        "description": "The brand of the product"
                      },
                      "Code": {
                        "type": "string",
                        "description": "The code of the product"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "The discontinued status of the product"
                      },
                      "ImageURL": {
                        "type": "string",
                        "description": "The image URL of the product"
                      },
                      "ExtraImagesURL": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "The extra image URL of the product"
                      },
                      "Description": {
                        "type": "string",
                        "description": "The description of the product"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Model": {
                              "type": "string",
                              "description": "The model of the variant"
                            },
                            "Code": {
                              "type": "string",
                              "description": "The code of the variant"
                            },
                            "UnitCost": {
                              "type": "number",
                              "description": "The unit cost of the variant"
                            },
                            "UnitPrice": {
                              "type": "number",
                              "description": "The unit price of the variant"
                            },
                            "Discontinued": {
                              "type": "boolean",
                              "description": "The discontinued status of the variant"
                            },
                            "Type": {
                              "type": "object",
                              "properties": {
                                "value": {
                                  "type": "string"
                                }
                              },
                              "description": "The type of the variant"
                            },
                            "VariantDescription": {
                              "type": "string",
                              "description": "The description of the variant"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Category": "Top/Men",
                      "Name": "Captain America T-Shirt",
                      "Brand": "Brand",
                      "Code": "1003",
                      "Discontinued": false,
                      "ImageURL": "https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60",
                      "ExtraImagesURL": [
                        "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg",
                        "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg",
                        "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg"
                      ],
                      "Description": "New Arrival",
                      "Variants": [
                        {
                          "Model": "Small",
                          "Code": "1003S",
                          "UnitCost": 100000,
                          "UnitPrice": 150000,
                          "Discontinued": true,
                          "Type": {
                            "value": "Standard"
                          },
                          "VariantDescription": "Unavailable"
                        },
                        {
                          "Model": "Medium",
                          "Code": "1003M",
                          "UnitCost": 125000,
                          "UnitPrice": 175000,
                          "Type": {
                            "value": "Standard"
                          },
                          "Discontinued": false
                        }
                      ]
                    }
                  },
                  {
                    "title": "Composite Variant",
                    "required": [
                      "Category",
                      "Name",
                      "Brand",
                      "Code",
                      "Discontinued",
                      "ImageURL",
                      "Variants"
                    ],
                    "type": "object",
                    "properties": {
                      "Category": {
                        "type": "string",
                        "description": "The category of the product"
                      },
                      "Name": {
                        "type": "string",
                        "description": "The name of the product"
                      },
                      "Brand": {
                        "type": "string",
                        "description": "The brand of the product"
                      },
                      "Code": {
                        "type": "string",
                        "description": "The code of the product"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "The discontinued status of the product"
                      },
                      "ImageURL": {
                        "type": "string",
                        "description": "The image URL of the product"
                      },
                      "ExtraImagesURL": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "The extra image URL of the product"
                      },
                      "Description": {
                        "type": "string",
                        "description": "The description of the product"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Model": {
                              "type": "string",
                              "description": "The model of the variant"
                            },
                            "Code": {
                              "type": "string",
                              "description": "The code of the variant"
                            },
                            "UnitCost": {
                              "type": "number",
                              "description": "The unit cost of the variant"
                            },
                            "UnitPrice": {
                              "type": "number",
                              "description": "The unit price of the variant"
                            },
                            "Discontinued": {
                              "type": "boolean",
                              "description": "The discontinued status of the variant"
                            },
                            "Type": {
                              "type": "object",
                              "properties": {
                                "value": {
                                  "type": "string"
                                }
                              },
                              "description": "The type of the variant"
                            },
                            "VariantDescription": {
                              "type": "string",
                              "description": "The description of the variant"
                            },
                            "Components": {
                              "type": "array",
                              "description": "List of components for the variant",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "Code": {
                                    "type": "string",
                                    "description": "Unique code of the component"
                                  },
                                  "Name": {
                                    "type": "string",
                                    "description": "Name of the component"
                                  },
                                  "Qty": {
                                    "type": "integer",
                                    "description": "Quantity of the component"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Category": "Food",
                      "Name": "Burger",
                      "Brand": "Brand",
                      "Code": "1001",
                      "Discontinued": false,
                      "ImageURL": "https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60",
                      "ExtraImagesURL": [
                        "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg",
                        "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg",
                        "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg"
                      ],
                      "Description": "Complete Package",
                      "Variants": [
                        {
                          "Model": "Medium",
                          "Code": "1001M",
                          "UnitCost": 50000,
                          "UnitPrice": 75000,
                          "Discontinued": false,
                          "Type": "Composite",
                          "VariantDescription": "Available",
                          "Components": [
                            {
                              "Code": "S001",
                              "Name": "Sausage",
                              "Qty": 1
                            },
                            {
                              "Code": "B001",
                              "Name": "Bread",
                              "Qty": 2
                            }
                          ]
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "ID",
                    "Variants"
                  ],
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Product ID"
                    },
                    "Variants": {
                      "type": "array",
                      "description": "Array of Variants",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Code": {
                            "type": "string",
                            "description": "Variant Code"
                          },
                          "ID": {
                            "type": "string",
                            "description": "Variant ID"
                          }
                        }
                      }
                    },
                    "ListVariantID": {
                      "type": "array",
                      "description": "List Variant ID",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "example": {
                    "ID": "9525a6b0-297f-4b4a-97c7-0ae876bb44cd",
                    "Variants": [
                      {
                        "Code": "1000S",
                        "ID": "9ad47be6-bf1c-4dd5-87a8-193fe56d1035"
                      },
                      {
                        "Code": "1000M",
                        "ID": "b3d68610-22a5-445d-8c5c-c79487373aa2"
                      }
                    ],
                    "ListVariantID": [
                      "9ad47be6-bf1c-4dd5-87a8-193fe56d1035",
                      "b3d68610-22a5-445d-8c5c-c79487373aa2"
                    ]
                  }
                },
                "example": {
                  "ID": "9525a6b0-297f-4b4a-97c7-0ae876bb44cd",
                  "Variants": [
                    {
                      "Code": "1000S",
                      "ID": "9ad47be6-bf1c-4dd5-87a8-193fe56d1035"
                    },
                    {
                      "Code": "1000M",
                      "ID": "b3d68610-22a5-445d-8c5c-c79487373aa2"
                    }
                  ],
                  "ListVariantID": [
                    "9ad47be6-bf1c-4dd5-87a8-193fe56d1035",
                    "b3d68610-22a5-445d-8c5c-c79487373aa2"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Every product must be assigned to a category"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Product"
        ],
        "operationId": "updateProduct",
        "summary": "Update a Product By Code",
        "description": "Update Product Existing\n\nYou must have \"**EDIT**\" role in \"**Products**\" Module  OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/product"
              },
              "example": {
                "Category": "Top/Men",
                "Name": "Captain America T-Shirt",
                "Brand": "Brand",
                "Code": "1003",
                "Discontinued": false,
                "ImageURL": "https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60",
                "Description": "New Arrival",
                "Variants": [
                  {
                    "Model": "Medium",
                    "Code": "1003M",
                    "UnitCost": 125000,
                    "UnitPrice": 200000,
                    "Discontinued": false
                  },
                  {
                    "Model": "Large",
                    "Code": "1003L",
                    "UnitCost": 150000,
                    "UnitPrice": 225000,
                    "Discontinued": false
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Code": {
                            "type": "string"
                          },
                          "ID": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "ListVariantID": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "example": {
                    "ID": "9525a6b0-297f-4b4a-97c7-0ae876bb44cd",
                    "Variants": [
                      {
                        "Code": "1000S",
                        "ID": "9ad47be6-bf1c-4dd5-87a8-193fe56d1035"
                      },
                      {
                        "Code": "1000M",
                        "ID": "b3d68610-22a5-445d-8c5c-c79487373aa2"
                      }
                    ],
                    "ListVariantID": [
                      "9ad47be6-bf1c-4dd5-87a8-193fe56d1035",
                      "b3d68610-22a5-445d-8c5c-c79487373aa2"
                    ]
                  }
                },
                "example": {
                  "ID": "9525a6b0-297f-4b4a-97c7-0ae876bb44cd",
                  "Variants": [
                    {
                      "Code": "1000S",
                      "ID": "9ad47be6-bf1c-4dd5-87a8-193fe56d1035"
                    },
                    {
                      "Code": "1000M",
                      "ID": "b3d68610-22a5-445d-8c5c-c79487373aa2"
                    }
                  ],
                  "ListVariantID": [
                    "9ad47be6-bf1c-4dd5-87a8-193fe56d1035",
                    "b3d68610-22a5-445d-8c5c-c79487373aa2"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Product"
        ],
        "operationId": "deleteProduct",
        "summary": "Delete a Product",
        "description": "Delete Product by Code\n\nYou must have \"**DELETE**\" role in \"**Products**\" Module ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "The code of the product to be deleted."
                  }
                }
              },
              "example": {
                "Code": "J100"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "The Product has been deleted"
                },
                "example": "Product with code J100 has been successfully deleted."
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "listProducts",
        "summary": "List Products",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Product/p)**\n\n<br>\nGet List of Products sorted by Category Asc, Code Asc, Name Asc\n\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number that you want to display",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The maximum number of data that you want to display on the page",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "QueryRowCount",
            "in": "query",
            "description": "Default show / hide the counter",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Category",
            "in": "query",
            "description": "The name of the product category.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ListCategory",
            "in": "query",
            "description": "The name of the product in multiple category",
            "required": false,
            "schema": {
              "type": "array"
            }
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Name of the product",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Discontinued",
            "in": "query",
            "description": "The name of the product category.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "No",
              "enum": [
                "No",
                "Yes",
                "All"
              ]
            }
          },
          {
            "name": "QueryInventory",
            "in": "query",
            "description": "The name of the product category.",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "SearchMode",
            "in": "query",
            "description": "The search mode of the product",
            "required": false,
            "schema": {
              "type": "string",
              "default": "Variant",
              "enum": [
                "Product",
                "Variant"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "DataArray": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "The ID of the product to be showed"
                          },
                          "Name": {
                            "type": "string",
                            "description": "the name of the product to be showed"
                          },
                          "Code": {
                            "type": "string",
                            "description": "the code of the product to be showed\n"
                          },
                          "Category": {
                            "type": "string",
                            "description": "The Cateogry name of the product to be showed"
                          },
                          "Released": {
                            "type": "string",
                            "description": "The release date of the product to be showed"
                          },
                          "ThumbnailUrl": {
                            "type": "string",
                            "description": "The product thumbnail image link of the product to be showed"
                          },
                          "ImageUrl": {
                            "type": "string",
                            "description": "The Image URL of the product to be showed"
                          },
                          "Discontinued": {
                            "type": "boolean",
                            "description": "The Availablity status of the product"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "ID": {
                                  "type": "string",
                                  "description": "The ID of the Variants to be showed"
                                },
                                "Model": {
                                  "type": "string",
                                  "description": "the model name of the variants"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "the code of the variant to be showed"
                                },
                                "UnitPrice": {
                                  "type": "number",
                                  "description": "the unit price of the variants to be showed"
                                },
                                "Discount": {
                                  "type": "number",
                                  "description": "discount percentage of variant's"
                                },
                                "Discontinued": {
                                  "type": "boolean",
                                  "description": "the availablity of the variants"
                                },
                                "Inventory": {
                                  "type": "integer",
                                  "description": "The Inventory stock of the variants. When not queried this property will not be available"
                                },
                                "ProductID": {
                                  "type": "string",
                                  "description": "the product ID of the variants to be showed"
                                },
                                "Allocated": {
                                  "type": "integer",
                                  "description": "Allocated Inventory. When not queried this property will not be available"
                                },
                                "Weight": {
                                  "type": "integer",
                                  "description": "Variant's weight"
                                }
                              }
                            }
                          },
                          "Created": {
                            "type": "string",
                            "description": "the creator of the variants"
                          }
                        }
                      }
                    },
                    "RecordsCount": {
                      "type": "integer",
                      "description": "total product data result.\n(-1 if QueryRowCount set false)"
                    }
                  }
                },
                "example": {
                  "DataArray": [
                    {
                      "ID": "f74bba14-99f0-4246-84bf-3064e3d516c3",
                      "Name": "Captain America T-Shirt",
                      "Code": "1003",
                      "Category": "Top/Men",
                      "Released": "0001-01-01T00:00:00",
                      "ThumbnailUrl": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url",
                      "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url",
                      "Discontinued": false,
                      "Variants": [
                        {
                          "ID": "a39787d8-2c20-428c-babf-b61c257d337e",
                          "Model": "Medium",
                          "Code": "1003M",
                          "UnitPrice": 200,
                          "Discount": 20,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "f74bba14-99f0-4246-84bf-3064e3d516c3",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "7293d4b4-20c9-44ee-898b-ffafc294f259",
                          "Model": "Large",
                          "Code": "1003L",
                          "UnitPrice": 225,
                          "Discount": 10,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "f74bba14-99f0-4246-84bf-3064e3d516c3",
                          "Allocated": 0,
                          "Weight": 500
                        }
                      ],
                      "Created": "2020-04-24T14:11:17.193"
                    },
                    {
                      "ID": "1f792526-df98-4171-97f7-18113f9af20d",
                      "Name": "Denim Shirt",
                      "Code": "1342",
                      "Category": "Top/Men",
                      "Released": "2015-01-14T00:00:00",
                      "ThumbnailUrl": "//res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/1f792526-df98-4171-97f7-18113f9af20d/Denim_Shirt.png",
                      "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/1f792526-df98-4171-97f7-18113f9af20d/Denim_Shirt.png",
                      "Discontinued": false,
                      "Variants": [
                        {
                          "ID": "d1ac5ebb-db74-42f9-980c-0195828f3edd",
                          "Model": "L",
                          "Code": "1342L",
                          "UnitPrice": 500,
                          "Discount": 20,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "1f792526-df98-4171-97f7-18113f9af20d",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "5cd96f46-29b1-420b-a188-a2ae7d2b778a",
                          "Model": "M",
                          "Code": "1342M",
                          "UnitPrice": 500,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "1f792526-df98-4171-97f7-18113f9af20d",
                          "Allocated": 0,
                          "Weight": 500
                        }
                      ],
                      "Created": "2021-01-14T00:00:00"
                    },
                    {
                      "ID": "02a199c4-6964-45ad-af92-bfb58aa06ee8",
                      "Name": "Long sleeves T-shirt",
                      "Code": "1333",
                      "Category": "Top/Men",
                      "Released": "2015-01-14T00:00:00",
                      "ThumbnailUrl": "//res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/02a199c4-6964-45ad-af92-bfb58aa06ee8/long_sleeves_T-shirt.png",
                      "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/02a199c4-6964-45ad-af92-bfb58aa06ee8/long_sleeves_T-shirt.png",
                      "Discontinued": false,
                      "Variants": [
                        {
                          "ID": "4568e810-9ee6-4310-af11-9dbea5ce4b40",
                          "Model": "L",
                          "Code": "1333L",
                          "UnitPrice": 120,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "02a199c4-6964-45ad-af92-bfb58aa06ee8",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "e3ff1c10-5caa-43f2-9b7e-cf9bc32f26da",
                          "Model": "M",
                          "Code": "1333M",
                          "UnitPrice": 120,
                          "Discount": 10,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "02a199c4-6964-45ad-af92-bfb58aa06ee8",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "0b3948b6-0029-4a3b-b97a-c2c2bd0c842a",
                          "Model": "S",
                          "Code": "1333S",
                          "UnitPrice": 120,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "02a199c4-6964-45ad-af92-bfb58aa06ee8",
                          "Allocated": 0,
                          "Weight": 500
                        }
                      ],
                      "Created": "2021-01-14T00:00:00"
                    },
                    {
                      "ID": "b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9",
                      "Name": "Shirt",
                      "Code": "1002",
                      "Category": "Top/Men",
                      "Released": "2015-01-13T00:00:00",
                      "ThumbnailUrl": "//res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9/b.png",
                      "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9/b.png",
                      "Discontinued": false,
                      "Variants": [
                        {
                          "ID": "9a60f9f0-0a4b-4834-a2e3-dcbe4f456907",
                          "Model": "L",
                          "Code": "1002L",
                          "UnitPrice": 250,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "ee02969d-93ea-446c-a105-aca4c7cecd4e",
                          "Model": "M",
                          "Code": "1002M",
                          "UnitPrice": 250,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "c899897b-a298-48c4-8253-cb01e9e18fb9",
                          "Model": "S",
                          "Code": "1002S",
                          "UnitPrice": 250,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "b11a7d0a-c28f-4e7a-9c4b-52a709c9a2d9",
                          "Allocated": 0,
                          "Weight": 500
                        }
                      ],
                      "Created": "2021-01-14T00:00:00"
                    },
                    {
                      "ID": "2bb38cb9-e8e7-4af2-be21-087d328e11e4",
                      "Name": "T Shirt",
                      "Code": "1001",
                      "Category": "Top/Men",
                      "Released": "2015-01-13T00:00:00",
                      "ThumbnailUrl": "//res.cloudinary.com/dealpos/image/upload/w_80/id/starterretail/Product/2bb38cb9-e8e7-4af2-be21-087d328e11e4/a.png",
                      "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/id/starterretail/Product/2bb38cb9-e8e7-4af2-be21-087d328e11e4/a.png",
                      "Discontinued": false,
                      "Variants": [
                        {
                          "ID": "667ccb14-3e4f-436a-b76c-176458d70cdf",
                          "Model": "L",
                          "Code": "1001L",
                          "UnitPrice": 150,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "2bb38cb9-e8e7-4af2-be21-087d328e11e4"
                        },
                        {
                          "ID": "4f37995e-5f8d-4edb-9e94-e54395941f66",
                          "Model": "M",
                          "Code": "1001M",
                          "UnitPrice": 150,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "2bb38cb9-e8e7-4af2-be21-087d328e11e4",
                          "Allocated": 0,
                          "Weight": 500
                        },
                        {
                          "ID": "4994d431-ce85-4dc9-8599-8164248521a8",
                          "Model": "S",
                          "Code": "1001S",
                          "UnitPrice": 150,
                          "Discount": 0,
                          "Discontinued": false,
                          "Inventory": 0,
                          "ProductID": "2bb38cb9-e8e7-4af2-be21-087d328e11e4",
                          "Allocated": 0,
                          "Weight": 500
                        }
                      ],
                      "Created": "2021-01-14T00:00:00"
                    }
                  ],
                  "RecordsCount": 5
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/Add": {
      "post": {
        "tags": [
          "Variant"
        ],
        "summary": "Add Variant By Product Code",
        "operationId": "post-Variant-Add",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Product Code"
                  },
                  "Variants": {
                    "type": "array",
                    "items": {
                      "required": [
                        "Code"
                      ],
                      "type": "object",
                      "properties": {
                        "Model": {
                          "type": "string",
                          "description": "New Variant Name"
                        },
                        "Code": {
                          "type": "string",
                          "description": "Variant Code"
                        },
                        "UnitCost": {
                          "type": "integer",
                          "description": "Cost of variant"
                        },
                        "UnitPrice": {
                          "type": "integer",
                          "description": "Price of variant"
                        },
                        "Discontinued": {
                          "type": "boolean",
                          "description": "The variant availability for selling."
                        },
                        "VariantDescription": {
                          "type": "string",
                          "description": "The description of the product to be inserted."
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Code": "1003",
                "Variants": [
                  {
                    "Model": "Small",
                    "Code": "1003L",
                    "UnitCost": 100000,
                    "UnitPrice": 150000,
                    "Discontinued": true,
                    "VariantDescription": "Unavailable"
                  },
                  {
                    "Model": "Medium",
                    "Code": "1003XL",
                    "UnitCost": 125000,
                    "UnitPrice": 175000,
                    "Discontinued": false
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Code": {
                            "type": "string"
                          },
                          "ID": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "ListVariantID": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "example": {
                    "ID": "9525a6b0-297f-4b4a-97c7-0ae876bb44cd",
                    "Variants": [
                      {
                        "Code": "1000S",
                        "ID": "9ad47be6-bf1c-4dd5-87a8-193fe56d1035"
                      },
                      {
                        "Code": "1000M",
                        "ID": "b3d68610-22a5-445d-8c5c-c79487373aa2"
                      }
                    ],
                    "ListVariantID": [
                      "9ad47be6-bf1c-4dd5-87a8-193fe56d1035",
                      "b3d68610-22a5-445d-8c5c-c79487373aa2"
                    ]
                  }
                }
              },
              "Example 1": {
                "example": {
                  "ID": "9525a6b0-297f-4b4a-97c7-0ae876bb44cd",
                  "Variants": [
                    {
                      "Code": "1000S",
                      "ID": "9ad47be6-bf1c-4dd5-87a8-193fe56d1035"
                    },
                    {
                      "Code": "1000M",
                      "ID": "b3d68610-22a5-445d-8c5c-c79487373aa2"
                    }
                  ],
                  "ListVariantID": [
                    "9ad47be6-bf1c-4dd5-87a8-193fe56d1035",
                    "b3d68610-22a5-445d-8c5c-c79487373aa2"
                  ]
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "bukrtkbedjwuz"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant": {
      "put": {
        "tags": [
          "Variant"
        ],
        "operationId": "putVariant",
        "summary": "Update Variant by Code",
        "description": "Update Variant By variant code \n\nYou must have \"**EDIT**\" role in \"**Products**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Variant with Standard /composite type",
                    "required": [
                      "Code",
                      "Components",
                      "OutletPrice"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Code of the variant"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Display Name."
                      },
                      "Model": {
                        "type": "string",
                        "description": "Name of the variant. Backwards compatibility with property \"Variant\"",
                        "x-stoplight": {
                          "id": "4w7wdbgpxs453"
                        }
                      },
                      "ProductCode": {
                        "type": "string",
                        "description": "Code of product",
                        "x-stoplight": {
                          "id": "anb5hdoesj6cs"
                        }
                      },
                      "Weight": {
                        "type": "integer",
                        "description": "Weight of the product"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Product-type of the variant",
                        "enum": [
                          "Standard",
                          "Composite",
                          "NonInventory",
                          "Manufactured",
                          "MultipleUOM",
                          "Complementary",
                          "PrepaidPackage",
                          "PrepaidPoint"
                        ]
                      },
                      "OrderPrice": {
                        "type": "integer",
                        "description": "Last order price of the product"
                      },
                      "UnitCost": {
                        "type": "integer",
                        "description": "Unit cost of the product"
                      },
                      "UnitPrice": {
                        "type": "integer",
                        "description": "Unit selling price of the product"
                      },
                      "Taxable": {
                        "type": "boolean",
                        "description": "Taxable status of the product"
                      },
                      "LoyaltyPoint": {
                        "type": "boolean",
                        "description": "Loyalty point status of the product"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "Discontinue status of the product"
                      },
                      "ReferenceUnitCode": {
                        "type": "string",
                        "description": "Product Code for child (Type MultipleUOM)",
                        "x-stoplight": {
                          "id": "pskva1k70nskr"
                        }
                      },
                      "Ratio": {
                        "type": "integer",
                        "description": "Multiple uom quantity ratio of the child (Type MultipleUOM)",
                        "x-stoplight": {
                          "id": "sqmgt7rh5w2wz"
                        }
                      },
                      "ExpiredDayPrepaid": {
                        "type": "integer",
                        "description": "Number of day set to expired (Type Prepaid Package & Prepaid Point)",
                        "x-stoplight": {
                          "id": "z9dx3bwwgiohf"
                        }
                      },
                      "ExpiredMonthPrepaid": {
                        "type": "integer",
                        "description": "Number of month set to expired (Type Prepaid Package & Prepaid Point)",
                        "x-stoplight": {
                          "id": "hpmbxx9wravkj"
                        }
                      },
                      "PointPrepaid": {
                        "type": "integer",
                        "description": "Number of point that earned (Type Prepaid Package & Prepaid Point). If value is set with 0 means unlimited",
                        "x-stoplight": {
                          "id": "bjtnkg5sury3x"
                        }
                      },
                      "Components": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Component variant code of other variant"
                            },
                            "Name": {
                              "type": "string",
                              "description": "Name of the component"
                            },
                            "Qty": {
                              "type": "integer",
                              "description": "Total qty of the component"
                            }
                          }
                        }
                      },
                      "OutletPrice": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Outlet": {
                              "type": "string",
                              "description": "Selected outlet of the product"
                            },
                            "Price": {
                              "type": "integer",
                              "description": "Outlet price of the product"
                            },
                            "ExtraCost": {
                              "type": "integer",
                              "description": "Extra cost of the selected product"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Code": "2DL-P",
                      "Name": "2D Layering (Premium)",
                      "Model": "2D Layering (Premium)",
                      "ProductCode": "2DL",
                      "Weight": 0,
                      "Type": "Standard",
                      "OrderPrice": 0,
                      "UnitCost": 2000,
                      "UnitPrice": 500000,
                      "Taxable": true,
                      "LoyaltyPoint": false,
                      "Discontinued": false,
                      "Components": [
                        {
                          "Code": "2DL",
                          "Name": "2D Layering",
                          "Qty": 1
                        }
                      ],
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 500000,
                          "ExtraCost": 0
                        }
                      ]
                    }
                  },
                  {
                    "title": "Variant with multiple UOM type",
                    "required": [
                      "Code",
                      "Components",
                      "OutletPrice"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Code of the variant"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Display Name."
                      },
                      "Model": {
                        "type": "string",
                        "description": "Name of the variant. Backwards compatibility with property \"Variant\"",
                        "x-stoplight": {
                          "id": "4w7wdbgpxs453"
                        }
                      },
                      "ProductCode": {
                        "type": "string",
                        "description": "Code of product",
                        "x-stoplight": {
                          "id": "anb5hdoesj6cs"
                        }
                      },
                      "Weight": {
                        "type": "integer",
                        "description": "Weight of the product"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Product-type of the variant",
                        "enum": [
                          "Standard",
                          "Composite",
                          "NonInventory",
                          "Manufactured",
                          "Multi_Unit",
                          "Base_Unit",
                          "Complementary",
                          "PrepaidPackage",
                          "PrepaidPoint"
                        ]
                      },
                      "OrderPrice": {
                        "type": "integer",
                        "description": "Last order price of the product"
                      },
                      "UnitCost": {
                        "type": "integer",
                        "description": "Unit cost of the product"
                      },
                      "UnitPrice": {
                        "type": "integer",
                        "description": "Unit selling price of the product"
                      },
                      "Taxable": {
                        "type": "boolean",
                        "description": "Taxable status of the product"
                      },
                      "LoyaltyPoint": {
                        "type": "boolean",
                        "description": "Loyalty point status of the product"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "Discontinue status of the product"
                      },
                      "ReferenceUnitCode": {
                        "type": "string",
                        "description": "Product Code for child (Type Multi_Unit)",
                        "x-stoplight": {
                          "id": "pskva1k70nskr"
                        }
                      },
                      "Ratio": {
                        "type": "integer",
                        "description": "Multi_Unit quantity ratio of the child (Type Multi_Unit)",
                        "x-stoplight": {
                          "id": "sqmgt7rh5w2wz"
                        }
                      },
                      "ExpiredDayPrepaid": {
                        "type": "integer",
                        "description": "Number of day set to expired (Type Prepaid Package & Prepaid Point)",
                        "x-stoplight": {
                          "id": "z9dx3bwwgiohf"
                        }
                      },
                      "ExpiredMonthPrepaid": {
                        "type": "integer",
                        "description": "Number of month set to expired (Type Prepaid Package & Prepaid Point)",
                        "x-stoplight": {
                          "id": "hpmbxx9wravkj"
                        }
                      },
                      "PointPrepaid": {
                        "type": "integer",
                        "description": "Number of point that earned (Type Prepaid Package & Prepaid Point). If value is set with 0 means unlimited",
                        "x-stoplight": {
                          "id": "bjtnkg5sury3x"
                        }
                      },
                      "Components": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Component variant code of other variant"
                            },
                            "Name": {
                              "type": "string",
                              "description": "Name of the component"
                            },
                            "Qty": {
                              "type": "integer",
                              "description": "Total qty of the component"
                            }
                          }
                        }
                      },
                      "OutletPrice": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Outlet": {
                              "type": "string",
                              "description": "Selected outlet of the product"
                            },
                            "Price": {
                              "type": "integer",
                              "description": "Outlet price of the product"
                            },
                            "ExtraCost": {
                              "type": "integer",
                              "description": "Extra cost of the selected product"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Code": "SW001",
                      "Name": "Sandwich (Large)",
                      "Model": "Large",
                      "ProductCode": "SW",
                      "Weight": 100,
                      "Type": "MultipleUOM",
                      "ReferenceUnitCode": "SKU001",
                      "Ratio": 3,
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ]
                    }
                  },
                  {
                    "title": "Variant with Prepaid Package / Prepaid Point",
                    "required": [
                      "Code",
                      "Components",
                      "OutletPrice"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Code of the variant"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Display Name."
                      },
                      "Model": {
                        "type": "string",
                        "description": "Name of the variant. Backwards compatibility with property \"Variant\"",
                        "x-stoplight": {
                          "id": "4w7wdbgpxs453"
                        }
                      },
                      "ProductCode": {
                        "type": "string",
                        "description": "Code of product",
                        "x-stoplight": {
                          "id": "anb5hdoesj6cs"
                        }
                      },
                      "Weight": {
                        "type": "integer",
                        "description": "Weight of the product"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Product-type of the variant",
                        "enum": [
                          "Standard",
                          "Composite",
                          "NonInventory",
                          "Manufactured",
                          "MultipleUOM",
                          "Complementary",
                          "PrepaidPackage",
                          "PrepaidPoint"
                        ]
                      },
                      "OrderPrice": {
                        "type": "integer",
                        "description": "Last order price of the product"
                      },
                      "UnitCost": {
                        "type": "integer",
                        "description": "Unit cost of the product"
                      },
                      "UnitPrice": {
                        "type": "integer",
                        "description": "Unit selling price of the product"
                      },
                      "Taxable": {
                        "type": "boolean",
                        "description": "Taxable status of the product"
                      },
                      "LoyaltyPoint": {
                        "type": "boolean",
                        "description": "Loyalty point status of the product"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "Discontinue status of the product"
                      },
                      "ReferenceUnitCode": {
                        "type": "string",
                        "description": "Product Code for child (Type MultipleUOM)",
                        "x-stoplight": {
                          "id": "pskva1k70nskr"
                        }
                      },
                      "Ratio": {
                        "type": "integer",
                        "description": "Multiple uom quantity ratio of the child (Type MultipleUOM)",
                        "x-stoplight": {
                          "id": "sqmgt7rh5w2wz"
                        }
                      },
                      "ExpiredDayPrepaid": {
                        "type": "integer",
                        "description": "Number of day set to expired (Type Prepaid Package & Prepaid Point)",
                        "x-stoplight": {
                          "id": "z9dx3bwwgiohf"
                        }
                      },
                      "ExpiredMonthPrepaid": {
                        "type": "integer",
                        "description": "Number of month set to expired (Type Prepaid Package & Prepaid Point)",
                        "x-stoplight": {
                          "id": "hpmbxx9wravkj"
                        }
                      },
                      "PointPrepaid": {
                        "type": "integer",
                        "description": "Number of point that earned (Type Prepaid Package & Prepaid Point). If value is set with 0 means unlimited",
                        "x-stoplight": {
                          "id": "bjtnkg5sury3x"
                        }
                      },
                      "Components": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Component variant code of other variant"
                            },
                            "Name": {
                              "type": "string",
                              "description": "Name of the component"
                            },
                            "Qty": {
                              "type": "integer",
                              "description": "Total qty of the component"
                            }
                          }
                        }
                      },
                      "OutletPrice": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Outlet": {
                              "type": "string",
                              "description": "Selected outlet of the product"
                            },
                            "Price": {
                              "type": "integer",
                              "description": "Outlet price of the product"
                            },
                            "ExtraCost": {
                              "type": "integer",
                              "description": "Extra cost of the selected product"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Code": "SW001",
                      "Name": "Sandwich (Large)",
                      "Model": "Large",
                      "ProductCode": "SW",
                      "Weight": 100,
                      "Type": "PrepaidPackage",
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "ExpiredDayPrepaid": 30,
                      "ExpiredMonthPrepaid": 12,
                      "PointPrepaid": 1,
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Variant has been updated"
                    }
                  }
                },
                "example": {
                  "Message": "Update Success"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Object reference not set to an instance of an object.",
                  "StackTrace": "   at POS.BLL.API.Model.VariantAPIModel.ValidateUpdate(POSContext ctx, IMemoryCache cache, POSIdentity _identity) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\VariantAPIModel.cs:line 67\r\n   at POS.WEB.Controllers.v3.VariantController.Put(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\VariantController.cs:line 274"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Variant"
        ],
        "operationId": "deleteVariant",
        "summary": "Delete a Variant",
        "description": "Delete Variant By variant code \n\nYou must have \"**DELETE**\" role in \"**Products**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "The code of the variant to be deleted.\n"
                  }
                }
              },
              "example": {
                "Code": "1003L"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "the variant has been deleted"
                },
                "example": "Variant with code 1003L has been successfully deleted."
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "getVariant",
        "summary": "List Variants",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet List of Variant existing\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Category",
            "in": "query",
            "description": "The category of the variant to be showed.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2D Layering"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number that you want to display",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The maximum amount of data that you want to display on the page",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "Type",
            "in": "query",
            "description": "The type of the variant to be showed.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Standard"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Category"
                ],
                "type": "object",
                "properties": {
                  "Category": {
                    "type": "string",
                    "description": "The category of the variant to be showed.\n"
                  },
                  "PageNumber": {
                    "type": "integer",
                    "description": "The page number that you want to display"
                  },
                  "PageSize": {
                    "type": "integer",
                    "description": "The maximum amount of data that you want to display on the page"
                  },
                  "Type": {
                    "type": "string",
                    "description": "The type of the variant to be showed.\n"
                  },
                  "Name": {
                    "type": "string",
                    "description": "Variant's Name\n",
                    "x-stoplight": {
                      "id": "e1au8eerana2y"
                    }
                  },
                  "Code": {
                    "type": "string",
                    "description": "Variant's Code\n",
                    "x-stoplight": {
                      "id": "hw0feq3v7qwnv"
                    }
                  },
                  "ReleasedFrom": {
                    "type": "string",
                    "description": "Release Product Date Start",
                    "x-stoplight": {
                      "id": "rtpzlxysnwu1i"
                    }
                  },
                  "ReleasedTo": {
                    "type": "string",
                    "description": "Release Product Date To",
                    "x-stoplight": {
                      "id": "9rveuu9k7puyd"
                    }
                  }
                }
              },
              "example": {
                "Category": "2D Layering",
                "PageNumber": 1,
                "PageSize": 10,
                "Type": "Standard",
                "Name": "2D Layering (Premium)",
                "Code": "2DL-P",
                "ReleasedFrom": "2021-01-01",
                "ReleasedTo": "2021-12-31"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique ID of the variant"
                          },
                          "Name": {
                            "type": "string",
                            "description": "The name of the Variant"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of the Variant"
                          },
                          "Type": {
                            "type": "string",
                            "description": "Product-type of the Variant"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "Unit Selling Price of the Variant"
                          },
                          "UnitCost": {
                            "type": "number",
                            "description": "Unit Cost of the Variant"
                          }
                        }
                      }
                    },
                    "RecordsCount": {
                      "type": "integer",
                      "description": "Total count of the records"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "d01b9ab2-11fb-4fe0-a1a1-49790645da5d",
                      "Name": "2D Layering (Premium)",
                      "Code": "2DL-P",
                      "Type": "Standard",
                      "UnitPrice": 500000,
                      "UnitCost": 2000
                    },
                    {
                      "ID": "7e8ccca1-9690-4cd3-98a3-9b26079d90b5",
                      "Name": "2D Layering (Standard)",
                      "Code": "2DL-S",
                      "Type": "Standard",
                      "UnitPrice": 300000,
                      "UnitCost": 2000
                    }
                  ],
                  "RecordsCount": 2
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/Data": {
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "getVariantData",
        "summary": "List Variant Data",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet List of Variant Data\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Category",
            "in": "query",
            "description": "The category of the variant to be showed.\n",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2D Layering"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number that you want to display",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The maximum amount of data that you want to display on the page",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "Type",
            "in": "query",
            "description": "The type of the variant to be showed.\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Standard"
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Variant's Name\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2D Layering (Standard)"
          },
          {
            "name": "Code",
            "in": "query",
            "description": "Variant's Code\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2DL-S"
          },
          {
            "name": "ReleasedFrom",
            "in": "query",
            "description": "Release Product Date Start",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "ReleasedTo",
            "in": "query",
            "description": "Release Product Date To",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-12-31"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique ID of the variant"
                          },
                          "Name": {
                            "type": "string",
                            "description": "The name of the Variant"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of the Variant"
                          },
                          "Type": {
                            "type": "string",
                            "description": "Product-type of the Variant"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "Unit Selling Price of the Variant"
                          },
                          "UnitCost": {
                            "type": "number",
                            "description": "Unit Cost of the Variant"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "d01b9ab2-11fb-4fe0-a1a1-49790645da5d",
                      "Name": "2D Layering (Premium)",
                      "Code": "2DL-P",
                      "Type": "Standard",
                      "UnitPrice": 500000,
                      "UnitCost": 2000
                    },
                    {
                      "ID": "7e8ccca1-9690-4cd3-98a3-9b26079d90b5",
                      "Name": "2D Layering (Standard)",
                      "Code": "2DL-S",
                      "Type": "Standard",
                      "UnitPrice": 300000,
                      "UnitCost": 2000
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/Count": {
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "getVariantCount",
        "summary": "Variants Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nCount total Variant \n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Category",
            "in": "query",
            "description": "The category of the variant to be showed.\n",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2D Layering"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number that you want to display",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The maximum amount of data that you want to display on the page",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "Type",
            "in": "query",
            "description": "The type of the variant to be showed.\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Standard"
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Variant's Name\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2D Layering (Standard)"
          },
          {
            "name": "Code",
            "in": "query",
            "description": "Variant's Code\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "VAR12345"
          },
          {
            "name": "ReleasedFrom",
            "in": "query",
            "description": "Release Product Date Start",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01"
          },
          {
            "name": "ReleasedTo",
            "in": "query",
            "description": "Release Product Date To",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-12-31"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Count": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Count": "100"
                  }
                },
                "example": {
                  "Count": "100"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {}
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report": {
      "get": {
        "tags": [
          "Report"
        ],
        "operationId": "getReport",
        "summary": "Get Sales Invoice",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Transaction\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" \n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Single Outlet",
                    "required": [
                      "From",
                      "To"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name. When this property is empty will be shown all outlet"
                      },
                      "From": {
                        "type": "string",
                        "description": "From date"
                      },
                      "To": {
                        "type": "string",
                        "description": "To date"
                      },
                      "CustomerEmail": {
                        "type": "string",
                        "description": "Customer email address. Backwards compatibility with property \"Email\""
                      },
                      "CustomerMobile": {
                        "type": "string",
                        "description": "Customer mobile"
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "The Number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The number of rows returned by the API"
                      },
                      "Tag": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Filter for Channel Tagging System (ex:Offline / Whatsapp / Shopee / Tokopedia) used in omni.dealpos.app."
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "From": "2021-03-01T00:00:00",
                      "To": "2021-03-31T00:00:00",
                      "CustomerEmail": "sandbox@dealpos.com",
                      "CustomerMobile": 6281234567890,
                      "PageNumber": 1,
                      "PageSize": 100,
                      "Tag": [
                        "Shopee",
                        "TikTok"
                      ]
                    }
                  },
                  {
                    "title": "MultipleOutlet",
                    "required": [
                      "From",
                      "To"
                    ],
                    "type": "object",
                    "properties": {
                      "ListOutlet": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "ListOutlet Name. When this property is empty will be shown all outlet"
                      },
                      "From": {
                        "type": "string",
                        "description": "From date"
                      },
                      "To": {
                        "type": "string",
                        "description": "To date"
                      },
                      "CustomerEmail": {
                        "type": "string",
                        "description": "Customer email address. Backwards compatibility with property \"Email\""
                      },
                      "CustomerMobile": {
                        "type": "string",
                        "description": "Customer mobile"
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "The Number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The number of rows returned by the API"
                      },
                      "Tag": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Filter for Channel Tagging System (ex:Offline / Whatsapp / Shopee / Tokopedia) used in omni.dealpos.app."
                      }
                    },
                    "example": {
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "From": "2021-03-01T00:00:00",
                      "To": "2021-03-31T00:00:00",
                      "CustomerEmail": "sandbox@dealpos.com",
                      "CustomerMobile": 6281234567890,
                      "PageNumber": 1,
                      "PageSize": 100,
                      "Tag": [
                        "Shopee",
                        "TikTok"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet Name"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Invoice Number"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Transaction Date"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Transaction Create Time"
                          },
                          "DueDate": {
                            "type": "string",
                            "description": "Invoice DueDate"
                          },
                          "Discount1": {
                            "type": "integer",
                            "description": "discount was applied on the transaction"
                          },
                          "Discount2": {
                            "type": "integer",
                            "description": "discount was applied on the transaction"
                          },
                          "DiscountAmount": {
                            "type": "number",
                            "description": "discount amount was applied for the transaction"
                          },
                          "InvoiceID": {
                            "type": "string",
                            "description": "ID of the Invoice"
                          },
                          "Gross": {
                            "type": "number",
                            "description": "Amount before tax and discount"
                          },
                          "DiscountTotal": {
                            "type": "number",
                            "description": "Whole of total discount applied"
                          },
                          "Tag": {
                            "type": "string",
                            "description": "Channel Tagging System (ex:Offline / Whatsapp / Shopee / Tokopedia) used in omni.dealpos.app."
                          },
                          "TaxType": {
                            "type": "string",
                            "description": "Name of tax applied"
                          },
                          "TaxAmount": {
                            "type": "number",
                            "description": "Tax amount applied"
                          },
                          "Sales": {
                            "type": "number",
                            "description": "Total Sales Amount"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "Total sales + tax"
                          },
                          "Surcharge": {
                            "type": "number",
                            "description": "Invoice surcharge"
                          },
                          "ReferenceInvoiceNumber": {
                            "type": "string",
                            "description": "Sales Invoice Number"
                          },
                          "ReferenceNumber": {
                            "type": "string",
                            "description": "Invoice reference number",
                            "x-stoplight": {
                              "id": "k92dy52jxqy0q"
                            }
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "ID": {
                                "type": "string",
                                "description": "Customer's ID"
                              },
                              "Name": {
                                "type": "string",
                                "description": "Customer's Name"
                              },
                              "Email": {
                                "type": "string",
                                "description": "Customer's Email"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Customer's Mobile Phone"
                              },
                              "Phone": {
                                "type": "string",
                                "description": "Customer's Phone Number"
                              },
                              "Code": {
                                "type": "string",
                                "description": "Customer's Code"
                              },
                              "Address": {
                                "type": "string",
                                "description": "Customer address",
                                "x-stoplight": {
                                  "id": "udh1hfdro2a1b"
                                }
                              }
                            }
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Name": {
                                  "type": "string",
                                  "description": "Variant Name"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Code of the variant"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "description": "the quantity of variant has been sold"
                                },
                                "UnitQuantity": {
                                  "type": "integer",
                                  "description": "The unit quantity of the variant that has been sold"
                                },
                                "Cost": {
                                  "type": "number",
                                  "description": "the cost of the variant"
                                },
                                "Price": {
                                  "type": "number",
                                  "description": "the price of the variant that was sold"
                                },
                                "PriceOriginal": {
                                  "type": "number",
                                  "description": "Price original from master product"
                                },
                                "Discount": {
                                  "type": "integer",
                                  "description": "Original price of the item that was sold"
                                },
                                "DiscountAmount": {
                                  "type": "number",
                                  "description": "Discount amount for the transaction"
                                },
                                "Taxable": {
                                  "type": "boolean",
                                  "description": "the taxable avaiability of the variants"
                                },
                                "LoyaltyPoint": {
                                  "type": "boolean",
                                  "description": "the loyalty was used on transaction"
                                },
                                "Expense": {
                                  "type": "number",
                                  "description": "Additional Expense of the product"
                                },
                                "NetPrice": {
                                  "type": "number",
                                  "description": "Total product amount after discount"
                                },
                                "PriceTypeID": {
                                  "type": "integer",
                                  "description": "Price unique ID"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Note of the product"
                                }
                              }
                            }
                          },
                          "Payments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Date": {
                                  "type": "string",
                                  "description": "Date of the payment"
                                },
                                "Amount": {
                                  "type": "number",
                                  "description": "Total amount of payment method"
                                },
                                "Method": {
                                  "type": "string",
                                  "description": "Payment method of the invoice transaction"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Code of the payment method"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Note of the payment"
                                }
                              }
                            }
                          },
                          "OrderFulfillmentRecipient": {
                            "type": "object",
                            "properties": {
                              "ID": {
                                "type": "string",
                                "description": "Recipient ID",
                                "x-stoplight": {
                                  "id": "cxjt37zo7gqdb"
                                }
                              },
                              "Name": {
                                "type": "string",
                                "description": "Recipient name",
                                "x-stoplight": {
                                  "id": "cu2co6o05068d"
                                }
                              },
                              "Phone": {
                                "type": "string",
                                "description": "Recipient phone number",
                                "x-stoplight": {
                                  "id": "8xkwsvkry4xcs"
                                }
                              },
                              "Address": {
                                "type": "string",
                                "description": "Recipient address",
                                "x-stoplight": {
                                  "id": "9g6hsmr0pb3zo"
                                }
                              },
                              "City": {
                                "type": "string",
                                "description": "Recipient city l",
                                "x-stoplight": {
                                  "id": "0goag595eq4hq"
                                }
                              }
                            },
                            "x-stoplight": {
                              "id": "v9k8vqil4lbod"
                            }
                          }
                        }
                      }
                    },
                    "TotalRow": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "21.03.00124",
                      "Date": "2021-03-10T00:00:00",
                      "Created": "2021-03-09T13:03:12.903",
                      "DueDate": "0001-01-01T00:00:00",
                      "Discount1": 10,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "InvoiceID": "250f0917-d3be-42ef-9ac4-3be17ef7b21f",
                      "Gross": 50000,
                      "DiscountTotal": 5000,
                      "Tag": "Shopee",
                      "TaxType": "PPN 10%",
                      "TaxAmount": 4500,
                      "Sales": 45000,
                      "SalesNTax": 49500,
                      "Surcharge": 0,
                      "ReferenceInvoiceNumber": "21.03.00124",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021",
                        "ID": "fdab116e-f6ae-4499-81b5-53f554fd7f4a"
                      },
                      "Variants": [
                        {
                          "Name": "Muffin (Medium)",
                          "Code": "03152",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 10000,
                          "Price": 20000,
                          "PriceOriginal": 20000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetPrice": 20000,
                          "PriceTypeID": 0,
                          "Note": "Test Transaction"
                        },
                        {
                          "Name": "Muffin (Large)",
                          "Code": "ML3001",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 30000,
                          "Price": 30000,
                          "PriceOriginal": 20000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetPrice": 30000,
                          "PriceTypeID": 0,
                          "Note": "Test Transaction"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2021-03-10T00:00:00",
                          "Amount": 49500,
                          "Method": "Cash",
                          "Code": "2123",
                          "Note": "Test Transaction"
                        }
                      ]
                    }
                  ],
                  "TotalRow": 1
                }
              },
              "example-2": {
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "22.03.00001",
                      "Date": "2022-03-07T00:00:00",
                      "Created": "2022-03-07T10:10:20.15",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "InvoiceID": "6f4dae0c-9bf6-4691-bfb8-9e38db723705",
                      "Gross": 450000,
                      "DiscountTotal": 0,
                      "Tag": "TikTok",
                      "TaxType": "No Tax",
                      "TaxAmount": 0,
                      "Sales": 450000,
                      "SalesNTax": 450000,
                      "Surcharge": 0,
                      "Customer": null,
                      "Variants": [
                        {
                          "Name": "Faith",
                          "Code": "TS-1011",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 0,
                          "Price": 150000,
                          "PriceOriginal": 150000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetPrice": 150000,
                          "PriceTypeID": 0,
                          "Note": null
                        },
                        {
                          "Name": "Money Talk",
                          "Code": "TS-1014",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 0,
                          "Price": 150000,
                          "PriceOriginal": 150000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetPrice": 150000,
                          "PriceTypeID": 0,
                          "Note": null
                        },
                        {
                          "Name": "Goodbye",
                          "Code": "TS-1013",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 100000,
                          "Price": 150000,
                          "PriceOriginal": 150000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetPrice": 150000,
                          "PriceTypeID": 0,
                          "Note": null
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2022-03-07T00:00:00",
                          "Amount": 450000,
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ],
                      "ReferenceNumber": "Reference-000",
                      "OrderFulfillmentRecipient": {
                        "ID": "fdab116e-f6ae-4499-81b5-53f554fd7asf",
                        "Name": "Teguh Warsono",
                        "Phone": "081245654652",
                        "Address": "Duri Kosambi No. 22",
                        "City": "Jakarta"
                      }
                    },
                    {
                      "Outlet": "Outlet2",
                      "Number": "22.03.00012",
                      "Date": "2022-03-07T00:00:00",
                      "Created": "2022-03-07T09:11:58.177",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "InvoiceID": "efe5c0a7-a336-4d2c-bc5f-deec04a54af2",
                      "Gross": 150000,
                      "DiscountTotal": 0,
                      "Tag": "Shopee",
                      "TaxType": "No Tax",
                      "TaxAmount": 0,
                      "Sales": 150000,
                      "SalesNTax": 150000,
                      "Surcharge": 0,
                      "Customer": {
                        "Name": "Aan Andrian",
                        "Email": null,
                        "Mobile": "6281357464112",
                        "Code": "4333",
                        "Address": "Jl. Apan No. 2"
                      },
                      "Variants": [
                        {
                          "Name": "Bipolar Disorder",
                          "Code": "TS-1001",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 0,
                          "Price": 150000,
                          "PriceOriginal": 150000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetPrice": 150000,
                          "PriceTypeID": 0,
                          "Note": null
                        }
                      ],
                      "Payments": null,
                      "ReferenceNumber": "Reference-001",
                      "OrderFulfillmentRecipient": {
                        "ID": "fdab116e-f6ae-4499-81b5-53f554fd7asf",
                        "Name": "Teguh Warsono",
                        "Phone": "081245654652",
                        "Address": "Duri Kosambi No. 22",
                        "City": "Jakarta"
                      }
                    }
                  ],
                  "TotalRow": 2
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/SalesPerson": {
      "get": {
        "tags": [
          "Report"
        ],
        "operationId": "getSalesInvoicebySalesPerson",
        "summary": "Get Sales Invoice by Sales Person",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Invoice Transaction by Sales Person\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" \n",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-31"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet 1"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "SalesPerson": {
                        "type": "string"
                      },
                      "Transaction": {
                        "type": "integer"
                      },
                      "Quantity": {
                        "type": "integer"
                      },
                      "Sales": {
                        "type": "integer"
                      },
                      "Tax": {
                        "type": "integer"
                      },
                      "SalesNTax": {
                        "type": "integer"
                      },
                      "Cost": {
                        "type": "integer"
                      },
                      "Profit": {
                        "type": "integer"
                      }
                    }
                  },
                  "example": [
                    {
                      "SalesPerson": "James",
                      "Transaction": 1,
                      "Quantity": 1,
                      "Sales": 8000,
                      "Tax": 0,
                      "SalesNTax": 8000,
                      "Cost": 2000,
                      "Profit": 6000
                    },
                    {
                      "SalesPerson": "Ferdiansyah Rahman",
                      "Transaction": 1,
                      "Quantity": 2,
                      "Sales": 20000,
                      "Tax": 0,
                      "SalesNTax": 20000,
                      "Cost": 1000000,
                      "Profit": -980000
                    }
                  ]
                },
                "example": [
                  {
                    "SalesPerson": "James",
                    "Transaction": 1,
                    "Quantity": 1,
                    "Sales": 8000,
                    "Tax": 0,
                    "SalesNTax": 8000,
                    "Cost": 2000,
                    "Profit": 6000
                  },
                  {
                    "SalesPerson": "Ferdiansyah Rahman",
                    "Transaction": 1,
                    "Quantity": 2,
                    "Sales": 20000,
                    "Tax": 0,
                    "SalesNTax": 20000,
                    "Cost": 1000000,
                    "Profit": -980000
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/GetSalesAggregate": {
      "get": {
        "tags": [
          "Report"
        ],
        "operationId": "getSalesAggregate",
        "summary": "Get Sales Aggregate",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n<br>\nGet aggregated sales data between specific dates.\nRequired Group Role: \"**Report**\" - \"**VIEW**\"\n",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From date (ISO 8601 format)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-03-01T00:00:00"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date (ISO 8601 format)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-03-31T00:00:00"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Sales": {
                      "type": "number"
                    },
                    "Tax": {
                      "type": "number"
                    },
                    "Cost": {
                      "type": "number"
                    },
                    "Profit": {
                      "type": "number"
                    },
                    "InvoiceCount": {
                      "type": "integer"
                    },
                    "Quantity": {
                      "type": "number"
                    },
                    "Gross": {
                      "type": "number"
                    }
                  }
                },
                "example": {
                  "Sales": 817580392305.9696,
                  "Tax": 10337115.181,
                  "Cost": 134146734326.6699,
                  "Profit": 683433657979.2997,
                  "InvoiceCount": 1238,
                  "Quantity": 713339.722,
                  "Gross": 817579951765.564
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "An unexpected error occurred while processing your request.",
                  "ExceptionType": "System.Exception",
                  "StackTrace": "..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Comments": {
      "get": {
        "tags": [
          "Comment"
        ],
        "summary": "Get Customer Comment",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Customer Comment\n\nRequired Group Role: \"**Customer**\" - \"**VIEW**\" \n",
        "operationId": "get-comment",
        "parameters": [
          {
            "name": "RowCount",
            "in": "query",
            "description": "The Number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "From",
            "in": "query",
            "description": "Selected start of a date prefix range",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-03-10"
          },
          {
            "name": "To",
            "in": "query",
            "description": "Selected end of a date prefix range",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-03-27"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string"
                          },
                          "ImageURL": {
                            "type": "string"
                          },
                          "Comment": {
                            "type": "string"
                          },
                          "Customer": {
                            "type": "string"
                          },
                          "InvoiceNumber": {
                            "type": "string"
                          },
                          "Rate": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "RecordsCount": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "4cc059e7-6433-434d-b194-ef5b37d6184c",
                      "ImageURL": "https://asd.com",
                      "Comment": "Produknya bagus, harganya bersaing dari yang lain, semoga awet ya. recommended seller!",
                      "Customer": "Ferdiansyah2 Rahman",
                      "InvoiceNumber": "B1.22.06.00029",
                      "Rate": 5
                    }
                  ],
                  "RecordsCount": 1
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/OutboundLogistic": {
      "get": {
        "tags": [
          "OutboundLogistic"
        ],
        "operationId": "ListOutboundLogistic",
        "summary": "List OutboundLogistic",
        "description": ">Previous Endpoint: https://brand.dealpos.net/api/v3/CustomerDelivery. As for now, both the new & the old ones can be use.\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/CustomerDelivery/p)**\n\n<br>\nGet list of Customer Delivery\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy-mm-dd)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2020-04-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy-mm-dd)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2020-04-30"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Name of the outlet. if Outlet provided, OutletID will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID. if OutletID provided, Outlet name will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "30b10eae-8a4e-43de-8a37-4bb2b1807280"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet where the transaction is created"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      },
                      "OrderOutlet": {
                        "type": "string",
                        "description": "Outlet where the Order is created"
                      },
                      "OrderNumber": {
                        "type": "string",
                        "description": "Order Number get from Invoice"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Customer's name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Transaction date"
                      },
                      "Delivery": {
                        "type": "string",
                        "description": "Delivery status",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial"
                        ]
                      },
                      "Time": {
                        "type": "string",
                        "description": "Delivery time"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "20.04.00082",
                    "OrderOutlet": "Outlet1",
                    "OrderNumber": "JX20.04.00082",
                    "Customer": "Ferdi",
                    "Date": "2020-04-17T00:00:00",
                    "Delivery": "Sent",
                    "Time": "2020-04-17T15:01:00"
                  },
                  {
                    "Outlet": "Outlet1",
                    "Number": "20.04.00081",
                    "OrderOutlet": "Outlet1",
                    "OrderNumber": "JX20.04.00081",
                    "Customer": "Ferdi",
                    "Date": "2020-04-17T00:00:00",
                    "Delivery": "Sent",
                    "Time": "2020-04-17T14:30:00"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "OutboundLogistic"
        ],
        "operationId": "DeleteOutboundLogistic",
        "summary": "Delete OutboundLogistic",
        "description": ">Previous Endpoint: https://brand.dealpos.net/api/v3/CustomerDelivery. As for now, both the new & the old ones can be use.\n\nYou must have \"**DELETE**\" role in \"**Logistic**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Delivery Number"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "21.12.00123"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "evvu3rmrpf72k"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Delivery Number"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "21.12.00123"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    }
                  }
                },
                "example": {
                  "Message": "Customer Delivery 925a9ce8-96a0-4c38-92d5-f8b5a9599bc2 has been deleted!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is No Customer Delivery with Number 21.12.00123 - at Outlet2"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/OutboundLogistic/New": {
      "post": {
        "tags": [
          "OutboundLogistic"
        ],
        "operationId": "CreateOutboundLogisticNew",
        "summary": "Create OutboundLogistic New",
        "description": "Use this API to send an Outbound Logistic from an Invoice and set tracking number",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "Outlet",
                  "Number",
                  "Date",
                  "OrderOutlet",
                  "OrderNumber"
                ],
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "example": "Outlet1",
                    "description": "Name of the outlet that the Outbound Logistic is being sent from"
                  },
                  "Number": {
                    "type": "string",
                    "example": "JX5015988509",
                    "description": "Number for the Outbound Logistic, such as a tracking number"
                  },
                  "Date": {
                    "type": "string",
                    "format": "date",
                    "example": "2024-06-20",
                    "description": "Date of the Outbound Logistic"
                  },
                  "OrderOutlet": {
                    "type": "string",
                    "example": "Outlet1",
                    "description": "Name of the outlet where the Invoice is created"
                  },
                  "OrderNumber": {
                    "type": "string",
                    "example": "578768195128690624",
                    "description": "Invoice Number for the Outbound Logistic"
                  },
                  "DispatchFromPickListOutlet": {
                    "type": "boolean",
                    "example": false,
                    "description": "When true we will first check whether PickList is created for the Order.It will then use the Outlet that is specified in the PickList not the Outlet that is specified in the json payload"
                  },
                  "MultipleEnabledFromPickListOutlet": {
                    "type": "boolean",
                    "example": true,
                    "description": "When multiple picklist detected and MultipleEnabled set to false, OutboundLogistic is not processed"
                  },
                  "Variants": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "example": "2012",
                          "description": "Code of the product variant"
                        },
                        "Quantity": {
                          "type": "integer",
                          "example": 6,
                          "description": "Quantity of the product variant being sent in the Outbound Logistic"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Outbound Logistic successfully created",
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "format": "guid",
                      "example": "712098c6-0703-4e36-9679-c14dbeb4e3fe",
                      "description": "ID of the created Outbound Logistic"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request when Outlet not found",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "title": "Outlet Not Found",
                      "type": "object",
                      "properties": {
                        "Message": {
                          "type": "string"
                        }
                      },
                      "example": {
                        "Message": "Outlet Outlet 1 not found"
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity cause order number not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Order not Found"
                  }
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Fulfillment/NewOrder": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetFulfillmentNewOrder",
        "summary": "List of New Order Fulfillment",
        "description": "Get list of New Order Fulfillment that is not yet picked\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Fulfillment",
            "in": "query",
            "description": "Status of Fulfillment",
            "schema": {
              "pattern": "Partial / Unsent",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name that fultillment later"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Customer's name"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Invoice Created Time"
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "Total Amount of Sales and Tax"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Payment State"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Fulfillment State"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "22.08.029",
                    "Customer": "Hendry W",
                    "Created": "2022-03-31T11:31:31.783",
                    "SalesNTax": 1000000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/Fulfillment/NewOrderWithProduct": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetFulfillmentNewOrderWithProduct",
        "summary": "List of New Order Fulfillment With Product",
        "description": "Get list of New Order Fulfillment with product that is not yet picked\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Fulfillment",
            "in": "query",
            "description": "Status of Fulfillment",
            "schema": {
              "pattern": "Partial / Unsent",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name that fultillment later"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "format": "Guid",
                            "description": "Customer ID"
                          },
                          "Name": {
                            "type": "string",
                            "description": "Customer Name"
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Customer Mobile Number"
                          },
                          "Email": {
                            "type": "string",
                            "description": "Customer Email"
                          },
                          "Address": {
                            "type": "string",
                            "description": "Customer Address"
                          }
                        }
                      },
                      "Created": {
                        "type": "string",
                        "description": "Invoice Created Time"
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "Total Amount of Sales and Tax"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Payment State"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Fulfillment State"
                      },
                      "LogisticServiceName": {
                        "type": "string",
                        "description": "Logistic Service Name"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "VariantID": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "Name": {
                              "type": "string"
                            },
                            "Code": {
                              "type": "string"
                            },
                            "Quantity": {
                              "type": "integer"
                            },
                            "ThumbnailURL": {
                              "type": "string",
                              "description": "Product Variant Thumbnail URL"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "22.08.029",
                    "Customer": {
                      "ID": "abcde8f8-9e2f-88a4-988b-98bd3acccbad",
                      "Name": "Ventines",
                      "Mobile": "08123456789",
                      "Email": "ventines@gmail.com",
                      "Address": "Jl. Muara Karang Raya"
                    },
                    "Created": "2022-03-31T11:31:31.783",
                    "SalesNTax": 1000000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "LogisticServiceName": "JNE Regular",
                    "Variants": [
                      {
                        "VariantID": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab",
                        "Name": "Muffin (Medium)",
                        "Code": "MM3002",
                        "Quantity": 1,
                        "ThumbnailURL": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg"
                      }
                    ]
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/Fulfillment/NewOrderWithProduct/TotalCount": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetFulfillmentNewOrderWithProductTotalCount",
        "summary": "List of New Order Fulfillment With Product and Total Count",
        "description": "Get list of New Order Fulfillment with product that is not yet picked\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Fulfillment",
            "in": "query",
            "description": "Status of Fulfillment",
            "schema": {
              "pattern": "Partial / Unsent",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet Name that fultillment later"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Invoice Number"
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "ID": {
                                "type": "string",
                                "format": "Guid",
                                "description": "Customer ID"
                              },
                              "Name": {
                                "type": "string",
                                "description": "Customer Name"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Customer Mobile Number"
                              },
                              "Email": {
                                "type": "string",
                                "description": "Customer Email"
                              },
                              "Address": {
                                "type": "string",
                                "description": "Customer Address"
                              }
                            }
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice Created Time"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "Total Amount of Sales and Tax"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "Payment State"
                          },
                          "Fulfillment": {
                            "type": "string",
                            "description": "Fulfillment State"
                          },
                          "LogisticServiceName": {
                            "type": "string",
                            "description": "Logistic Service Name"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "VariantID": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "Name": {
                                  "type": "string"
                                },
                                "Code": {
                                  "type": "string"
                                },
                                "Quantity": {
                                  "type": "integer"
                                },
                                "ThumbnailURL": {
                                  "type": "string",
                                  "description": "Adjusted Product Variant Thumbnail URL"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total Count of New Order Fulfillment with product"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "22.08.029",
                      "Customer": {
                        "ID": "abcde8f8-9e2f-88a4-988b-98bd3acccbad",
                        "Name": "Ventines",
                        "Mobile": "08123456789",
                        "Email": "ventines@gmail.com",
                        "Address": "Jl. Muara Karang Raya"
                      },
                      "Created": "2022-03-31T11:31:31.783",
                      "SalesNTax": 1000000,
                      "Payment": "Paid",
                      "Fulfillment": "Partial",
                      "LogisticServiceName": "JNE Regular",
                      "Variants": [
                        {
                          "VariantID": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab",
                          "Name": "Muffin (Medium)",
                          "Code": "MM3002",
                          "Quantity": 1,
                          "ThumbnailURL": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg"
                        }
                      ]
                    }
                  ],
                  "TotalCount": 88
                }
              }
            }
          }
        }
      }
    },
    "/PickList/Number": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetPickListbyNumber",
        "summary": "Get PickList by Number",
        "description": "Get PickList Detail by Number \n\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Number",
            "in": "query",
            "description": "PickList Number",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "FulfillmentOutlet",
            "in": "query",
            "description": "Outlet that send the product of order created",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OrderOutlet",
            "in": "query",
            "description": "Outlet that received order from customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "PickList ID"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Picklist created time"
                      },
                      "Number": {
                        "type": "string",
                        "description": "PickList Number"
                      },
                      "OrderOutlet": {
                        "type": "string",
                        "description": "Outlet that received order from customer"
                      },
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Outlet that is assigned to send the Product"
                      },
                      "CreatorID": {
                        "type": "string",
                        "description": "User's picklist created"
                      },
                      "State": {
                        "type": "string",
                        "description": "State of Picklist (Picked /Assigned / Packed / Shipped)"
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string"
                          },
                          "Mobile": {
                            "type": "string"
                          },
                          "Email": {
                            "type": "string"
                          },
                          "Address": {
                            "type": "string"
                          }
                        },
                        "description": "Data of Customer"
                      },
                      "Variants": {
                        "type": "array",
                        "description": "Variant of picklist",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Name": {
                              "type": "string"
                            },
                            "Code": {
                              "type": "string"
                            },
                            "Qty": {
                              "type": "integer"
                            }
                          }
                        }
                      },
                      "Recipient": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string"
                          },
                          "Phone": {
                            "type": "string"
                          },
                          "City": {
                            "type": "string"
                          },
                          "Address": {
                            "type": "string"
                          }
                        },
                        "description": "Detail of Recipient"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Picklist note"
                      }
                    }
                  },
                  "example": [
                    {
                      "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Date": "2022-08-31T13:29:07.29",
                      "Number": "22.12.0001",
                      "OrderOutlet": "Outlet1",
                      "FulfillmentOutlet": "Outlet2",
                      "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                      "State": "Picked /Packed /Shipped",
                      "Customer": {
                        "Name": "Ventines",
                        "Mobile": "0811541541",
                        "Email": "ventines@gmail.com",
                        "Address": "Jl. Muara Karang Raya"
                      },
                      "Variants": [
                        {
                          "Name": "Bottle",
                          "Code": "Btl01",
                          "Qty": 1
                        }
                      ],
                      "Recipient": {
                        "Name": "Ventines",
                        "Phone": "0811541541",
                        "City": "Jakarta",
                        "Address": "Jl. Muara Karang Raya"
                      },
                      "Note": "Ready to send"
                    },
                    {
                      "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Date": "2022-08-31T13:29:07.29",
                      "Number": "22.12.0001",
                      "OrderOutlet": "Outlet1",
                      "FulfillmentOutlet": "Outlet2",
                      "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                      "State": "Picked /Packed /Shipped",
                      "Customer": {
                        "Name": "Ventines",
                        "Mobile": "0811541541",
                        "Email": "ventines@gmail.com",
                        "Address": "Jl. Muara Karang Raya"
                      },
                      "Variants": [
                        {
                          "Name": "Cap",
                          "Code": "CAP01",
                          "Qty": 1
                        }
                      ],
                      "Recipient": {
                        "Name": "Ventines",
                        "Phone": "0811541541",
                        "City": "Jakarta",
                        "Address": "Jl. Muara Karang Raya"
                      },
                      "Note": "Ready to send"
                    }
                  ]
                },
                "example": [
                  {
                    "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                    "Date": "2022-08-31T13:29:07.29",
                    "Number": "22.12.0001",
                    "OrderOutlet": "Outlet1",
                    "FulfillmentOutlet": "Outlet2",
                    "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                    "State": "Picked /Packed /Shipped",
                    "Customer": {
                      "Name": "Ventines",
                      "Mobile": "0811541541",
                      "Email": "ventines@gmail.com",
                      "Address": "Jl. Muara Karang Raya"
                    },
                    "Variants": [
                      {
                        "Name": "Bottle",
                        "Code": "Btl01",
                        "Qty": 1
                      }
                    ],
                    "Recipient": {
                      "Name": "Ventines",
                      "Phone": "0811541541",
                      "City": "Jakarta",
                      "Address": "Jl. Muara Karang Raya"
                    },
                    "Note": "Ready to send"
                  },
                  {
                    "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                    "Date": "2022-08-31T13:29:07.29",
                    "Number": "22.12.0001",
                    "OrderOutlet": "Outlet1",
                    "FulfillmentOutlet": "Outlet2",
                    "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                    "State": "Picked /Packed /Shipped",
                    "Customer": {
                      "Name": "Ventines",
                      "Mobile": "0811541541",
                      "Email": "ventines@gmail.com",
                      "Address": "Jl. Muara Karang Raya"
                    },
                    "Variants": [
                      {
                        "Name": "Cap",
                        "Code": "CAP01",
                        "Qty": 1
                      }
                    ],
                    "Recipient": {
                      "Name": "Ventines",
                      "Phone": "0811541541",
                      "City": "Jakarta",
                      "Address": "Jl. Muara Karang Raya"
                    },
                    "Note": "Ready to send"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/PickList/TotalCount": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetFulfillmentPicklistWithProductTotalCountUnique",
        "summary": "Get PickList with Product and Total Count",
        "description": "Get list of Picklist Fulfillment with product\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy/mm/dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "FulfillmentOutlet",
            "in": "query",
            "description": "Outlet that is assigned to send the Product",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OrderOutlet",
            "in": "query",
            "description": "Outlet that received order from customer",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "State",
            "in": "query",
            "description": "State of Fulfillment. If property not send, it will shown state of All fulfillment list",
            "schema": {
              "pattern": "Picked / Assigned / Packed / Shipped",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "format": "guid",
                            "description": "Fulfillment ID"
                          },
                          "FulfillmentOutlet": {
                            "type": "string",
                            "description": "Outlet that is assigned to send the Product"
                          },
                          "OrderOutlet": {
                            "type": "string",
                            "description": "Outlet that received order from customer"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Invoice Number"
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "ID": {
                                "type": "string",
                                "format": "Guid",
                                "description": "Customer ID"
                              },
                              "Name": {
                                "type": "string",
                                "description": "Customer Name"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Customer Mobile Number"
                              },
                              "Email": {
                                "type": "string",
                                "description": "Customer Email"
                              },
                              "Address": {
                                "type": "string",
                                "description": "Customer Address"
                              }
                            }
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice Created Time"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "Total Amount of Sales and Tax"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "Payment State"
                          },
                          "AssignTo": {
                            "type": "string",
                            "format": "guid",
                            "description": "User that assigned"
                          },
                          "State": {
                            "type": "string",
                            "description": "Fulfillment State"
                          },
                          "LogisticServiceName": {
                            "type": "string",
                            "description": "Logistic Service Name"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "VariantID": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "Name": {
                                  "type": "string"
                                },
                                "Code": {
                                  "type": "string"
                                },
                                "Quantity": {
                                  "type": "integer"
                                },
                                "ThumbnailURL": {
                                  "type": "string",
                                  "description": "Adjusted Product Variant Thumbnail URL"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total Count of New Order Fulfillment with product"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
                      "FulfillmentOutlet": "Outlet2",
                      "OrderOutlet": "Outlet1",
                      "Number": "22.08.029",
                      "Customer": {
                        "ID": "abcde8f8-9e2f-88a4-988b-98bd3acccbad",
                        "Name": "Ventines",
                        "Mobile": "08123456789",
                        "Email": "ventines@gmail.com",
                        "Address": "Jl. Muara Karang Raya"
                      },
                      "Created": "2022-03-31T11:31:31.783",
                      "SalesNTax": 1000000,
                      "Payment": "Paid",
                      "AssignTo": "Jennifer",
                      "State": "Assigned",
                      "LogisticServiceName": "JNE Regular",
                      "Variants": [
                        {
                          "VariantID": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab",
                          "Name": "Muffin (Medium)",
                          "Code": "MM3002",
                          "Quantity": 1,
                          "ThumbnailURL": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg"
                        }
                      ]
                    }
                  ],
                  "TotalCount": 88
                }
              }
            }
          }
        }
      }
    },
    "/PickList": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetPickList",
        "summary": "Get PickList",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/PickList/p)**\n\n<br>\nGet list of PickList\n\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy/mm/dd)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy/mm/dd)",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": " PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "FulfillmentOutlet",
            "in": "query",
            "description": "Outlet that is assigned to send the Product",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OrderOutlet",
            "in": "query",
            "description": "Outlet that received order from customer",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "State",
            "in": "query",
            "description": "State of Fulfillment. If property not send, it will shown state of All fulfillment list",
            "schema": {
              "pattern": "Picked / Assigned / Packed / Shipped",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Outlet that is assigned to send the Product"
                      },
                      "OrderOutlet": {
                        "type": "string",
                        "description": "Outlet that received order from customer"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Order Number"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Customer's name"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Pick Created Time"
                      }
                    }
                  },
                  "x-examples": {
                    "example-1": [
                      {
                        "FulfillmentOutlet": "Outlet2",
                        "OrderOutlet": "Outlet1",
                        "Number": "22.08.029",
                        "Customer": "Hendry W",
                        "Created": "2022-03-31T11:31:31.783"
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "FulfillmentOutlet": "Outlet2",
                    "OrderOutlet": "Outlet1",
                    "Number": "22.08.029",
                    "Customer": "Hendry W",
                    "Created": "2022-03-31T11:31:31.783"
                  }
                ]
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Fulfillment"
        ],
        "summary": "Create PickList",
        "description": "Create New Pick from Order Outlet\n\nRequired Group Role: \"**Fulfillment**\" - \"**CREATED**\"",
        "operationId": "post-Picklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "OrderOutlet",
                  "Variants"
                ],
                "type": "object",
                "properties": {
                  "OrderOutlet": {
                    "type": "string",
                    "description": "Outlet that received order from customer"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Order Number"
                  },
                  "AssignToID": {
                    "type": "string",
                    "format": "Guid",
                    "description": "User ID that is assigned to create Pick"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Note of Pick"
                  },
                  "Variants": {
                    "type": "array",
                    "items": {
                      "required": [
                        "Code",
                        "Fulfillment"
                      ],
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Variant Code"
                        },
                        "Fulfillment": {
                          "type": "string",
                          "description": "Outlet that is assigned to send the Product"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "OrderOutlet": "Outlet1",
                "Number": "22.08.029",
                "AssignToID": "ddbde8f8-152f-12a4-989b-98b999cccbad",
                "Note": "",
                "Variants": [
                  {
                    "Code": "CAP01",
                    "Fulfillment": "Outlet2"
                  },
                  {
                    "Code": "SHI01",
                    "Fulfillment": "Outlet4"
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ListID": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ListID": [
                    "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                    "ccd4a789-3w02-4931-a66f-f45fbwf2e17f"
                  ],
                  "Message": "2 records created"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fulfillment"
        ],
        "summary": "Delete PickList",
        "description": "Delete existing Picklist",
        "operationId": "delete-Picklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "FulfillmentOutlet",
                  "Number",
                  "OrderOutlet"
                ],
                "type": "object",
                "properties": {
                  "FulfillmentOutlet": {
                    "type": "string",
                    "description": "Outlet that is assigned to send the Product"
                  },
                  "OrderOutlet": {
                    "type": "string",
                    "description": "Outlet that received order from customer"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Order Number"
                  }
                }
              },
              "example": {
                "FulfillmentOutlet": "Outlet2",
                "OrderOutlet": "Outlet1",
                "Number": "22.08.029"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Pick Fulfillment deleted"
                }
              }
            }
          }
        }
      }
    },
    "/PickList/ID/{id}": {
      "get": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "GetPickListbyID",
        "summary": "Get PickList by ID",
        "description": "Get PickList Detail by ID\n\nRequired Group Role: \"**Fulfillment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "PickListID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "PickList ID"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Picklist created time"
                    },
                    "Number": {
                      "type": "string",
                      "description": "PickList Number"
                    },
                    "OrderOutlet": {
                      "type": "string",
                      "description": "Outlet that received order from customer"
                    },
                    "FulfillmentOutlet": {
                      "type": "string",
                      "description": "Outlet that is assigned to send the Product"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "User's picklist created"
                    },
                    "State": {
                      "type": "string",
                      "description": "State of Picklist (Picked /Assigned / Packed / Shipped)"
                    },
                    "AssignTo": {
                      "type": "string",
                      "description": "LoginID that assigned a pick"
                    },
                    "Customer": {
                      "type": "object",
                      "properties": {
                        "Name": {
                          "type": "string"
                        },
                        "Mobile": {
                          "type": "string"
                        },
                        "Email": {
                          "type": "string"
                        },
                        "Address": {
                          "type": "string"
                        }
                      },
                      "description": "Data of Customer"
                    },
                    "Variants": {
                      "type": "array",
                      "description": "Variant of picklist",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string"
                          },
                          "Code": {
                            "type": "string"
                          },
                          "Qty": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "Recipient": {
                      "type": "object",
                      "properties": {
                        "Name": {
                          "type": "string"
                        },
                        "Phone": {
                          "type": "string"
                        },
                        "City": {
                          "type": "string"
                        },
                        "Address": {
                          "type": "string"
                        }
                      },
                      "description": "Detail of Recipient"
                    },
                    "Note": {
                      "type": "string",
                      "description": "Picklist note"
                    }
                  }
                },
                "example": {
                  "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                  "Date": "2022-08-31T13:29:07.29",
                  "Number": "22.12.0001",
                  "OrderOutlet": "Outlet1",
                  "FulfillmentOutlet": "Outlet2",
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "State": "Picked /Assigned / Packed /Shipped",
                  "Customer": {
                    "Name": "Ventines",
                    "Mobile": "0811541541",
                    "Email": "ventines@gmail.com",
                    "Address": "Jl. Muara Karang Raya"
                  },
                  "Variants": [
                    {
                      "Name": "Cap",
                      "Code": "CAP01",
                      "Qty": 1
                    },
                    {
                      "Name": "Bottle",
                      "Code": "Btl01",
                      "Qty": 1
                    }
                  ],
                  "Recipient": {
                    "Name": "Ventines",
                    "Phone": "0811541541",
                    "City": "Jakarta",
                    "Address": "Jl. Muara Karang Raya"
                  },
                  "Note": "Ready to send"
                }
              }
            }
          }
        }
      }
    },
    "/PickList/Assign": {
      "put": {
        "tags": [
          "Fulfillment"
        ],
        "summary": "Assign Picklist",
        "description": "Assigned User.LoginID picklist\n\nRequired Group Role: \"**Fulfillment**\" - \"**EDIT**\"\n\n*Recommended to use Request example by PickListID cause it more faster and specific",
        "operationId": "pack-picklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "WithPicklistID",
                    "type": "array",
                    "items": {
                      "required": [
                        "PickListID",
                        "AssignTo"
                      ],
                      "type": "object",
                      "properties": {
                        "PickListID": {
                          "type": "string",
                          "description": "PickList ID"
                        },
                        "AssignTo": {
                          "type": "string",
                          "description": "Name of User.LoginID that assigned the picklist (if property empty, it will be assigned to active UserID)"
                        }
                      }
                    },
                    "example": [
                      {
                        "PickListID": "2a346a70-d7c5-4e4b-947c-300f516b1560",
                        "AssignTo": "Nayeon"
                      },
                      {
                        "PickListID": "d0d8dc77-2b28-49a9-b78a-de102a3081b7",
                        "AssignTo": "Jihyo"
                      }
                    ]
                  },
                  {
                    "title": "WithPicklistNumber",
                    "type": "array",
                    "items": {
                      "required": [
                        "FulfillmentOutlet",
                        "Number",
                        "OrderOutlet"
                      ],
                      "type": "object",
                      "properties": {
                        "FulfillmentOutlet": {
                          "type": "string",
                          "description": "Outlet that is assigned to send the Product"
                        },
                        "OrderOutlet": {
                          "type": "string",
                          "description": "Outlet that received order from customer"
                        },
                        "Number": {
                          "type": "string",
                          "description": "Number of PickList Created"
                        },
                        "AssignTo": {
                          "type": "string",
                          "description": "Name of User.LoginID that assigned the picklist (if property empty, it will be assigned to active UserID)"
                        }
                      }
                    },
                    "example": [
                      {
                        "FulfillmentOutlet": "Outlet2",
                        "OrderOutlet": "Outlet1",
                        "Number": "22.08.029",
                        "AssignTo": "Nayeon"
                      },
                      {
                        "FulfillmentOutlet": "Outlet2",
                        "OrderOutlet": "Outlet1",
                        "Number": "22.08.030",
                        "AssignTo": "Jihyo"
                      }
                    ]
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "Message"
                  ],
                  "type": "object",
                  "properties": {
                    "Message": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "description": ""
                },
                "example": {
                  "Message": "2 data successfully updated from pick to assigned"
                }
              }
            }
          }
        },
        "x-internal": false,
        "x-codegen-request-body-name": "body"
      }
    },
    "/PickList/Pack": {
      "put": {
        "tags": [
          "Fulfillment"
        ],
        "summary": "Pack PickList",
        "description": "Set Assigned to Pack or Pick to Pack PickList\n\nRequired Group Role: \"**Fulfillment**\" - \"**CREATED**\"",
        "operationId": "pack-picklist-unique",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "required": [
                    "FulfillmentOutlet",
                    "Number",
                    "OrderOutlet"
                  ],
                  "type": "object",
                  "properties": {
                    "FulfillmentOutlet": {
                      "type": "string",
                      "description": "Outlet that is assigned to send the Product"
                    },
                    "OrderOutlet": {
                      "type": "string",
                      "description": "Outlet that received order from customer"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of Order Created"
                    }
                  }
                }
              },
              "example": [
                {
                  "FulfillmentOutlet": "Outlet2",
                  "OrderOutlet": "Outlet1",
                  "Number": "22.08.029"
                },
                {
                  "FulfillmentOutlet": "Outlet1",
                  "OrderOutlet": "Outlet1",
                  "Number": "22.08.029"
                }
              ]
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "Message"
                  ],
                  "type": "object",
                  "properties": {
                    "Message": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "description": ""
                },
                "example": {
                  "Message": "3 data successfully updated from pick to pack"
                }
              }
            }
          }
        }
      }
    },
    "/PickList/Ship": {
      "put": {
        "tags": [
          "Fulfillment"
        ],
        "operationId": "shipPickListUnique",
        "summary": "Ship PickList",
        "description": "Set Pack to Ship PickList\n\nRequired Group Role: \"**Fulfillment**\" - \"**CREATED**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "required": [
                    "FulfillmentOutlet",
                    "Number",
                    "OrderOutlet"
                  ],
                  "type": "object",
                  "properties": {
                    "FulfillmentOutlet": {
                      "type": "string",
                      "description": "Outlet that is assigned to send the Product"
                    },
                    "OrderOutlet": {
                      "type": "string",
                      "description": "Outlet that received order from customer"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of Order Created"
                    }
                  }
                }
              },
              "example": [
                {
                  "FulfillmentOutlet": "Outlet2",
                  "OrderOutlet": "Outlet1",
                  "Number": "22.08.029"
                },
                {
                  "FulfillmentOutlet": "Outlet1",
                  "OrderOutlet": "Outlet1",
                  "Number": "22.08.029"
                }
              ]
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "Message"
                  ],
                  "type": "object",
                  "properties": {
                    "Message": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "description": ""
                },
                "example": {
                  "Message": "3 data successfully updated from pick to pack"
                }
              }
            }
          }
        }
      }
    },
    "/Invoice": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "operationId": "CreateInvoice",
        "summary": "Create an Invoice",
        "description": "Create an Invoice\n\nYou must have \"**Create**\" role in \"**Sell**\" Module",
        "parameters": [
          {
            "name": "UpdateCustomer",
            "in": "header",
            "description": "Allow to update Customer Address when value is \"true\".",
            "allowEmptyValue": true,
            "schema": {
              "type": "string",
              "format": "boolean",
              "default": "false"
            }
          },
          {
            "name": "WriteOff",
            "in": "header",
            "description": "Allow to WriteOff remaining of total amount payment when value is \"true\"",
            "allowEmptyValue": true,
            "schema": {
              "type": "string",
              "format": "boolean",
              "default": "false"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Variant Code",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "AwaitingCollection",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\"."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for Intenal use"
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "PriceOriginal": {
                              "type": "number",
                              "description": "Original Unit Price (optional). If PriceOriginal larger than Price, the price will be treated as discount."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": "887799",
                      "Fulfillment": "Sent",
                      "LogisticServiceCode": "JNE-R",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": "200535",
                          "Quantity": 20,
                          "Price": 50000,
                          "OriginalPrice": 55000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "OriginalPrice": 60000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Complete payment"
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Variant ID",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "VariantID",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "VariantID": {
                              "type": "string",
                              "description": "Variant.ID (GUID format). When this is supplied, Code property is not required."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Sent",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "VariantID": "abcddf38-6739-4083-ac7b-4c665b6ba88f",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "OutletID",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Outlet.ID (32 character GUID). Not required when Outlet.Name is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Sent",
                      "LogisticServiceCode": "JNE-R",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Complete payment"
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Fulfillment",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Where fulfillment is done from a different Outlet. When this property is null or not specified, it will get data from property \"Outlet\"."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Sent",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "FulfillmentOutlet": "Outlet2",
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Reference Invoice Number",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "ReferenceOutlet": {
                        "type": "string",
                        "description": "Outlet of Invoice Return created (optional)."
                      },
                      "ReferenceInvoiceNumber": {
                        "type": "string",
                        "description": "Another Invoice associated with this Invoice. Example: SalesReturn scenario, null when it is a normal Sales transaction."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Sent",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "ReferenceOutlet": "Outlet1",
                      "ReferenceInvoiceNumber": "20.05.00002",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Reference Invoice ID",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "ReferenceInvoiceID": {
                        "type": "string",
                        "description": "ID of Invoice that wants to return (optional)."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Sent",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "ReferenceInvoiceID": "0db3e0cd-5615-4d4b-8122-fd8790101e71",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Serialized Variant (New)",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "type": "object"
                              }
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Register": "Outlet1",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "FulFillment": "Sent",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 2,
                          "Price": 50000,
                          "Discount": 0,
                          "Serial": [
                            {
                              "Number": "S001",
                              "Quantity": 1
                            },
                            {
                              "Number": "S002",
                              "Quantity": 1
                            }
                          ],
                          "Note": "Good Quality"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Complete payment"
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Recipient",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "DueDate": {
                        "type": "string",
                        "format": "date",
                        "description": "Due date of invoice period (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      },
                      "Recipient": {
                        "type": "object",
                        "description": "Input when choosing later fulfillment.",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Recipient Name."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Recipient address."
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Recipient phone number."
                          },
                          "City": {
                            "type": "string",
                            "description": "Recipient city location."
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "DueDate": "2020-06-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Unsent",
                      "LogisticServiceCode": "JNE-R",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Complete payment"
                        }
                      ],
                      "Recipient": {
                        "Name": "Ëzzan",
                        "Address": "Pejaten No. 21",
                        "Phone": 8154655365,
                        "City": "Jakarta"
                      }
                    }
                  },
                  {
                    "title": "With RegisterID + TagID + Payment MethodID",
                    "required": [
                      "OutletID",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Outlet ID. Not required when Outlet.Name is provided."
                      },
                      "RegisterID": {
                        "type": "string",
                        "description": "Register ID. Not required when Register.Name is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "DueDate": {
                        "type": "string",
                        "format": "date",
                        "description": "Due date of invoice period (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "TagID": {
                        "type": "string",
                        "description": "Tag ID. Not required when Tag.Name is provided. Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app.\n"
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Code",
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "MethodID": {
                              "type": "string",
                              "description": "Guid Payment Method ID."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            }
                          }
                        }
                      },
                      "Recipient": {
                        "type": "object",
                        "description": "Input when choosing later fulfillment.",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Recipient Name."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Recipient address."
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Recipient phone number."
                          },
                          "City": {
                            "type": "string",
                            "description": "Recipient city location."
                          }
                        }
                      }
                    },
                    "example": {
                      "OutletID": "123e4567-e89b-12d3-a456-426614174000",
                      "RegisterID": "123e4567-e89b-12d3-a456-426614174001",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "DueDate": "2020-06-27",
                      "SalesPerson": "Sales 1",
                      "TagID": "123e4567-e89b-12d3-a456-426614174002",
                      "TaxType": "No Tax",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Coupon": 887799,
                      "Fulfillment": "Unsent",
                      "LogisticServiceCode": "JNE-R",
                      "Note": "Invoice Note",
                      "Deposit": 50000,
                      "OrderNote": "Download omnichannel",
                      "PointUsed": 5,
                      "ReferenceNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Mobile": 81514515156,
                        "Code": "HW021",
                        "Address": "Muara Karang no.88"
                      },
                      "Variants": [
                        {
                          "Code": 200535,
                          "Quantity": 20,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": 10,
                          "Price": 50000,
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": 145000,
                          "MethodID": "123e4567-e89b-12d3-a456-4266141740008",
                          "Code": "C001",
                          "Note": "Complete payment"
                        }
                      ],
                      "Recipient": {
                        "Name": "Ëzzan",
                        "Address": "Pejaten No. 21",
                        "Phone": 8154655365,
                        "City": "Jakarta"
                      }
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Invoice ID that has been made"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Invoice number that has been made"
                    }
                  }
                },
                "example": {
                  "ID": "bc85c04d-8e6d-4592-bc8d-85f3d854b156",
                  "Number": "18.10.00009"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is already an invoice / a sales order with number 20.05.00001 in outlet Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Invoice"
        ],
        "operationId": "UpdateInvoice",
        "summary": "Update an Invoice",
        "description": "Update an Invoices based on Number\n\nYou must have \"**EDIT**\" role in \"**Orders**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet.Name. Not required when Outlet.ID is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "DueDate": {
                        "type": "string",
                        "format": "date",
                        "description": "Due date of invoice period (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Sales": {
                        "type": "number",
                        "description": "Total sales."
                      },
                      "Surcharge": {
                        "type": "number",
                        "description": "Surcharge amount."
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "Total amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Where fulfillment is done from a different Outlet. When this property is null or not specified, it will get data from property \"Outlet\"."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "PriceOriginal": {
                              "type": "number",
                              "description": "Original Unit Price per item. If value is less than Price, it does not take effect."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            },
                            "VariantID": {
                              "type": "string",
                              "description": "Variant.ID (GUID format). When this is supplied, Code property is not required."
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "type": "object"
                              }
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            },
                            "ReferenceNumber": {
                              "type": "string",
                              "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                            }
                          }
                        }
                      },
                      "Recipient": {
                        "type": "object",
                        "description": "Input when choosing later fulfillment.",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Recipient Name."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Recipient address."
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Recipient phone number."
                          },
                          "City": {
                            "type": "string",
                            "description": "Recipient city location."
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Fulfillment": "Sent",
                      "PurchaseOrderNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021"
                      },
                      "Variants": [
                        {
                          "Code": "200535",
                          "Quantity": "10",
                          "Price": "50000",
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": "10",
                          "Price": "50000",
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": "100000",
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "OutletID",
                      "Number",
                      "Date",
                      "Tag",
                      "TaxType"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Outlet.ID (32 character GUID). Not required when Outlet.Name is provided."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date of customer invoice created (YYYY-MM-DD)."
                      },
                      "DueDate": {
                        "type": "string",
                        "format": "date",
                        "description": "Due date of invoice period (YYYY-MM-DD)."
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name."
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards compatibility with property request \"SalesType\"."
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type."
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name."
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage."
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage."
                      },
                      "DiscountAmount": {
                        "type": "number",
                        "description": "Discount amount."
                      },
                      "Sales": {
                        "type": "number",
                        "description": "Total sales."
                      },
                      "Surcharge": {
                        "type": "number",
                        "description": "Surcharge amount."
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "Total amount."
                      },
                      "Coupon": {
                        "type": "string",
                        "description": "Promotion Coupon Code. Balance will be deducted. Discount must exist in request PAYLOAD according to the discount value."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "description": "Delivery Status. Backwards compatibility with property \"Delivery\". Default: Sent, Unsent."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option."
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice note."
                      },
                      "PointUsed": {
                        "type": "integer",
                        "description": "The number of points to redeem (when redeemed points is > 0, DiscountAmount will be auto calculated by the system based on RedeemPointValue configuration)."
                      },
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Where fulfillment is done from a different Outlet. When this property is null or not specified, it will get data from property \"Outlet\"."
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer."
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer."
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer."
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Address of Customer."
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "Quantity",
                            "Price"
                          ],
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code (Please fill Variant Code if VariantID is empty)."
                            },
                            "Quantity": {
                              "type": "number",
                              "description": "Quantity of item that the customer bought."
                            },
                            "Price": {
                              "type": "number",
                              "description": "Unit Price per item."
                            },
                            "PriceOriginal": {
                              "type": "number",
                              "description": "Original Unit Price per item. If value is less than Price, it does not take effect."
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount percentage."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item."
                            },
                            "VariantID": {
                              "type": "string",
                              "description": "Variant.ID (GUID format). When this is supplied, Code property is not required."
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "type": "object"
                              }
                            }
                          }
                        }
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Amount": {
                              "type": "number",
                              "description": "Amount to be paid."
                            },
                            "Method": {
                              "type": "string",
                              "description": "Method of payment."
                            },
                            "Code": {
                              "type": "string",
                              "description": "Payment Code."
                            },
                            "Note": {
                              "type": "string",
                              "description": "Payment Note."
                            },
                            "ReferenceNumber": {
                              "type": "string",
                              "description": "Number associated with a specific invoice issued to a customer from the marketplace channel. Backwards compatibility with property PurchaseOrderNumber."
                            }
                          }
                        }
                      },
                      "Recipient": {
                        "type": "object",
                        "description": "Input when choosing later fulfillment.",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Recipient Name."
                          },
                          "Address": {
                            "type": "string",
                            "description": "Recipient address."
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Recipient phone number."
                          },
                          "City": {
                            "type": "string",
                            "description": "Recipient city location."
                          }
                        }
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "20.05.00001",
                      "Date": "2020-05-27",
                      "SalesPerson": "Sales 1",
                      "Tag": "Tokopedia",
                      "TaxType": "No Tax",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "Fulfillment": "Sent",
                      "PurchaseOrderNumber": "TKP001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021"
                      },
                      "Variants": [
                        {
                          "Code": "200535",
                          "Quantity": "10",
                          "Price": "50000",
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": "10",
                          "Price": "50000",
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ],
                      "Payments": [
                        {
                          "Amount": "100000",
                          "Method": "Cash",
                          "Code": null,
                          "Note": null
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Invoice ID that has been edited"
                    }
                  },
                  "description": "Invoice ID"
                },
                "example": {
                  "ID": "e9e1edbd-3e37-4845-b243-e680fbd4b30c"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice 20.05.00001 not found in Outlet Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Invoice"
        ],
        "operationId": "DeleteInvoice",
        "summary": "Delete an Invoice",
        "description": "Delete an Invoice based on Number\n\nYou must have \"**DELETE**\" role in \"**Orders**\" Module",
        "requestBody": {
          "description": "Request can be send with payload Outlet+Number / OutletID + Number /InvoiceID only",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Outlet",
                      "Number"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number. this is primary key for the object"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "LM3002"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "OutletID",
                      "Number"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "poj237j9nn1h8"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number. this is primary key for the object"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "LM3002"
                    }
                  },
                  {
                    "title": "With Invoice ID",
                    "required": [
                      "InvoiceID"
                    ],
                    "type": "object",
                    "properties": {
                      "InvoiceID": {
                        "type": "string",
                        "description": "ID of Invoice",
                        "x-stoplight": {
                          "id": "cs3s7u4da735d"
                        }
                      }
                    },
                    "example": {
                      "InvoiceID": "8846708-83883-48b5-9b8a-848c378b5af8"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "Invoice has been deleted"
                },
                "example": "Invoice has been delete!{}"
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/MultipleOutlet": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetInvoiceListMultipleOutlet",
        "summary": "List Invoice Multiple Outlet",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet Invoice List by Multiple Outlet\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Email",
                      "Mobile",
                      "PageNumber",
                      "PageSize",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed\n"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "From": {
                        "type": "string",
                        "description": "From date list Invoice list will be shown"
                      },
                      "To": {
                        "type": "string",
                        "description": "To date list Invoice list will be shown"
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet name. When Outlet is not specified, it will return all outlet that the user has access to.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system.(ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "Payment status / progress of the invoice\n",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Delivery status / progres of the invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial",
                          "Returned"
                        ]
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email address of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "Phone or mobile phone number of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Status": {
                        "type": "string",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice Note",
                        "x-stoplight": {
                          "id": "wx102ua64we6g"
                        }
                      },
                      "ReferenceNumberType": {
                        "type": "string",
                        "enum": [
                          "HasValue",
                          "NoValue",
                          "All"
                        ],
                        "default": "All",
                        "description": "Filter by invoice reference number. Null means no reference\nnumber, Not Null means has reference number, All means all\ninvoices regardless of reference number.\n"
                      }
                    },
                    "example": {
                      "PageNumber": 1,
                      "PageSize": 20,
                      "From": "2024-08-27",
                      "To": "2024-08-28",
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "PaymentState": "Paid",
                      "Fulfillment": "Sent",
                      "Email": "johndoe@email.com",
                      "Mobile": "08112345",
                      "Status": "Active",
                      "Note": "Invoice Note",
                      "ReferenceNumberType": "All"
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "Email",
                      "Mobile",
                      "PageNumber",
                      "PageSize",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed\n"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "From": {
                        "type": "string",
                        "description": "From date list Invoice list will be shown"
                      },
                      "To": {
                        "type": "string",
                        "description": "To date list Invoice list will be shown"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List Outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "kv0na2k8qz0iu"
                          }
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system.(ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "Payment status / progress of the invoice\n",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Delivery status / progres of the invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ]
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email address of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "Phone or mobile phone number of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Status": {
                        "type": "string",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice Note"
                      },
                      "ReferenceNumberType": {
                        "type": "string",
                        "enum": [
                          "HasValue",
                          "NoValue",
                          "All"
                        ],
                        "default": "All",
                        "description": "Filter by invoice reference number. Null means no reference\nnumber, Not Null means has reference number, All means all\ninvoices regardless of reference number.\n"
                      }
                    },
                    "example": {
                      "PageNumber": 1,
                      "PageSize": 20,
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "PaymentState": "Paid",
                      "From": "2024-08-27",
                      "To": "2024-08-28",
                      "Fulfillment": "Sent",
                      "Email": "johndoe@email.com",
                      "Mobile": "08112345",
                      "Status": "Active",
                      "Note": "Invoice Note",
                      "ReferenceNumberType": "All"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Invoice ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of Invoice No"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "customer name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "sell date"
                      },
                      "Due": {
                        "type": "string",
                        "description": "invoice due date "
                      },
                      "Amount": {
                        "type": "number",
                        "description": "invoice transaction total amount\n"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "delivery state of the invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status of the sales invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial"
                        ]
                      },
                      "Created": {
                        "type": "string",
                        "description": "sell date created by system"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesOrderType\""
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number related to this Order ex: logistic tracking number or PurchaseOrder number"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "3c76f9b5-d1b8-4159-85a0-0630ac0caa47",
                    "Outlet": "Outlet1",
                    "Number": "20.08.00009",
                    "Customer": "John",
                    "Date": "2020-08-17T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 120000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2020-08-28T11:00:20.34",
                    "Tag": "Tokopedia",
                    "ReferenceNumber": "TKPD-001"
                  },
                  {
                    "ID": "3076b3af-1773-4bf9-9073-279be7b76327",
                    "Outlet": "Outlet2",
                    "Number": "20.09.00002",
                    "Customer": "John",
                    "Date": "2020-09-16T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 150000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2020-09-28T11:00:20.34",
                    "Tag": "Shopee",
                    "ReferenceNumber": "SHPD-002"
                  }
                ]
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "You are not allowed to access Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace of the system"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 466\r\n   at POS.WEB.Controllers.v3.InvoiceController.MultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 497"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/MultipleOutlet/WithVariant": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetInvoiceListMultipleOutletWithVariants",
        "summary": "List Invoice Multiple Outlet With Variant",
        "description": "Get Invoice List by Multiple Outlet With Variant\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Email",
                      "Mobile",
                      "PageNumber",
                      "PageSize",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed\n"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet name. When Outlet is not specified, it will return all outlet that the user has access to.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system.(ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "Payment status / progress of the invoice\n",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Delivery status / progres of the invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ]
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email address of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "Phone or mobile phone number of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Status": {
                        "type": "string",
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice Note"
                      },
                      "ReferenceNumberType": {
                        "type": "string",
                        "enum": [
                          "HasValue",
                          "NoValue",
                          "All"
                        ],
                        "default": "All",
                        "description": "Filter by invoice reference number. Null means no reference\nnumber, Not Null means has reference number, All means all\ninvoices regardless of reference number.\n",
                        "x-stoplight": {
                          "id": "wx102ua64we6g"
                        }
                      }
                    },
                    "example": {
                      "PageNumber": 1,
                      "PageSize": 20,
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "PaymentState": "Paid",
                      "Fulfillment": "Sent",
                      "Email": "johndoe@email.com",
                      "Mobile": "08112345",
                      "Status": "Active",
                      "Note": "Invoice Note",
                      "ReferenceNumberType": "All"
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "Email",
                      "Mobile",
                      "PageNumber",
                      "PageSize",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed\n"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List Outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "kv0na2k8qz0iu"
                          }
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system.(ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "Payment status / progress of the invoice\n",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Delivery status / progres of the invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ]
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email address of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "Phone or mobile phone number of customer",
                        "x-stoplight": {
                          "id": "jcnlvdltd7cqw"
                        }
                      },
                      "Status": {
                        "type": "string",
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      },
                      "Note": {
                        "type": "string",
                        "description": "Invoice Note",
                        "x-stoplight": {
                          "id": "wx102ua64we6g"
                        }
                      },
                      "ReferenceNumberType": {
                        "type": "string",
                        "enum": [
                          "HasValue",
                          "NoValue",
                          "All"
                        ],
                        "default": "All",
                        "description": "Filter by invoice reference number. Null means no reference\nnumber, Not Null means has reference number, All means all\ninvoices regardless of reference number.\n"
                      }
                    },
                    "example": {
                      "PageNumber": 1,
                      "PageSize": 20,
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "PaymentState": "Paid",
                      "Fulfillment": "Sent",
                      "Email": "johndoe@email.com",
                      "Mobile": "08112345",
                      "IsVoided": 0,
                      "Note": "Invoice Note",
                      "ReferenceNumberType": "All"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Invoice ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of Invoice No"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "customer name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "sell date"
                      },
                      "Due": {
                        "type": "string",
                        "description": "invoice due date "
                      },
                      "Amount": {
                        "type": "number",
                        "description": "invoice transaction total amount\n"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "delivery state of the invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status of the sales invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial",
                          "Returned"
                        ]
                      },
                      "Created": {
                        "type": "string",
                        "description": "sell date created by system"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesOrderType\""
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "VariantID": {
                              "type": "string",
                              "description": "Product Variant ID"
                            },
                            "Name": {
                              "type": "string",
                              "description": "Product Variant Name"
                            },
                            "Code": {
                              "type": "string",
                              "description": "Product Variant Code"
                            },
                            "Quantity": {
                              "type": "integer",
                              "description": "Quantity of the product variant"
                            },
                            "UnitQuantity": {
                              "type": "integer",
                              "description": "Unit Quantity Messurement of the product variant"
                            },
                            "Cost": {
                              "type": "integer",
                              "description": "Unit Cost of the product variant"
                            },
                            "Price": {
                              "type": "integer",
                              "description": "Selling Price of the product variant"
                            },
                            "PriceOriginal": {
                              "type": "integer",
                              "description": "Original Price (before discounted) of the product variant"
                            },
                            "Discount": {
                              "type": "integer",
                              "description": "Discount Percentage (%) of the product variant"
                            },
                            "DiscountAmount": {
                              "type": "integer",
                              "description": "Discount Amount of the product variant"
                            },
                            "Taxable": {
                              "type": "boolean",
                              "description": "Taxable state/status of the invoice transaction"
                            },
                            "LoyaltyPoint": {
                              "type": "boolean",
                              "description": "Loyalty state/status of the invoice transaction"
                            },
                            "Expense": {
                              "type": "integer",
                              "description": "Additional Expense of the product variant"
                            },
                            "Sales": {
                              "type": "integer",
                              "description": "Net Sales for the Product (after deducted by Discount - DiscountAmount - TaxInclude)",
                              "x-stoplight": {
                                "id": "z512zkumpn6x3"
                              }
                            },
                            "Tax": {
                              "type": "integer",
                              "description": "Tax applied for the product depending on chosen TaxType (Rate + Calculation)",
                              "x-stoplight": {
                                "id": "nixjrsddw2r6l"
                              }
                            },
                            "Commission": {
                              "type": "integer",
                              "description": "Sales commision of the invoice transaction"
                            },
                            "SalesName": {
                              "type": "string",
                              "description": "Sales Person Name of the transaction"
                            },
                            "PriceTypeID": {
                              "type": "integer",
                              "description": "Sales price type of the transaction"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Product Variant Note of the invoice transaction"
                            },
                            "ThumbnailURL": {
                              "type": "string",
                              "description": "URL of the product variant thumbnail image"
                            }
                          }
                        }
                      },
                      "LogisticService": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Name": {
                              "type": "string",
                              "description": "Name of the logistic service"
                            },
                            "Option": {
                              "type": "string",
                              "description": "Option of the logistic service"
                            },
                            "Code": {
                              "type": "string",
                              "description": "Code of the logistic service"
                            }
                          }
                        }
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number related to this Order ex: logistic tracking number or PurchaseOrder number\n  "
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "3c76f9b5-d1b8-4159-85a0-0630ac0caa47",
                    "Outlet": "Outlet1",
                    "Number": "20.08.00009",
                    "Customer": "John",
                    "Date": "2020-08-17T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 120000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2020-08-28T11:00:20.34",
                    "Tag": "Tokopedia",
                    "Variants": [
                      {
                        "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                        "Name": "Muffin (Medium)",
                        "Code": "MM3002",
                        "Quantity": 1,
                        "UnitQuantity": 1,
                        "Cost": 50000,
                        "Price": 100000,
                        "PriceOriginal": 100000,
                        "Discount": 10,
                        "DiscountAmount": 1000,
                        "Taxable": true,
                        "LoyaltyPoint": true,
                        "Expense": 10000,
                        "Sales": 89000,
                        "Tax": 0,
                        "Commission": 0,
                        "SalesName": "Jane",
                        "PriceTypeID": 1,
                        "Note": "Item note",
                        "ThumbnailURL": "https://example.com/image1.jpg"
                      }
                    ],
                    "LogisticService": [
                      {
                        "Name": "JNE",
                        "Option": "Express",
                        "Code": "SD123"
                      }
                    ],
                    "ReferenceNumber": "TRK123456789"
                  },
                  {
                    "ID": "3076b3af-1773-4bf9-9073-279be7b76327",
                    "Outlet": "Outlet2",
                    "Number": "20.09.00002",
                    "Customer": "John",
                    "Date": "2020-09-16T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 150000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2020-09-28T11:00:20.34",
                    "Tag": "Shopee",
                    "Variants": [
                      {
                        "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                        "Name": "Muffin (Medium)",
                        "Code": "MM3002",
                        "Quantity": 1,
                        "UnitQuantity": 1,
                        "Cost": 50000,
                        "Price": 100000,
                        "PriceOriginal": 100000,
                        "Discount": 10,
                        "DiscountAmount": 1000,
                        "Taxable": true,
                        "LoyaltyPoint": true,
                        "Expense": 10000,
                        "Sales": 89000,
                        "Tax": 0,
                        "Commission": 0,
                        "SalesName": "Jane",
                        "PriceTypeID": 1,
                        "Note": "Item note",
                        "ThumbnailURL": "https://example.com/image2.jpg"
                      }
                    ],
                    "LogisticService": [
                      {
                        "Name": "JNE",
                        "Option": "Express",
                        "Code": "SD456"
                      }
                    ],
                    "ReferenceNumber": "TRK987654321"
                  }
                ]
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "You are not allowed to access Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace of the system"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 466\r\n   at POS.WEB.Controllers.v3.InvoiceController.MultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 497"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/MultipleOutlet/WithTotalCount": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetInvoiceListMultipleOutletWithTotalCount",
        "summary": "List Invoice Multiple Outlet With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet Invoice List by Multiple Outlet with Total Count",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Outlet",
                      "PageNumber",
                      "PageSize"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "List of multiple outlet names",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "array",
                        "description": "List of multiple payment status",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Partial",
                          "Unsent",
                          "Returned"
                        ]
                      },
                      "Status": {
                        "type": "string",
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      }
                    },
                    "example": {
                      "From": "2020-08-01",
                      "To": "2020-09-30",
                      "PageNumber": 1,
                      "PageSize": 20,
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "PaymentState": "Paid",
                      "DeliveryState": "Sent",
                      "Status": "Active"
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "ListOutletID",
                      "PageNumber",
                      "PageSize"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List Outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "vy2x3bio3ii9i"
                          }
                        }
                      },
                      "PaymentState": {
                        "type": "array",
                        "description": "List of multiple payment status",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Partial",
                          "Unsent"
                        ]
                      },
                      "Status": {
                        "type": "string",
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      }
                    },
                    "example": {
                      "From": "2020-08-01",
                      "To": "2020-09-30",
                      "PageNumber": 1,
                      "PageSize": 20,
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "PaymentState": "Paid",
                      "DeliveryState": "Sent",
                      "Status": "Active"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Number of the invoice"
                          },
                          "Customer": {
                            "type": "string",
                            "description": "Name of the customer"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Invoice Transaction Date"
                          },
                          "Due": {
                            "type": "string",
                            "description": "Due date of the invoice transaction"
                          },
                          "Amount": {
                            "type": "number",
                            "description": "Total amount of the invoice transaction"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "payment status / progress of the invoice"
                          },
                          "Fulfillment": {
                            "type": "string",
                            "description": "delivery status / progres of the invoice",
                            "enum": [
                              "Sent",
                              "Unsent",
                              "Partial"
                            ]
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice created Transaction Date by system"
                          },
                          "Tag": {
                            "type": "string",
                            "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesOrderType\""
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00009",
                      "Customer": "Ferdi",
                      "Date": "2020-08-17T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 120000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-28T11:00:20.34",
                      "Tag": "Shopee"
                    },
                    {
                      "Outlet": "Outlet2",
                      "Number": "20.09.00002",
                      "Customer": "Ferdi",
                      "Date": "2020-09-16T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 150000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-09-28T11:00:20.34",
                      "Tag": "Tokopedia"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "The string '202w0-09-30' was not recognized as a valid DateTime. There is an unknown word starting at index '3'.",
                  "StackTrace": "   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 12\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 460\r\n   at POS.WEB.Controllers.v3.MultipleOutlet.InvoiceController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\MultipleOutlet\\InvoiceController.cs:line 47"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/Return": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "ListInvoicesReturn",
        "summary": "List Invoices Return",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Invoice/p)**\n\n<br>\nGet List of Invoices Return\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "PageNumber",
                      "PageSize"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "From Date. this is primary key for the object",
                        "default": "format : yyyy-mm-dd"
                      },
                      "To": {
                        "type": "string",
                        "description": "To Date. this is primary key for the object",
                        "default": "format: yyyy-mm-dd"
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The size of one page. Max=500"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name. (Only for access outlet Read/Write that given to the user)"
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. ",
                        "items": {
                          "type": "object"
                        }
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Payment State",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Fulfillment State",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ]
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email address of customer"
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "Phone or mobile phone number of customer"
                      }
                    },
                    "example": {
                      "From": "2018-09-07",
                      "To": "2018-10-17",
                      "PageNumber": 1,
                      "PageSize": 20,
                      "Outlet": "Outlet1",
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Email": "Hendry@dealpos.com",
                      "Mobile": "08112345"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "PageNumber",
                      "PageSize"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "From Date. this is primary key for the object",
                        "default": "format : yyyy-mm-dd"
                      },
                      "To": {
                        "type": "string",
                        "description": "To Date. this is primary key for the object",
                        "default": "format: yyyy-mm-dd"
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The size of one page. Max=500"
                      },
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "sfng1qgfcsul6"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. ",
                        "items": {
                          "type": "object"
                        }
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Payment State",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Fulfillment State",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial",
                          "Returned"
                        ]
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email address of customer"
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "Phone or mobile phone number of customer"
                      }
                    },
                    "example": {
                      "From": "2018-09-07",
                      "To": "2018-10-17",
                      "PageNumber": 1,
                      "PageSize": 20,
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Email": "Hendry@dealpos.com",
                      "Mobile": "08112345"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Invoice ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number Of invoice info"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Customer Name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Invoice Date Transaction Date"
                      },
                      "EventDate": {
                        "type": "string",
                        "description": "Due date of shipping delivery"
                      },
                      "Due": {
                        "type": "string",
                        "description": "Due date of invoice "
                      },
                      "Amount": {
                        "type": "number",
                        "description": "Total amount transaction"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Payment State of invoice",
                        "enum": [
                          "Unpaid",
                          "Partial",
                          "Paid",
                          "Exceed"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Fulfillment Status of the invoice",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ]
                      },
                      "Created": {
                        "type": "string",
                        "description": "Invoice created time"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "3de705c4-53a0-4a66-8ab1-f9737e3ad6fb",
                    "Outlet": "Outlet1",
                    "Number": "18.10.00009",
                    "Customer": "Ferdi",
                    "Date": "2018-10-17T00:00:00",
                    "EventDate": "0001-01-01T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 120000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2019-08-28T11:00:20.34"
                  },
                  {
                    "ID": "3de7eve4-53a0-tsw6-8ab1-f9737e3adweb",
                    "Outlet": "Outlet1",
                    "Number": "18.10.00002",
                    "Customer": "Ferdi",
                    "Date": "2018-10-16T00:00:00",
                    "EventDate": "0001-01-01T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 150000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2019-08-28T11:00:20.34"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "You are not allowed to access Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/WithTotalCount": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetInvoiceListWithTotalCount",
        "summary": "List Invoice With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoints**\n\n<br>\nList Invoices with Total Count\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "Selected start of a date range",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2018-09-07"
          },
          {
            "name": "To",
            "in": "query",
            "description": "Selected end of a date range",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2018-10-17"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The size of one page. Max=500",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name. If you use this parameter, you don't need to use \"OutletID\" parameter",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID. If you use this parameter, you don't need to use \"Outlet\" parameter",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "0d46700d-35a3-4fb5-9b3a-644c370b5af1"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet Name"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Invoice Number"
                          },
                          "Customer": {
                            "type": "string",
                            "description": "Customer name"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of sell"
                          },
                          "EventDate": {
                            "type": "string"
                          },
                          "Due": {
                            "type": "string",
                            "description": "Due date of the invoice payment"
                          },
                          "Amount": {
                            "type": "integer",
                            "description": "Total amount of the invoice"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "payment status / progress of the invoice"
                          },
                          "Fulfillment": {
                            "type": "string",
                            "description": "delivery status / progress of the invoice",
                            "enum": [
                              "Sent",
                              "Unsent",
                              "Partial",
                              "Returned"
                            ]
                          },
                          "Created": {
                            "type": "string",
                            "description": "Created date of sale"
                          },
                          "CreatorID": {
                            "type": "string",
                            "description": "ID of Creator that make an invoice",
                            "x-stoplight": {
                              "id": "e8zt2297xxz2b"
                            }
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00048",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-18T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 1000000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-18T11:57:54.913",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00047",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-18T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 100000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-18T11:49:31.653",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00046",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-18T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 100000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-18T11:33:22.393",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00029",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-12T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 137500,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-12T10:37:43.72",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00028",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-12T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 50000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-12T10:34:55.053",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00027",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-12T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 90000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-12T10:26:54.477",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00026",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-12T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 100000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-12T10:26:08.2",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00018",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-11T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 90000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-11T17:06:27.07",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00017",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-11T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 100000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-11T17:05:14.673",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00016",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-11T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 98000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-11T17:03:14.45",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00004",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-04T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 50000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-04T09:23:03.673",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00003",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-04T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 90000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-04T09:21:02.847",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00002",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-04T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 100000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-04T09:19:39.923",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.08.00001",
                      "Customer": "Hendryyy",
                      "Date": "2020-08-04T00:00:00",
                      "EventDate": "2020-08-18T00:00:00",
                      "Due": "0001-01-01T00:00:00",
                      "Amount": 100000,
                      "Payment": "Paid",
                      "Fulfillment": "Sent",
                      "Created": "2020-08-04T09:16:59.627",
                      "CreatorID": "9a02aaa4-eb7e-4d55-9247-780d7f2dba33"
                    }
                  ],
                  "TotalCount": 14
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name offliene"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "String '20218-10-17' was not recognized as a valid DateTime.",
                  "StackTrace": "   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)\r\n   at System.DateTime.Parse(String s)\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 25\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceList(POSContext ctx, JsonElement request, List`1 listEntityID, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 190\r\n   at POS.WEB.Controllers.v3.InvoiceController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 158"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/ListID": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetListIDInvoice",
        "summary": "Get List Invoice ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet List Invoice ID based on date range and outlet.\n\nRequired Group Role: **Orders** - **View**\n",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "required": true,
            "description": "The start date for filtering the invoice list",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-01-01"
            }
          },
          {
            "name": "To",
            "in": "query",
            "required": true,
            "description": "The end date for filtering the invoice list",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-01-31"
            }
          },
          {
            "name": "ListOutlet",
            "in": "query",
            "required": false,
            "description": "List Outlet name. When Outlet is not specified, it will return all outlet that the user has access to",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": "Outlet1,Outlet2"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "required": false,
            "description": "The number of page data to be displayed",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "required": false,
            "description": "The size of one page. Max=1000",
            "schema": {
              "type": "integer",
              "maximum": 10000,
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Show List ID Outlet",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "guid"
                  },
                  "example": [
                    "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                    "7c9e6639-7420-4059-9303-9975bc983d57"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request. Missing required parameters or invalid date format"
          }
        }
      }
    },
    "/Invoice/ListIDByKeyset": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetListIDInvoicebyKeySet",
        "summary": "Get List Invoice ID by Key Set",
        "description": "\nGet List Invoice ID based on date range and last seen invoice ID.\n\nRequired Group Role: **Orders** - **View**\n",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "required": true,
            "description": "The start date for filtering the invoice list",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-01-01"
            }
          },
          {
            "name": "To",
            "in": "query",
            "required": true,
            "description": "The end date for filtering the invoice list",
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-01-31"
            }
          },
          {
            "name": "AfterID",
            "in": "query",
            "required": false,
            "description": "Invoice ID last seen from previous request. Used for pagination.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "required": false,
            "description": "The size of one page. Max=1000",
            "schema": {
              "type": "integer",
              "maximum": 10000,
              "default": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Show List ID Outlet",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "InvoiceID": {
                        "type": "string",
                        "format": "guid",
                        "example": "98a85f64-5717-4562-b3fc-2c963f66abcd"
                      },
                      "OutletID": {
                        "type": "string",
                        "format": "guid",
                        "example": "7c9e6639-7420-4059-9303-9975bc983d57"
                      }
                    }
                  },
                  "example": [
                    {
                      "InvoiceID": "98a85f64-5717-4562-b3fc-2c963f66abcd",
                      "OutletID": "7c9e6639-7420-4059-9303-9975bc983d57"
                    },
                    {
                      "InvoiceID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "OutletID": "7c9e6639-7420-4059-9303-9975bc983d57"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request. Missing required parameters or invalid date format"
          }
        }
      }
    },
    "/Invoice/ListInvoiceByListID": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetListInvoiceByListID",
        "summary": "Get List Invoice By List ID",
        "description": "Get a list of Invoices based on a list of Invoice IDs\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "parameters": [
          {
            "name": "ListID",
            "in": "query",
            "description": "Get List Invoice from List ID of Invoice that you want to get the detail . This is primary key for the object",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "guid"
              },
              "example": [
                "019c4552-c3d4-7a89-b958-0f4dd7599b4d",
                "029c4552-c3d4-7a89-b958-0f4dd7599b4e"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  },
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Unique ID of the invoice"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of the invoice transasction"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Sell date of the invoice transaction"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Created Transaction Date by system"
                    },
                    "Tax": {
                      "type": "number",
                      "description": "Total amount of the taxes"
                    },
                    "Sales": {
                      "type": "number",
                      "description": "Total amount of the sales after subtraction"
                    },
                    "Surcharge": {
                      "type": "number",
                      "description": "Additional expense (ex: from credit card)"
                    },
                    "Total": {
                      "type": "number",
                      "description": "Total amount of the invoice transaction"
                    }
                  }
                },
                "example": [
                  {
                    "ID": "019c4552-c3d4-7a89-b958-0f4dd7599b4d",
                    "Number": "26.02.00001",
                    "Date": "2026-02-10T00:00:00",
                    "Created": "2026-02-10T09:12:57.603",
                    "Sales": 210030,
                    "Tax": 0,
                    "Surcharge": 0,
                    "Total": 210030
                  },
                  {
                    "ID": "029c4552-c3d4-7a89-b958-0f4dd7599b4e",
                    "Number": "26.02.00002",
                    "Date": "2026-02-11T00:00:00",
                    "Created": "2026-02-11T10:15:30.123",
                    "Sales": 150000,
                    "Tax": 15000,
                    "Surcharge": 5000,
                    "Total": 170000
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer": {
      "get": {
        "tags": [
          "Customer"
        ],
        "operationId": "ListCustomers",
        "summary": "List Customers",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Customer/p)**\n\n<br>\nGet List of customers\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Name",
            "in": "query",
            "description": "Name of the Customer",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Ferdiansyah Rahman"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Name of the Outlet",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "From",
            "in": "query",
            "description": "Contact Join from",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "Contact Join to",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-28"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "the name of customer has been showed"
                      },
                      "Code": {
                        "type": "string",
                        "description": "the customer code of the customer to be showed"
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "the mobile phone number of customer to be showed"
                      },
                      "Email": {
                        "type": "string",
                        "description": "the email of the customer to be showed"
                      },
                      "BirthDate": {
                        "type": "string",
                        "description": "Birthdate Customer"
                      },
                      "JoinDate": {
                        "type": "string",
                        "description": "Customer's Join Date"
                      },
                      "ID": {
                        "type": "string",
                        "description": "Unique ID of the customer"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "A WI",
                    "Code": "TIA20887",
                    "Mobile": "089621973221",
                    "Email": "secyliac@gmail.com",
                    "BirthDate": "1995-03-01T00:00:00",
                    "JoinDate": "2021-01-31T00:00:00",
                    "ID": "298bb6ce-d337-43ab-9c9f-5b289f0f5c95"
                  },
                  {
                    "Name": "a. asyura alikha",
                    "Code": "TIA9981",
                    "Mobile": "0896219732212",
                    "Email": "asyuraalikha@gmail.com",
                    "BirthDate": "1994-12-17T00:00:00",
                    "JoinDate": "2021-02-28T00:00:00",
                    "ID": "4d055ee5-6c92-4862-8c8d-d62cef19dce5"
                  },
                  {
                    "Name": "A. Dalaisa A. Beso",
                    "Code": "TIA21264",
                    "Mobile": "089621973223",
                    "Email": "ndisabeni@yahoo.com",
                    "BirthDate": "1996-06-22T00:00:00",
                    "JoinDate": "2021-03-25T00:00:00",
                    "ID": "620bf557-14ff-48ff-aeea-2ab769435830"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Customer"
        ],
        "operationId": "UpdateCustomerByEmail",
        "summary": "Update a Customer by Email",
        "description": "Update a Customer based on email\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/customer"
              },
              "example": {
                "Email": "thomy@dealpos.com",
                "Name": "Thomy Kurniawan",
                "FirstName": "Thomy",
                "LastName": "Kurniawan",
                "Birthdate": "1989-04-20",
                "Phone": "085710977713",
                "Mobile": "085710977713",
                "Address": "Jl. Muara Karang P3T No.30",
                "Gender": false,
                "Code": "Tk1010",
                "Group": "Gold",
                "ExpiredGroup": "2018-12-31",
                "LoyaltyPoint": 88,
                "Status": "Active"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer-Response"
                },
                "example": {
                  "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                  "Message": "Record updated"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "tags": [
          "Customer"
        ],
        "operationId": "CreateCustomer",
        "summary": "Create a Customer",
        "description": "Create a customer based on the name\n\nYou must have \"**CREATE**\" role in \"**Contacts**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/customer"
              },
              "example": {
                "Email": "Hendry@dealpos.com",
                "Name": "Hendry",
                "FirstName": "Hendry",
                "LastName": "Wijaya",
                "Birthdate": "1994-03-21",
                "Phone": "0215865894",
                "Mobile": "08569314515",
                "Address": "Jl. Muara Karang P3T No.30",
                "Gender": false,
                "Status": "Active",
                "ReferredBy": "3cab0335-14de-4b9e-8db7-6ba3f5bd773e",
                "Code": "HW001",
                "Group": "Gold",
                "ExpiredGroup": "2019-12-31",
                "LoyaltyPoint": 88,
                "ImageURL": "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcR5MITQo_ngwwEGEZqlw7PQLiaO21AoYmLRSkSF5Q2UwJuPgYZx",
                "SignUpOutlet": "Outlet1"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "the ID of customer was created"
                    }
                  }
                },
                "example": {
                  "ID": "2ce78ff3-a07d-4205-ba93-1a9d22172985"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Customer"
        ],
        "operationId": "DeleteCustomerByEmail",
        "summary": "Delete a Customer by Email",
        "description": "Delete a customer based on email\n\nYou must have \"**DELETE**\" role in \"**Contacts**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Email"
                ],
                "type": "object",
                "properties": {
                  "Email": {
                    "type": "string",
                    "description": "The customer email address to be deleted."
                  }
                }
              },
              "example": {
                "Email": "hendry@dealpos.com"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "the customer has been deleted"
                },
                "example": "Customer has been deleted successfully."
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n   at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__68()\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass69`1.<ExecuteStoreQueryReliably>b__67()\r\n   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n   at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()\r\n   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\r\n   at BLL.Processor.ProductCategoryPathProcessor.GetPathGuid(String path, Boolean autoCreatePath)\r\n   at InvWebApp.Controllers.WebController.CreateCategory(JObject request)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/AppSignIn": {
      "put": {
        "tags": [
          "Customer"
        ],
        "operationId": "UpdateAppLastSignInCustomerByID",
        "summary": "Update AppLastSignIn Customer by ID",
        "description": "Update Customer info by ID",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ID"
                ],
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string",
                    "format": "guid",
                    "description": "Customer ID"
                  }
                },
                "example": {
                  "ID": "5acffe34-346f-4888-afd8-0a551e556681"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "AppLastSignIn": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Last sign in from Brand Loyalty app"
                    }
                  }
                },
                "example": {
                  "AppLastSignIn": "2025-09-22T13:45:30"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "ID 5acffe34-346f-4888-afd8-0a551e556681 is not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/Detail": {
      "get": {
        "operationId": "GetCustomerDetail",
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer By",
        "description": "\nGet customer detail based on customer  ID / Code / Email / MobilePhone\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ID",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "5acffe34-346f-4888-afd8-0a551e556681",
              "description": "Customer ID"
            }
          },
          {
            "name": "Code",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "HW008",
              "description": "Customer Code"
            }
          },
          {
            "name": "Email",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email",
              "example": "Tafta@dealpos.com",
              "description": "Customer Email"
            }
          },
          {
            "name": "Mobile",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "081588818888",
              "description": "Customer Mobile Phone"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customerdetail"
                },
                "example": {
                  "ID": "5acffe34-346f-4888-afd8-0a551e556681",
                  "Name": "Tafta tata",
                  "Email": "Tafta@dealpos.com",
                  "Title": "Mr.",
                  "FirstName": "Tafta",
                  "LastName": "tata",
                  "Gender": "Male",
                  "Code": "HW008",
                  "Phone": "021-66698155",
                  "MobilePhone": "081588818888",
                  "Fax": "6325894",
                  "Address": "Jl. Lenteng Agung",
                  "City": "Jakarta",
                  "Nationality": "Indonesian",
                  "ReferredBy": "449e35af-190d-4137-aa13-9cf2cf6af57a",
                  "Identification": "3173656111",
                  "Birthday": "18 Mar 1994",
                  "JoinDate": "22 Jul 2019",
                  "Group": "Gold",
                  "ExpiredGroup": "31 Jul 2019",
                  "SignUpOutlet": "Outlet1",
                  "ImageURL": "//res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg",
                  "LoyaltyPoint": 88,
                  "Status": "Active",
                  "PINRegistered": true,
                  "AppLastSignIn": "2025-09-22T13:45:30"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment/Set": {
      "post": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "CreateAdjustment",
        "summary": "Create Adjustment by Updating Inventory",
        "description": "### Create Adjustment\nUpdate Inventory - Set available quantity to a given value\n\nYou must have \"**ADD**\" role in \"**Adjustment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module\n\nProduct with type \"**Composite**\" and \"**Non Inventory**\" cannot be adjusted.\n\nWhen config InventoryAdjustment Approval is turned on, when adjustment is created state will be StateID: 1 (In Progress) / 2 (Waiting for Approval)\n",
        "parameters": [
          {
            "name": "CreateWhenQuantityMatch",
            "in": "header",
            "description": "when true, even though the quantity submitted matches an inventory adjustment will be created (200 returned) when false no adjustment is created (202 returned)",
            "allowEmptyValue": false,
            "schema": {
              "type": "boolean",
              "enum": [
                false,
                true
              ],
              "default": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/adjustment"
              },
              "example": {
                "Outlet": "Outlet1",
                "Date": "2023/09/01",
                "Number": "2023.09.00001",
                "StateID": 1,
                "PIC": "John Doe",
                "Note": "Adjustment for damaged goods",
                "CountMethod": "rfid",
                "Variants": [
                  {
                    "Code": "907",
                    "Quantity": 2,
                    "Note": "Damaged during transport",
                    "TID": [
                      "ASDADKASKDAD021",
                      "ASDADKASKDAD022"
                    ]
                  },
                  {
                    "Code": "908",
                    "Quantity": 5,
                    "Note": "Expired products",
                    "TID": [
                      "ASDADKASKDAD023",
                      "ASDADKASKDAD024"
                    ]
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Adjustments ID has been created"
                    }
                  }
                },
                "example": {
                  "ID": "bcb2fff2-916a-4f60-9e12-36735d0790a9"
                }
              }
            }
          },
          "202": {
            "description": "When no inventory changes is detected, what is submitted == actual inventory",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ID": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Adjustment number 2020.07.0002 created, no product inventory changed!",
                    "ID": "ac614f2b-db57-4244-a082-114f5f04b9d4"
                  }
                },
                "example": {
                  "Message": "Adjustment cannot processed, no product inventory changed!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Variant with code [131125] does not exist"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "UpdateAdjustmentSet",
        "summary": "Update Adjustment with Type Count Quantity",
        "description": "### Update Adjustment with Type Count Quantity\nCount - Set available quantity to a given value and when quantity is still Draft\n\nYou must have \"**ADD**\" role in \"**Adjustment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module\n\nProduct with type \"**Composite**\" and \"**Non Inventory**\" cannot be adjusted.\n\nWhen config InventoryAdjustment Approval is turned on, when adjustment is created state will be StateID: 1 (Draft) / 2 (Pending)\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Date",
                  "Number",
                  "Outlet",
                  "Variants"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "The name of the outlet that made the adjustment"
                  },
                  "Date": {
                    "type": "string",
                    "description": "Date of adjusment.(yyyy/mm/dd)"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Number of invoice adjusment. This is primary key for the object"
                  },
                  "PIC": {
                    "type": "string",
                    "description": "The name of the PIC that made the adjustment"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Note of adjustment"
                  },
                  "Variants": {
                    "type": "array",
                    "items": {
                      "required": [
                        "Code",
                        "Quantity"
                      ],
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Code of variant"
                        },
                        "Quantity": {
                          "type": "number",
                          "description": "Quantity of variant"
                        },
                        "Price": {
                          "type": "integer",
                          "description": "Price of variant"
                        },
                        "Note": {
                          "type": "string",
                          "description": "Note of variant"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Date": "2023/09/01",
                "Number": "2023.09.00001",
                "PIC": "John Doe",
                "Note": "Adjustment for damaged goods",
                "Variants": [
                  {
                    "Code": "907",
                    "Quantity": 10
                  },
                  {
                    "Code": "908",
                    "Quantity": 5
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Adjustments ID has been created"
                    }
                  }
                },
                "example": {
                  "ID": "bcb2fff2-916a-4f60-9e12-36735d0790a9"
                }
              }
            }
          },
          "202": {
            "description": "When no inventory changes is detected, what is submitted == actual inventory",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ID": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Adjustment number 2020.07.0002 created, no product inventory changed!",
                    "ID": "ac614f2b-db57-4244-a082-114f5f04b9d4"
                  }
                },
                "example": {
                  "Message": "Adjustment cannot processed, no product inventory changed!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Variant with code [131125] does not exist"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment": {
      "post": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "CreateAdjustmentbyadjustingdifferences",
        "summary": "Create Adjustment by Adjusting Differences",
        "description": "### Create Adjustment\nAdjust Differences - Increment or Decrement Inventory by given amount\n\nYou must have \"**ADD**\" role in \"**Adjustment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/adjustment"
              },
              "example": {
                "Outlet": "Outlet1",
                "Date": "2023/09/01",
                "Number": "2023.09.00001",
                "StateID": 1,
                "PIC": "John Doe",
                "Note": "Adjustment",
                "CountMethod": "barcode",
                "Variants": [
                  {
                    "Code": "907",
                    "Quantity": 2,
                    "Note": "Additional"
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Adjustment ID has been created"
                    }
                  }
                },
                "example": {
                  "ID": "a0e9653b-dd54-47a9-9dba-fb81da33ca60"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Variant with code [131125] does not exist"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "UpdateAdjustment",
        "summary": "Update an Adjustment",
        "description": "Update an Adjustment based on the outlet and code. Only Adjustment with Type AdjustDifference that can be edit.\n\nYou must have \"**EDIT**\" role in \"**Adjustment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Date",
                  "Number",
                  "Outlet",
                  "Variants"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "The name of the outlet that made the adjustment"
                  },
                  "Date": {
                    "type": "string",
                    "description": "Date of adjusment.(yyyy/mm/dd)"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Number of invoice adjusment. This is primary key for the object"
                  },
                  "PIC": {
                    "type": "string",
                    "description": "The name of the PIC that made the adjustment"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Note of adjustment"
                  },
                  "Variants": {
                    "type": "array",
                    "items": {
                      "required": [
                        "Code",
                        "Quantity"
                      ],
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Code of variant"
                        },
                        "Quantity": {
                          "type": "string",
                          "description": "Quantity of variant"
                        },
                        "Price": {
                          "type": "integer",
                          "description": "Price of variant"
                        },
                        "Note": {
                          "type": "string",
                          "description": "Note of variant"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Date": "2023/09/01",
                  "Number": "2023.09.00001",
                  "PIC": "John Doe",
                  "Note": "Adjustment",
                  "Variants": [
                    {
                      "Code": 907,
                      "Quantity": 10,
                      "Cost": 50000,
                      "Price": 100000,
                      "Note": "Additional"
                    }
                  ]
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "the ID of the adjustment that has been updated"
                    }
                  }
                },
                "example": {
                  "ID": "a0e9653b-dd54-47a9-9dba-fb81da33ca60"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Inventory Adjustment with Type *Update Inventory* cannot be Updated, please Delete and re-Create the Adjustment!"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "DeleteAdjustment",
        "summary": "Delete an Adjustment",
        "description": "Delete an Adjustment based on Code\n\nYou must have \"**DELETE**\" role in \"**Adjustment**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "The name of the outlet that made the adjustment"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Number of adjusment invoice"
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "2023.09.00001"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "adjustment has been deleted"
                },
                "example": "adjustment has been deleted"
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "get": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "ListAdjustment",
        "summary": "List Adjustment",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Adjustment/p)**\n\n<br>\nGet List of Adjustment\n\nRequired Group Role: \"**Adjustment**\" - \"**VIEW**\"\n",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Start Page ",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Total data adjustment list will be shown",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          },
          {
            "name": "From",
            "in": "query",
            "description": "From date list adjustment list will be shown",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023/09/01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date list adjustment list will be shown",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023/09/30"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "The name of the outlet that made the adjustment",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "State",
            "in": "query",
            "description": "Status of adjustment (Draft / Pending / Accepted / Rejected)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Accepted"
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Type of adjustment (Adjust / Count). If set to empty string or not send the property, it will show all adjustment",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Adjust",
                "Count"
              ]
            },
            "example": "Adjust"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of the adjustment"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "the adjustment outlet location"
                      },
                      "Date": {
                        "type": "string",
                        "description": "the date of the adjustment (yyyy/mm/dd)"
                      },
                      "Number": {
                        "type": "string",
                        "description": "the adjustment number.  This is primary key for the object"
                      },
                      "SKUCount": {
                        "type": "number",
                        "description": "Total SKU of the inventory adjustment"
                      },
                      "QuantitySUM": {
                        "type": "number",
                        "description": "Total Quantity of the inventory adjustment"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Adjustment Type",
                        "enum": [
                          "Adjust",
                          "Count"
                        ]
                      },
                      "TotalCost": {
                        "type": "number",
                        "description": "Total Cost of the inventory adjustment"
                      },
                      "PIC": {
                        "type": "string",
                        "description": "the person in charge of the adjustment"
                      },
                      "Note": {
                        "type": "string",
                        "description": "the note of adjustment"
                      },
                      "State": {
                        "type": "string",
                        "description": "Adjustment Status",
                        "enum": [
                          "Draft",
                          "Pending",
                          "Accepted",
                          "Rejected"
                        ]
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "a0e9653b-dd54-47a9-9dba-fb81da33ca60",
                    "Outlet": "Outlet1",
                    "Date": "2018-10-30T00:00:00",
                    "Number": "2018/11/07.0001",
                    "SKUCount": 2,
                    "QuantitySUM": 18,
                    "Type": "Adjust",
                    "TotalCost": 1800000,
                    "PIC": "John Doe",
                    "Note": "Test Adjustment",
                    "State": "Accepted"
                  },
                  {
                    "ID": "1b1b1b1b-1b1b-1b1b-1b1b-1b1b1b1b1b1b",
                    "Outlet": "Outlet1",
                    "Date": "2018-10-29T00:00:00",
                    "Number": "Oct 29, 2018.973265",
                    "SKUCount": 5,
                    "QuantitySUM": 12,
                    "Type": "Count",
                    "TotalCost": 200000,
                    "PIC": "Royhan",
                    "Note": "TestAdjustment",
                    "State": "Accepted"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionCoupon": {
      "get": {
        "tags": [
          "Promotion Coupon"
        ],
        "operationId": "ListPromotionCoupon",
        "summary": "List Promotion Coupons",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/PromotionCoupon/p)**\n\n<br>\nGet List of Promotion Coupons\n\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          },
          {
            "name": "From",
            "in": "query",
            "description": "Start date of Created Promotion Coupon",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-01T00:00:00"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date of Created Promotion Coupon",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-19T00:00:00"
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Type of promotion coupon",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DiscountPercentage",
                "DiscountAmount",
                "ParkedDeletion",
                "Return",
                "FullAccess"
              ]
            },
            "example": "DiscountPercentage"
          },
          {
            "name": "UsageStatus",
            "in": "query",
            "description": "Status Coupon usage (If value null it will show only Active Coupon)",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Active",
                "Used",
                "Expired",
                "All"
              ]
            },
            "example": "Active"
          },
          {
            "name": "CustomerCode",
            "in": "query",
            "description": "The customer code that assigned to the coupon",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "DP-001"
          },
          {
            "name": "Code",
            "in": "query",
            "description": "Promotion coupon code",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Disc99"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion Coupon Code",
                        "x-stoplight": {
                          "id": "en007jk6g9x82"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "the usage limit of the promotion coupon key"
                      },
                      "Balance": {
                        "type": "integer",
                        "description": "Remaining balance of the promotion coupon key"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "the discount applied of the promotion coupon"
                      },
                      "Created": {
                        "type": "string",
                        "description": "the promotion coupon created time"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Started Date of Promotion Coupon",
                        "x-stoplight": {
                          "id": "xsgkftj0d9jr0"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "the promotion coupon expiry date"
                      },
                      "Type": {
                        "type": "string",
                        "description": "the promotion coupon discount type"
                      },
                      "MinimumSpending": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage."
                      },
                      "Description": {
                        "type": "string",
                        "description": "Description of promotion coupon",
                        "x-stoplight": {
                          "id": "0os5giwh0kq30"
                        }
                      },
                      "CustomerCode": {
                        "type": "string",
                        "description": "Code of Customer (Member Code)"
                      },
                      "ReferenceID": {
                        "type": "string",
                        "format": "guid",
                        "description": "ID of Customer Reffered By"
                      },
                      "CustomerID": {
                        "type": "string",
                        "format": "guid",
                        "description": "Customer ID of the customer assigned to this Coupon."
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Code": "Disc99",
                    "Limit": 5,
                    "Balance": 5,
                    "Discount": 99,
                    "Created": "2019-12-17T14:58:15.447",
                    "StartDate": "2019-12-01T00:00:00",
                    "ExpiryDate": "2019-12-19T00:00:00",
                    "Type": "DiscountPercentage",
                    "MinimumSpending": 100000,
                    "Description": "Discount percentage 99%",
                    "CustomerCode": "DP-001",
                    "CustomerID": "8b13ba50-14b1-486c-9ad2-207ade23c0d6"
                  },
                  {
                    "Code": "Disc100",
                    "Limit": 5,
                    "Balance": 5,
                    "Discount": 100000,
                    "Created": "2019-12-17T14:58:15.447",
                    "StartDate": "2019-12-01T00:00:00",
                    "ExpiryDate": "2019-12-19T00:00:00",
                    "Type": "DiscountAmount",
                    "MinimumSpending": 100000,
                    "Description": "Discount amount 100k",
                    "CustomerCode": "DP-001",
                    "CustomerID": "8b13ba50-14b1-486c-9ad2-207ade23c0d6"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {}
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "tags": [
          "Promotion Coupon"
        ],
        "operationId": "CreatePromotionCoupon",
        "summary": "Create a Promotion Coupon",
        "description": "Create new promotion coupon\n\nYou must have \"**CREATE**\" role in \"**Promotion**\" Module",
        "parameters": [
          {
            "name": "ReferenceIDUniqueValidation",
            "in": "header",
            "description": "Validate whether ReferenceID value is unique when included in the payload. Used by Loyalty App",
            "schema": {
              "type": "boolean",
              "default": true,
              "example": false
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Default",
                    "required": [
                      "Code",
                      "Discount",
                      "ExpiryDate",
                      "Limit",
                      "MinimumAmount",
                      "Type"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion coupon code",
                        "x-stoplight": {
                          "id": "64ynkeszenfkq"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "limit the promotion coupon can be used"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "Number of percentage or amount that given from promotion coupon (Only take effect for type Discount Percentage or Discount Amount)"
                      },
                      "MinimumAmount": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage.",
                        "x-stoplight": {
                          "id": "j60xxg6k9rvke"
                        }
                      },
                      "FullPriceItemOnly": {
                        "type": "boolean",
                        "description": "Only use if DiscountType Percentage. If set to \"true\", coupon discounts apply to regular-priced products",
                        "example": false,
                        "default": false,
                        "x-stoplight": {
                          "id": "sg9yrzq8sibax"
                        }
                      },
                      "MaximumDiscount": {
                        "type": "number",
                        "description": "Only use if DiscountType Percentage. The maximum discount amount achievable with this coupon",
                        "x-stoplight": {
                          "id": "aob7hjaih5v2a"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "expiration date of promotion coupon"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start date of promotion coupon",
                        "x-stoplight": {
                          "id": "v9w0ysmh1al9v"
                        }
                      },
                      "Description": {
                        "type": "string",
                        "description": "Promotion coupon description"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Type of promotion coupon",
                        "enum": [
                          "DiscountPercentage",
                          "DiscountAmount",
                          "Return",
                          "ParkedDeletion",
                          "FullAccess"
                        ]
                      },
                      "CustomerCode": {
                        "type": "string",
                        "description": "This Associate coupon with Code of Customer (Member Code).",
                        "x-stoplight": {
                          "id": "4lflf0wenig2m"
                        }
                      },
                      "CustomerID": {
                        "type": "string",
                        "description": "ID of the customer assigned to this Coupon. Restrict coupon usage by attaching the ID of the Customer.",
                        "x-stoplight": {
                          "id": "i5u3opyfoo762"
                        }
                      },
                      "ReferenceID": {
                        "type": "string",
                        "description": "InvoiceID (need to be Unique)",
                        "x-stoplight": {
                          "id": "80z45n8veezwn"
                        }
                      }
                    },
                    "example": {
                      "Code": "Disc99",
                      "Limit": "5\"",
                      "Discount": 99,
                      "MinimumAmount": 100000,
                      "FullPriceItemOnly": "No",
                      "MaximumDiscount": 100000,
                      "ExpiryDate": "2019-11-18",
                      "Description": "Discount percentage 99%",
                      "Type": "DiscountPercentage"
                    }
                  },
                  {
                    "title": "Create with CustomerCode",
                    "required": [
                      "Code",
                      "Discount",
                      "ExpiryDate",
                      "Limit",
                      "MinimumAmount",
                      "Type"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion coupon code",
                        "x-stoplight": {
                          "id": "64ynkeszenfkq"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "limit the promotion coupon can be used"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "Number of percentage or amount that given from promotion coupon (Only take effect for type Discount Percentage or Discount Amount)"
                      },
                      "MinimumAmount": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage.",
                        "x-stoplight": {
                          "id": "j60xxg6k9rvke"
                        }
                      },
                      "FullPriceItemOnly": {
                        "type": "boolean",
                        "description": "Only use if DiscountType Percentage. If set to \"true\", coupon discounts apply to regular-priced products",
                        "example": false,
                        "default": false,
                        "x-stoplight": {
                          "id": "sg9yrzq8sibax"
                        }
                      },
                      "MaximumDiscount": {
                        "type": "number",
                        "description": "Only use if DiscountType Percentage. The maximum discount amount achievable with this coupon",
                        "x-stoplight": {
                          "id": "aob7hjaih5v2a"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "expiration date of promotion coupon"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start date of promotion coupon",
                        "x-stoplight": {
                          "id": "v9w0ysmh1al9v"
                        }
                      },
                      "Description": {
                        "type": "string",
                        "description": "Promotion coupon description"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Type of promotion coupon",
                        "enum": [
                          "DiscountPercentage",
                          "DiscountAmount",
                          "Return",
                          "ParkedDeletion",
                          "FullAccess"
                        ]
                      },
                      "CustomerCode": {
                        "type": "string",
                        "description": "Code of Customer (Member Code)",
                        "x-stoplight": {
                          "id": "4lflf0wenig2m"
                        }
                      },
                      "CustomerID": {
                        "type": "string",
                        "description": "ID of the customer assigned to this Coupon. Restrict coupon usage by attaching the ID of the Customer.",
                        "x-stoplight": {
                          "id": "i5u3opyfoo762"
                        }
                      },
                      "ReferenceID": {
                        "type": "string",
                        "description": "InvoiceID (need to be Unique)",
                        "x-stoplight": {
                          "id": "80z45n8veezwn"
                        }
                      }
                    },
                    "example": {
                      "Code": "Disc99",
                      "Limit": 5,
                      "Discount": 99,
                      "MinimumAmount": 100000,
                      "ExpiryDate": "2019-11-18",
                      "StartDate": "2019-11-01",
                      "Description": "Discount percentage 99%",
                      "Type": "DiscountPercentage",
                      "CustomerCode": "DP-001"
                    }
                  },
                  {
                    "title": "Create with ReferenceID",
                    "required": [
                      "Code",
                      "Discount",
                      "ExpiryDate",
                      "Limit",
                      "MinimumAmount",
                      "Type"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion coupon code",
                        "x-stoplight": {
                          "id": "64ynkeszenfkq"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "limit the promotion coupon can be used"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "Number of percentage or amount that given from promotion coupon (Only take effect for type Discount Percentage or Discount Amount)"
                      },
                      "MinimumAmount": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage.",
                        "x-stoplight": {
                          "id": "j60xxg6k9rvke"
                        }
                      },
                      "FullPriceItemOnly": {
                        "type": "boolean",
                        "description": "Only use if DiscountType Percentage. If set to \"true\", coupon discounts apply to regular-priced products",
                        "example": false,
                        "default": false,
                        "x-stoplight": {
                          "id": "sg9yrzq8sibax"
                        }
                      },
                      "MaximumDiscount": {
                        "type": "number",
                        "description": "Only use if DiscountType Percentage. The maximum discount amount achievable with this coupon",
                        "x-stoplight": {
                          "id": "aob7hjaih5v2a"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "expiration date of promotion coupon"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start date of promotion coupon",
                        "x-stoplight": {
                          "id": "v9w0ysmh1al9v"
                        }
                      },
                      "Description": {
                        "type": "string",
                        "description": "Promotion coupon description"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Type of promotion coupon",
                        "enum": [
                          "DiscountPercentage",
                          "DiscountAmount",
                          "Return",
                          "ParkedDeletion",
                          "FullAccess"
                        ]
                      },
                      "CustomerCode": {
                        "type": "string",
                        "description": "Code of Customer (Member Code)",
                        "x-stoplight": {
                          "id": "4lflf0wenig2m"
                        }
                      },
                      "CustomerID": {
                        "type": "string",
                        "description": "ID of the customer assigned to this Coupon. Restrict coupon usage by attaching the ID of the Customer.",
                        "x-stoplight": {
                          "id": "i5u3opyfoo762"
                        }
                      },
                      "ReferenceID": {
                        "type": "string",
                        "description": "InvoiceID (need to be Unique)",
                        "x-stoplight": {
                          "id": "80z45n8veezwn"
                        }
                      }
                    },
                    "example": {
                      "Code": "Disc99",
                      "Limit": 5,
                      "Discount": 99,
                      "MinimumAmount": 100000,
                      "ExpiryDate": "2019-11-18",
                      "StartDate": "2019-11-01",
                      "Description": "Discount percentage 99%",
                      "Type": "DiscountPercentage",
                      "ReferenceID": "8b13ba50-14b1-486c-9ad2-207ade23c0d6"
                    }
                  },
                  {
                    "title": "Create with CustomerID",
                    "required": [
                      "Code",
                      "Discount",
                      "ExpiryDate",
                      "Limit",
                      "MinimumAmount",
                      "Type"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion coupon code",
                        "x-stoplight": {
                          "id": "64ynkeszenfkq"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "limit the promotion coupon can be used"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "Number of percentage or amount that given from promotion coupon (Only take effect for type Discount Percentage or Discount Amount)"
                      },
                      "MinimumAmount": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage.",
                        "x-stoplight": {
                          "id": "j60xxg6k9rvke"
                        }
                      },
                      "FullPriceItemOnly": {
                        "type": "boolean",
                        "description": "Only use if DiscountType Percentage. If set to \"true\", coupon discounts apply to regular-priced products",
                        "example": false,
                        "default": false,
                        "x-stoplight": {
                          "id": "sg9yrzq8sibax"
                        }
                      },
                      "MaximumDiscount": {
                        "type": "number",
                        "description": "Only use if DiscountType Percentage. The maximum discount amount achievable with this coupon",
                        "x-stoplight": {
                          "id": "aob7hjaih5v2a"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "expiration date of promotion coupon"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start date of promotion coupon",
                        "x-stoplight": {
                          "id": "v9w0ysmh1al9v"
                        }
                      },
                      "Description": {
                        "type": "string",
                        "description": "Promotion coupon description"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Type of promotion coupon",
                        "enum": [
                          "DiscountPercentage",
                          "DiscountAmount",
                          "Return",
                          "ParkedDeletion",
                          "FullAccess"
                        ]
                      },
                      "CustomerID": {
                        "type": "string",
                        "description": "ID of the Customer assigned to this Coupon. Restrict coupon usage by attaching the ID of the Customer."
                      },
                      "CustomerEmail": {
                        "type": "string",
                        "description": "Email of the Customer assigned to this Coupon. Restrict coupon usage by attaching the Email of the Customer."
                      },
                      "CustomerMobile": {
                        "type": "number",
                        "description": "Mobile number of the Customer assigned to this Coupon. Restrict coupon usage by attaching the Mobile Number of the Customer."
                      }
                    },
                    "example": {
                      "Code": "Disc99",
                      "Limit": 5,
                      "Discount": 99,
                      "MinimumAmount": 100000,
                      "ExpiryDate": "2019-11-18",
                      "StartDate": "2019-11-01",
                      "Description": "Discount percentage 99%",
                      "Type": "DiscountPercentage",
                      "CustomerID": "9956gh50-14ww-4885-9a69-207ade23c089",
                      "CustomerEmail": "hendry@dealpos.com",
                      "CustomerMobile": "08123456789"
                    }
                  },
                  {
                    "title": "Create with Requirement Type Variant",
                    "required": [
                      "Code",
                      "Discount",
                      "ExpiryDate",
                      "Limit",
                      "MinimumAmount",
                      "Type",
                      "RequirementType",
                      "ListRequirementVariants"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion coupon code",
                        "x-stoplight": {
                          "id": "64ynkeszenfkq"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "limit the promotion coupon can be used"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "Number of percentage or amount that given from promotion coupon (Only take effect for type Discount Percentage or Discount Amount)"
                      },
                      "MinimumAmount": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage.",
                        "x-stoplight": {
                          "id": "j60xxg6k9rvke"
                        }
                      },
                      "FullPriceItemOnly": {
                        "type": "boolean",
                        "description": "Only use if DiscountType Percentage. If set to \"true\", coupon discounts apply to regular-priced products",
                        "example": false,
                        "default": false,
                        "x-stoplight": {
                          "id": "sg9yrzq8sibax"
                        }
                      },
                      "MaximumDiscount": {
                        "type": "number",
                        "description": "Only use if DiscountType Percentage. The maximum discount amount achievable with this coupon",
                        "x-stoplight": {
                          "id": "aob7hjaih5v2a"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "expiration date of promotion coupon"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start date of promotion coupon",
                        "x-stoplight": {
                          "id": "v9w0ysmh1al9v"
                        }
                      },
                      "Description": {
                        "type": "string",
                        "description": "Promotion coupon description"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Type of promotion coupon",
                        "enum": [
                          "DiscountPercentage",
                          "DiscountAmount",
                          "Return",
                          "ParkedDeletion",
                          "FullAccess"
                        ]
                      },
                      "RequirementType": {
                        "type": "string",
                        "description": "Type of requirement for this coupon. If this property not set, the coupon will be available for all items.",
                        "enum": [
                          "Variant",
                          "Category"
                        ]
                      },
                      "ListRequirementVariants": {
                        "type": "array",
                        "description": "List of variants that required for this coupon",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Code of the variant"
                            }
                          }
                        }
                      },
                      "MultipleItemRequirementDiscount": {
                        "type": "integer",
                        "description": "If set to true, the coupon can be used for multiple items (0 = All, 1 = OneOf, 2 = One of First Quantity)",
                        "default": 0
                      }
                    },
                    "example": {
                      "Code": "Disc99",
                      "Limit": 5,
                      "Discount": 99,
                      "MinimumAmount": 100000,
                      "ExpiryDate": "2019-11-18",
                      "StartDate": "2019-11-01",
                      "Description": "Discount percentage 99%",
                      "Type": "DiscountPercentage",
                      "RequirementType": "Variant",
                      "MultipleItemRequirementDiscount": 0,
                      "ListRequirementVariants": [
                        {
                          "Code": "S0001"
                        },
                        {
                          "Code": "TS001"
                        }
                      ]
                    }
                  },
                  {
                    "title": "Create with Requirement Type Category",
                    "required": [
                      "Code",
                      "Discount",
                      "ExpiryDate",
                      "Limit",
                      "MinimumAmount",
                      "Type",
                      "RequirementType",
                      "ListRequirementCategories"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Promotion coupon code",
                        "x-stoplight": {
                          "id": "64ynkeszenfkq"
                        }
                      },
                      "Limit": {
                        "type": "integer",
                        "description": "limit the promotion coupon can be used"
                      },
                      "Discount": {
                        "type": "integer",
                        "description": "Number of percentage or amount that given from promotion coupon (Only take effect for type Discount Percentage or Discount Amount)"
                      },
                      "MinimumAmount": {
                        "type": "number",
                        "description": "Minimum spending amount that allow to use the coupon code. Only for Type DiscountAmount and DiscountPercentage.",
                        "x-stoplight": {
                          "id": "j60xxg6k9rvke"
                        }
                      },
                      "FullPriceItemOnly": {
                        "type": "boolean",
                        "description": "Only use if DiscountType Percentage. If set to \"true\", coupon discounts apply to regular-priced products",
                        "example": false,
                        "default": false,
                        "x-stoplight": {
                          "id": "sg9yrzq8sibax"
                        }
                      },
                      "MaximumDiscount": {
                        "type": "number",
                        "description": "Only use if DiscountType Percentage. The maximum discount amount achievable with this coupon",
                        "x-stoplight": {
                          "id": "aob7hjaih5v2a"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "expiration date of promotion coupon"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start date of promotion coupon",
                        "x-stoplight": {
                          "id": "v9w0ysmh1al9v"
                        }
                      },
                      "Description": {
                        "type": "string",
                        "description": "Promotion coupon description"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Type of promotion coupon",
                        "enum": [
                          "DiscountPercentage",
                          "DiscountAmount",
                          "Return",
                          "ParkedDeletion",
                          "FullAccess"
                        ]
                      },
                      "RequirementType": {
                        "type": "string",
                        "description": "Type of requirement for this coupon. If this property not set, the coupon will be available for all items.",
                        "enum": [
                          "Variant",
                          "Category"
                        ]
                      },
                      "MultipleItemRequirementDiscount": {
                        "type": "integer",
                        "description": "If set to true, the coupon can be used for multiple items (0 = All, 1 = OneOf, 2 = One of First Quantity)",
                        "default": 0
                      },
                      "ListRequirementCategories": {
                        "type": "array",
                        "description": "List of categories that required for this coupon",
                        "items": {
                          "type": "object",
                          "properties": {
                            "CategoryID": {
                              "type": "string",
                              "description": "ID of the category"
                            },
                            "CategoryName": {
                              "type": "string",
                              "description": "Name of the category"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Code": "Disc99",
                      "Limit": 5,
                      "Discount": 99,
                      "MinimumAmount": 100000,
                      "ExpiryDate": "2019-11-18",
                      "StartDate": "2019-11-01",
                      "Description": "Discount percentage 99%",
                      "Type": "DiscountPercentage",
                      "RequirementType": "Category",
                      "MultipleItemRequirementDiscount": 0,
                      "ListRequirementCategories": [
                        {
                          "CategoryID": "8b13ba50-14b1-486c-9ad2-207ade23c0d6",
                          "CategoryName": "Top"
                        },
                        {
                          "CategoryID": "8b13ba50-14b1-486c-9ad2-207ade23c0d7",
                          "CategoryName": "Bottom"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "the Promotion Coupon has been created"
                    }
                  }
                },
                "example": {
                  "ID": "c0472252-57ad-47dd-9aa7-f61129e88831"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "title": "Duplicate Coupon",
                      "type": "object",
                      "properties": {
                        "Message": {
                          "type": "string"
                        }
                      },
                      "example": {
                        "Message": "You have duplicate with coupon {{Coupon1}}"
                      }
                    },
                    {
                      "title": "ReferenceID already used",
                      "type": "object",
                      "properties": {
                        "Message": {
                          "type": "string"
                        }
                      },
                      "example": {
                        "Message": "ReferenceID is already been used by another Coupon"
                      }
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "Promotion Coupon"
        ],
        "operationId": "DeletePromotionCoupon",
        "summary": "Delete a Promotion Coupon",
        "description": "Delete Promotion by Code\n\nYou must have \"**DELETE**\" role in \"**Promotion**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Key of promotion coupon",
                    "x-stoplight": {
                      "id": "z6km3lk1tlwfq"
                    }
                  }
                },
                "example": {
                  "Code": "Disc99"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Coupon has been delete!"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionEvent": {
      "get": {
        "tags": [
          "Promotion Event"
        ],
        "operationId": "ListPromotionEvent",
        "summary": "List Promotion Event",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n<br>\nGet List Promotion Event\n\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Promotion Type (Amount / Quantity / Discount / Product / Tiered) If value is null , it will be show all type\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Amount"
          },
          {
            "name": "Status",
            "in": "query",
            "description": "Status of promotion event (Active / Expired). If value is null, it will show all status promotion\n",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Active"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "required": [
                      "ExpirationDate",
                      "MinimumQty",
                      "Name",
                      "Outlet",
                      "StartDate",
                      "Type"
                    ],
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "Promotion Event Name"
                      },
                      "StartDate": {
                        "type": "string",
                        "description": "Start Time of Promotion Event"
                      },
                      "ExpirationDate": {
                        "type": "string",
                        "description": "Expiration Date of Promotion Event"
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet Name assigned of promotion event  (Null means assigned to all outlet)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Type": {
                        "type": "string",
                        "description": "Promotion Event Type"
                      },
                      "MinimumQty": {
                        "type": "integer",
                        "description": "Minimum Qty of promotion event be applied"
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "Name": "New Year Sale",
                        "StartDate": "2022-12-25 00:00:00",
                        "ExpirationDate": "2022-01-01 23:59:59",
                        "Outlet": [
                          "Outlet1",
                          "Outlet2"
                        ],
                        "Type": "Amount",
                        "MinimumQty": 1
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Name": "New Year Sale",
                    "StartDate": "2022-12-25 00:00:00",
                    "ExpirationDate": "2022-01-01 23:59:59",
                    "Outlet": [
                      "Outlet1",
                      "Outlet2"
                    ],
                    "Type": "Amount",
                    "MinimumQty": 1
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionEvent/GetByVariantID": {
      "get": {
        "tags": [
          "Promotion Event"
        ],
        "operationId": "GetPromotionEventByVariantID",
        "summary": "Get Promotion Event by Variant ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n<br>\nGet Promotion Event by Variant ID\n\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "VariantID",
            "in": "query",
            "description": "Variant ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "6f96d108-1af5-45de-a593-74719a0ee8e2"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "minItems": 1,
                  "uniqueItems": true,
                  "type": "array",
                  "description": "",
                  "items": {
                    "required": [
                      "Discount",
                      "ExpirationDate",
                      "ExpirationTime",
                      "ExtraCost",
                      "Name",
                      "PromotionID",
                      "StartDate",
                      "StartTime",
                      "UnitPrice"
                    ],
                    "type": "object",
                    "properties": {
                      "Name": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "UnitPrice": {
                        "type": "number"
                      },
                      "ExtraCost": {
                        "type": "number"
                      },
                      "Discount": {
                        "type": "number"
                      },
                      "StartDate": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "ExpirationDate": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "StartTime": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "ExpirationTime": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "PromotionID": {
                        "minLength": 1,
                        "type": "string"
                      }
                    }
                  },
                  "x-examples": {
                    "example-1": [
                      {
                        "Name": "DealPOS Book Fair 2022",
                        "UnitPrice": 100000,
                        "ExtraCost": 0,
                        "Discount": 0,
                        "StartDate": "2022-04-13T00:00:00",
                        "ExpirationDate": "2022-04-21T00:00:00",
                        "StartTime": "00:00:00",
                        "ExpirationTime": "23:59:59",
                        "PromotionID": "06777bca-ad15-4806-a625-009fce7bc54a"
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Name": "DealPOS Book Fair 2022",
                    "UnitPrice": 100000,
                    "ExtraCost": 0,
                    "Discount": 0,
                    "StartDate": "2022-04-13T00:00:00",
                    "ExpirationDate": "2022-04-21T00:00:00",
                    "StartTime": "00:00:00",
                    "ExpirationTime": "23:59:59",
                    "PromotionID": "06777bca-ad15-4806-a625-009fce7bc54a"
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Requested value 'Discount' was not found.",
                  "StackTrace": "   at System.Enum.TryParseByName(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\r\n   at System.Enum.TryParseInt32Enum(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)\r\n   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)\r\n   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)\r\n   at POS.Library.Helper.Parser.ToEnum[T](String value) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\Parser.cs:line 22\r\n   at POS.WEB.Controllers.v3.PromotionCouponController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\PromotionCouponController.cs:line 175"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionEvent/GetByVariantCode": {
      "get": {
        "tags": [
          "Promotion Event"
        ],
        "operationId": "GetPromotionEventByVariantCode",
        "summary": "Get Promotion Event by Variant Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n<br>\nGet Promotion Event by Variant ID\n\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "VariantCode",
            "in": "query",
            "description": "Variant Code",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "1315L"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "minItems": 1,
                  "uniqueItems": true,
                  "type": "array",
                  "description": "",
                  "items": {
                    "required": [
                      "Discount",
                      "ExpirationDate",
                      "ExpirationTime",
                      "ExtraCost",
                      "Name",
                      "PromotionID",
                      "StartDate",
                      "StartTime",
                      "UnitPrice"
                    ],
                    "type": "object",
                    "properties": {
                      "Name": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "UnitPrice": {
                        "type": "number"
                      },
                      "ExtraCost": {
                        "type": "number"
                      },
                      "Discount": {
                        "type": "number"
                      },
                      "StartDate": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "ExpirationDate": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "StartTime": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "ExpirationTime": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "PromotionID": {
                        "minLength": 1,
                        "type": "string"
                      }
                    }
                  },
                  "x-examples": {
                    "example-1": [
                      {
                        "Name": "DealPOS Book Fair 2022",
                        "UnitPrice": 100000,
                        "ExtraCost": 0,
                        "Discount": 0,
                        "StartDate": "2022-04-13T00:00:00",
                        "ExpirationDate": "2022-04-21T00:00:00",
                        "StartTime": "00:00:00",
                        "ExpirationTime": "23:59:59",
                        "PromotionID": "06777bca-ad15-4806-a625-009fce7bc54a"
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Name": "DealPOS Book Fair 2022",
                    "UnitPrice": 100000,
                    "ExtraCost": 0,
                    "Discount": 0,
                    "StartDate": "2022-04-13T00:00:00",
                    "ExpirationDate": "2022-04-21T00:00:00",
                    "StartTime": "00:00:00",
                    "ExpirationTime": "23:59:59",
                    "PromotionID": "06777bca-ad15-4806-a625-009fce7bc54a"
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Requested value 'Discount' was not found.",
                  "StackTrace": "   at System.Enum.TryParseByName(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\r\n   at System.Enum.TryParseInt32Enum(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)\r\n   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)\r\n   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)\r\n   at POS.Library.Helper.Parser.ToEnum[T](String value) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\Parser.cs:line 22\r\n   at POS.WEB.Controllers.v3.PromotionCouponController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\PromotionCouponController.cs:line 175"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionCoupon/WithTotalCount": {
      "get": {
        "tags": [
          "Promotion Coupon"
        ],
        "operationId": "ListPromotionCouponWithTotalCount",
        "summary": "List Promotion Coupons With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n<br>\nGet List of Promotion Coupons\n\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-17"
          },
          {
            "name": "To",
            "in": "query",
            "description": "to date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-19"
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Type of promotion coupon",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Discount",
                "DiscountAmount",
                "ParkedDeletion",
                "Return",
                "FullAccess"
              ]
            },
            "example": "Discount"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Code": {
                            "type": "string",
                            "description": "Promotion Coupon Unique Code",
                            "x-stoplight": {
                              "id": "2cv4zk5339a1x"
                            }
                          },
                          "Limit": {
                            "type": "integer",
                            "description": "Promotion Coupon Usage Limit"
                          },
                          "Balance": {
                            "type": "integer",
                            "description": "Promotion Coupon Usage Balance"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "Promotion Coupon Discount Percentage"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Promotion Coupon Created Date"
                          },
                          "ExpiryDate": {
                            "type": "string",
                            "description": "Promotion Coupon Expirate Date"
                          },
                          "Type": {
                            "type": "string",
                            "description": "Promotion Coupon Type"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total Count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Code": "Discs",
                      "Limit": 5,
                      "Balance": 5,
                      "Discount": 99,
                      "Created": "2019-12-17T14:58:15.447",
                      "ExpiryDate": "2019-12-19T00:00:00",
                      "Type": "Discount"
                    },
                    {
                      "Code": "Discs",
                      "Limit": 5,
                      "Balance": 5,
                      "Discount": 99,
                      "Created": "2019-12-17T14:58:15.447",
                      "ExpiryDate": "2019-12-19T00:00:00",
                      "Type": "Discount"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Requested value 'Discount' was not found.",
                  "StackTrace": "   at System.Enum.TryParseByName(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)\r\n   at System.Enum.TryParseInt32Enum(RuntimeType enumType, String originalValueString, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)\r\n   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)\r\n   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)\r\n   at POS.Library.Helper.Parser.ToEnum[T](String value) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\Parser.cs:line 22\r\n   at POS.WEB.Controllers.v3.PromotionCouponController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\PromotionCouponController.cs:line 175"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment/Detail": {
      "get": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "GetAdjustmentByNumber",
        "summary": "Get Adjustment By Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet Adjustment detail based on Number.\n\nRequired Group Role: \"**Adjustment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "The name of the outlet that made the adjustment",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Number of adjusment invoice",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "20.08.00014"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Adjustment ID"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Name of the outlet"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Date of the Adjustment"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of the adjusment"
                    },
                    "PIC": {
                      "type": "string",
                      "description": "Person in charge of the Adjusment"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Type of the Adjusment",
                      "enum": [
                        "Adjust",
                        "Count"
                      ]
                    },
                    "State": {
                      "type": "string",
                      "enum": [
                        "Draft",
                        "Pending",
                        "Accepted",
                        "Rejected"
                      ],
                      "description": "Progress/State of the adjusment"
                    },
                    "Note": {
                      "type": "string",
                      "description": "Adjusment Note"
                    },
                    "CountMethod": {
                      "type": "string",
                      "enum": [
                        "web",
                        "csv",
                        "barcode",
                        "rfid"
                      ],
                      "description": "Source of adjustment creation"
                    },
                    "AdjustedInventory": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Item ID in inventory adjustment created",
                            "x-stoplight": {
                              "id": "txq17jo3dksnc"
                            }
                          },
                          "Variant": {
                            "type": "string",
                            "description": "Adjusted Product Variant Name"
                          },
                          "VariantID": {
                            "type": "string",
                            "description": "Adjusted Product Variant ID"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Adjusted Product Variant Code"
                          },
                          "ImageURL": {
                            "type": "string",
                            "description": "Adjusted Product Variant Image URL"
                          },
                          "ThumbnailURL": {
                            "type": "string",
                            "description": "Adjusted Product Variant Thumbnail URL"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Adjusted Product Variant Quantity"
                          },
                          "UnitCost": {
                            "type": "number",
                            "description": "Adjusted Product Variant Unit Cost"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "Adjusted Product Variant Unit Selling Price"
                          },
                          "TotalCost": {
                            "type": "number",
                            "description": "Total Unit of the adjusted product"
                          },
                          "TotalPrice": {
                            "type": "number",
                            "description": "Total Seling Price of the adjusted product"
                          },
                          "Price": {
                            "type": "number",
                            "description": "Adjusted Product Variant Unit Selling Price"
                          }
                        }
                      }
                    },
                    "CountedInventory": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Counted Product ID"
                          },
                          "Variant": {
                            "type": "string",
                            "description": "Counted Product Variant Name"
                          },
                          "VariantID": {
                            "type": "string",
                            "description": "Counted Product Variant ID"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Counted Product Variant Code"
                          },
                          "ImageURL": {
                            "type": "string",
                            "description": "Counted Product Variant Image URL"
                          },
                          "ThumbnailURL": {
                            "type": "string",
                            "description": "Counted Product Variant Thumbnail URL"
                          },
                          "Counted": {
                            "type": "integer",
                            "description": "Counted Product Variant Counted Quantity"
                          },
                          "Actual": {
                            "type": "integer",
                            "description": "Counted Product Variant Actual Quantity"
                          },
                          "Difference": {
                            "type": "integer",
                            "description": "Counted Product Variant Difference Quantity"
                          },
                          "TID": {
                            "type": "array",
                            "description": "Tag ID for RFID (This property is used only for product Standard type and adjustment type Count)",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "7da1930f-7be5-4796-b55b-32dfbb0ac026",
                  "Outlet": "Outlet1",
                  "Date": "2020-08-31T00:00:00",
                  "Number": "20.08.00014",
                  "PIC": "Ferdi",
                  "Type": "Count",
                  "State": "Accepted",
                  "Note": "",
                  "CountMethod": "rfid",
                  "AdjustedInventory": [
                    {
                      "ID": "59127ed0-46ec-44a0-80e1-9bff638dca8b",
                      "Variant": "Denim Shirt (M)",
                      "VariantID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                      "Code": "1342M",
                      "ImageURL": "//res.cloudinary.com/dealpos/image/upload/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg,",
                      "ThumbnailURL": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg,",
                      "Quantity": 7,
                      "UnitCost": 80405.87,
                      "UnitPrice": 500000,
                      "TotalCost": 562841.09,
                      "TotalPrice": 3500000
                    }
                  ],
                  "CountedInventory": [
                    {
                      "ID": "56967c0a-b86a-4085-a9f3-a897bb4e488a",
                      "Variant": "Denim Shirt (M)",
                      "VariantID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                      "Code": "1342M",
                      "ImageURL": "//res.cloudinary.com/dealpos/image/upload/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg,",
                      "ThumbnailURL": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg,",
                      "Counted": 5,
                      "Actual": -2,
                      "Difference": 7,
                      "TID": [
                        "ASDADKASKDAD001",
                        "ASDADKASKDAD002",
                        "ASDADKASKDAD003",
                        "ASDADKASKDAD004",
                        "ASDADKASKDAD005"
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment/ID": {
      "get": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "GetAdjustmentByID",
        "summary": "Get Adjustment By ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet Adjustment detail based on ID Adjustment.\n\nRequired Group Role: \"**Adjustment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ID",
            "in": "query",
            "description": "ID of the adjustment",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "7da1930f-7be5-4796-b55b-32dfbb0ac026"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Adjustment ID"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Name of the outlet"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Date of the Adjustment"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of the adjusment"
                    },
                    "PIC": {
                      "type": "string",
                      "description": "Person in charge of the Adjusment"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Type of the Adjusment",
                      "enum": [
                        "Adjust",
                        "Count"
                      ]
                    },
                    "State": {
                      "type": "string",
                      "enum": [
                        "Draft",
                        "Pending",
                        "Accepted",
                        "Rejected"
                      ],
                      "description": "Progress/State of the adjusment"
                    },
                    "Note": {
                      "type": "string",
                      "description": "Adjusment Note"
                    },
                    "CountMethod": {
                      "type": "string",
                      "enum": [
                        "web",
                        "csv",
                        "barcode",
                        "rfid"
                      ],
                      "description": "Source of adjustment creation"
                    },
                    "CreatorID": {
                      "type": "string",
                      "format": "guid",
                      "description": "ID of the user who created the adjustment"
                    },
                    "AdjustedInventory": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Item ID in inventory adjustment created",
                            "x-stoplight": {
                              "id": "txq17jo3dksnc"
                            }
                          },
                          "Variant": {
                            "type": "string",
                            "description": "Adjusted Product Variant Name"
                          },
                          "VariantID": {
                            "type": "string",
                            "description": "Adjusted Product Variant ID"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Adjusted Product Variant Code"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Adjusted Product Variant Quantity"
                          },
                          "UnitCost": {
                            "type": "number",
                            "description": "Adjusted Product Variant Unit Cost"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "Adjusted Product Variant Unit Selling Price"
                          },
                          "TotalCost": {
                            "type": "number",
                            "description": "Total Unit of the adjusted product"
                          },
                          "TotalPrice": {
                            "type": "number",
                            "description": "Total Seling Price of the adjusted product"
                          },
                          "Price": {
                            "type": "number",
                            "description": "Adjusted Product Variant Unit Selling Price"
                          }
                        }
                      }
                    },
                    "CountedInventory": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Counted Product ID"
                          },
                          "Variant": {
                            "type": "string",
                            "description": "Counted Product Variant Name"
                          },
                          "VariantID": {
                            "type": "string",
                            "description": "Counted Product Variant ID"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Counted Product Variant Code"
                          },
                          "Counted": {
                            "type": "integer",
                            "description": "Counted Product Variant Counted Quantity"
                          },
                          "Actual": {
                            "type": "integer",
                            "description": "Counted Product Variant Actual Quantity"
                          },
                          "Difference": {
                            "type": "integer",
                            "description": "Counted Product Variant Difference Quantity"
                          },
                          "TID": {
                            "type": "array",
                            "description": "Tag ID for RFID (This property is used only for product Standard type and adjustment type Count)",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "7da1930f-7be5-4796-b55b-32dfbb0ac026",
                  "Outlet": "Outlet1",
                  "Date": "2020-08-31T00:00:00",
                  "Number": "20.08.00014",
                  "PIC": "Ferdi",
                  "Type": "Count",
                  "State": "Accepted",
                  "Note": "",
                  "CountMethod": "rfid",
                  "CreatorID": "7da1930f-7be5-4796-b55b-32dfbb0ac026",
                  "AdjustedInventory": [
                    {
                      "ID": "59127ed0-46ec-44a0-80e1-9bff638dca8b",
                      "Variant": "Denim Shirt (M)",
                      "VariantID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                      "Code": "1342M",
                      "Quantity": 7,
                      "UnitCost": 80405.87,
                      "UnitPrice": 500000,
                      "TotalCost": 562841.09,
                      "TotalPrice": 3500000
                    }
                  ],
                  "CountedInventory": [
                    {
                      "ID": "56967c0a-b86a-4085-a9f3-a897bb4e488a",
                      "Variant": "Denim Shirt (M)",
                      "VariantID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                      "Code": "1342M",
                      "Counted": 5,
                      "Actual": -2,
                      "Difference": 7,
                      "TID": [
                        "ASDADKASKDAD001",
                        "ASDADKASKDAD002",
                        "ASDADKASKDAD003",
                        "ASDADKASKDAD004",
                        "ASDADKASKDAD005"
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment/WithTotalCount": {
      "get": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "ListAdjustmentWithTotalCount",
        "summary": "List Adjustment With Total Count",
        "description": "Get Adjustment List With Total Count\n\nRequired Group Role: \"**Adjustment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "Start date of adjustment list shown (format yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2018-10-01"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "End date of adjustment list shown (format yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2018-10-31"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Adjustment Number to filter. (Can search contain of the number)",
            "required": false,
            "schema": {
              "type": "string",
              "example": "2018/11/07.0001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Adjustment Created Outlet Name"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Adjustment Created Date "
                          },
                          "Number": {
                            "type": "string",
                            "description": "Adjustment Created Number"
                          },
                          "PIC": {
                            "type": "string",
                            "description": "Person in Charge of adjusment created"
                          },
                          "InvoiceNote": {
                            "type": "string",
                            "description": "Note of the Adjusment created"
                          },
                          "State": {
                            "type": "string",
                            "enum": [
                              "Draft",
                              "Pending",
                              "Accepted",
                              "Rejected"
                            ],
                            "description": "Progress/State of the adjusment"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Date": "2018-10-30T00:00:00",
                      "Number": "2018/11/07.0001",
                      "PIC": "John Doe",
                      "InvoiceNote": "Test Adjustment",
                      "State": "Accepted"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Date": "2018-10-29T00:00:00",
                      "Number": "Oct 29, 2018.973265",
                      "PIC": "cron runner",
                      "InvoiceNote": "Test Adjustment",
                      "State": "Accepted"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "String '22018-10-01' was not recognized as a valid DateTime.",
                  "StackTrace": "   at System.DateTimeParse.Parse(ReadOnlySpan`1 s, DateTimeFormatInfo dtfi, DateTimeStyles styles)\r\n   at System.DateTime.Parse(String s)\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 25\r\n   at POS.WEB.Controllers.v3.AdjustmentController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\AdjustmentController.cs:line 92"
                }
              }
            }
          }
        }
      }
    },
    "/Adjustment/Workflow": {
      "get": {
        "tags": [
          "Inventory Adjustment"
        ],
        "operationId": "GetAdjustmentWorkflow",
        "summary": "Get Adjustment Workflow",
        "description": "> Get Adjustment Workflow based on configuration set in the system",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Workflow": {
                      "type": "integer",
                      "enum": [
                        1,
                        2
                      ],
                      "description": "Workflow of the Adjustment (1 = No Approval (Instant), 2 = With Approval)\n"
                    }
                  }
                },
                "example": {
                  "Workflow": 1
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Bill/Number": {
      "get": {
        "tags": [
          "Bill"
        ],
        "operationId": "getbillbynumber",
        "summary": "Get a Bill By Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet a Supplier Bill detail based on bill number.\n\nYou must have \"**SupplierBill**\" role in \"**Orders**\" Module",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Number of supplier bill. This is primary key for the object",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "19.11.14.000000003"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet Name of bill crated"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Bill number transaction "
                    },
                    "Date": {
                      "type": "string",
                      "description": "Bill transaction date(yyyy/mm/dd)"
                    },
                    "DueDate": {
                      "type": "string",
                      "description": "Due date Bill transaction date(yyyy/mm/dd)"
                    },
                    "Supplier": {
                      "type": "object",
                      "properties": {},
                      "description": "Detail personal info of supplier"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "ID of the user that create the supplier bill"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Bill created datetime"
                    },
                    "Discount1": {
                      "type": "integer",
                      "description": "Discount percentage that given in bill"
                    },
                    "DiscountAmount": {
                      "type": "number",
                      "description": "Discount amount that given in bill"
                    },
                    "Gross": {
                      "type": "number",
                      "description": "Total amount before discount "
                    },
                    "DiscountTotal": {
                      "type": "number",
                      "description": "Total discount in bill "
                    },
                    "TaxType": {
                      "type": "string",
                      "description": "Tax type assigned"
                    },
                    "Tax": {
                      "type": "integer",
                      "description": "Tax Percentage"
                    },
                    "Purchase": {
                      "type": "number",
                      "description": "total nett purchase amount"
                    },
                    "PurchaseNTax": {
                      "type": "number",
                      "description": "Total amount in bill after tax"
                    },
                    "Delivery": {
                      "type": "string",
                      "description": "Delivery State",
                      "enum": [
                        "Waiting",
                        "Received",
                        "Partial"
                      ]
                    },
                    "TaxCalculation": {
                      "type": "string",
                      "description": "Type of tax calculation (Add / Include)"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "VariantID": {
                            "type": "string",
                            "description": "ID of variant"
                          },
                          "Name": {
                            "type": "string",
                            "description": "Name of variant"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of variant"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Product quantity bought"
                          },
                          "Price": {
                            "type": "number",
                            "description": "Price you pay for the product"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "Discount percentage of product"
                          },
                          "DiscountAmount": {
                            "type": "integer",
                            "description": "Discount Amount of product"
                          },
                          "Note": {
                            "type": "string",
                            "description": "note for variant"
                          },
                          "Taxable": {
                            "type": "boolean",
                            "description": "Is the variant taxable or not"
                          }
                        }
                      }
                    },
                    "Payments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "description": "Date of bill payment"
                          },
                          "Amount": {
                            "type": "number",
                            "description": "Total amount supplier bill to be paid"
                          },
                          "Method": {
                            "type": "string",
                            "description": "Payment method"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code for payment method (optional)"
                          },
                          "PaymentNote": {
                            "type": "string",
                            "description": "note for mark the payment (optional)"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "ff7448c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Outlet": "Outlet1",
                  "Number": "19.11.14.000000003",
                  "Date": "2019-11-14T00:00:00",
                  "DueDate": "2020-08-25T00:00:00",
                  "Supplier": {},
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Created": "2019-11-14T14:19:44.25",
                  "Discount1": 0,
                  "DiscountAmount": 0,
                  "Gross": 2660000,
                  "DiscountTotal": -166854688,
                  "TaxType": "No Tax",
                  "Tax": 0,
                  "Purchase": 169514688,
                  "PurchaseNTax": 169514688,
                  "Delivery": "Received",
                  "TaxCalculation": "Include",
                  "Variants": [
                    {
                      "VariantID": "44061928-caf9-412f-8321-0ec93ee6963e",
                      "Name": "Denim Shirt(M)",
                      "Code": "50918",
                      "Quantity": 1,
                      "Price": 664000,
                      "Discount": 0,
                      "DiscountAmount": 0,
                      "Note": "Test Note",
                      "Taxable": true
                    },
                    {
                      "VariantID": "44061928-caf9-412f-8321-0ec93ee6678e",
                      "Name": "Denim Shirt(L)",
                      "Code": "100430",
                      "Quantity": 2,
                      "Price": 666000,
                      "Discount": 0,
                      "DiscountAmount": 0,
                      "Note": "Test Note",
                      "Taxable": true
                    },
                    {
                      "VariantID": "44061928-caf9-4198-8321-0ec93ee6963e",
                      "Name": "Denim Shirt(XL)",
                      "Code": "100531",
                      "Quantity": 1,
                      "Price": 664000,
                      "Discount": 0,
                      "DiscountAmount": 0,
                      "Note": "Test Note",
                      "Taxable": true
                    }
                  ],
                  "Payments": [
                    {
                      "Date": "2019-11-14T00:00:00",
                      "Amount": 169514688,
                      "Method": "Cash",
                      "Code": "1239123",
                      "PaymentNote": "Test Note"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Bill/WithTotalCount": {
      "get": {
        "tags": [
          "Bill"
        ],
        "operationId": "ListBillWithTotalCount",
        "summary": "List Bills With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet list of Supplier Bill detail with Total Count\n\nYou must have \"**SupplierBill**\" role in \"**Orders**\" Module",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Name of the outlet",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "From",
            "in": "query",
            "description": "From date (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2020-06-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2020-06-30"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Transaction ID that has been made"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Invoice bill number"
                          },
                          "Supplier": {
                            "type": "string",
                            "description": "Name of the supplier\n"
                          },
                          "Type": {
                            "type": "string",
                            "description": "Purchase order type"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of purchase transaction"
                          },
                          "Due": {
                            "type": "string",
                            "description": "due date of the invoice bill"
                          },
                          "Amount": {
                            "type": "number",
                            "description": "Total amount transaction"
                          },
                          "Delivery": {
                            "type": "string",
                            "description": "delivery status / progres of the invoice bill",
                            "enum": [
                              "Waiting",
                              "Received",
                              "Partial"
                            ]
                          },
                          "Payment": {
                            "type": "string",
                            "description": "payment status / progress of the invoice bill"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice created Transaction Date by system"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "d688ff9e-0671-456a-b6f0-223acaa5ee7b",
                      "Outlet": "Outlet1",
                      "Number": "20.06.00004",
                      "Supplier": "hendry",
                      "Type": "Normal",
                      "Date": "2020-06-24T00:00:00",
                      "Due": "2020-06-24T00:00:00",
                      "Amount": 100000,
                      "Delivery": "Received",
                      "Payment": "Paid",
                      "Created": "2020-06-24T13:36:12.97"
                    },
                    {
                      "ID": "ed6ffe55-f08e-4806-be1d-e55f3927e11b",
                      "Outlet": "Outlet1",
                      "Number": "20.06.00003",
                      "Supplier": "PT ABC",
                      "Type": "Normal",
                      "Date": "2020-06-24T00:00:00",
                      "Due": "2020-06-24T00:00:00",
                      "Amount": 100000,
                      "Delivery": "Received",
                      "Payment": "Paid",
                      "Created": "2020-06-24T11:40:27.703"
                    },
                    {
                      "ID": "8169eac5-c2a7-4845-8f96-0b5a8980957a",
                      "Outlet": "Outlet1",
                      "Number": "20.06.00002",
                      "Supplier": "PT ABC",
                      "Type": "Normal",
                      "Date": "2020-06-24T00:00:00",
                      "Due": "2020-06-24T00:00:00",
                      "Amount": 100000,
                      "Delivery": "Received",
                      "Payment": "Paid",
                      "Created": "2020-06-24T11:24:53.027"
                    },
                    {
                      "ID": "057a8d3f-3927-4d61-a533-cd554d2c01e8",
                      "Outlet": "Outlet1",
                      "Number": "OTL01-20-06-02",
                      "Supplier": "PT ABC",
                      "Type": "Normal",
                      "Date": "2020-06-19T00:00:00",
                      "Due": "2020-06-24T00:00:00",
                      "Amount": 87289.13,
                      "Delivery": "Received",
                      "Payment": "Paid",
                      "Created": "2020-06-19T14:13:13.817"
                    },
                    {
                      "ID": "1b5f9f1f-e836-4330-b79d-9e7737893a78",
                      "Outlet": "Outlet1",
                      "Number": "OTL01-20-06-01",
                      "Supplier": "PT ABC",
                      "Type": "Normal",
                      "Date": "2020-06-08T00:00:00",
                      "Due": "2020-06-24T00:00:00",
                      "Amount": 3138.12,
                      "Delivery": "Received",
                      "Payment": "Paid",
                      "Created": "2020-06-08T08:40:54.55"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.TryGetProperty(String propertyName, JsonElement& value)\r\n   at POS.Library.Helper.JSONPropertyChecker.HasProperty(JsonElement obj, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 124\r\n   at POS.Library.Helper.JSONPropertyChecker.Check[T](JsonElement json, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 12\r\n   at POS.WEB.Controllers.v3.BillController.WithTotalCount(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\BillController.cs:line 110"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Category/ID": {
      "get": {
        "tags": [
          "Category"
        ],
        "operationId": "GetCategoryByID",
        "summary": "Get a Category By ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do)  with the same endpoint**\n\n<br>\nGet a Category based on ID\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ID",
            "in": "query",
            "description": "Get from ID of category that you want to get the detail . This is primary key for the object",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ParentID": {
                      "type": "string"
                    },
                    "TypeID": {
                      "type": "integer"
                    },
                    "Lvl": {
                      "type": "integer"
                    },
                    "Description": {
                      "type": "string"
                    },
                    "Code": {
                      "type": "string"
                    },
                    "SKUSeed": {
                      "type": "integer"
                    },
                    "Sort": {
                      "type": "string"
                    },
                    "UOM": {
                      "type": "string"
                    },
                    "MeasurementID": {
                      "type": "string"
                    },
                    "UOMQ": {
                      "type": "string"
                    },
                    "Name": {
                      "type": "string"
                    },
                    "Model": {
                      "type": "string"
                    },
                    "ID": {
                      "type": "string"
                    },
                    "Parent": {
                      "type": "string"
                    },
                    "Measurement": {
                      "type": "string"
                    },
                    "Discontinued": {
                      "type": "boolean"
                    }
                  },
                  "x-examples": {
                    "Example 1": {
                      "ParentID": "ed8e8964-d3ab-4101-834b-426b85b241b0",
                      "TypeID": 0,
                      "Lvl": 0,
                      "Description": "Top/Men",
                      "Code": "TM",
                      "SKUSeed": 0,
                      "Sort": "Men",
                      "UOM": "pcs",
                      "MeasurementID": "00000000-0000-0000-0000-000000000000",
                      "UOMQ": "pcs",
                      "Name": "Top/Men",
                      "Model": "Men",
                      "ID": "328ca218-0f0b-449c-8d0d-2a55113ce431",
                      "Parent": "Top",
                      "Measurement": "Size",
                      "Discontinued": false
                    }
                  }
                },
                "example": {
                  "ParentID": "ed8e8964-d3ab-4101-834b-426b85b241b0",
                  "TypeID": 0,
                  "Lvl": 0,
                  "Description": "Top/Men",
                  "Code": "TM",
                  "SKUSeed": 0,
                  "Sort": "Men",
                  "UOM": "pcs",
                  "MeasurementID": "00000000-0000-0000-0000-000000000000",
                  "UOMQ": "pcs",
                  "Name": "Top/Men",
                  "Model": "Men",
                  "ID": "328ca218-0f0b-449c-8d0d-2a55113ce431",
                  "Parent": "Top",
                  "Measurement": "Size",
                  "Discontinued": false
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/Email": {
      "get": {
        "tags": [
          "Deprecated"
        ],
        "operationId": "GetCustomerByEmail",
        "summary": "Get Customer By Email",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet a customer based on customer email\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Email"
                ],
                "type": "object",
                "properties": {
                  "Email": {
                    "type": "string",
                    "description": "Email address of customer. the primary key for the object"
                  }
                }
              },
              "example": {
                "Email": "tafta@dealpos.com"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer"
                },
                "example": {
                  "Name": "Tafta tata",
                  "Email": "Tafta@dealpos.com",
                  "FirstName": "Tafta",
                  "LastName": "tata",
                  "Gender": true,
                  "Code": "HW008",
                  "Phone": "021-66698155",
                  "Mobile": "081588818888",
                  "Address": "Jl. Lenteng Agung",
                  "ReferredBy": "449e35af-190d-4137-aa13-9cf2cf6af57a",
                  "Group": "Gold",
                  "ExpiredGroup": "31 Jul 2019",
                  "SignUpOutlet": "Outlet1",
                  "ImageURL": "//res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg",
                  "LoyaltyPoint": 88,
                  "Status": "Active"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/TransferOrder": {
      "post": {
        "tags": [
          "TransferOrder"
        ],
        "operationId": "CreateTransferOrder",
        "summary": "Create TransferOrder",
        "description": ">Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new & the old ones can be use.\n\nCreate an Outlet Delivery\n\nYou must have \"**CREATE**\" role in \"**Logistic**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Standard Product",
                    "required": [
                      "Date",
                      "Destination",
                      "Number",
                      "Outlet",
                      "Variants"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Source Name"
                      },
                      "Destination": {
                        "type": "string",
                        "description": "Outlet destination name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Transfer order date"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Transfer order number"
                      },
                      "Courier": {
                        "type": "string",
                        "description": "Courier name"
                      },
                      "State": {
                        "type": "string",
                        "description": "Delivery Status of Transfer Order\n- If \"State\" is filled, the value gets from API push\n- When \"State\" is empty, the value will be following config Transfer Order Workflow",
                        "enum": [
                          "Approved",
                          "Dispatched",
                          "Received"
                        ]
                      },
                      "Note": {
                        "type": "string",
                        "description": "Delivery note"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "required": [
                            "Code",
                            "Price",
                            "Quantity"
                          ],
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant code"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Variant quantity to be sent"
                            },
                            "Price": {
                              "type": "number",
                              "description": "Variant price"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Variant note"
                            },
                            "Serial": {
                              "type": "array",
                              "description": "Use this property only for product type Serialized",
                              "items": {
                                "$ref": "#/components/schemas/VariantSerial"
                              },
                              "x-stoplight": {
                                "id": "l84mdohg3ci1x"
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Destination": "Outlet2",
                      "Date": "10/10/2018",
                      "Number": "18.07.02.0000002",
                      "Courier": "JNE",
                      "Note": "Yes Kirim",
                      "Variants": [
                        {
                          "Code": "2012",
                          "Quantity": "6",
                          "Price": 150000,
                          "Note": "Cotton Combet 30's"
                        },
                        {
                          "Code": "2012",
                          "Quantity": "6",
                          "Price": 150000,
                          "Note": "Cotton Combet 30's"
                        }
                      ]
                    }
                  },
                  {
                    "title": "Serialized Product",
                    "required": [
                      "Outlet",
                      "Destination",
                      "Number",
                      "Date",
                      "Variants"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet source name"
                      },
                      "Destination": {
                        "type": "string",
                        "description": "Outlet destination name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Transfer order date"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Transfer order number"
                      },
                      "Courier": {
                        "type": "string",
                        "description": "Courier name"
                      },
                      "State": {
                        "type": "string",
                        "description": "Delivery Status of Transfer Order\n- If \"State\" is filled, the value gets from API push\n- When \"State\" is empty, the value will be following config Transfer Order Workflow",
                        "enum": [
                          "Approved",
                          "Dispatched",
                          "Received"
                        ]
                      },
                      "Note": {
                        "type": "string",
                        "description": "Transfer order note"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "required": [
                            "Code",
                            "Quantity",
                            "Price",
                            "Serial"
                          ],
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant code"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Variant quantity to be delivered"
                            },
                            "Price": {
                              "type": "number",
                              "description": "Variant price"
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount applied to the variant"
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "required": [
                                  "Number",
                                  "Quantity"
                                ],
                                "type": "object",
                                "properties": {
                                  "Number": {
                                    "type": "string",
                                    "description": "Serial number"
                                  },
                                  "Quantity": {
                                    "type": "number",
                                    "description": "Quantity associated with the serial"
                                  }
                                }
                              }
                            },
                            "Note": {
                              "type": "string",
                              "description": "Variant note"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Destination": "Outlet2",
                      "Date": "10/10/2018",
                      "Number": "18.07.02.0000002",
                      "Courier": "JNE",
                      "Note": "Yes Kirim",
                      "Variants": [
                        {
                          "Code": "SM-S24",
                          "Quantity": "2",
                          "Price": 15000000,
                          "Discount": 0,
                          "Serial": [
                            {
                              "Number": "SERIAL02",
                              "Quantity": 1
                            },
                            {
                              "Number": "SERIAL03",
                              "Quantity": 1
                            }
                          ],
                          "Note": "Cotton Combet 30's"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Transfer Order ID"
                    }
                  }
                },
                "example": {
                  "ID": "0b151d3f-e7ab-44dd-a63a-dbc4019d5cad"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "tags": [
          "TransferOrder"
        ],
        "operationId": "UpdateTransferOrder",
        "summary": "Update TransferOrder",
        "description": ">Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new & the old ones can be use.\n\nUpdate an Outlet Delivery\n\nYou must have \"**EDIT**\" role in \"**Logistic**\" Module  OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Standard Product",
                    "required": [
                      "Date",
                      "Destination",
                      "Outlet",
                      "Number",
                      "Variants"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet source name"
                      },
                      "Destination": {
                        "type": "string",
                        "description": "Outlet destination name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Delivery date"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice delivery number"
                      },
                      "Courier": {
                        "type": "string",
                        "description": "Courier name"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Delivery note"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "required": [
                            "Code",
                            "Price",
                            "Quantity"
                          ],
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant code"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Variant quantity to be delivered"
                            },
                            "Price": {
                              "type": "number",
                              "description": "Variant price"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Variant note"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Destination": "Outlet2",
                      "Date": "10/10/2018",
                      "Number": "18.07.02.0000002",
                      "Courier": "JNE",
                      "Note": "Yes Kirim",
                      "Variants": [
                        {
                          "Code": "2012",
                          "Quantity": "6",
                          "Price": 150000,
                          "Note": "Cotton Combet 30's"
                        },
                        {
                          "Code": "2012",
                          "Quantity": "6",
                          "Price": 150000,
                          "Note": "Cotton Combet 30's"
                        }
                      ]
                    }
                  },
                  {
                    "title": "Serialized Product",
                    "required": [
                      "Outlet",
                      "Destination",
                      "Number",
                      "Date",
                      "Variants"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet source name"
                      },
                      "Destination": {
                        "type": "string",
                        "description": "Outlet destination name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Transfer order number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Transfer order date"
                      },
                      "Courier": {
                        "type": "string",
                        "description": "Courier name"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Transfer order note"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "required": [
                            "Code",
                            "Quantity",
                            "Price",
                            "Serial"
                          ],
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant code"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Variant quantity to be delivered"
                            },
                            "Price": {
                              "type": "number",
                              "description": "Variant price"
                            },
                            "Discount": {
                              "type": "number",
                              "description": "Discount applied to the variant"
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "required": [
                                  "Number",
                                  "Quantity"
                                ],
                                "type": "object",
                                "properties": {
                                  "Number": {
                                    "type": "string",
                                    "description": "Serial number"
                                  },
                                  "Quantity": {
                                    "type": "number",
                                    "description": "Quantity associated with the serial"
                                  }
                                }
                              }
                            },
                            "Note": {
                              "type": "string",
                              "description": "Variant note"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Destination": "Outlet2",
                      "Date": "10/10/2018",
                      "Number": "18.07.02.0000002",
                      "Courier": "JNE",
                      "Note": "Yes Kirim",
                      "Variants": [
                        {
                          "Code": "SM-S24",
                          "Quantity": "2",
                          "Price": 15000000,
                          "Discount": 0,
                          "Serial": [
                            {
                              "Number": "SERIAL02",
                              "Quantity": 1
                            },
                            {
                              "Number": "SERIAL03",
                              "Quantity": 1
                            }
                          ],
                          "Note": "Cotton Combet 30's"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Transfer Order ID"
                    }
                  }
                },
                "example": {
                  "ID": "0b151d3f-e7ab-44dd-a63a-dbc4019d5cad"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "get": {
        "tags": [
          "TransferOrder"
        ],
        "operationId": "ListTransferOrder",
        "summary": "List TransferOrder",
        "description": ">Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new & the old ones can be use.\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/OutletDelivery/p)**\n\n<br>\nGet List of Outlet Delivery\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "Delivery date filter from (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "Delivery date filter to (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-01-30"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Start page",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Total data delivery list that will be shown",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 20
          },
          {
            "name": "Status",
            "in": "query",
            "description": "Fulfillment Status (if value null / blank means show all status)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Request / Approved / Dispatched / Received"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Number": {
                        "type": "string",
                        "description": "Outlet Delivery Order Number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Date time of outlet delivery "
                      },
                      "Courier": {
                        "type": "string",
                        "description": "Courier Name "
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Source of outlet delivery"
                      },
                      "OutletCode": {
                        "type": "string",
                        "description": "Code of source outlet delivery"
                      },
                      "Destination": {
                        "type": "string",
                        "description": "Destination of outlet delivery"
                      },
                      "DestinationCode": {
                        "type": "string",
                        "description": "Code of destination outlet delivery"
                      },
                      "TypeName": {
                        "type": "string",
                        "description": "Outlet Delivery Type"
                      },
                      "Status": {
                        "type": "string",
                        "description": "Outlet delivery status"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Datetime of outlet delivery order"
                      },
                      "Quantity": {
                        "type": "integer",
                        "description": "Total quantity outlet delivery order"
                      },
                      "Price": {
                        "type": "number",
                        "description": "Total price for the outlet delivery"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Number": "19.01.18.000000002",
                    "Date": "2019-01-18T00:00:00",
                    "Courier": "JsonSerializerOptions",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-18T15:14:48.64",
                    "Quantity": 2
                  },
                  {
                    "Number": "19.01.18.000000001",
                    "Date": "2019-01-18T00:00:00",
                    "Courier": "JsonSerializerOptions",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Dispatched",
                    "Created": "2019-01-18T15:13:27.377",
                    "Quantity": 2
                  },
                  {
                    "Number": "19.01.17.000000005",
                    "Date": "2019-01-17T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-17T16:48:30.813",
                    "Quantity": 8
                  },
                  {
                    "Number": "19.01.17.000000004",
                    "Date": "2019-01-17T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Dispatched",
                    "Created": "2019-01-17T16:47:09.893",
                    "Quantity": 5
                  },
                  {
                    "Number": "19.01.17.000000003",
                    "Date": "2019-01-17T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-17T13:59:16.77",
                    "Quantity": 1
                  },
                  {
                    "Number": "19.01.17.000000001",
                    "Date": "2019-01-17T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-17T10:08:34.61",
                    "Quantity": 1
                  },
                  {
                    "Number": "19.01.17.000000002",
                    "Date": "2019-01-17T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 2",
                    "OutletCode": "OT2",
                    "Destination": "Outlet 3",
                    "DestinationCode": "OT3",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-17T15:57:50.71",
                    "Quantity": 7
                  },
                  {
                    "Number": "19.01.17.000000001",
                    "Date": "2019-01-17T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 2",
                    "OutletCode": "OT2",
                    "Destination": "Outlet 3",
                    "DestinationCode": "OT3",
                    "TypeName": "Restock",
                    "Status": "Dispatched",
                    "Created": "2019-01-17T15:49:20.533",
                    "Quantity": 7
                  },
                  {
                    "Number": "19.01.15.000000004",
                    "Date": "2019-01-15T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-15T11:15:57.027",
                    "Quantity": 3
                  },
                  {
                    "Number": "19.01.15.000000003",
                    "Date": "2019-01-15T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-15T11:14:21.953",
                    "Quantity": 7
                  },
                  {
                    "Number": "19.01.15.000000002",
                    "Date": "2019-01-15T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-15T11:07:44.59",
                    "Quantity": 3
                  },
                  {
                    "Number": "19.01.15.000000001",
                    "Date": "2019-01-15T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-15T10:43:41.89",
                    "Quantity": 2
                  },
                  {
                    "Number": "19.01.14.000000001",
                    "Date": "2019-01-14T00:00:00",
                    "Courier": "JNI",
                    "Outlet": "Outlet 1",
                    "OutletCode": "OT1",
                    "Destination": "Outlet 2",
                    "DestinationCode": "OT2",
                    "TypeName": "Restock",
                    "Status": "Received",
                    "Created": "2019-01-14T16:08:48.027",
                    "Quantity": 10
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "TransferOrder"
        ],
        "operationId": "DeleteTransferOrder",
        "summary": "Delete TransferOrder",
        "description": ">Previous Endpoint: /api/v3/OutletDelivery. As for now, both the new & the old ones can be use.\n\nDelete Outlet Delivery\n\nYou must have \"**DELETE**\" role in \"**Logistic**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "OutletSource"
                ],
                "type": "object",
                "properties": {
                  "OutletSource": {
                    "type": "string",
                    "description": "Outlet source name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Delivery number"
                  }
                }
              },
              "example": {
                "OutletSource": "Outlet1",
                "Number": "18.07.02.0000002"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "description": "Delivery has been deleted"
                },
                "example": "Number 18.07.02.0000002 from source Test2 succesfully deleted."
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/TransferOrder/Void": {
      "put": {
        "tags": [
          "TransferOrder"
        ],
        "operationId": "VoidTransferOrder",
        "summary": "Void TransferOrder",
        "description": "\nVoid an Transfer Order",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "OutletSource": {
                    "type": "string",
                    "description": "Outlet source name"
                  },
                  "OutletDestination": {
                    "type": "string",
                    "description": "Outlet destination name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Transfer Order number"
                  }
                },
                "required": [
                  "OutletSource",
                  "OutletDestination",
                  "Number"
                ]
              },
              "example": {
                "OutletSource": "Outlet1",
                "OutletDestination": "Outlet2",
                "Number": "TO.0001"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Transfer Order ID"
                    },
                    "Message": {
                      "type": "string",
                      "description": "Message indicating the transfer order has been voided"
                    }
                  }
                },
                "example": {
                  "ID": "0b151d3f-e7ab-44dd-a63a-dbc4019d5cad",
                  "Message": "Transfer Order TO.0001 has been voided"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/TransferOrder/Workflow": {
      "get": {
        "tags": [
          "TransferOrder"
        ],
        "operationId": "GetTransferOrderWorkflow",
        "summary": "Get Transfer Order Workflow",
        "description": "> Get Transfer Order Workflow based on configuration set in the system",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Workflow": {
                      "type": "integer",
                      "enum": [
                        0,
                        1,
                        2,
                        3
                      ],
                      "description": "Workflow of the Transfer Order (0 = 4 Step (Request + Approve + Dispatch + Receive), 1 = 3 Step (Request + Dispatch + Receive), 2 = 2 Step (Dispatch + Receive), 3 = Instant)\n"
                    }
                  }
                },
                "example": {
                  "Workflow": 1
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/Code": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductByCode",
        "summary": "Get a Product By Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoints**\n\n<br>\nGet Product Detail By Code\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Code",
            "in": "query",
            "description": "The code of the product to be provided.",
            "required": true,
            "schema": {
              "type": "string",
              "example": 1003
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "the ID product to be showed"
                    },
                    "Category": {
                      "type": "string",
                      "description": "the category of the product to be showed"
                    },
                    "Name": {
                      "type": "string",
                      "description": "the name of the product to be showed"
                    },
                    "SupplierName": {
                      "type": "string",
                      "description": "the supplier name of the product"
                    },
                    "Brand": {
                      "type": "string",
                      "description": "Brand name of product (Backwards compatibility with property \"BrandName\")"
                    },
                    "Code": {
                      "type": "string",
                      "description": "the code of the product"
                    },
                    "Discontinued": {
                      "type": "boolean",
                      "description": "the availibility of the product"
                    },
                    "Description": {
                      "type": "string",
                      "description": "description of the product"
                    },
                    "Storage": {
                      "type": "array",
                      "description": "storage location of the product",
                      "items": {
                        "type": "object",
                        "properties": {
                          "OutletName": {
                            "type": "string",
                            "description": "Outlet's Storage Location"
                          },
                          "StorageName": {
                            "type": "string",
                            "description": "Name of Storage"
                          }
                        }
                      }
                    },
                    "Tags": {
                      "type": "array",
                      "description": "tags of the product",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ThumbnailURL": {
                      "type": "string",
                      "description": "Thumbnail URL of product image"
                    },
                    "ImageURL": {
                      "type": "string",
                      "description": "the image url of the product"
                    },
                    "ExtraImagesURL": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "the ID of the variant product"
                          },
                          "Model": {
                            "type": "string",
                            "description": "the model name variant of the product"
                          },
                          "Code": {
                            "type": "string",
                            "description": "the SKU code of the product variants"
                          },
                          "UnitCost": {
                            "type": "number",
                            "description": "the unit cost variant of the product"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "the unit price variant of the products"
                          },
                          "Discount": {
                            "type": "number",
                            "description": "variant discount percentage of the products"
                          },
                          "Discontinued": {
                            "type": "boolean",
                            "description": "the availability variant of the product"
                          },
                          "Description": {
                            "type": "string",
                            "description": "Description of variant"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "f74bba14-99f0-4246-84bf-3064e3d516c3",
                  "Category": "Top/Men",
                  "Name": "Captain America T-Shirt",
                  "SupplierName": "PT ABC",
                  "Brand": "Nike",
                  "Code": "1003",
                  "Discontinued": false,
                  "Description": "New Arrival",
                  "Storage": [
                    {
                      "OutletName": "Outlet1",
                      "StorageName": "Rack1"
                    }
                  ],
                  "Tags": [
                    "New Brand"
                  ],
                  "ThumbnailURL": "https://cdn.dealpos.app/cdn-cgi/image/width=80,quality=100/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                  "ImageURL": "https://cdn.dealpos.app/net/sandbox/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url",
                  "ExtraImagesURL": [
                    "https://cdn.dealpos.app/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg",
                    "https://cdn.dealpos.app/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg",
                    "https://cdn.dealpos.app/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg"
                  ],
                  "Variants": [
                    {
                      "ID": "a39787d8-2c20-428c-babf-b61c257d337e",
                      "Model": "Medium",
                      "Code": "1003M",
                      "UnitCost": 125000,
                      "UnitPrice": 200000,
                      "Discount": 10,
                      "Discontinued": false,
                      "Description": "Variant Description"
                    },
                    {
                      "ID": "7293d4b4-20c9-44ee-898b-ffafc294f259",
                      "Model": "Large",
                      "Code": "1003L",
                      "UnitCost": 150000,
                      "UnitPrice": 225000,
                      "Discount": 10,
                      "Discontinued": false,
                      "Description": "Variant Description"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Product not found."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetProductIDByCode' expects parameter '@Code', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/ID": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductByID",
        "summary": "Get a Product By ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoints**\n\n<br>\nGet Product Detail By ID\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ID",
            "in": "query",
            "description": "The code of the product to be provided.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "a731920a-b3ab-42d7-b42d-b93cd69ceb92"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "the ID product to be showed"
                    },
                    "Category": {
                      "type": "string",
                      "description": "the category of the product to be showed"
                    },
                    "Name": {
                      "type": "string",
                      "description": "the name of the product to be showed"
                    },
                    "SupplierName": {
                      "type": "string",
                      "description": "the supplier name of the product"
                    },
                    "Brand": {
                      "type": "string",
                      "description": "Brand name of product (Backwards compatibility with property \"BrandName\")"
                    },
                    "Code": {
                      "type": "string",
                      "description": "the code of the product"
                    },
                    "Discontinued": {
                      "type": "boolean",
                      "description": "the availibility of the product"
                    },
                    "Description": {
                      "type": "string",
                      "description": "description of the product"
                    },
                    "Storage": {
                      "type": "array",
                      "description": "storage location of the product",
                      "items": {
                        "type": "object",
                        "properties": {
                          "OutletName": {
                            "type": "string",
                            "description": "Outlet's Storage Location"
                          },
                          "StorageName": {
                            "type": "string",
                            "description": "Name of Storage"
                          }
                        }
                      }
                    },
                    "Tags": {
                      "type": "array",
                      "description": "tags of the product",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ThumbnailURL": {
                      "type": "string",
                      "description": "Thumbnail URL of product image"
                    },
                    "ImageURL": {
                      "type": "string",
                      "description": "the image url of the product"
                    },
                    "ExtraImagesURL": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "the ID of the variant product"
                          },
                          "Model": {
                            "type": "string",
                            "description": "the model name variant of the product"
                          },
                          "Code": {
                            "type": "string",
                            "description": "the SKU code of the product variants"
                          },
                          "UnitCost": {
                            "type": "number",
                            "description": "the unit cost variant of the product"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "the unit price variant of the products"
                          },
                          "Discount": {
                            "type": "number",
                            "description": "variant discount percentage of the products"
                          },
                          "Discontinued": {
                            "type": "boolean",
                            "description": "the availability variant of the product"
                          },
                          "Description": {
                            "type": "string",
                            "description": "Description of variant"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "f74bba14-99f0-4246-84bf-3064e3d516c3",
                  "Category": "Top/Men",
                  "Name": "Captain America T-Shirt",
                  "SupplierName": "PT ABC",
                  "Brand": "Nike",
                  "Code": "1003",
                  "Discontinued": false,
                  "Description": "New Arrival",
                  "Storage": [
                    {
                      "OutletName": "Outlet1",
                      "StorageName": "Rack1"
                    }
                  ],
                  "Tags": [
                    "New Brand"
                  ],
                  "ThumbnailURL": "https://dealpos.b-cdn.net/net/sandbox/Product/5be4a972-a242-4ded-8722-6baf4ec270d5/newproductimage.jpg?width=80",
                  "ImageURL": "https://cdn.dealpos.app/net/sandbox/Product/5be4a972-a242-4ded-8722-6baf4ec270d5/newproductimage.jpg",
                  "ExtraImagesURL": [
                    "https://cdn.dealpos.app/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg",
                    "https://cdn.dealpos.app/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg",
                    "https://cdn.dealpos.app/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg"
                  ],
                  "Variants": [
                    {
                      "ID": "a39787d8-2c20-428c-babf-b61c257d337e",
                      "Model": "Medium",
                      "Code": "1003M",
                      "UnitCost": 125000,
                      "UnitPrice": 200000,
                      "Discount": 10,
                      "Discontinued": false,
                      "Description": "Variant Description"
                    },
                    {
                      "ID": "7293d4b4-20c9-44ee-898b-ffafc294f259",
                      "Model": "Large",
                      "Code": "1003L",
                      "UnitCost": 150000,
                      "UnitPrice": 225000,
                      "Discount": 10,
                      "Discontinued": false,
                      "Description": "Variant Description"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Product not found."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetProductIDByID' expects parameter '@Code', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/WithInventoryByListID": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductListWithInventoryByListID",
        "summary": "Get Product List With Inventory By List ID",
        "description": "Get Product List WIth Inventory By List ID",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "without Composite",
                    "required": [
                      "From",
                      "To",
                      "ListOutlet",
                      "ListID"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "number",
                        "description": "Quantity Start",
                        "x-stoplight": {
                          "id": "to48ajmf3eps3"
                        }
                      },
                      "To": {
                        "type": "number",
                        "description": "Quantity To",
                        "x-stoplight": {
                          "id": "5qty8xgrifqd1"
                        }
                      },
                      "ListOutlet": {
                        "type": "array",
                        "description": "Array list of Outlet that use to get Product ID",
                        "items": {
                          "type": "string"
                        }
                      },
                      "ListID": {
                        "type": "array",
                        "description": "Array list of multiple product ID from chosen outlet",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Discontinued": {
                        "type": "string",
                        "description": "Show discontinued status of Product and Variant",
                        "default": "No",
                        "enum": [
                          "No",
                          "Yes",
                          "All"
                        ],
                        "x-stoplight": {
                          "id": "smvwmp8lguwjr"
                        }
                      }
                    },
                    "example": {
                      "From": 0,
                      "To": 10,
                      "ListOutlet": [
                        "Outlet1"
                      ],
                      "ListID": [
                        "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                        "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca"
                      ],
                      "Discontinued": "No"
                    }
                  },
                  {
                    "title": "with Composite",
                    "required": [
                      "From",
                      "To",
                      "ListOutlet",
                      "ListID"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "number",
                        "description": "Quantity Start",
                        "x-stoplight": {
                          "id": "to48ajmf3eps3"
                        }
                      },
                      "To": {
                        "type": "number",
                        "description": "Quantity To",
                        "x-stoplight": {
                          "id": "5qty8xgrifqd1"
                        }
                      },
                      "ListOutlet": {
                        "type": "array",
                        "description": "Array list of Outlet that use to get Product ID",
                        "items": {
                          "type": "string"
                        }
                      },
                      "ListID": {
                        "type": "array",
                        "description": "Array list of multiple product ID from chosen outlet",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Discontinued": {
                        "type": "string",
                        "description": "Show discontinued status of Product and Variant",
                        "default": "No",
                        "enum": [
                          "No",
                          "Yes",
                          "All"
                        ]
                      },
                      "CompositeInventory": {
                        "type": "boolean",
                        "description": "Indicates if inventory is composite",
                        "x-stoplight": {
                          "id": "smvwmp8lguwjr"
                        }
                      }
                    },
                    "example": {
                      "From": 0,
                      "To": 10,
                      "ListOutlet": [
                        "Outlet1"
                      ],
                      "ListID": [
                        "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                        "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca"
                      ],
                      "Discontinued": "No",
                      "CompositeInventory": true
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "required": [
                      "Created"
                    ],
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID number of Product "
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of product"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of Product"
                      },
                      "CategoryID": {
                        "type": "string",
                        "description": "ID number of product category"
                      },
                      "Category": {
                        "type": "string",
                        "description": "Name of product category"
                      },
                      "Description": {
                        "type": "string",
                        "description": "Description of product"
                      },
                      "ThumbnailUrl": {
                        "type": "string",
                        "description": "Thumbnail URL of product image"
                      },
                      "ImageUrl": {
                        "type": "string",
                        "description": "image url from product image"
                      },
                      "Created": {
                        "type": "string",
                        "description": "date when product is created"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "The Availablity status of the product",
                        "x-stoplight": {
                          "id": "1wm8nsyylnlhg"
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "description": "Variation for this product ex: size / color",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string",
                              "description": "Id number of variant from product"
                            },
                            "Model": {
                              "type": "string",
                              "description": "Model variant from product, exp: Size L/M/L or Colour Red/White/Blue"
                            },
                            "Code": {
                              "type": "string",
                              "description": "unique code of variant model"
                            },
                            "Inventory": {
                              "type": "integer",
                              "description": "Available Quantity (depricated, use I object)"
                            },
                            "Discontinued": {
                              "type": "boolean",
                              "description": "The availablity of the variants",
                              "x-stoplight": {
                                "id": "i7rhtslokw809"
                              }
                            },
                            "I": {
                              "type": "object",
                              "properties": {
                                "OnHand": {
                                  "type": "integer",
                                  "description": "On Hand Quantity"
                                },
                                "Allocated": {
                                  "type": "integer",
                                  "description": "Allocated Quantity"
                                },
                                "Available": {
                                  "type": "integer",
                                  "description": "Available Quantity"
                                }
                              },
                              "description": "Inventory for the variant"
                            },
                            "UnitPrice": {
                              "type": "number",
                              "description": "Price of variant model."
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                    "Name": "Denim Shirt",
                    "Code": "1342",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ThumbnailUrl": "//res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "Created": "2018-04-06T17:24:17.283",
                    "Discontinued": false,
                    "Variants": [
                      {
                        "ID": "70396e5e-4009-4e12-a9b7-9de0850bc948",
                        "Model": "L",
                        "Code": "1342L",
                        "Discontinued": false,
                        "Inventory": 7,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 3,
                          "Available": 7
                        },
                        "UnitPrice": 250000
                      },
                      {
                        "ID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                        "Model": "M",
                        "Code": "1342M",
                        "Discontinued": false,
                        "Inventory": 8,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 2,
                          "Available": 8
                        },
                        "UnitPrice": 300000
                      }
                    ]
                  },
                  {
                    "ID": "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca",
                    "Name": "Shirt",
                    "Code": "1002",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ThumbnailUrl": "//res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "Created": "2018-04-06T17:24:17.11",
                    "Discontinued": false,
                    "Variants": [
                      {
                        "ID": "397128d4-276d-4baf-aacf-a959c51b7a19",
                        "Model": "L",
                        "Code": "1002L",
                        "Discontinued": false,
                        "Inventory": 10,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 0,
                          "Available": 10
                        },
                        "UnitPrice": 350000
                      },
                      {
                        "ID": "8ed1ff99-c135-4344-acf8-b26bedeb97e5",
                        "Model": "M",
                        "Code": "1002M",
                        "Discontinued": false,
                        "Inventory": 5,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 5,
                          "Available": 5
                        },
                        "UnitPrice": 300000
                      },
                      {
                        "ID": "339e89d0-81e8-430a-834e-bbfa83b58f44",
                        "Model": "S",
                        "Code": "1002S",
                        "Discontinued": false,
                        "Inventory": 7,
                        "I": {
                          "OnHand": 12,
                          "Allocated": 5,
                          "Available": 7
                        },
                        "UnitPrice": 250000
                      }
                    ]
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with the name [offl3ine]",
                  "StackTrace": "   at POS.BLL.API.Converter.DatabaseIDConverter.ConvertOutletName(JsonElement request, POSIdentity _identity, IMemoryCache _cache, POSContext _context) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Converter\\DatabaseIDConverter.cs:line 38\r\n   at POS.WEB.Controllers.v3.ProductController.WithInventoryByListID(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\ProductController.cs:line 406"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/ListID": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductListByID",
        "summary": "Get Product List By ID",
        "description": "You can query a product based on Code or by GUID",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListID"
                ],
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "description": "Array List of multiple product ID ",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListID": [
                  "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                  "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Product ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Product Name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Product Code"
                      },
                      "CategoryID": {
                        "type": "string",
                        "description": "Category ID of Product"
                      },
                      "Category": {
                        "type": "string",
                        "description": "Category of Product"
                      },
                      "Description": {
                        "type": "string",
                        "description": "Product Description\n"
                      },
                      "ImageUrl": {
                        "type": "string",
                        "description": "Product image URL"
                      },
                      "ThumbnailUrl": {
                        "type": "string",
                        "description": "Thumbnail URL of product image"
                      },
                      "ExtraImageURL": {
                        "type": "array",
                        "description": "Additional Image Url",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Created": {
                        "type": "string",
                        "description": "Product Created Date"
                      },
                      "Variants": {
                        "type": "array",
                        "description": "Variation for this product, ex: size/ color",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string"
                            },
                            "Model": {
                              "type": "string"
                            },
                            "Code": {
                              "type": "string"
                            },
                            "UnitPrice": {
                              "type": "number"
                            },
                            "Discount": {
                              "type": "number",
                              "description": "discount percentage of variant's"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                    "Name": "Denim Shirt",
                    "Code": "1342",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ThumbnailUrl": "//res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg",
                    "ExtraImageURL": [
                      "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg",
                      "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg",
                      "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg"
                    ],
                    "Created": "2018-04-06T17:24:17.283",
                    "Variants": [
                      {
                        "ID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                        "Model": "M",
                        "Code": "1342M",
                        "UnitPrice": 500000,
                        "Discount": 20
                      },
                      {
                        "ID": "70396e5e-4009-4e12-a9b7-9de0850bc948",
                        "Model": "L",
                        "Code": "1342L",
                        "UnitPrice": 250000,
                        "Discount": 0
                      }
                    ]
                  },
                  {
                    "ID": "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca",
                    "Name": "Shirt",
                    "Code": "1002",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg",
                    "Created": "2018-04-06T17:24:17.11",
                    "Variants": [
                      {
                        "ID": "397128d4-276d-4baf-aacf-a959c51b7a19",
                        "Model": "L",
                        "Code": "1002L",
                        "UnitPrice": 250000,
                        "Discount": 10
                      },
                      {
                        "ID": "8ed1ff99-c135-4344-acf8-b26bedeb97e5",
                        "Model": "M",
                        "Code": "1002M",
                        "UnitPrice": 250000,
                        "Discount": 0
                      },
                      {
                        "ID": "339e89d0-81e8-430a-834e-bbfa83b58f44",
                        "Model": "S",
                        "Code": "1002S",
                        "UnitPrice": 250000,
                        "Discount": 0
                      }
                    ]
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.WEB.Controllers.v3.ProductController.ListID(JsonElement obj) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\ProductController.cs:line 352"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/DetailByListID": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductListDetailByListID",
        "summary": "Get Product List Detail By ID",
        "description": "Slower compared with /v3/Product/ListID\nBut returns Extra Column p.Description + v.Weight",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListID"
                ],
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "description": "Array List of multiple product ID ",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListID": [
                  "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                  "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string"
                      },
                      "Name": {
                        "type": "string"
                      },
                      "Code": {
                        "type": "string"
                      },
                      "Category": {
                        "type": "string"
                      },
                      "Brand": {
                        "type": "string",
                        "description": "Brand name of product"
                      },
                      "Description": {
                        "type": "string"
                      },
                      "ThumbnailUrl": {
                        "type": "string"
                      },
                      "ImageUrl": {
                        "type": "string"
                      },
                      "Created": {
                        "type": "string"
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string"
                            },
                            "Model": {
                              "type": "string"
                            },
                            "Code": {
                              "type": "string"
                            },
                            "Weight": {
                              "type": "integer"
                            },
                            "UnitPrice": {
                              "type": "integer"
                            }
                          }
                        }
                      },
                      "ProductImages": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string"
                            },
                            "ProductID": {
                              "type": "string"
                            },
                            "URL": {
                              "type": "string"
                            },
                            "Index": {
                              "type": "integer"
                            }
                          }
                        }
                      }
                    }
                  },
                  "x-examples": {
                    "example-1": [
                      {
                        "ID": "7c1a0b28-45f2-4b65-8fe5-d5043f19ed74",
                        "Name": "Baju Bunga 2",
                        "Code": "rohjebp3",
                        "Category": "Bahan Cat",
                        "Description": "ukuran tersedia saat ini hanya S",
                        "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/net/tokoferdi2//Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/A13usaonutL._CLa_7C2140_2C2000_7C71zRbNUKhML.png_7C0_2C0_2C2140_2C2000_2B0.0_2C0.0_2C2140.0_2C2000.0_AC_UX342_.jpg",
                        "Created": "2022-06-14T11:30:37.4",
                        "Variants": [
                          {
                            "ID": "40df733b-c4c4-4aa6-9aeb-9749bca315e5",
                            "Model": "Default",
                            "Code": "rohjebp3",
                            "Weight": 123,
                            "UnitPrice": 1428822
                          },
                          {
                            "ID": "c3c4283c-1dd4-424b-b76b-c8e8b1581b42",
                            "Model": "default2",
                            "Code": "rohjebp4",
                            "Weight": 222,
                            "UnitPrice": 2333333
                          }
                        ],
                        "ProductImages": [
                          {
                            "ID": "47cf5626-fafb-40db-aeea-8733dada55c0",
                            "ProductID": "7c1a0b28-45f2-4b65-8fe5-d5043f19ed74",
                            "URL": "//res.cloudinary.com/dealpos/image/upload/net/tokoferdi2//Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/ssclapatientmanrosesblkhi_2000x.jpg",
                            "Index": 1
                          }
                        ]
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "ID": "7c1a0b28-45f2-4b65-8fe5-d5043f19ed74",
                    "Name": "Baju Bunga 2",
                    "Code": "TOP",
                    "Category": "TOP",
                    "Brand": "Classic",
                    "Description": "ukuran tersedia saat ini hanya S",
                    "ThumbnailUrl": "//res.cloudinary.com/dealpos/image/upload/w_80/net/tokoferdi2/Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/A13usaonutL._CLa_7C2140_2C2000_7C71zRbNUKhML.png_7C0_2C0_2C2140_2C2000_2B0.0_2C0.0_2C2140.0_2C2000.0_AC_UX342_.jpg",
                    "ImageUrl": "//res.cloudinary.com/dealpos/image/upload/net/tokoferdi2/Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/A13usaonutL._CLa_7C2140_2C2000_7C71zRbNUKhML.png_7C0_2C0_2C2140_2C2000_2B0.0_2C0.0_2C2140.0_2C2000.0_AC_UX342_.jpg",
                    "Created": "2022-06-14T11:30:37.4",
                    "Variants": [
                      {
                        "ID": "40df733b-c4c4-4aa6-9aeb-9749bca315e5",
                        "Model": "L",
                        "Code": "TOPL",
                        "Weight": 123,
                        "UnitPrice": 1428822
                      },
                      {
                        "ID": "c3c4283c-1dd4-424b-b76b-c8e8b1581b42",
                        "Model": "XL",
                        "Code": "TOPXL",
                        "Weight": 222,
                        "UnitPrice": 2333333
                      }
                    ],
                    "ProductImages": [
                      {
                        "ID": "47cf5626-fafb-40db-aeea-8733dada55c0",
                        "ProductID": "7c1a0b28-45f2-4b65-8fe5-d5043f19ed74",
                        "URL": "//res.cloudinary.com/dealpos/image/upload/net/tokoferdi2/Product/7c1a0b28-45f2-4b65-8fe5-d5043f19ed74/ssclapatientmanrosesblkhi_2000x.jpg",
                        "Index": 1
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/WithOutletPriceByListID": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductListWithOutletPriceByListID",
        "summary": "Get Product List With Outlet Price By List ID",
        "description": "Get Product List With Outlet Price By List ID",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListID"
                ],
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "description": "Array list of multiple product ID ",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListID": [
                  "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                  "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID number of Product \n"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of product "
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of Product"
                      },
                      "CategoryID": {
                        "type": "string",
                        "description": "ID number of product category"
                      },
                      "Category": {
                        "type": "string",
                        "description": "name of product category"
                      },
                      "Description": {
                        "type": "string",
                        "description": "Description of product"
                      },
                      "ThumbnailUrl": {
                        "type": "string",
                        "description": "Thumbnail URL of product image"
                      },
                      "ImageUrl": {
                        "type": "string",
                        "description": "image url from product image"
                      },
                      "Created": {
                        "type": "string",
                        "description": "date when product is created"
                      },
                      "Variants": {
                        "type": "array",
                        "description": "variaton of the product, exp: size/ colour from product",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string",
                              "description": "Id number of variant from product"
                            },
                            "Model": {
                              "type": "string",
                              "description": "Model variant from product, exp: Size L/M/L or Colour Red/White/Blue"
                            },
                            "Code": {
                              "type": "string",
                              "description": "unique code of variant model"
                            },
                            "UnitPrice": {
                              "type": "integer",
                              "description": "Unit price of variant model"
                            },
                            "OutletPrice": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "Outlet": {
                                    "type": "string",
                                    "description": "Outlet that assign exlusive price from variant model"
                                  },
                                  "UnitPrice": {
                                    "type": "number",
                                    "description": "Price of variant model that use in chosen outlet. "
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                    "Name": "Denim Shirt",
                    "Code": "1342",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ThumbnailUrl": "//res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95///res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "Created": "2018-04-06T17:24:17.283",
                    "Variants": [
                      {
                        "ID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                        "Model": "M",
                        "Code": "1342M",
                        "UnitPrice": 500000,
                        "OutletPrice": [
                          {
                            "Outlet": "Outlet1",
                            "UnitPrice": 550000
                          },
                          {
                            "Outlet": "Outlet2",
                            "UnitPrice": 575000
                          }
                        ]
                      },
                      {
                        "ID": "70396e5e-4009-4e12-a9b7-9de0850bc948",
                        "Model": "L",
                        "Code": "1342L",
                        "UnitPrice": 250000,
                        "OutletPrice": [
                          {
                            "Outlet": "Outlet1",
                            "UnitPrice": 275000
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "ID": "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca",
                    "Name": "Shirt",
                    "Code": "1002",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg",
                    "Created": "2018-04-06T17:24:17.11",
                    "Variants": [
                      {
                        "ID": "397128d4-276d-4baf-aacf-a959c51b7a19",
                        "Model": "L",
                        "Code": "1002L",
                        "UnitPrice": 250000,
                        "OutletPrice": []
                      },
                      {
                        "ID": "8ed1ff99-c135-4344-acf8-b26bedeb97e5",
                        "Model": "M",
                        "Code": "1002M",
                        "UnitPrice": 250000,
                        "OutletPrice": []
                      },
                      {
                        "ID": "339e89d0-81e8-430a-834e-bbfa83b58f44",
                        "Model": "S",
                        "Code": "1002S",
                        "UnitPrice": 250000,
                        "OutletPrice": []
                      }
                    ]
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The JSON value could not be converted to System.Collections.Generic.List`1[System.Guid]. Path: $[0] | LineNumber: 0 | BytePositionInLine: 3.",
                  "StackTrace": "   at System.Text.Json.ThrowHelper.ReThrowWithPath..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Product/WithPricebookByListID": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductListWithPricebookByListID",
        "summary": "Get Product List With Pricebook By List ID",
        "description": "Get Product List With Pricebook By List ID",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListID"
                ],
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "description": "Array list of multiple product ID ",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListID": [
                  "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                  "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID number of Product \n"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of product "
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of Product"
                      },
                      "CategoryID": {
                        "type": "string",
                        "description": "ID number of product category"
                      },
                      "Category": {
                        "type": "string",
                        "description": "name of product category"
                      },
                      "Description": {
                        "type": "string",
                        "description": "Description of product"
                      },
                      "ThumbnailUrl": {
                        "type": "string",
                        "description": "Thumbnail URL of product image"
                      },
                      "ImageUrl": {
                        "type": "string",
                        "description": "image url from product image"
                      },
                      "Created": {
                        "type": "string",
                        "description": "date when product is created"
                      },
                      "Variants": {
                        "type": "array",
                        "description": "variaton of the product, exp: size/ colour from product",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string",
                              "description": "Id number of variant from product"
                            },
                            "Model": {
                              "type": "string",
                              "description": "Model variant from product, exp: Size L/M/L or Colour Red/White/Blue"
                            },
                            "Code": {
                              "type": "string",
                              "description": "unique code of variant model"
                            },
                            "UnitPrice": {
                              "type": "integer",
                              "description": "Unit price of variant model"
                            },
                            "Pricebook": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "Name": {
                                    "type": "string",
                                    "description": "Pricebook's Name that assigned"
                                  },
                                  "MinimumQuantity": {
                                    "type": "number",
                                    "description": "Minimum qty of product in pricebook"
                                  },
                                  "UnitPrice": {
                                    "type": "number",
                                    "description": "Unitprice in pricebook"
                                  },
                                  "PriceDiscount": {
                                    "type": "number",
                                    "description": "Discount Percentage in pricebook"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "14cf5b6b-0fb9-42b9-a956-09339b3985fe",
                    "Name": "Denim Shirt",
                    "Code": "1342",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ThumbnailUrl": "//res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/w_80/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95///res.cloudinary.com/pos/image/upload/com/christopher/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                    "Created": "2018-04-06T17:24:17.283",
                    "Variants": [
                      {
                        "ID": "6d3b0821-1f48-4ca3-87fa-5d9ce2f9bb1e",
                        "Model": "M",
                        "Code": "1342M",
                        "UnitPrice": 500000,
                        "Pricebook": [
                          {
                            "Name": "Pricebook1",
                            "MinimumQuantity": 1,
                            "UnitPrice": 500000,
                            "PriceDiscount": 0
                          },
                          {
                            "Name": "Pricebook2",
                            "MinimumQuantity": 10,
                            "UnitPrice": 450000,
                            "PriceDiscount": 10
                          }
                        ]
                      },
                      {
                        "ID": "70396e5e-4009-4e12-a9b7-9de0850bc948",
                        "Model": "L",
                        "Code": "1342L",
                        "UnitPrice": 250000,
                        "OutletPrice": [
                          {
                            "Outlet": "Outlet1",
                            "UnitPrice": 275000
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "ID": "f0e2bf85-cb49-4244-9e73-6e0a7403e2ca",
                    "Name": "Shirt",
                    "Code": "1002",
                    "CategoryID": "6d3817dc-4589-42b4-9464-4d6599046f02",
                    "Category": "Dress",
                    "Description": "Product Description",
                    "ImageUrl": "//res.cloudinary.com/pos/image/upload/w_80/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlpm9ltdiht.jpg",
                    "Created": "2018-04-06T17:24:17.11",
                    "Variants": [
                      {
                        "ID": "397128d4-276d-4baf-aacf-a959c51b7a19",
                        "Model": "L",
                        "Code": "1002L",
                        "UnitPrice": 250000,
                        "Pricebook": []
                      },
                      {
                        "ID": "8ed1ff99-c135-4344-acf8-b26bedeb97e5",
                        "Model": "M",
                        "Code": "1002M",
                        "UnitPrice": 250000,
                        "Pricebook": []
                      },
                      {
                        "ID": "339e89d0-81e8-430a-834e-bbfa83b58f44",
                        "Model": "S",
                        "Code": "1002S",
                        "UnitPrice": 250000,
                        "Pricebook": []
                      }
                    ]
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The JSON value could not be converted to System.Collections.Generic.List`1[System.Guid]. Path: $[0] | LineNumber: 0 | BytePositionInLine: 3.",
                  "StackTrace": "   at System.Text.Json.ThrowHelper.ReThrowWithPath..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/Code": {
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "GetVariantByCode",
        "summary": "Get a Variant By Code",
        "description": "\nGet Variant info by code.\n\nThis API does not return the OnHand inventory , to retreive the inventory please use this API [Get Inventory By Code](https://developer.dealpos.com/openapi/openapi/inventory/getinventorybycode)\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "in": "header",
            "name": "promotions_field_include",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "example": true,
            "description": "Set to 'true' to include promotional fields in the response. Default is 'false'."
          },
          {
            "name": "Code",
            "in": "query",
            "description": "Get from Code of variant that you want to get the detail.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "SW001"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/variant-result"
                },
                "examples": {
                  "Default": {
                    "value": {
                      "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
                      "Category": "Food",
                      "Brand": "ABC",
                      "Product": "Sandwich",
                      "Variant": "Default",
                      "Name": "Sandwich",
                      "Code": "SW001",
                      "Weight": 100,
                      "Type": "Composite",
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "ImageURL": "https://cdn.dealpos.app/net/sandbox/Product/97d4e846-ea8d-4c3c-af2e-682b4ed6e48e/image1.jpeg",
                      "ThumbnailURL": "https://dealpos.b-cdn.net/net/sandbox/Product/97d4e846-ea8d-4c3c-af2e-682b4ed6e48e/image1.jpeg?width=80",
                      "Description": "Delicious sandwich with fresh ingredients",
                      "Components": [
                        {
                          "Code": "S001",
                          "Name": "Sausage",
                          "Qty": 1
                        },
                        {
                          "Code": "B001",
                          "Name": "Bread",
                          "Qty": 2
                        }
                      ],
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ]
                    }
                  },
                  "With Promotions": {
                    "summary": "A Variant with promotional event",
                    "value": {
                      "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
                      "Category": "Food",
                      "Brand": "ABC",
                      "Product": "Sandwich",
                      "Variant": "Default",
                      "Name": "Sandwich",
                      "Code": "SW001",
                      "Weight": 100,
                      "Type": "Composite",
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "ImageURL": "https://cdn.dealpos.app/net/sandbox/Product/97d4e846-ea8d-4c3c-af2e-682b4ed6e48e/image1.jpeg",
                      "ThumbnailURL": "https://dealpos.b-cdn.net/net/sandbox/Product/97d4e846-ea8d-4c3c-af2e-682b4ed6e48e/image1.jpeg?width=80",
                      "Description": "Delicious sandwich with fresh ingredients",
                      "Components": [
                        {
                          "Code": "S001",
                          "Name": "Sausage",
                          "Qty": 1
                        },
                        {
                          "Code": "B001",
                          "Name": "Bread",
                          "Qty": 2
                        }
                      ],
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ],
                      "Promotions": [
                        {
                          "Name": "DealPOS Book Fair 2022",
                          "UnitPrice": 100000,
                          "ExtraCost": 0,
                          "Discount": 0,
                          "StartDate": "2022-04-13T00:00:00",
                          "ExpirationDate": "2022-04-21T00:00:00",
                          "StartTime": "00:00:00",
                          "ExpirationTime": "23:59:59",
                          "Type": "Product",
                          "PromotionID": "06777bca-ad15-4806-a625-009fce7bc54a"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/ID": {
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "GetVariantByID",
        "summary": "Get a Variant By ID",
        "description": "> This endpoint is coming soon\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint **\n\n<br>\nGet Variant info by Code\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "in": "header",
            "name": "promotions_field_include",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "example": true,
            "description": "Set to 'true' to include promotional fields in the response. Default is 'false'."
          },
          {
            "name": "ID",
            "in": "query",
            "description": "Get from ID of variant that you want to get the detail. This is primary key for the object",
            "required": true,
            "schema": {
              "type": "string",
              "example": "f2296e61-e405-4884-9e54-55f14a91748b"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of variant results, with and without a pricebook.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/variant-result"
                },
                "examples": {
                  "Without Pricebook": {
                    "summary": "A Variant without pricebook",
                    "value": {
                      "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
                      "Category": "Food",
                      "Product": "Sandwich",
                      "Variant": "Default",
                      "Name": "Sandwich",
                      "Code": "SW001",
                      "Weight": 100,
                      "Type": "Composite",
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "Components": [
                        {
                          "Code": "S001",
                          "Name": "Sausage",
                          "Qty": 1
                        },
                        {
                          "Code": "B001",
                          "Name": "Bread",
                          "Qty": 2
                        }
                      ],
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ]
                    }
                  },
                  "With Pricebook": {
                    "summary": "A Variant with pricebook",
                    "value": {
                      "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
                      "Category": "Food",
                      "Product": "Sandwich",
                      "Variant": "Default",
                      "Name": "Sandwich",
                      "Code": "SW001",
                      "Weight": 100,
                      "Type": "Composite",
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "Components": [
                        {
                          "Code": "S001",
                          "Name": "Sausage",
                          "Qty": 1
                        },
                        {
                          "Code": "B001",
                          "Name": "Bread",
                          "Qty": 2
                        }
                      ],
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ],
                      "Pricebook": [
                        {
                          "Name": "Reseller Price",
                          "UnitPrice": 40000,
                          "MinimumQuantity": 2
                        },
                        {
                          "Name": "Grocery Price",
                          "UnitPrice": 30000,
                          "MinimumQuantity": 5
                        }
                      ]
                    }
                  },
                  "With Promotions": {
                    "summary": "A Variant with promotion event",
                    "value": {
                      "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
                      "Category": "Food",
                      "Product": "Sandwich",
                      "Variant": "Default",
                      "Name": "Sandwich",
                      "Code": "SW001",
                      "Weight": 100,
                      "Type": "Composite",
                      "OrderPrice": 0,
                      "UnitCost": 20000,
                      "UnitPrice": 50000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Discontinued": false,
                      "Components": [
                        {
                          "Code": "S001",
                          "Name": "Sausage",
                          "Qty": 1
                        },
                        {
                          "Code": "B001",
                          "Name": "Bread",
                          "Qty": 2
                        }
                      ],
                      "OutletPrice": [
                        {
                          "Outlet": "Outlet1",
                          "Price": 55000,
                          "ExtraCost": 5000
                        }
                      ],
                      "Promotions": [
                        {
                          "Name": "DealPOS Book Fair 2022",
                          "UnitPrice": 100000,
                          "ExtraCost": 0,
                          "Discount": 0,
                          "StartDate": "2022-04-13T00:00:00",
                          "ExpirationDate": "2022-04-21T00:00:00",
                          "StartTime": "00:00:00",
                          "ExpirationTime": "23:59:59",
                          "Type": "Product",
                          "PromotionID": "06777bca-ad15-4806-a625-009fce7bc54a"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {}
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/GetIDByListCode": {
      "get": {
        "tags": [
          "Deprecated"
        ],
        "operationId": "GetVariantIDByListCode",
        "summary": "Get Variant ID By List Code",
        "description": "Given a list of ProductSKU, the system will then return Internal ProductID+VariantID",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "List of multiple Product Variant's Code",
                "items": {
                  "type": "string"
                }
              },
              "example": [
                "1000",
                "1001",
                "1002"
              ]
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Variant ID"
                      },
                      "ProductID": {
                        "type": "string",
                        "description": "Product ID"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant Code"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "e156a0a9-1552-49d4-b597-d4ca09c3ed54",
                    "ProductID": "418c0cde-1e5f-4c77-a9f4-312bc96939cb",
                    "Code": "1000"
                  },
                  {
                    "ID": "d2dfbf1a-da61-48e4-9d4d-a921ebfcb8f5",
                    "ProductID": "6126764d-57aa-425d-ade6-bc3a847da98a",
                    "Code": "1001"
                  },
                  {
                    "ID": "1587b105-b8a9-404f-907a-f63326003558",
                    "ProductID": "7d27dc9f-06f7-4765-bfd3-437903b020fa",
                    "Code": "1002"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/GetIDByListCodeDiscontinued": {
      "get": {
        "tags": [
          "Deprecated"
        ],
        "operationId": "GetVariantIDByListCodeDiscontinued",
        "summary": "Get Variant ID By List Code Discontinued",
        "description": "Given a list of ProductSKU, the system will then return Internal ProductID+VariantID filter by Discontinued State",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListCode"
                ],
                "type": "object",
                "properties": {
                  "ListCode": {
                    "type": "array",
                    "description": "Variant Code",
                    "items": {
                      "type": "string"
                    }
                  },
                  "Discontinued": {
                    "type": "string",
                    "description": "Discontinued status of variant",
                    "example": "All / Yes / No",
                    "default": "No"
                  }
                }
              },
              "example": {
                "ListCode": [
                  "1342L",
                  "1342M"
                ],
                "Discontinued": "All"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Variant ID"
                      },
                      "ProductID": {
                        "type": "string",
                        "description": "Product ID"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant Code"
                      },
                      "Discontinued": {
                        "type": "boolean",
                        "description": "Discontinue Status"
                      }
                    }
                  },
                  "example": [
                    {
                      "ID": "e156a0a9-1552-49d4-b597-d4ca09c3ed54",
                      "ProductID": "418c0cde-1e5f-4c77-a9f4-312bc96939cb",
                      "Code": "1342L",
                      "Discontinued": false
                    },
                    {
                      "ID": "d2dfbf1a-da61-48e4-9d4d-a921ebfcb8f5",
                      "ProductID": "6126764d-57aa-425d-ade6-bc3a847da98a",
                      "Code": "1342M",
                      "Discontinued": true
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/ListID": {
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "GetVariantListID",
        "summary": "Get Variant Code By List ID",
        "description": "Get Variant List ID by Outlet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListID"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "outlet name"
                  },
                  "ListID": {
                    "type": "array",
                    "description": "an array or arrangement of a products ID",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "Outlet": "Outlet 1",
                "ListID": [
                  "55d7d915-eb82-4dfb-ac40-62f04ff50687",
                  "51ae7f87-fa9d-41e5-a994-be14a9df889b"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Product ID"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Product Code"
                      },
                      "Price": {
                        "type": "integer",
                        "description": "Product unit sell price"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "55d7d915-eb82-4dfb-ac40-62f04ff50687",
                    "Code": "abcd",
                    "Price": 3000
                  },
                  {
                    "ID": "51ae7f87-fa9d-41e5-a994-be14a9df889b",
                    "Code": "2018",
                    "Price": 6000
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.WEB.Controllers.v3.VariantController.ListID(JsonElement obj) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\VariantController.cs:line 313"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Variant/GetByListCode": {
      "get": {
        "tags": [
          "Variant"
        ],
        "operationId": "GetVariantByListCode",
        "summary": "Get Variant By List Code",
        "description": "Get List Variant By List Code\n >**Also available as [HTTP\nPOST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Variant/GetByListCode)**",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ListCode"
                ],
                "type": "object",
                "properties": {
                  "ListCode": {
                    "type": "array",
                    "description": "List of Variants Code of product. Max=100 variants code",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListCode": [
                  "1315L",
                  "1315XL"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique ID of the Variant"
                          },
                          "Name": {
                            "type": "string",
                            "description": "Name of the Variant"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of the Variant"
                          },
                          "Type": {
                            "type": "string",
                            "description": "Product Type of the Variant"
                          },
                          "UnitPrice": {
                            "type": "integer",
                            "description": "Unit Selling Price of the Variant"
                          },
                          "UnitCost": {
                            "type": "integer",
                            "description": "Unit Buying Cost of the Variant"
                          },
                          "ThumbnailURL": {
                            "type": "string",
                            "description": "Thumbnail URL of the Variant"
                          },
                          "Discontinued": {
                            "type": "boolean",
                            "description": "Discontinue Status"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "d01b9ab2-11fb-4fe0-a1a1-49790645da5d",
                      "Name": "Shirt (L)",
                      "Code": "1315L",
                      "Type": "Standard",
                      "UnitPrice": 500000,
                      "UnitCost": 2000,
                      "ThumbnailURL": "https://dealpos.b-cdn.net/net/sandbox/Product/97d4e846-ea8d-4c3c-af2e-682b4ed6e48e/image1.jpeg?width=80",
                      "Discontinued": false
                    },
                    {
                      "ID": "7e8ccca1-9690-4cd3-98a3-9b26079d90b5",
                      "Name": "Shirt (XL)",
                      "Code": "1315XL",
                      "Type": "Standard",
                      "UnitPrice": 300000,
                      "UnitCost": 2000,
                      "ThumbnailURL": "https://dealpos.b-cdn.net/net/sandbox/Product/97d4e846-ea8d-4c3c-af2e-682b4ed6e48e/image2.jpeg?width=80",
                      "Discontinued": false
                    }
                  ]
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/OutletPrice": {
      "get": {
        "tags": [
          "Outlet Price"
        ],
        "operationId": "GetOutletPriceByCode",
        "summary": "Get Outlet Price By Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/OutletPrice/p)**\n\n<br>\nGet Outlet Price By Variant Code\n\nRequired Group Role: \"**Products**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Code",
            "in": "query",
            "description": "Variant's code",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2005"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Code": {
                      "type": "string",
                      "description": "the variant code was applied to get outlet price"
                    },
                    "Outlets": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "outlet location of the outlet price"
                          },
                          "ExtraCost": {
                            "type": "number",
                            "description": "the extra cost added on cost outlets"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "the price applied for the outlet"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "the price discount of the outlet price"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Code": "2005",
                  "Outlets": [
                    {
                      "Outlet": "Outlet1",
                      "ExtraCost": 100000,
                      "UnitPrice": 112000,
                      "Discount": 0
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Outlet Price"
        ],
        "operationId": "UpdateOutletPrice",
        "summary": "Update Outlet Price",
        "description": "Update Outlet Price\n\nYou must have \"**EDIT**\" role in \"**Products**\" Module  OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code",
                  "Outlets"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Variant's code"
                  },
                  "Outlets": {
                    "type": "array",
                    "items": {
                      "required": [
                        "ExtraCost",
                        "Outlet",
                        "UnitPrice"
                      ],
                      "type": "object",
                      "properties": {
                        "Outlet": {
                          "type": "string",
                          "description": "Outlet's name"
                        },
                        "ExtraCost": {
                          "type": "number",
                          "description": "Extra cost to be added in this outlet"
                        },
                        "UnitPrice": {
                          "type": "number",
                          "description": "Outlet selling price"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Code": "2005",
                "Outlets": [
                  {
                    "Outlet": "Outlet1",
                    "ExtraCost": 100000,
                    "UnitPrice": 112000
                  },
                  {
                    "Outlet": "Outlet2",
                    "ExtraCost": 100000,
                    "UnitPrice": 112000
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Outlet price ID"
                    }
                  }
                },
                "example": {
                  "ID": "3b3201cd-81b9-46f8-80f6-8c905af70025"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet outlet1 not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at POS.Library.Helper.JSONPropertyChecker.ToObject[T](JsonElement element) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 141\r\n   at POS.WEB.Controllers.v3.OutletPriceController.Post(JsonElement req) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\OutletPriceController.cs:line 141"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "tags": [
          "Outlet Price"
        ],
        "operationId": "CreateOutletPrice",
        "summary": "Create an Outlet Price",
        "description": "Add Outlet Price in Product\n\nYou must have \"**EDIT**\" role in \"**Products**\" Module  OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code",
                  "Outlets"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Variant code"
                  },
                  "Outlets": {
                    "type": "array",
                    "items": {
                      "required": [
                        "ExtraCost",
                        "Outlet",
                        "UnitPrice"
                      ],
                      "type": "object",
                      "properties": {
                        "Outlet": {
                          "type": "string",
                          "description": "Outlet name"
                        },
                        "ExtraCost": {
                          "type": "number",
                          "description": "Cost to be added for this outlet"
                        },
                        "UnitPrice": {
                          "type": "number",
                          "description": "Outlet selling price"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Code": "2005",
                "Outlets": [
                  {
                    "Outlet": "Outlet1",
                    "ExtraCost": 100000,
                    "UnitPrice": 112000
                  },
                  {
                    "Outlet": "Outlet2",
                    "ExtraCost": 100000,
                    "UnitPrice": 112000
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Outlet price has been created"
                    }
                  }
                },
                "example": {
                  "ID": "3b3201cd-81b9-46f8-80f6-8c905af70025"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Outlet Price"
        ],
        "operationId": "DeleteOutletPrice",
        "summary": "Delete an Outlet Price",
        "description": "Delete an Outlet Price\n\nYou must have \"**EDIT**\" role in \"**Products**\" Module  OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code",
                  "Outlets"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Variant code"
                  },
                  "Outlets": {
                    "type": "array",
                    "items": {
                      "required": [
                        "Outlet"
                      ],
                      "type": "object",
                      "properties": {
                        "Outlet": {
                          "type": "string",
                          "description": "Outlet's name"
                        },
                        "Cost": {
                          "type": "number",
                          "description": "Outlet extra cost"
                        },
                        "Price": {
                          "type": "number",
                          "description": "Outlet selling price"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Code": "2005",
                "Outlets": [
                  {
                    "Outlet": "Outlet1",
                    "Cost": 100000,
                    "Price": 112000
                  },
                  {
                    "Outlet": "Outlet2",
                    "Cost": 100000,
                    "Price": 112000
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Outlet price has been deleted."
                    }
                  }
                },
                "example": {
                  "ID": "b3201cd-81b9-46f8-80f6-8c905af70025"
                }
              }
            }
          }
        }
      }
    },
    "/Invoice/List": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "operationId": "CreateMultipleInvoice",
        "summary": "Create Multiple Invoice",
        "description": "Create Multiples Invoices based on Number.\n\nYou must have \"**CREATE**\" role in \"**Orders**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "type": "array",
                    "items": {
                      "required": [
                        "Number",
                        "Outlet"
                      ],
                      "type": "object",
                      "properties": {
                        "Outlet": {
                          "type": "string",
                          "description": "Outlet.Name\r\n<br>Not required when Outlet.ID is provided (required)"
                        },
                        "Number": {
                          "type": "string",
                          "description": "Invoice number. this is primary key for the object"
                        },
                        "SalesPerson": {
                          "type": "string",
                          "description": "Sales person name"
                        },
                        "TaxType": {
                          "type": "string",
                          "description": "Tax Type"
                        },
                        "Date": {
                          "type": "string",
                          "description": "Date of sale(yyyy/mm/dd)"
                        },
                        "Discount1": {
                          "type": "string",
                          "description": "Discount 1 amount or percentage given"
                        },
                        "Discount2": {
                          "type": "string",
                          "description": "Discount 2 amount or percentage given"
                        },
                        "Delivery": {
                          "type": "string",
                          "description": "Status of delivery",
                          "enum": [
                            "Sent",
                            "Unsent"
                          ]
                        },
                        "Customer": {
                          "required": [
                            "Email",
                            "Name"
                          ],
                          "type": "object",
                          "properties": {
                            "Name": {
                              "type": "string",
                              "description": "Customer name"
                            },
                            "Email": {
                              "type": "string",
                              "description": "Customer email address"
                            },
                            "Phone": {
                              "type": "string",
                              "description": "Customer phone number"
                            },
                            "Address": {
                              "type": "string",
                              "description": "Customer address"
                            },
                            "Gender": {
                              "type": "string",
                              "description": "Customer gender"
                            }
                          }
                        },
                        "Variants": {
                          "type": "array",
                          "items": {
                            "required": [
                              "Code",
                              "Price",
                              "Quantity"
                            ],
                            "type": "object",
                            "properties": {
                              "Code": {
                                "type": "string",
                                "description": "Code of variant"
                              },
                              "Quantity": {
                                "type": "string",
                                "description": "Quantity of variant"
                              },
                              "Price": {
                                "type": "number",
                                "description": "Price of variant"
                              },
                              "Discount": {
                                "type": "integer",
                                "description": "Discount amount or percentage"
                              },
                              "Note": {
                                "type": "string",
                                "description": "Note of variant"
                              }
                            }
                          }
                        },
                        "Payment": {
                          "type": "array",
                          "items": {
                            "required": [
                              "Amount",
                              "Method"
                            ],
                            "type": "object",
                            "properties": {
                              "Amount": {
                                "type": "number",
                                "description": "Total amount"
                              },
                              "Method": {
                                "type": "string",
                                "description": "Payment method"
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": [
                      {
                        "Outlet": "Outlet1",
                        "Number": "18.10.00009",
                        "SalesPerson": "Sales 10",
                        "TaxType": "PPN 10%",
                        "Date": "2018-09-07",
                        "Discount1": "5",
                        "Discount2": "2",
                        "Delivery": "Sent",
                        "Customer": {
                          "Name": "Hendry",
                          "Email": "hendry@dealpos.com",
                          "Phone": "085710977713",
                          "Address": "JL. Pluit Karang Jelita b5 no.51",
                          "Gender": "Male"
                        },
                        "Variants": [
                          {
                            "Code": "2014",
                            "Quantity": "10",
                            "Price": "3500",
                            "Discount": 5,
                            "Note": "Item 1"
                          },
                          {
                            "Code": "2018",
                            "Quantity": "10",
                            "Price": "4000",
                            "Discount": 10,
                            "Note": "Item 2"
                          }
                        ],
                        "Payment": [
                          {
                            "Amount": "80000",
                            "Method": "Cash"
                          }
                        ]
                      },
                      {
                        "Outlet": "Outlet1",
                        "Number": "18.10.00009",
                        "SalesPerson": "Sales 10",
                        "TaxType": "PPN 10%",
                        "Date": "2018-09-07",
                        "Discount1": "5",
                        "Discount2": "2",
                        "Delivery": "Sent",
                        "Customer": {
                          "Name": "Hendry",
                          "Email": "hendry@dealpos.com",
                          "Phone": "085710977713",
                          "Address": "JL. Pluit Karang Jelita b5 no.51",
                          "Gender": "Male"
                        },
                        "Variants": [
                          {
                            "Code": "2014",
                            "Quantity": "10",
                            "Price": "3500",
                            "Discount": 5,
                            "Note": "Item 1"
                          },
                          {
                            "Code": "2018",
                            "Quantity": "10",
                            "Price": "4000",
                            "Discount": 10,
                            "Note": "Item 2"
                          }
                        ],
                        "Payment": [
                          {
                            "Amount": "70918.93",
                            "Method": "Cash"
                          }
                        ]
                      },
                      {
                        "Outlet": "Outlet1",
                        "Number": "18.10.00009",
                        "SalesPerson": "Sales 10",
                        "TaxType": "PPN 10%",
                        "Date": "2018-09-07",
                        "Discount1": "5",
                        "Discount2": "2",
                        "Delivery": "Sent",
                        "Customer": {
                          "Name": "Hendry",
                          "Email": "hendry@dealpos.com",
                          "Phone": "085710977713",
                          "Address": "JL. Pluit Karang Jelita b5 no.51",
                          "Gender": "Male"
                        },
                        "Variants": [
                          {
                            "Code": "2014",
                            "Quantity": "10",
                            "Price": "3500",
                            "Discount": 5,
                            "Note": "Item 1"
                          },
                          {
                            "Code": "2018",
                            "Quantity": "10",
                            "Price": "4000",
                            "Discount": 10,
                            "Note": "Item 2"
                          }
                        ],
                        "Payment": [
                          {
                            "Amount": "70918.93",
                            "Method": "Cash"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "title": "With Outlet ID",
                    "type": "array",
                    "items": {
                      "required": [
                        "Number",
                        "OutletID"
                      ],
                      "type": "object",
                      "properties": {
                        "OutletID": {
                          "type": "string",
                          "description": "Outlet.ID (32 character GUID) \r\n<br>Not required when Outlet.Name is provided (required)",
                          "x-stoplight": {
                            "id": "mp3zv5bvqke71"
                          }
                        },
                        "Number": {
                          "type": "string",
                          "description": "Invoice number. this is primary key for the object"
                        },
                        "SalesPerson": {
                          "type": "string",
                          "description": "Sales person name"
                        },
                        "TaxType": {
                          "type": "string",
                          "description": "Tax Type"
                        },
                        "Date": {
                          "type": "string",
                          "description": "Date of sale(yyyy/mm/dd)"
                        },
                        "Discount1": {
                          "type": "string",
                          "description": "Discount 1 amount or percentage given"
                        },
                        "Discount2": {
                          "type": "string",
                          "description": "Discount 2 amount or percentage given"
                        },
                        "Delivery": {
                          "type": "string",
                          "description": "Status of delivery",
                          "enum": [
                            "Sent",
                            "Unsent"
                          ]
                        },
                        "Customer": {
                          "required": [
                            "Email",
                            "Name"
                          ],
                          "type": "object",
                          "properties": {
                            "Name": {
                              "type": "string",
                              "description": "Customer name"
                            },
                            "Email": {
                              "type": "string",
                              "description": "Customer email address"
                            },
                            "Phone": {
                              "type": "string",
                              "description": "Customer phone number"
                            },
                            "Address": {
                              "type": "string",
                              "description": "Customer address"
                            },
                            "Gender": {
                              "type": "string",
                              "description": "Customer gender"
                            }
                          }
                        },
                        "Variants": {
                          "type": "array",
                          "items": {
                            "required": [
                              "Code",
                              "Price",
                              "Quantity"
                            ],
                            "type": "object",
                            "properties": {
                              "Code": {
                                "type": "string",
                                "description": "Code of variant"
                              },
                              "Quantity": {
                                "type": "string",
                                "description": "Quantity of variant"
                              },
                              "Price": {
                                "type": "number",
                                "description": "Price of variant"
                              },
                              "Discount": {
                                "type": "integer",
                                "description": "Discount amount or percentage"
                              },
                              "Note": {
                                "type": "string",
                                "description": "Note of variant"
                              }
                            }
                          }
                        },
                        "Payment": {
                          "type": "array",
                          "items": {
                            "required": [
                              "Amount",
                              "Method"
                            ],
                            "type": "object",
                            "properties": {
                              "Amount": {
                                "type": "number",
                                "description": "Total amount"
                              },
                              "Method": {
                                "type": "string",
                                "description": "Payment method"
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": [
                      {
                        "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                        "Number": "18.10.00009",
                        "SalesPerson": "Sales 10",
                        "TaxType": "PPN 10%",
                        "Date": "2018-09-07",
                        "Discount1": "5",
                        "Discount2": "2",
                        "Delivery": "Sent",
                        "Customer": {
                          "Name": "Hendry",
                          "Email": "hendry@dealpos.com",
                          "Phone": "085710977713",
                          "Address": "JL. Pluit Karang Jelita b5 no.51",
                          "Gender": "Male"
                        },
                        "Variants": [
                          {
                            "Code": "2014",
                            "Quantity": "10",
                            "Price": "3500",
                            "Discount": 5,
                            "Note": "Item 1"
                          },
                          {
                            "Code": "2018",
                            "Quantity": "10",
                            "Price": "4000",
                            "Discount": 10,
                            "Note": "Item 2"
                          }
                        ],
                        "Payment": [
                          {
                            "Amount": "80000",
                            "Method": "Cash"
                          }
                        ]
                      },
                      {
                        "Outlet": "Outlet1",
                        "Number": "18.10.00009",
                        "SalesPerson": "Sales 10",
                        "TaxType": "PPN 10%",
                        "Date": "2018-09-07",
                        "Discount1": "5",
                        "Discount2": "2",
                        "Delivery": "Sent",
                        "Customer": {
                          "Name": "Hendry",
                          "Email": "hendry@dealpos.com",
                          "Phone": "085710977713",
                          "Address": "JL. Pluit Karang Jelita b5 no.51",
                          "Gender": "Male"
                        },
                        "Variants": [
                          {
                            "Code": "2014",
                            "Quantity": "10",
                            "Price": "3500",
                            "Discount": 5,
                            "Note": "Item 1"
                          },
                          {
                            "Code": "2018",
                            "Quantity": "10",
                            "Price": "4000",
                            "Discount": 10,
                            "Note": "Item 2"
                          }
                        ],
                        "Payment": [
                          {
                            "Amount": "70918.93",
                            "Method": "Cash"
                          }
                        ]
                      },
                      {
                        "Outlet": "Outlet1",
                        "Number": "18.10.00009",
                        "SalesPerson": "Sales 10",
                        "TaxType": "PPN 10%",
                        "Date": "2018-09-07",
                        "Discount1": "5",
                        "Discount2": "2",
                        "Delivery": "Sent",
                        "Customer": {
                          "Name": "Hendry",
                          "Email": "hendry@dealpos.com",
                          "Phone": "085710977713",
                          "Address": "JL. Pluit Karang Jelita b5 no.51",
                          "Gender": "Male"
                        },
                        "Variants": [
                          {
                            "Code": "2014",
                            "Quantity": "10",
                            "Price": "3500",
                            "Discount": 5,
                            "Note": "Item 1"
                          },
                          {
                            "Code": "2018",
                            "Quantity": "10",
                            "Price": "4000",
                            "Discount": 10,
                            "Note": "Item 2"
                          }
                        ],
                        "Payment": [
                          {
                            "Amount": "70918.93",
                            "Method": "Cash"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Unique identifier of the invoice."
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet."
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number."
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Name of the customer (null if not applicable)."
                      },
                      "Date": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Invoice creation date."
                      },
                      "EventDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Event date related to the invoice."
                      },
                      "Due": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Due date of the invoice."
                      },
                      "Amount": {
                        "type": "number",
                        "description": "Total amount for the invoice."
                      },
                      "Payment": {
                        "type": "string",
                        "description": "Payment status of the invoice."
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Fulfillment status of the invoice."
                      },
                      "Created": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Creation timestamp of the invoice."
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "3de705c4-53a0-4a66-8ab1-f9737e3ad6fb",
                    "Outlet": "Outlet1",
                    "Number": "18.10.00009",
                    "Customer": "",
                    "Date": "2018-10-17T00:00:00",
                    "EventDate": "0001-01-01T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 120000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2019-08-28T11:00:20.34"
                  },
                  {
                    "ID": "3de7eve4-53a0-tsw6-8ab1-f9737e3adweb",
                    "Outlet": "Outlet1",
                    "Number": "18.10.00002",
                    "Customer": "",
                    "Date": "2018-10-16T00:00:00",
                    "EventDate": "0001-01-01T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 150000,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2019-08-28T11:00:20.34"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "You are not allowed to access Outlet1."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryByList",
        "summary": "Get Inventory By List",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet list of Inventory\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of the product",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The page size of the product list",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 500
          },
          {
            "name": "ListOutletID",
            "in": "query",
            "description": "Guid outlet ID array. if not send the request, it will get from OutletName list",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": "3558dc76-3e32-49c4-84dd-0b3f76f02570,a5f5b2e1-2d3c-4e8f-9f4d-1c2b3a4d5e6f"
          },
          {
            "name": "ListOutlet",
            "in": "query",
            "description": "List of outlet name array. if not send the request, it will get from OutletID list",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": "Outlet1,Outlet2"
          },
          {
            "name": "Category",
            "in": "query",
            "description": "The product category",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Top"
          },
          {
            "name": "QuantityFrom",
            "in": "query",
            "description": "The minimum quantity of the product that users want to view",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "Discontinued",
            "in": "query",
            "description": "The product discontinued status",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "Tags",
            "in": "query",
            "description": "The product tags",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Summer"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Category": {
                        "type": "string",
                        "description": "Name of product category"
                      },
                      "Product": {
                        "type": "string",
                        "description": "Name of product"
                      },
                      "Variant": {
                        "type": "string",
                        "description": "The variant name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "The variant code"
                      },
                      "I": {
                        "type": "object",
                        "properties": {
                          "OnHand": {
                            "type": "number",
                            "description": "On Hand Quantity"
                          },
                          "Allocated": {
                            "type": "integer",
                            "description": "Allocated Quantity"
                          },
                          "Available": {
                            "type": "number",
                            "description": "Available Quantity"
                          },
                          "Threshold": {
                            "type": "integer",
                            "description": "Maximum Stock"
                          },
                          "Buffer": {
                            "type": "integer",
                            "description": "Minimum Stock"
                          }
                        },
                        "description": "Inventory for the variant"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Category": "Top/Men",
                    "Product": "Captain America T-Shirt",
                    "Variant": "Captain America T-Shirt (Large)",
                    "Code": "1003L",
                    "I": {
                      "OnHand": 18.952,
                      "Allocated": 0,
                      "Available": 18.952,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  },
                  {
                    "Category": "Top/Men",
                    "Product": "Captain America T-Shirt",
                    "Variant": "Captain America T-Shirt (Medium)",
                    "Code": "1003M",
                    "I": {
                      "OnHand": 18.952,
                      "Allocated": 0,
                      "Available": 18.952,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  },
                  {
                    "Category": "Top/Men",
                    "Product": "Denim Shirt",
                    "Variant": "Denim Shirt (L)",
                    "Code": "1342L",
                    "I": {
                      "OnHand": 18,
                      "Allocated": 0,
                      "Available": 18,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  },
                  {
                    "Category": "Top/Men",
                    "Product": "Denim Shirt",
                    "Variant": "Denim Shirt (M)",
                    "Code": "1342M",
                    "I": {
                      "OnHand": 18,
                      "Allocated": 0,
                      "Available": 18,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  },
                  {
                    "Category": "Top/Men",
                    "Product": "Jacket",
                    "Variant": "Jacket (L)",
                    "Code": "1021L",
                    "I": {
                      "OnHand": 18,
                      "Allocated": 0,
                      "Available": 18,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  },
                  {
                    "Category": "Top/Men",
                    "Product": "Jacket",
                    "Variant": "Jacket (M)",
                    "Code": "1021M",
                    "I": {
                      "OnHand": 18,
                      "Allocated": 0,
                      "Available": 18,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  },
                  {
                    "Category": "Top/Men",
                    "Product": "Jacket",
                    "Variant": "Jacket (S)",
                    "Code": "1021S",
                    "I": {
                      "OnHand": 18,
                      "Allocated": 0,
                      "Available": 18,
                      "Threshold": 20,
                      "Buffer": 50
                    }
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "Message": "PageSize must not exceed max allowed more than 500"
                  }
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/Code": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryByCode",
        "summary": "Get Inventory By Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet an Inventory based on CodeGet list of Inventory\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet's Name will be show the inventory data",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant code of product this is primary key for the object"
                      }
                    },
                    "example": {
                      "Outlet": [
                        "Outlet1",
                        "Outlet2",
                        "Outlet3"
                      ],
                      "Code": "2001"
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "ListOutletID": {
                        "type": "array",
                        "description": "List of multiple outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "cyyo5s1ytiwo2"
                          }
                        }
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant code of product this is primary key for the object"
                      }
                    },
                    "example": {
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "Code": "2001"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Inventory": {
                        "type": "integer",
                        "description": "OnHand Quantity"
                      },
                      "I": {
                        "type": "object",
                        "properties": {
                          "OnHand": {
                            "type": "integer",
                            "description": "OnHand Quantity"
                          },
                          "Allocated": {
                            "type": "integer",
                            "description": "Allocated Quantity"
                          },
                          "Available": {
                            "type": "integer",
                            "description": "Available Quantity"
                          }
                        }
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "Outlet": "Outlet1",
                        "Inventory": 140,
                        "I": {
                          "OnHand": 140,
                          "Allocated": 50,
                          "Available": 90
                        }
                      },
                      {
                        "Outlet": "Outlet2",
                        "Inventory": 10,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 6,
                          "Available": 4
                        }
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Inventory": 140,
                    "I": {
                      "OnHand": 140,
                      "Allocated": 50,
                      "Available": 90
                    }
                  },
                  {
                    "Outlet": "Outlet2",
                    "Inventory": 10,
                    "I": {
                      "OnHand": 10,
                      "Allocated": 6,
                      "Available": 4
                    }
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {}
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/Log": {
      "get": {
        "tags": [
          "Inventory Log"
        ],
        "operationId": "GetInventoryLog",
        "summary": "Get Inventory Log",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet an Inventory Log based on Code\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "parameters": [
          {
            "in": "query",
            "name": "Code",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Variant Code of product. Use this if there in no property query VariantID"
          },
          {
            "in": "query",
            "name": "VariantID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Variant ID of product. Use this if there in no property query Code"
          },
          {
            "in": "query",
            "name": "Outlet",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Outlet's Name"
          },
          {
            "in": "query",
            "name": "OutletID",
            "required": false,
            "schema": {
              "type": "string",
              "format": "guid",
              "description": "Guid of Outlet ID"
            }
          },
          {
            "in": "query",
            "name": "From",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Start Date filter"
          },
          {
            "in": "query",
            "name": "To",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "End Date filter"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Variant Code of product. this is primary key for the object"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet's Name"
                      },
                      "From": {
                        "type": "string",
                        "description": "Start Date filter"
                      },
                      "To": {
                        "type": "string",
                        "description": "End Date filter"
                      }
                    },
                    "example": {
                      "Code": "2016",
                      "Outlet": "Outlet1",
                      "From": "2019-01-04",
                      "To": "2019-12-31"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Variant Code of product. this is primary key for the object"
                      },
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "0v9bcbl8vywa7"
                        }
                      },
                      "From": {
                        "type": "string",
                        "description": "Start Date filter"
                      },
                      "To": {
                        "type": "string",
                        "description": "End Date filter"
                      }
                    },
                    "example": {
                      "Code": "2016",
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "From": "2019-01-04",
                      "To": "2019-12-31"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "outlet's name"
                      },
                      "TransDate": {
                        "type": "string",
                        "description": "transaction date was created"
                      },
                      "Number": {
                        "type": "string",
                        "description": "transaction number of the invoice"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Customer's name"
                      },
                      "Cost": {
                        "type": "integer",
                        "description": "the cost of the variant"
                      },
                      "Price": {
                        "type": "integer",
                        "description": "the price of the variant"
                      },
                      "LogType": {
                        "type": "string",
                        "description": "the type of the transaction that make inventory movement"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Transaction note"
                      },
                      "In": {
                        "type": "integer",
                        "description": "total incoming stock of the variant"
                      },
                      "Out": {
                        "type": "integer",
                        "description": "total outcoming stock of the variant"
                      },
                      "Inventory": {
                        "type": "integer",
                        "description": "On Hand Quantity"
                      },
                      "EntryDate": {
                        "type": "string",
                        "description": "the date and time of the transaction"
                      },
                      "UserName": {
                        "type": "string",
                        "description": "user who create this transaction"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "TransDate": "14 Nov 2019",
                    "Number": "05002",
                    "Name": "Hendry",
                    "Cost": 20000,
                    "Price": 50000,
                    "LogType": "InventoryAdjustment",
                    "Note": "05002",
                    "In": 10,
                    "Out": 0,
                    "Inventory": 10,
                    "EntryDate": "2019-11-14T15:19:17.743",
                    "UserName": "dealpos"
                  },
                  {
                    "Outlet": "Outlet1",
                    "TransDate": "14 Nov 2019",
                    "Number": "05002",
                    "Name": "Fer D Rahman",
                    "Cost": 20000,
                    "Price": 50000,
                    "LogType": "InventoryAdjustment",
                    "Note": "05002",
                    "In": 2,
                    "Out": 0,
                    "Inventory": 1,
                    "EntryDate": "2019-11-14T15:18:39.483",
                    "UserName": "dealpos"
                  },
                  {
                    "Outlet": "Outlet1",
                    "TransDate": "23 May 2018",
                    "Number": "Testts2",
                    "Name": "",
                    "Cost": 0,
                    "Price": 0,
                    "LogType": "InventoryAdjustment",
                    "Note": "Testts2",
                    "In": 0,
                    "Out": 1,
                    "Inventory": -1,
                    "EntryDate": "2019-11-14T13:35:42.12",
                    "UserName": "dealpos"
                  },
                  {
                    "Outlet": "Outlet1",
                    "TransDate": "23 May 2018",
                    "Number": "Testts2",
                    "Name": "Ezza",
                    "Cost": 20000,
                    "Price": 50000,
                    "LogType": "InventoryAdjustment",
                    "Note": "testts2",
                    "In": 2,
                    "Out": 0,
                    "Inventory": 1,
                    "EntryDate": "2019-11-14T13:29:59.64",
                    "UserName": "dealpos"
                  },
                  {
                    "Outlet": "Outlet1",
                    "TransDate": "23 Oct 2019",
                    "Number": "05.23.2018.000002",
                    "Name": "Zan",
                    "Cost": 20000,
                    "Price": 50000,
                    "LogType": "InventoryAdjustment",
                    "Note": "05.23.2018.000002",
                    "In": 0,
                    "Out": 1,
                    "Inventory": -1,
                    "EntryDate": "2019-11-07T09:45:03.877",
                    "UserName": "dealpos"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {}
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/Modified": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryModified",
        "summary": "Get Inventory Modified Since Date",
        "description": "Get an Inventory Log modified since the given date-time. <br> Data returned is sorted by Modified property DESC\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\"  get:\n  summary: Get inventory Modified",
        "parameters": [
          {
            "in": "query",
            "name": "PageNumber",
            "schema": {
              "type": "integer",
              "example": 1
            },
            "required": true,
            "description": "Page number for pagination"
          },
          {
            "in": "query",
            "name": "PageSize",
            "schema": {
              "type": "integer",
              "example": 20
            },
            "required": true,
            "description": "The size of one page. Max=500"
          },
          {
            "in": "query",
            "name": "Since",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "required": true,
            "description": "Filter records since the given date-time",
            "example": "2025-01-08T07:01:21"
          },
          {
            "in": "query",
            "name": "Outlet",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Filter by Outlet name",
            "example": "PIK"
          },
          {
            "in": "query",
            "name": "Code",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Filter by Variant Code",
            "example": "001"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of inventory items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant Code of the product"
                      },
                      "Allocated": {
                        "type": "integer",
                        "description": "Quantity allocated"
                      },
                      "OnHand": {
                        "type": "integer",
                        "description": "Quantity on hand"
                      },
                      "Modified": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Date and time of the last modify"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "PIK",
                    "Code": "001",
                    "Allocated": 5,
                    "OnHand": 35,
                    "Modified": "2025-01-08T07:01:21"
                  },
                  {
                    "Outlet": "PIK",
                    "Code": "002",
                    "Allocated": 5,
                    "OnHand": 35,
                    "Modified": "2025-01-08T07:01:21"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/Inventory/Modified/Count": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryModifiedCount",
        "summary": "Get Inventory Modified Since Date with Count",
        "description": "Get an Inventory Log modified since the given date-time\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\"  get:\n  summary: Get inventory Modified Count",
        "parameters": [
          {
            "in": "query",
            "name": "PageNumber",
            "schema": {
              "type": "integer",
              "example": 1
            },
            "required": true,
            "description": "Page number for pagination"
          },
          {
            "in": "query",
            "name": "PageSize",
            "schema": {
              "type": "integer",
              "example": 20
            },
            "required": true,
            "description": "The size of one page. Max=500"
          },
          {
            "in": "query",
            "name": "Since",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "required": true,
            "description": "Filter records since the given date-time",
            "example": "2025-01-08T07:01:21"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of inventory items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Count": {
                      "type": "integer",
                      "description": "Total row count of inventory items"
                    }
                  }
                },
                "example": {
                  "Count": 800
                }
              }
            }
          }
        }
      }
    },
    "/Inventory/CodeArray": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryByCodeArray",
        "summary": "Get Inventory By Code Array",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Inventory for Multiple Code, this is an enhancement from previous api\n/inventory/code which can only query single Code\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Code",
                      "ListOutletID",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "array",
                        "description": "List of Outlet Name",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Code": {
                        "type": "array",
                        "description": "List of Variants Code of product. Max=100 variants code",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "Outlet": [
                        "Jakarta",
                        "Surabaya"
                      ],
                      "Code": [
                        "907",
                        "908",
                        "909"
                      ]
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "Code",
                      "ListOutletID",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "ListOutletID": {
                        "type": "array",
                        "description": "List of multiple outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "do01kd71ks5wq"
                          }
                        }
                      },
                      "Code": {
                        "type": "array",
                        "description": "List of Variants Code of product. Max=50 variants code",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "Code": [
                        "907",
                        "908",
                        "909"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Variant Code of product"
                      },
                      "Inventory": {
                        "type": "integer",
                        "description": "On Hand Quantity"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Code": "907",
                    "Inventory": 140
                  },
                  {
                    "Code": "908",
                    "Inventory": 20
                  },
                  {
                    "Code": "909",
                    "Inventory": 7
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "Example 1": {
                "example": {
                  "Message": "Code must not exceed max allowed more than 50 Variants Code"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/CodeArrayGroupByOutlet": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryByListCodeGroupByOutlet",
        "summary": "Get Inventory By ListCode Group by Outlet",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Inventory for Multiple Code group by Outlet, this is an enhancement from previous api\n/inventory/code which can only query single Code\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "array",
                        "description": "List of Outlet Name",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Code": {
                        "type": "array",
                        "description": "List of Variants Code of variant. Max=50 Variants Code",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "Outlet": [
                        "Jakarta",
                        "Surabaya"
                      ],
                      "Code": [
                        "907",
                        "908"
                      ]
                    }
                  },
                  {
                    "title": "With Outlet Code",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletCode": {
                        "type": "array",
                        "description": "List of Outlet Code. (it will check this property first if requested)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Code": {
                        "type": "array",
                        "description": "List of Variants Code of variant. Max=50 Variants Code",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "OutletCode": [
                        "JKT",
                        "SBY"
                      ],
                      "Code": [
                        "907",
                        "908"
                      ]
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Code"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "array",
                        "description": "List of multiple outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "b30mxcnk4vsn9"
                          }
                        }
                      },
                      "Code": {
                        "type": "array",
                        "description": "List of Variants Code of variant. Max=50 Variants Code",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "OutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "Code": [
                        "907",
                        "908"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Code": {
                        "type": "string",
                        "description": "Variant Code"
                      },
                      "Inventories": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Outlet": {
                              "type": "string",
                              "description": "Outlet Name"
                            },
                            "Inventory": {
                              "type": "integer",
                              "description": "On Hand Inventory"
                            },
                            "I": {
                              "type": "object",
                              "properties": {
                                "OnHand": {
                                  "type": "integer",
                                  "description": "On Hand Quantity"
                                },
                                "Allocated": {
                                  "type": "integer",
                                  "description": "Allocated Quantity"
                                },
                                "Available": {
                                  "type": "integer",
                                  "description": "Available Quantity"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "Code": "907",
                        "Inventories": [
                          {
                            "Outlet": "Jakarta",
                            "Inventory": 140,
                            "I": {
                              "OnHand": 140,
                              "Allocated": 50,
                              "Available": 90
                            }
                          },
                          {
                            "Outlet": "Surabaya",
                            "Inventory": 10,
                            "I": {
                              "OnHand": 10,
                              "Allocated": 6,
                              "Available": 4
                            }
                          }
                        ]
                      },
                      {
                        "Code": "908",
                        "Inventories": [
                          {
                            "Outlet": "Jakarta",
                            "Inventory": 140,
                            "I": {
                              "OnHand": 140,
                              "Allocated": 100,
                              "Available": 40
                            }
                          },
                          {
                            "Outlet": "Surabaya",
                            "Inventory": 10,
                            "I": {
                              "OnHand": 10,
                              "Allocated": 6,
                              "Available": 4
                            }
                          }
                        ]
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Code": "907",
                    "Inventories": [
                      {
                        "Outlet": "Jakarta",
                        "Inventory": 140,
                        "I": {
                          "OnHand": 140,
                          "Allocated": 50,
                          "Available": 90
                        }
                      },
                      {
                        "Outlet": "Surabaya",
                        "Inventory": 10,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 6,
                          "Available": 4
                        }
                      }
                    ]
                  },
                  {
                    "Code": "908",
                    "Inventories": [
                      {
                        "Outlet": "Jakarta",
                        "Inventory": 140,
                        "I": {
                          "OnHand": 140,
                          "Allocated": 100,
                          "Available": 40
                        }
                      },
                      {
                        "Outlet": "Surabaya",
                        "Inventory": 10,
                        "I": {
                          "OnHand": 10,
                          "Allocated": 6,
                          "Available": 4
                        }
                      }
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet is mandatory!"
                }
              },
              "Code Exceed max not allowed": {
                "example": {
                  "Message": "Code Exceed max not allowed more than 50 Variants Code"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/ListID": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryByListID",
        "summary": "Get Inventory By List ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Inventory By List Outlet and List ID\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With List Outlet Name",
                    "required": [
                      "ListID",
                      "ListOutlet"
                    ],
                    "type": "object",
                    "properties": {
                      "ListID": {
                        "type": "array",
                        "description": "Variants ID. Max=50",
                        "items": {
                          "type": "string"
                        }
                      },
                      "ListOutlet": {
                        "type": "array",
                        "description": "Outlets Name. (if empty it will be show inventory of all outlet)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "CalculateCompositeInventory": {
                        "type": "boolean",
                        "description": "Only effect product type Composite (if true OnHand will be show, if false OnHand always 0)",
                        "example": false,
                        "default": false
                      },
                      "IncludeParentInventory": {
                        "type": "boolean",
                        "description": "Show detail inventory of Parents Product",
                        "example": false,
                        "default": false
                      },
                      "IncludeChildrenInventory": {
                        "type": "boolean",
                        "description": "Show detail inventory of Children Product",
                        "example": false,
                        "default": false
                      }
                    },
                    "example": {
                      "ListOutlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "ListID": [
                        "69b2a2cd-406a-44ac-b1e2-8df079f50304",
                        "d94579c0-eeb5-4b03-893e-d24cc624786c"
                      ],
                      "CalculateCompositeInventory": true,
                      "IncludeParentInventory": true,
                      "IncludeChildrenInventory": true
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "ListID",
                      "ListOutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "ListID": {
                        "type": "array",
                        "description": "Variants ID. Max=50",
                        "items": {
                          "type": "string"
                        }
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "List of multiple outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "fbk4chid35wqm"
                          }
                        }
                      },
                      "CalculateCompositeInventory": {
                        "type": "boolean",
                        "description": "Only effect product type Composite (if true OnHand will be show, if false OnHand always 0)",
                        "example": false,
                        "default": false
                      },
                      "IncludeParentInventory": {
                        "type": "boolean",
                        "description": "Show detail inventory of Parents Product",
                        "example": false,
                        "default": false
                      },
                      "IncludeChildrenInventory": {
                        "type": "boolean",
                        "description": "Show detail inventory of Children Product",
                        "example": false,
                        "default": false
                      }
                    },
                    "example": {
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "ListID": [
                        "69b2a2cd-406a-44ac-b1e2-8df079f50304",
                        "d94579c0-eeb5-4b03-893e-d24cc624786c"
                      ],
                      "CalculateCompositeInventory": true,
                      "IncludeParentInventory": true,
                      "IncludeChildrenInventory": true
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Variant's ID"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant's Code"
                      },
                      "I": {
                        "type": "object",
                        "properties": {
                          "OnHand": {
                            "type": "integer",
                            "description": "OnHand quantity"
                          },
                          "Allocated": {
                            "type": "integer",
                            "description": "Allocated quantity"
                          },
                          "AllocatedDirect": {
                            "type": "integer",
                            "description": "Quantity of items allocated from the direct variant"
                          },
                          "AllocatedInDirect": {
                            "type": "integer",
                            "description": "Quantity of items allocated from the indirect variant"
                          },
                          "Available": {
                            "type": "integer",
                            "description": "Available quantity"
                          }
                        }
                      },
                      "Children": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string",
                              "description": "Variant's ID"
                            },
                            "Code": {
                              "type": "string",
                              "description": "Variant's Code"
                            },
                            "I": {
                              "type": "object",
                              "properties": {
                                "OnHand": {
                                  "type": "integer",
                                  "description": "OnHand quantity"
                                },
                                "Allocated": {
                                  "type": "integer",
                                  "description": "Allocated quantity"
                                },
                                "AllocatedDirect": {
                                  "type": "integer",
                                  "description": "Quantity of items allocated from the direct variant"
                                },
                                "AllocatedInDirect": {
                                  "type": "integer",
                                  "description": "Quantity of items allocated from the indirect variant"
                                },
                                "Available": {
                                  "type": "integer",
                                  "description": "Available quantity"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "example": [
                    {
                      "ID": "9c82ec2f-2646-4327-8ec7-640fa01522c4",
                      "Code": "sausage",
                      "I": {
                        "OnHand": 9,
                        "Allocated": 6,
                        "Available": 3
                      },
                      "Parent": [
                        {
                          "ID": "efd658dd-c333-4f1a-a5a7-f520eedebde0",
                          "Code": "hotdog",
                          "I": {
                            "OnHand": -4,
                            "Allocated": 6,
                            "Available": -10
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with the name [Outlet 2]"
                }
              },
              "ID Exceed max not allowed": {
                "example": {
                  "Message": "ListID Exceed max not allowed more than 50 Variants ID"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace message"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.TryGetProperty..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/ListCode": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryByListCode",
        "summary": "Get Inventory By List Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Inventory By List Outlet and List Code\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With List Outlet Name",
                    "type": "object",
                    "properties": {
                      "ListOutlet": {
                        "type": "array",
                        "description": "Outlets Name. (if empty it will be show inventory of all outlet)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "ListCode": {
                        "type": "array",
                        "description": "List of Variants Code of variant. Max=50",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "ListOutlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "ListCode": [
                        "T001",
                        "T002"
                      ]
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "type": "object",
                    "properties": {
                      "ListOutletID": {
                        "type": "array",
                        "description": "List of multiple outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "v0a8mh7vnvnfu"
                          }
                        }
                      },
                      "ListCode": {
                        "type": "array",
                        "description": "List of Variants Code of variant. Max=50",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "ListCode": [
                        "T001",
                        "T002"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Variants ID"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant's Code"
                      },
                      "I": {
                        "type": "object",
                        "properties": {
                          "OnHand": {
                            "type": "integer",
                            "description": "OnHand quantity"
                          },
                          "Allocated": {
                            "type": "integer",
                            "description": "Allocated quantity"
                          },
                          "Available": {
                            "type": "integer",
                            "description": "Available quantity"
                          }
                        }
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "ID": "9c82ec2f-2646-4327-8ec7-640fa01522c4",
                        "Code": "T001",
                        "I": {
                          "OnHand": 9,
                          "Allocated": 6,
                          "Available": 3
                        }
                      },
                      {
                        "ID": "9c82ec2f-2646-4327-8ec7-640fa01522c4",
                        "Code": "T002",
                        "I": {
                          "OnHand": 10,
                          "Allocated": 6,
                          "Available": 4
                        }
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "ID": "9c82ec2f-2646-4327-8ec7-640fa01522c4",
                    "Code": "T001",
                    "I": {
                      "OnHand": 9,
                      "Allocated": 6,
                      "Available": 3
                    }
                  },
                  {
                    "ID": "9c82ec2f-2646-4327-8ec7-640fa01522c4",
                    "Code": "T002",
                    "I": {
                      "OnHand": 10,
                      "Allocated": 6,
                      "Available": 4
                    }
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with the name [Outlet 2]"
                }
              },
              "Code Exceed max not allowed": {
                "example": {
                  "Message": "Code Exceed max not allowed more than 50 Variants Code"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.TryGetProperty(String propertyName, JsonElement& value)\r\n   at POS.Library.Helper.JSONPropertyChecker.HasProperty(JsonElement obj, String propertyName) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 124\r\n   at POS.WEB.Controllers.v3.InventoryController.ListID(JsonElement obj) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InventoryController.cs:line 326"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/WithTotalCount": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "operationId": "GetInventoryWithTotalCount",
        "summary": "Get List Inventory With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet list of Inventory\n\nRequired Group Role: \"**Inventory**\" - \"**VIEW**\" ",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of the product",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The page size of the product list",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 500
          },
          {
            "name": "Category",
            "in": "query",
            "description": "The product category",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Top"
          },
          {
            "name": "QuantityFrom",
            "in": "query",
            "description": "The minimum quantity of the product that users want to view",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "Discontinued",
            "in": "query",
            "description": "The product discontinued status",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Name of the outlet that have the stock. if Outlet provided, OutletID will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID. if OutletID provided, Outlet name will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "0d46700d-35a3-4fb5-9b3a-644c370b5af1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "PageNumber",
                      "PageSize"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet that have the stock."
                      },
                      "Category": {
                        "type": "string",
                        "description": "Name of category products"
                      },
                      "QuantityFrom": {
                        "type": "integer",
                        "description": "Starting quantity of the product"
                      },
                      "Discontinued": {
                        "type": "string",
                        "description": "Product that has been discontinued",
                        "default": "false",
                        "enum": [
                          "True",
                          "False"
                        ]
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "Page number of get inventory"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The size of one page. Max=500"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Category": "Top",
                      "QuantityFrom": 1,
                      "Discontinued": false,
                      "PageNumber": 1,
                      "PageSize": 500
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "PageNumber",
                      "PageSize"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "3nhd53zndm8cy"
                        }
                      },
                      "Category": {
                        "type": "string",
                        "description": "Name of category products"
                      },
                      "QuantityFrom": {
                        "type": "integer",
                        "description": "Starting quantity of the product"
                      },
                      "Discontinued": {
                        "type": "string",
                        "description": "Product that has been discontinued",
                        "default": "false",
                        "enum": [
                          "True",
                          "False"
                        ]
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "Page number of get inventory"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The size of one page. Max=500"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Category": "Top",
                      "QuantityFrom": 1,
                      "Discontinued": false,
                      "PageNumber": 1,
                      "PageSize": 500
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Category": {
                            "type": "string",
                            "description": "Product Category Name"
                          },
                          "Product": {
                            "type": "string",
                            "description": "Product Name"
                          },
                          "Variant": {
                            "type": "string",
                            "description": "Product's Variant name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Product Variant Code"
                          },
                          "Inventory": {
                            "type": "integer",
                            "description": "On Hand Quantity"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Category": "Top/Men",
                      "Product": "Captain America T-Shirt",
                      "Variant": "Captain America T-Shirt (Large)",
                      "Code": "1003L",
                      "Inventory": 10
                    },
                    {
                      "Category": "Top/Men",
                      "Product": "Captain America T-Shirt",
                      "Variant": "Captain America T-Shirt (Medium)",
                      "Code": "1003M",
                      "Inventory": 5
                    },
                    {
                      "Category": "Top/Men",
                      "Product": "Denim Shirt",
                      "Variant": "Denim Shirt (L)",
                      "Code": "1342L",
                      "Inventory": 50
                    },
                    {
                      "Category": "Top/Men",
                      "Product": "Denim Shirt",
                      "Variant": "Denim Shirt (M)",
                      "Code": "1342M",
                      "Inventory": 10
                    },
                    {
                      "Category": "Top/Men",
                      "Product": "Jacket",
                      "Variant": "Jacket (L)",
                      "Code": "1021L",
                      "Inventory": 11
                    },
                    {
                      "Category": "Top/Men",
                      "Product": "Jacket",
                      "Variant": "Jacket (M)",
                      "Code": "1021M",
                      "Inventory": 18
                    },
                    {
                      "Category": "Top/Men",
                      "Product": "Jacket",
                      "Variant": "Jacket (S)",
                      "Code": "1021S",
                      "Inventory": 20
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet1 Or NO ACCESS"
                }
              },
              "PageSize Exceed max not allowed": {
                "example": {
                  "Message": "PageSize Exceed max not allowed"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.TryGetProperty..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/Number": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetInvoiceByNumber",
        "summary": "Get Invoice By Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet an Invoice based on Number\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "parameters": [
          {
            "name": "Number",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Invoice number. This is the primary key for the object."
          },
          {
            "name": "Outlet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Outlet name."
          },
          {
            "name": "OutletID",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "GUID of Outlet ID."
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Unique ID of the invoice"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Name of the outlet"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of the invoice transasction"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Sell date of the invoice transaction"
                    },
                    "DueDate": {
                      "type": "string",
                      "description": "Due date of the invoice transaction"
                    },
                    "Tag": {
                      "type": "string",
                      "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesType\""
                    },
                    "SalesPerson": {
                      "type": "string",
                      "description": "Sales person name of the invoice transaction"
                    },
                    "Customer": {
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Unique Code of the customer"
                        },
                        "Email": {
                          "type": "string",
                          "description": "E-mail of the customer"
                        },
                        "Mobile": {
                          "type": "string",
                          "description": "Mobile Phone Number of the customer"
                        },
                        "Name": {
                          "type": "string",
                          "description": "Name of the customer"
                        },
                        "Phone": {
                          "type": "string",
                          "description": "Phone number of the customer"
                        }
                      }
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "Unique ID of the creator"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Invoice created Transaction Date by system\n"
                    },
                    "Discount1": {
                      "type": "integer",
                      "description": "Percentage of discount 1"
                    },
                    "Discount2": {
                      "type": "integer",
                      "description": "Percentage of discount 2"
                    },
                    "DiscountAmount": {
                      "type": "number",
                      "description": "Amount of Discount amount-based"
                    },
                    "Gross": {
                      "type": "number",
                      "description": "Total amount of the transaction before discounted"
                    },
                    "DiscountTotal": {
                      "type": "number",
                      "description": "Total accumulation of the discounts"
                    },
                    "TaxType": {
                      "type": "string",
                      "description": "Type name of the tax"
                    },
                    "Tax": {
                      "type": "number",
                      "description": "Total amount of the taxes"
                    },
                    "TaxRate": {
                      "type": "number",
                      "description": "Rate of Tax in percentage",
                      "x-stoplight": {
                        "id": "f3iosfcfnch91"
                      }
                    },
                    "Sales": {
                      "type": "number",
                      "description": "Total amount of the sales after subtraction"
                    },
                    "Surcharge": {
                      "type": "number",
                      "description": "Additional expense (ex: from credit card)"
                    },
                    "SalesNTax": {
                      "type": "number",
                      "description": "Total amount of sales after taxes"
                    },
                    "Coupon": {
                      "type": "string",
                      "description": "Promotion Coupon Key"
                    },
                    "Note": {
                      "type": "string",
                      "description": "Note of the invoice transaction"
                    },
                    "PointUsed": {
                      "type": "integer",
                      "description": "Total point used in the transaction"
                    },
                    "PointsEarned": {
                      "type": "integer",
                      "description": "Total point earned from the transaction"
                    },
                    "Fulfillment": {
                      "type": "string",
                      "description": "delivery status / progres of the invoice\n",
                      "enum": [
                        "Sent",
                        "Unsent",
                        "Partial",
                        "Returned"
                      ]
                    },
                    "LogisticServiceCode": {
                      "type": "string",
                      "description": "Code of Logistic Service Option",
                      "x-stoplight": {
                        "id": "y62h8lln99i47"
                      }
                    },
                    "Payment": {
                      "type": "string",
                      "description": "payment status / state of the invoice"
                    },
                    "Void": {
                      "type": "string",
                      "description": "Void state / status of the invoice"
                    },
                    "Bin": {
                      "type": "boolean",
                      "description": "Recycle bin state/status of the invoice"
                    },
                    "ReferenceInvoiceNumber": {
                      "type": "string",
                      "description": "Another Invoice that is associated with this Invoice ex: SalesReturn scenario, null when it is normal Sales transaction"
                    },
                    "EReceipt": {
                      "type": "string",
                      "description": "E-Receipt URL of the invoice transaction"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "VariantID": {
                            "type": "string",
                            "description": "Product Variant ID"
                          },
                          "Name": {
                            "type": "string",
                            "description": "Product Variant Name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Product Variant Code"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Quantity of the product variant"
                          },
                          "UnitQuantity": {
                            "type": "integer",
                            "description": "Unit Quantity Messurement of the product variant"
                          },
                          "Cost": {
                            "type": "integer",
                            "description": "Unit Cost of the product variant"
                          },
                          "Price": {
                            "type": "integer",
                            "description": "Selling Price of the product variant"
                          },
                          "PriceOriginal": {
                            "type": "integer",
                            "description": "Original Price (before discounted) of the product variant"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "Discount Percentage (%) of the product variant"
                          },
                          "DiscountAmount": {
                            "type": "integer",
                            "description": "Discount Amount of the product variant"
                          },
                          "Taxable": {
                            "type": "boolean",
                            "description": "Taxable state/status of the invoice transaction"
                          },
                          "LoyaltyPoint": {
                            "type": "boolean",
                            "description": "Loyalty state/status of the invoice transaction"
                          },
                          "Expense": {
                            "type": "integer",
                            "description": "Additional Expense of the product variant"
                          },
                          "Sales": {
                            "type": "integer",
                            "description": "Net Sales for the Product (after deducted by Discount - DiscountAmount - TaxInclude)",
                            "x-stoplight": {
                              "id": "z512zkumpn6x3"
                            }
                          },
                          "Tax": {
                            "type": "integer",
                            "description": "Tax applied for the product depending on chosen TaxType (Rate + Calculation)",
                            "x-stoplight": {
                              "id": "nixjrsddw2r6l"
                            }
                          },
                          "Commission": {
                            "type": "integer",
                            "description": "Sales commision of the invoice transaction"
                          },
                          "SalesName": {
                            "type": "string",
                            "description": "Sales Person Name of the transaction"
                          },
                          "PriceTypeID": {
                            "type": "integer",
                            "description": "Sales price type of the transaction"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Product Variant Note of the invoice transaction"
                          }
                        }
                      }
                    },
                    "OutboundLogistics": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet_Name_of_Outbound_Logistic",
                            "x-stoplight": {
                              "id": "bbzgvmvkhq8n4"
                            }
                          },
                          "Number": {
                            "type": "string",
                            "description": "Outbound_Logistic_Number",
                            "x-stoplight": {
                              "id": "ofyrjtnsli5ap"
                            }
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of Outbound Logistic",
                            "x-stoplight": {
                              "id": "vok3apb9s0973"
                            }
                          }
                        },
                        "x-stoplight": {
                          "id": "elw8t6uzp0kgl"
                        }
                      }
                    },
                    "Payments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "description": "Date of the payment"
                          },
                          "Amount": {
                            "type": "integer",
                            "description": "Total amount of the payment"
                          },
                          "Method": {
                            "type": "string",
                            "description": "Payment method of the invoice transaction"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of the payment method"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Note of the payment method"
                          }
                        },
                        "x-stoplight": {
                          "id": "wbfphw1v5m13s"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                  "Outlet": "Outlet1",
                  "Number": "20.05.00157",
                  "Date": "2020-05-27T00:00:00",
                  "DueDate": "0001-01-01T00:00:00",
                  "Tag": "Offline",
                  "SalesPerson": "Sales 1",
                  "Customer": {
                    "Code": "HW0001",
                    "Email": "hendry@dealpos.com",
                    "Mobile": "0815161688",
                    "Name": "hendry",
                    "Phone": "0815161688"
                  },
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Created": "2020-05-27T11:10:50.57",
                  "Discount1": 20,
                  "Discount2": 0,
                  "DiscountAmount": 20000,
                  "Gross": 100000,
                  "DiscountTotal": 48800,
                  "TaxType": "No Tax",
                  "Tax": 0,
                  "TaxRate": 0,
                  "Sales": 51200,
                  "Surcharge": 1000,
                  "SalesNTax": 51200,
                  "Coupon": "889977",
                  "Note": "Test Note",
                  "PointUsed": 0,
                  "PointsEarned": 0,
                  "Fulfillment": "Sent",
                  "LogisticServiceCode": "JNE-R",
                  "Payment": "Paid",
                  "Void": "No",
                  "Bin": false,
                  "ReferenceInvoiceNumber": "20.05.00156",
                  "EReceipt": "https://receipt.dealpos.app/receipt?Data=N2E0MDJmZWItY2U3Ni00MzA5LWJiMTUtOGIwZDQ5NTIwMWEyX3Rva29hYmFkaWRhYmkuZGVhbHBvcy5uZXQ%3D",
                  "Variants": [
                    {
                      "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                      "Name": "Muffin (Medium)",
                      "Code": "MM3002",
                      "Quantity": 1,
                      "UnitQuantity": 1,
                      "Cost": 50000,
                      "Price": 100000,
                      "PriceOriginal": 100000,
                      "Discount": 10,
                      "DiscountAmount": 1000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Expense": 10000,
                      "Sales": 89000,
                      "Tax": 0,
                      "Commission": 0,
                      "SalesName": "Jane",
                      "PriceTypeID": 1,
                      "Note": "Item note"
                    }
                  ],
                  "OutboundLogistics": [
                    {
                      "Outlet": "Outlet2",
                      "Number": "20.05.00157",
                      "Date": "2020-05-27T00:00:00"
                    }
                  ],
                  "Payments": [
                    {
                      "Date": "2020-05-27T00:00:00",
                      "Amount": 52200,
                      "Method": "Cash",
                      "Code": "C001",
                      "Note": "Payment Note"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice does not exist"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/ID": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "operationId": "GetInvoiceByID",
        "summary": "Get Invoice By ID",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet an Invoice based on Invoice ID\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "parameters": [
          {
            "name": "ID",
            "in": "query",
            "description": "Get from ID of Invoice that you want to get the detail . This is primary key for the object",
            "required": true,
            "schema": {
              "type": "string",
              "example": "aad4a789-b802-49c1-b66f-f45fbc7ce17f"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Unique ID of the invoice"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Name of the outlet"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of the invoice transasction"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Sell date of the invoice transaction"
                    },
                    "DueDate": {
                      "type": "string",
                      "description": "Due date of the invoice transaction"
                    },
                    "Tag": {
                      "type": "string",
                      "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesType\""
                    },
                    "SalesPerson": {
                      "type": "string",
                      "description": "Sales person name of the invoice transaction"
                    },
                    "Customer": {
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Unique Code of the customer"
                        },
                        "Email": {
                          "type": "string",
                          "description": "E-mail of the customer"
                        },
                        "Mobile": {
                          "type": "string",
                          "description": "Mobile Phone Number of the customer"
                        },
                        "Name": {
                          "type": "string",
                          "description": "Name of the customer"
                        },
                        "Phone": {
                          "type": "string",
                          "description": "Phone number of the customer"
                        }
                      }
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "Unique ID of the creator"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Invoice created Transaction Date by system\n"
                    },
                    "Discount1": {
                      "type": "integer",
                      "description": "Percentage of discount 1"
                    },
                    "Discount2": {
                      "type": "integer",
                      "description": "Percentage of discount 2"
                    },
                    "DiscountAmount": {
                      "type": "number",
                      "description": "Amount of Discount amount-based"
                    },
                    "Gross": {
                      "type": "number",
                      "description": "Total amount of the transaction before discounted"
                    },
                    "DiscountTotal": {
                      "type": "number",
                      "description": "Total accumulation of the discounts"
                    },
                    "TaxType": {
                      "type": "string",
                      "description": "Type name of the tax"
                    },
                    "Tax": {
                      "type": "number",
                      "description": "Total amount of the taxes"
                    },
                    "Sales": {
                      "type": "number",
                      "description": "Total amount of the sales after subtraction"
                    },
                    "Surcharge": {
                      "type": "number",
                      "description": "Additional expense (ex: from credit card)"
                    },
                    "SalesNTax": {
                      "type": "number",
                      "description": "Total amount of sales after taxes"
                    },
                    "Coupon": {
                      "type": "string",
                      "description": "Registered Coupon Name/Code"
                    },
                    "Note": {
                      "type": "string",
                      "description": "Note of the invoice transaction"
                    },
                    "PointUsed": {
                      "type": "integer",
                      "description": "Total point used in the transaction"
                    },
                    "PointsEarned": {
                      "type": "integer",
                      "description": "Total point earned from the transaction"
                    },
                    "Fulfillment": {
                      "type": "string",
                      "description": "delivery status / progres of the invoice\n",
                      "enum": [
                        "Sent",
                        "Unsent",
                        "Partial",
                        "Returned"
                      ]
                    },
                    "Payment": {
                      "type": "string",
                      "description": "payment status / state of the invoice"
                    },
                    "Void": {
                      "type": "string",
                      "description": "Void state / status of the invoice"
                    },
                    "Bin": {
                      "type": "boolean",
                      "description": "Recycle bin state/status of the invoice"
                    },
                    "ReferenceInvoiceNumber": {
                      "type": "string",
                      "description": "Another Invoice that is associated with this Invoice ex: SalesReturn scenario, null when it is normal Sales transaction"
                    },
                    "ReferenceNumber": {
                      "type": "string",
                      "description": "Reference Number of the Sales Order: ex PurchaseOrderNumber or Marketplace.OrderID",
                      "x-stoplight": {
                        "id": "olxechknkh6tu"
                      }
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "VariantID": {
                            "type": "string",
                            "description": "Product Variant ID"
                          },
                          "Name": {
                            "type": "string",
                            "description": "Product Variant Name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Product Variant Code"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Quantity of the product variant"
                          },
                          "UnitQuantity": {
                            "type": "integer",
                            "description": "Unit Quantity Messurement of the product variant"
                          },
                          "Cost": {
                            "type": "integer",
                            "description": "Unit Cost of the product variant"
                          },
                          "Price": {
                            "type": "integer",
                            "description": "Selling Price of the product variant"
                          },
                          "PriceOriginal": {
                            "type": "integer",
                            "description": "Original Price (before discounted) of the product variant"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "Discount Percentage (%) of the product variant"
                          },
                          "DiscountAmount": {
                            "type": "integer",
                            "description": "Discount Amount of the product variant"
                          },
                          "Taxable": {
                            "type": "boolean",
                            "description": "Taxable state/status of the invoice transaction"
                          },
                          "LoyaltyPoint": {
                            "type": "boolean",
                            "description": "Loyalty state/status of the invoice transaction"
                          },
                          "Expense": {
                            "type": "integer",
                            "description": "Additional Expense of the product variant"
                          },
                          "Sales": {
                            "type": "integer",
                            "description": "Net Sales for the Product (after deducted by Discount - DiscountAmount - TaxInclude)",
                            "x-stoplight": {
                              "id": "wjoqc3q7wkgkk"
                            }
                          },
                          "Tax": {
                            "type": "integer",
                            "description": "Tax applied for the product depending on chosen TaxType (Rate + Calculation)",
                            "x-stoplight": {
                              "id": "iw1qcz2yr4h46"
                            }
                          },
                          "Commission": {
                            "type": "integer",
                            "description": "Sales commision of the invoice transaction"
                          },
                          "SalesName": {
                            "type": "string",
                            "description": "Sales Person Name of the transaction"
                          },
                          "PriceTypeID": {
                            "type": "integer",
                            "description": "Sales price type of the transaction"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Product Variant Note of the invoice transaction"
                          },
                          "ThumbnailURL": {
                            "type": "string",
                            "description": "Thumbnail URL of the product variant image"
                          },
                          "ImageURL": {
                            "type": "string",
                            "description": "Image URL of the product variant image"
                          }
                        }
                      }
                    },
                    "OutboundLogistics": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet Name of outbound logistic",
                            "x-stoplight": {
                              "id": "4t5cb8zm663q5"
                            }
                          },
                          "Number": {
                            "type": "string",
                            "description": "Outbound_Logistic_Number",
                            "x-stoplight": {
                              "id": "x3y6eejovt26r"
                            }
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of outbound logistic",
                            "x-stoplight": {
                              "id": "wx0kehf4ctvy2"
                            }
                          }
                        },
                        "x-stoplight": {
                          "id": "ywyezoie1p1ym"
                        }
                      }
                    },
                    "Payments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "description": "Date of the payment"
                          },
                          "Amount": {
                            "type": "integer",
                            "description": "Total amount of the payment"
                          },
                          "Method": {
                            "type": "string",
                            "description": "Payment method of the invoice transaction"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of the payment method"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Note of the payment method"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Payment created Transaction Date by system."
                          }
                        }
                      }
                    },
                    "WriteOff": {
                      "type": "object",
                      "properties": {
                        "ID": {
                          "type": "string",
                          "description": "Unique ID of the write off"
                        },
                        "Amount": {
                          "type": "integer",
                          "description": "Amount of the write off"
                        },
                        "Date": {
                          "type": "string",
                          "description": "Date of the write off"
                        },
                        "Creator": {
                          "type": "string",
                          "description": "Name of the creator of the write off"
                        },
                        "CreatorID": {
                          "type": "string",
                          "description": "Unique ID of the creator of the write off"
                        },
                        "Created": {
                          "type": "string",
                          "description": "Created Transaction Date by system"
                        },
                        "TagID": {
                          "type": "string",
                          "description": "Tag ID of the write off"
                        },
                        "x-stoplight": {
                          "id": "eg3lv3oy3fl34"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                  "Outlet": "Outlet1",
                  "Number": "20.05.00157",
                  "Date": "2020-05-27T00:00:00",
                  "DueDate": "0001-01-01T00:00:00",
                  "Tag": "Offline",
                  "SalesPerson": "Sales 1",
                  "Customer": {
                    "Code": "HW0001",
                    "Email": "hendry@dealpos.com",
                    "Mobile": "0815161688",
                    "Name": "hendry",
                    "Phone": "021234567"
                  },
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Created": "2020-05-27T11:10:50.57",
                  "Discount1": 20,
                  "Discount2": 0,
                  "DiscountAmount": 20000,
                  "Gross": 100000,
                  "DiscountTotal": 48800,
                  "TaxType": "No Tax",
                  "Tax": 0,
                  "Sales": 51200,
                  "Surcharge": 1000,
                  "SalesNTax": 51200,
                  "Coupon": "223388",
                  "Note": "Paid",
                  "PointUsed": 0,
                  "PointsEarned": 0,
                  "Fulfillment": "Sent",
                  "Payment": "Paid",
                  "Void": "No",
                  "Bin": false,
                  "ReferenceInvoiceNumber": "20.05.00156",
                  "ReferenceNumber": "TKPD-001",
                  "Variants": [
                    {
                      "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                      "Name": "Muffin (Medium)",
                      "Code": "MM3002",
                      "Quantity": 1,
                      "UnitQuantity": 1,
                      "Cost": 50000,
                      "Price": 100000,
                      "PriceOriginal": 100000,
                      "Discount": 10,
                      "DiscountAmount": 1000,
                      "Taxable": true,
                      "LoyaltyPoint": true,
                      "Expense": 10000,
                      "Sales": 89000,
                      "Tax": 0,
                      "Commission": 0,
                      "SalesName": "Jane",
                      "PriceTypeID": 1,
                      "Note": "Item note",
                      "ThumbnailURL": "https://cdn.dealpos.app/cdn-cgi/image/width=80,quality=100/net/sandbox/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/sgbksabgzjc2qmm4uigp.png",
                      "ImageURL": "https://cdn.dealpos.app/net/sandbox/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url"
                    }
                  ],
                  "OutboundLogistics": [
                    {
                      "Outlet": "Outlet2",
                      "Number": "20.05.00157",
                      "Date": "2020-05-27T00:00:00"
                    }
                  ],
                  "Payments": [
                    {
                      "Date": "2020-05-27T00:00:00",
                      "Amount": 50000,
                      "Method": "Cash",
                      "Code": "C001",
                      "Note": "Payment Note",
                      "Created": "2020-05-28T11:10:50.587"
                    }
                  ],
                  "WriteOff": {
                    "ID": "d5f7c3e1-2f4b-4c5-9e2f-3b8f4e6c7a1b",
                    "Amount": 2200,
                    "Date": "2020-05-28T11:10:50.587",
                    "Creator": "Yansen",
                    "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                    "Created": "2020-05-28T11:10:50.587",
                    "TagID": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/IDByNumber": {
      "get": {
        "operationId": "GetInvoiceIDByNumber",
        "tags": [
          "Invoice"
        ],
        "summary": "Get Invoice ID By Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Invoice ID by Number to check that available in POS\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "description": "Outlet ID (Guid). If not provided, it will use property OutletName",
            "required": true,
            "schema": {
              "type": "string",
              "example": "aad4a789-b802-49c1-b66f-f45fbc7ce17f"
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name. If not provided, it will use property OutletID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Invoice number. this is primary key for the object",
            "required": true,
            "schema": {
              "type": "string",
              "example": "18.10.00009"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number. this is primary key for the object"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "18.10.00009"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "aad4a789-b802-49c1-b66f-f45fbc7ce17f"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number. this is primary key for the object"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "18.10.00009"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Unique ID from Invoice"
                    }
                  }
                },
                "example": {
                  "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/TransferOrder/Detail": {
      "get": {
        "operationId": "GetTransferOrderDetail",
        "tags": [
          "TransferOrder"
        ],
        "summary": "Get TransferOrder by Number",
        "description": ">Previous Endpoint: /api/v3/OutletDelivery/Detail. As for now, both the new & the old ones can be use.\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Outlet Delivery detail\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "parameters": [
          {
            "in": "header",
            "name": "ParentComponent",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "example": true,
            "description": "When true, ParentComponent property is returned in the Response. Used by Scanner App"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Delivery number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "18.07.02.0000002"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet source name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Number": {
                      "type": "string",
                      "description": "Outlet Delivery number"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Outlet Delivery Date"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Source of outlet delivery"
                    },
                    "OutletCode": {
                      "type": "string",
                      "description": "Code of source outlet delivery"
                    },
                    "Destination": {
                      "type": "string",
                      "description": "Destination of outlet delivery"
                    },
                    "DestinationCode": {
                      "type": "string",
                      "description": "Code of destination outlet delivery"
                    },
                    "Courier": {
                      "type": "string",
                      "description": "Courier Name"
                    },
                    "TypeName": {
                      "type": "string",
                      "description": "Outlet Delivery Type"
                    },
                    "StateLabel": {
                      "type": "string",
                      "description": "Outlet Delivery status"
                    },
                    "CreatedName": {
                      "type": "string",
                      "description": "User Creator of outlet delivery order"
                    },
                    "Note": {
                      "type": "string",
                      "description": "Outlet delivery note"
                    },
                    "CountMethod": {
                      "type": "string",
                      "enum": [
                        "web",
                        "barcode",
                        "rfid"
                      ],
                      "description": "Source of adjustment creation"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of variant"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of variant"
                          },
                          "Qty": {
                            "type": "integer",
                            "description": "Variant quantity to be delivered"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "Price of variant"
                          },
                          "Total": {
                            "type": "number",
                            "description": "Total price of Quantity x UnitPrice"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Note of variant"
                          },
                          "ThumbnailURL": {
                            "type": "string",
                            "description": "Thumbnail image URL of variant"
                          },
                          "Parents": {
                            "type": "array",
                            "description": "Parent variant information",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Name": {
                                  "type": "string",
                                  "description": "Name of parent variant"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Code of parent variant"
                                },
                                "Ratio": {
                                  "type": "number",
                                  "description": "Ratio between variant and parent variant"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "ReceivedNote": {
                      "type": "string",
                      "description": "Note when receive delivery order"
                    },
                    "ReceivedDate": {
                      "type": "string",
                      "description": "Date when delivery order received"
                    },
                    "ReceivedBy": {
                      "type": "string",
                      "description": "User who receive delivery order"
                    }
                  }
                },
                "examples": {
                  "example-1": {
                    "summary": "Default",
                    "value": {
                      "Number": "19.01.18.000000002",
                      "Date": "2019-01-18T00:00:00",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "Courier": "JNE",
                      "TypeName": "Restock",
                      "StateLabel": "Received",
                      "CreatedName": "Sys DealPOS",
                      "Note": "Paid",
                      "CountMethod": "barcode",
                      "Variants": [
                        {
                          "Name": "Cookies Kaleng",
                          "Code": "CK001",
                          "Qty": 2,
                          "UnitPrice": 3500,
                          "Total": 7000,
                          "Note": "Fresh",
                          "ThumbnailURL": "https://example.com/cookies.jpg"
                        }
                      ],
                      "ReceivedNote": "Good quality",
                      "ReceivedDate": "2019-01-24T15:04:29.01",
                      "Created": "2019-01-18T00:00:00",
                      "CreatedID": "Sys DealPOS"
                    }
                  },
                  "example-2": {
                    "summary": "With Parents",
                    "value": {
                      "Number": "19.01.18.000000002",
                      "Date": "2019-01-18T00:00:00",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "Courier": "JNE",
                      "TypeName": "Restock",
                      "StateLabel": "Delivered",
                      "CreatedName": "Sys DealPOS",
                      "Note": "Paid",
                      "Variants": [
                        {
                          "Name": "Cookies Kaleng",
                          "Code": "CK001",
                          "Qty": 2,
                          "UnitPrice": 3500,
                          "Total": 7000,
                          "Note": "Fresh",
                          "ThumbnailURL": "https://example.com/cookies.jpg",
                          "Parents": [
                            {
                              "Name": "Cookies Dus",
                              "Code": "CD001",
                              "Ratio": 12
                            }
                          ]
                        }
                      ],
                      "ReceivedNote": "Good quality",
                      "ReceivedDate": "2019-01-24T15:04:29.01",
                      "Created": "2019-01-18T00:00:00",
                      "CreatedID": "Sys DealPOS"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/TransferOrder/UpdateStatus": {
      "put": {
        "operationId": "UpdateTransferOrderStatus",
        "tags": [
          "TransferOrder"
        ],
        "summary": "Update Status TransferOrder",
        "description": "Update Status Delivery\n\nYou must have \"**EDIT**\" role in \"**Delivery**\" Module  OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet",
                  "State"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet source name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Deliver number"
                  },
                  "State": {
                    "type": "string",
                    "description": "Transfer Order Status",
                    "enum": [
                      "Approved",
                      "Dispatched",
                      "Received"
                    ]
                  },
                  "Note": {
                    "type": "string",
                    "description": "Additional information about the transfer order status",
                    "example": "In Delivery"
                  },
                  "CountMethod": {
                    "type": "string",
                    "enum": [
                      "web",
                      "barcode",
                      "rfid"
                    ],
                    "description": "Source of transfer order update"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "DO.0001",
                "State": "Dispatched",
                "Note": "In Delivery",
                "CountMethod": "barcode"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "description": "Delivery has been updated"
                },
                "example": {
                  "Message": "Outlet Delivery status has been updated"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Cannot change the backward status Dispatched to Request"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/TransferOrder/WithTotalCount": {
      "get": {
        "operationId": "GetTransferOrderWithTotalCount",
        "tags": [
          "TransferOrder"
        ],
        "summary": "List TransferOrder With Total Count",
        "description": ">Previous Endpoint: /api/v3/OutletDelivery/WithTotalCount. As for now, both the new & the old ones can be use.\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet list of Outlet Delivery with Total Count\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 20
          },
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-01-30"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Number": {
                            "type": "string",
                            "description": "Outlet Delivery Number"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of Outlet Delivery "
                          },
                          "Courier": {
                            "type": "string",
                            "description": "Name of Outlet Delivery courier"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of origin outlet "
                          },
                          "OutletCode": {
                            "type": "string",
                            "description": "Code of origin outlet "
                          },
                          "Destination": {
                            "type": "string",
                            "description": "Name of destination outlet "
                          },
                          "DestinationCode": {
                            "type": "string",
                            "description": "Code of destination outlet "
                          },
                          "TypeName": {
                            "type": "string",
                            "description": "Type of the outlet delivery"
                          },
                          "Status": {
                            "type": "string",
                            "description": "Outlet delivery progress / state"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice created Transaction Date by system\n"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Invoice Quantity of the outlet delivery"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Number": "19.01.18.000000002",
                      "Date": "2019-01-18T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-18T15:14:48.64",
                      "Quantity": 2
                    },
                    {
                      "Number": "19.01.18.000000001",
                      "Date": "2019-01-18T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Dispatched",
                      "Created": "2019-01-18T15:13:27.377",
                      "Quantity": 2
                    },
                    {
                      "Number": "19.01.17.000000005",
                      "Date": "2019-01-17T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-17T16:48:30.813",
                      "Quantity": 8
                    },
                    {
                      "Number": "19.01.17.000000004",
                      "Date": "2019-01-17T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Dispatched",
                      "Created": "2019-01-17T16:47:09.893",
                      "Quantity": 5
                    },
                    {
                      "Number": "19.01.17.000000003",
                      "Date": "2019-01-17T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-17T13:59:16.77",
                      "Quantity": 1
                    },
                    {
                      "Number": "19.01.17.000000001",
                      "Date": "2019-01-17T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-17T10:08:34.61",
                      "Quantity": 1
                    },
                    {
                      "Number": "19.01.17.000000002",
                      "Date": "2019-01-17T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 2",
                      "OutletCode": "OT2",
                      "Destination": "Outlet 3",
                      "DestinationCode": "OT3",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-17T15:57:50.71",
                      "Quantity": 7
                    },
                    {
                      "Number": "19.01.17.000000001",
                      "Date": "2019-01-17T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 2",
                      "OutletCode": "OT2",
                      "Destination": "Outlet 3",
                      "DestinationCode": "OT3",
                      "TypeName": "Restock",
                      "Status": "Dispatched",
                      "Created": "2019-01-17T15:49:20.533",
                      "Quantity": 7
                    },
                    {
                      "Number": "19.01.15.000000004",
                      "Date": "2019-01-15T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-15T11:15:57.027",
                      "Quantity": 3
                    },
                    {
                      "Number": "19.01.15.000000003",
                      "Date": "2019-01-15T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-15T11:14:21.953",
                      "Quantity": 7
                    },
                    {
                      "Number": "19.01.15.000000002",
                      "Date": "2019-01-15T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-15T11:07:44.59",
                      "Quantity": 3
                    },
                    {
                      "Number": "19.01.15.000000001",
                      "Date": "2019-01-15T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-15T10:43:41.89",
                      "Quantity": 2
                    },
                    {
                      "Number": "19.01.14.000000001",
                      "Date": "2019-01-14T00:00:00",
                      "Courier": "JNE",
                      "Outlet": "Outlet 1",
                      "OutletCode": "OT1",
                      "Destination": "Outlet 2",
                      "DestinationCode": "OT2",
                      "TypeName": "Restock",
                      "Status": "Received",
                      "Created": "2019-01-14T16:08:48.027",
                      "Quantity": 10
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetRawText()..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LoyaltyPoint/EmailOrPhone": {
      "get": {
        "operationId": "GetLoyaltyPointHistory",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Get History by Email or Phone",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Loyalty Point History for a specific customer by Email, MobilePhone or Phone\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-12-31"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The Page of data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The Number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          },
          {
            "name": "Email",
            "in": "query",
            "description": "Customer's email which will be used to pull the loyalty point history",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "customer@example.com"
          },
          {
            "name": "MobilePhone",
            "in": "query",
            "description": "Customer's Mobile or Phone Number which will be used to pull the loyalty point history",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "1234567890"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "InvoiceID": {
                        "type": "string",
                        "description": "Invoice ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "EntryDate": {
                        "type": "string",
                        "description": "Date entry for transaction related to loyalty point (earned/redeemed)"
                      },
                      "Action": {
                        "type": "string",
                        "description": "The cause of change in loyalty point"
                      },
                      "Invoice": {
                        "type": "string",
                        "description": "Invoice Number"
                      },
                      "Earned": {
                        "type": "integer",
                        "description": "Total Points earned/redeemed for the transaction",
                        "x-stoplight": {
                          "id": "5ezt07vzlkgqs"
                        }
                      },
                      "Balance": {
                        "type": "integer",
                        "description": "Total last points",
                        "x-stoplight": {
                          "id": "drfulqafombie"
                        }
                      },
                      "Remaining": {
                        "type": "integer",
                        "description": "Points will be / already expired",
                        "x-stoplight": {
                          "id": "oxfh9rpqgmmwf"
                        }
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "Point expired date"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for History Point "
                      }
                    }
                  }
                },
                "example": [
                  {
                    "InvoiceID": "c7224cbd-0292-4060-88f8-2f53f328f904",
                    "Outlet": "Offline Store",
                    "EntryDate": "2024-05-08T14:46:00.01",
                    "Action": "Points Earned",
                    "Invoice": "24.05.00041",
                    "Earned": 50,
                    "Balance": 60,
                    "Remaining": 50,
                    "ExpiryDate": "2024-06-08T14:44:37",
                    "Note": "Paid"
                  },
                  {
                    "InvoiceID": "a6ca59c2-4dd8-48ef-8dd7-96ba6427c3f8",
                    "Outlet": "Offline Store",
                    "EntryDate": "2024-05-08T14:25:10.42",
                    "Action": "Point Expired",
                    "Invoice": "24.05.00039",
                    "Earned": -990,
                    "Balance": 10,
                    "Remaining": 0,
                    "ExpiryDate": "0001-01-01T00:00:00",
                    "Note": "Expired on 08 May 2024"
                  },
                  {
                    "InvoiceID": "40c52cfe-6941-421b-b8cd-5cb71b705281",
                    "Outlet": "Offline Store",
                    "EntryDate": "2024-05-08T14:18:21.377",
                    "Action": "Points Earned",
                    "Invoice": "24.05.00040",
                    "Earned": 10,
                    "Balance": 1000,
                    "Remaining": 10,
                    "ExpiryDate": "2024-06-08T14:17:47",
                    "Note": "Paid"
                  },
                  {
                    "InvoiceID": "6ccc6cc6-fc59-41bf-ae5a-8e2d81e1ff31",
                    "Outlet": "Offline Store",
                    "EntryDate": "2024-05-08T13:53:15.987",
                    "Action": "Points Redeemed",
                    "Invoice": "24.05.00037",
                    "Earned": -10,
                    "Balance": 990,
                    "Remaining": 0,
                    "ExpiryDate": "0001-01-01T00:00:00",
                    "Note": "Points Redeemed"
                  },
                  {
                    "InvoiceID": "7eb83722-99e4-4fb9-a2db-103673ad258e",
                    "Outlet": "Offline Store",
                    "EntryDate": "2024-05-08T13:40:30.74",
                    "Action": "Points Earned",
                    "Invoice": "24.05.00036",
                    "Earned": 1000,
                    "Balance": 1000,
                    "Remaining": 0,
                    "ExpiryDate": "0001-01-01T00:00:00",
                    "Note": "Points Earned"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LoyaltyPoint/ExpirationByEmail": {
      "get": {
        "operationId": "GetLoyaltyPointExpirationByEmail",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Get Loyalty Point Expiration By Email",
        "description": "Get Loyalty Point Expiration for a specific customer by Email\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Email",
            "in": "query",
            "description": "Customer's email which will be used to pull the loyalty point expiration date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ferdi@example.com"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Points": {
                        "type": "integer",
                        "description": "Total Points"
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "Date of expiration point"
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "Point": 69,
                        "ExpiryDate": "2023-01-31"
                      },
                      {
                        "Point": 70,
                        "ExpiryDate": "2023-01-26"
                      },
                      {
                        "Point": 40,
                        "ExpiryDate": "2023-01-24"
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Points": 69,
                    "ExpiryDate": "2023-01-31"
                  },
                  {
                    "Points": 70,
                    "ExpiryDate": "2023-01-26"
                  },
                  {
                    "Points": 40,
                    "ExpiryDate": "2023-01-24"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LoyaltyPoint/ExpirationByMobile": {
      "get": {
        "operationId": "GetLoyaltyPointExpirationByMobile",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Get Loyalty Point Expiration By Mobile Phone",
        "description": "Get Loyalty Point Expiration for a specific customer by Mobile Phone\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "MobilePhone",
            "in": "query",
            "description": "Customer's Mobile or Phone Number which will be used to pull the loyalty point expiration date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "08968484805"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Points": {
                        "type": "integer",
                        "description": "Total Points"
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "Date of expiration point"
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "Point": 69,
                        "ExpiryDate": "2023-01-31"
                      },
                      {
                        "Point": 70,
                        "ExpiryDate": "2023-01-26"
                      },
                      {
                        "Point": 40,
                        "ExpiryDate": "2023-01-24"
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "Points": 69,
                    "ExpiryDate": "2023-01-31"
                  },
                  {
                    "Points": 70,
                    "ExpiryDate": "2023-01-26"
                  },
                  {
                    "Points": 40,
                    "ExpiryDate": "2023-01-24"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/OutletPerformance": {
      "get": {
        "operationId": "GetOutletPerformance",
        "tags": [
          "Report"
        ],
        "summary": "Get Outlet Performance",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Report Sales Performance by Outlet\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" \n",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From date (ISO 8601 format)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date (ISO 8601 format)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-31"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "the outlet of the reports that shown"
                      },
                      "Transaction": {
                        "type": "integer",
                        "description": "Total Transaction per Outlet"
                      },
                      "Sales": {
                        "type": "number",
                        "description": "Total Amount after discount in invoice"
                      },
                      "Tax": {
                        "type": "number",
                        "description": "Tax value in invoice"
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "Total Sales + Tax from invoice"
                      },
                      "Cost": {
                        "type": "number",
                        "description": "Total Cost per outlet transaction"
                      },
                      "Profit": {
                        "type": "number",
                        "description": "Total profit of the outlet transaction"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet2",
                    "Transaction": 4,
                    "Sales": 25120260,
                    "Tax": 0,
                    "SalesNTax": 25120260,
                    "Cost": 10123590.91,
                    "Profit": 14996669.09
                  },
                  {
                    "Outlet": "Outlet1",
                    "Transaction": 23,
                    "Sales": 10024000,
                    "Tax": 0,
                    "SalesNTax": 10024000,
                    "Cost": 5835862.6,
                    "Profit": 4188137.4
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred."
                }
              }
            }
          }
        }
      }
    },
    "/Payment/Invoice": {
      "get": {
        "operationId": "GetPaymentInvoice",
        "tags": [
          "Invoice Payment"
        ],
        "summary": "Received by Outlet",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Payment/Invoice/p)**\n\n<br>\nInvoice Payment Received By Outlet\n\nRequired Group Role: \"**Payment**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-31"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "the outlet of the transaction"
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Payment": {
                              "type": "string",
                              "description": "payment method of the payment report"
                            },
                            "Amount": {
                              "type": "number",
                              "description": "total amount of the payment"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Payments": [
                      {
                        "Payment": "Cash",
                        "Amount": 510
                      },
                      {
                        "Payment": "Debit Card",
                        "Amount": 200
                      },
                      {
                        "Payment": "Credit Card",
                        "Amount": 700
                      }
                    ]
                  },
                  {
                    "Outlet": "Outlet2",
                    "Payments": [
                      {
                        "Payment": "Cash",
                        "Amount": 500
                      }
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "operationId": "PostPaymentInvoice",
        "tags": [
          "Invoice Payment"
        ],
        "summary": "Add Payment",
        "description": "<!-- theme: info -->\n\n> #### Terminology Changes\n>\n> **StateFilter**, will be changed into **UnpaidValidation** in the upcoming update, the old one will remain works.\n\nAdd Payment in invoice\n\nYou must have \"**ADD**\" role in \"**Payment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Without Validation",
                    "type": "object",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet of transaction"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice transaction number"
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Date": {
                              "type": "string",
                              "description": "Date of payment made"
                            },
                            "Amount": {
                              "type": "number",
                              "description": "Amount of payment"
                            },
                            "BuyerPaidAmount": {
                              "type": "number",
                              "description": "Amount paid by buyer, used to calculate change"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method available in the POS"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note of payment"
                            }
                          }
                        }
                      },
                      "UnpaidValidation": {
                        "type": "boolean",
                        "description": "If true, returns 409 when there's an existing payment",
                        "default": false
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.04.00019",
                      "Payments": [
                        {
                          "Date": "2023-01-01",
                          "Amount": 80000,
                          "BuyerPaidAmount": 100000,
                          "Method": "Cash",
                          "Note": ""
                        },
                        {
                          "Date": "2023-01-01",
                          "Amount": 100000,
                          "BuyerPaidAmount": 100000,
                          "Method": "Debit - Outlet Outlet1",
                          "Note": ""
                        }
                      ]
                    }
                  },
                  {
                    "title": "With Validation",
                    "type": "object",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet of transaction"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice transaction number"
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Date": {
                              "type": "string",
                              "description": "Date of payment made"
                            },
                            "Amount": {
                              "type": "number",
                              "description": "Amount of payment"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method available in the POS"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note of payment"
                            }
                          }
                        }
                      },
                      "UnpaidValidation": {
                        "type": "boolean",
                        "description": "If true, returns 409 when there's an existing payment",
                        "default": false
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.04.00019",
                      "Payments": [
                        {
                          "Date": "2023-01-01",
                          "Amount": 80000,
                          "BuyerPaidAmount": 100000,
                          "Method": "Cash",
                          "Note": ""
                        },
                        {
                          "Date": "2023-01-01",
                          "Amount": 100000,
                          "BuyerPaidAmount": 100000,
                          "Method": "Debit - Outlet Outlet1",
                          "Note": ""
                        }
                      ],
                      "UnpaidValidation": true
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "type": "object",
                    "required": [
                      "OutletID",
                      "Number"
                    ],
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "GUID of Outlet ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice transaction number"
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Date": {
                              "type": "string",
                              "description": "Date of payment made"
                            },
                            "Amount": {
                              "type": "number",
                              "description": "Amount of payment"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method available in the POS"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note of payment"
                            }
                          }
                        }
                      },
                      "UnpaidValidation": {
                        "type": "boolean",
                        "description": "If true, returns 409 when there's an existing payment",
                        "default": false
                      }
                    },
                    "example": {
                      "OutletID": "123e4567-e89b-12d3-a456-426614174000",
                      "Number": "20.04.00019",
                      "Payments": [
                        {
                          "Date": "2023-01-01",
                          "Amount": 80000,
                          "BuyerPaidAmount": 100000,
                          "Method": "Cash",
                          "Note": ""
                        },
                        {
                          "Date": "2023-01-01",
                          "Amount": 100000,
                          "BuyerPaidAmount": 100000,
                          "Method": "Debit - Outlet Outlet1",
                          "Note": ""
                        }
                      ],
                      "UnpaidValidation": true
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Invoice has been paid"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice Number 20.04.00019 has successfully completed a Paid"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Cannot add payment, cause invoice 20.04.00019 had been voided"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity cause Order not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Orders not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "StackTraceString": {
                      "type": "string"
                    },
                    "RemoteStackIndex": {
                      "type": "integer"
                    },
                    "HResult": {
                      "type": "integer"
                    },
                    "Source": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "System.Exception",
                  "Message": "There is no Payment Method with that name Debit - Outlet  Outlet1",
                  "StackTraceString": "   at POS.BLL.API.Model.PaymentAPIModel.TransformData...",
                  "RemoteStackIndex": 0,
                  "HResult": -2146233088,
                  "Source": "POS.BLL"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "operationId": "DeletePaymentInvoice",
        "tags": [
          "Invoice Payment"
        ],
        "summary": "Delete Payment",
        "description": "Delete Payment in invoice\n\nYou must have \"**Edit**\" role in \"**Payment**\" Module ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name that you want to delete"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number that you want to delete"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "21.10.00001"
                    }
                  },
                  {
                    "title": "With OutletID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Outlet ID that you want to delete"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number that you want to delete"
                      }
                    },
                    "example": {
                      "OutletID": "123e4567-e89b-12d3-a456-426614174000",
                      "Number": "21.10.00001"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice Number .21.10.00001 has successfully deleted"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "Cannot delete payment, cause invoice 20.04.00019 had been voided"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice not found",
                  "StackTrace": "   at POS.BLL.API.Model.PaymentAPIModel.ConvertForProcessor[T]..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Payment/Invoice/AddPaymentFull": {
      "post": {
        "operationId": "PostPaymentInvoiceFull",
        "tags": [
          "Invoice Payment"
        ],
        "summary": "Add Payment (Full Payment)",
        "description": "<!-- theme: warning-->\n\n> #### Terminology Changes\n>\n> **StateFilter**, will be changed into **UnpaidValidation** in the upcoming update, the old one will remain works.\n\n> This endpoint is a fractions from API/V3/Payment/Invoice. In This endpoint, you will not need to fill the exact payment amount in order to fill the entire payments (fully paid). You will only need to fill the Amount to 0 (zero). Please see the request example attached.\n\nYou must have \"**ADD**\" role in \"**Payment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "FullyPaidSchema",
                    "type": "object",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "properties": {
                      "Number": {
                        "type": "string",
                        "description": "Invoice transaction number"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet of transaction"
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Date": {
                              "type": "string",
                              "description": "Date of payment made"
                            },
                            "Amount": {
                              "type": "number",
                              "description": "When 0, the amount will be the same as the invoice amount"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method available in the POS"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note of payment"
                            }
                          }
                        }
                      },
                      "UnpaidValidation": {
                        "type": "boolean",
                        "description": "If true, returns 409 when there's an existing payment",
                        "default": false
                      }
                    },
                    "example": {
                      "Number": "20.04.00019",
                      "Outlet": "Outlet Name",
                      "Payments": [
                        {
                          "Date": "2020-04-01",
                          "Amount": 0,
                          "Method": "Cash",
                          "Note": ""
                        }
                      ],
                      "UnpaidValidation": false
                    }
                  },
                  {
                    "title": "WithOutletIDSchema",
                    "type": "object",
                    "required": [
                      "OutletID",
                      "Number",
                      "Outlet"
                    ],
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "GUID of the Outlet ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice transaction number"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet of transaction"
                      },
                      "Payments": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Date": {
                              "type": "string",
                              "description": "Date of payment made"
                            },
                            "Amount": {
                              "type": "number",
                              "description": "When 0, the amount will be the same as the invoice amount"
                            },
                            "Method": {
                              "type": "string",
                              "description": "Payment method available in the POS"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note of payment"
                            }
                          }
                        }
                      },
                      "UnpaidValidation": {
                        "type": "boolean",
                        "description": "If true, returns 409 when there's an existing payment",
                        "default": false
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "20.04.00019",
                      "Outlet": "Offline",
                      "Payments": [
                        {
                          "Date": "2020-04-01",
                          "Amount": 0,
                          "Method": "Cash",
                          "Note": ""
                        }
                      ],
                      "UnpaidValidation": false
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Invoice has been paid"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice Number 20.04.00019 has successfully completed a Paid"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Payment/SupplierBill": {
      "post": {
        "operationId": "PostPaymentSupplierBill",
        "tags": [
          "Bill Payment"
        ],
        "summary": "Add Payment",
        "description": "Add Payment in Supplier Bill\n\nYou must have \"**ADD**\" role in \"**Payment**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet of transaction"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Invoice supplier bill number"
                  },
                  "Payments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "Date": {
                          "type": "string",
                          "description": "Date of Payment Made"
                        },
                        "Amount": {
                          "type": "number",
                          "description": "Amount of paid"
                        },
                        "Method": {
                          "type": "string",
                          "description": "Payment Method list that available in the POS"
                        },
                        "Note": {
                          "type": "string",
                          "description": "Note of payment"
                        }
                      }
                    }
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "20.04.00019",
                "Payments": [
                  {
                    "Date": "2021-04-01T00:00:00",
                    "Amount": 1000000,
                    "Method": "Cash",
                    "Note": "Payment for Invoice Number 20.04.00019"
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Invoice has been paid"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice Number 20.04.00019 has successfully completed a Paid"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {}
          },
          "500": {
            "description": "",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "operationId": "DeletePaymentSupplierBill",
        "tags": [
          "Bill Payment"
        ],
        "summary": "Delete Payment",
        "description": "Delete Payment in invoice\n\nYou must have \"**Edit**\" role in \"**Payment**\" Module ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name that you want to delete"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Invoice number that you want to delete"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "21.10.00001"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice Number .21.10.00001 has successfully deleted"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Estimate": {
      "get": {
        "operationId": "GetEstimateList",
        "tags": [
          "Estimate"
        ],
        "summary": "Get Estimate List",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Estimate/p)**\n\n<br>\nGet list of estimate order\n\nRequired Group Role: \"**Orders**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From date. this is the primary key for tje object",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-01T00:00:00"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date. this is primary key for the object",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-31T23:59:59"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be display",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of estimate order"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Name of Customer "
                      },
                      "Date": {
                        "type": "string",
                        "description": "Date of estimate order"
                      },
                      "Status": {
                        "type": "string",
                        "description": "Status of convert estimate order to sales order / invoice (Waiting / Approved)"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Created Time estimate"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "19.12.00102",
                    "Customer": "Hendry",
                    "Date": "2019-12-31T00:00:00",
                    "Created": "2019-12-31T09:30:01"
                  },
                  {
                    "Outlet": "Outlet1",
                    "Number": "Estimate001",
                    "Customer": "Hendry",
                    "Date": "2019-12-05T00:00:00",
                    "Status": "Approved",
                    "Created": "2019-12-05T08:45:08"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "operationId": "PutEstimate",
        "tags": [
          "Estimate"
        ],
        "summary": "Update Estimate",
        "description": "Update an Estimate based on order\n\nYou must have \"**EDIT**\" role in \"**Estimate**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/estimate"
              },
              "example": {
                "Outlet": "Outlet 1",
                "Number": "OTL1.23.01.005",
                "Date": "2023-01-20",
                "Discount": 20,
                "DiscountAmount": 10000,
                "TaxType": "No Tax",
                "Tag": "Walk In",
                "Customer": {
                  "Email": "Hendry@dealpos.com",
                  "Name": "Hendry",
                  "Mobile": 85693145151,
                  "Address": "Jl. Muara Karang P3T No.30",
                  "Gender": "1",
                  "Code": "HW001"
                },
                "Variants": [
                  {
                    "Code": "Bj001",
                    "Quantity": 1,
                    "Cost": 200000,
                    "Price": 500000,
                    "Discount": 10,
                    "Note": "New Arrival"
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Estimate has been updated"
                    }
                  }
                },
                "example": {
                  "ID": "c1b2c529-fa67-4e81-ac65-10d315051824"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "operationId": "PostEstimate",
        "tags": [
          "Estimate"
        ],
        "summary": "Create an Estimate",
        "description": "Create an estimate based on order\n\nYou must have \"**CREATE**\" role in \"**Estimate**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/estimate"
              },
              "example": {
                "Outlet": "Outlet 1",
                "Number": "OTL1.23.01.005",
                "Date": "2023-01-20",
                "Discount": 20,
                "DiscountAmount": 10000,
                "TaxType": "No Tax",
                "Tag": "Walk In",
                "Customer": {
                  "Email": "Hendry@dealpos.com",
                  "Name": "Hendry",
                  "Mobile": 85693145151,
                  "Address": "Jl. Muara Karang P3T No.30",
                  "Gender": "1",
                  "Code": "HW001"
                },
                "Variants": [
                  {
                    "Code": "Bj001",
                    "Quantity": 1,
                    "Cost": 200000,
                    "Price": 500000,
                    "Discount": 10,
                    "Note": "New Arrival"
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Estimate has been created"
                    }
                  }
                },
                "example": {
                  "ID": "5d76bd2f-43e1-401f-98ad-c159b8c6ac6c"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "operationId": "DeleteEstimate",
        "tags": [
          "Estimate"
        ],
        "summary": "Delete Estimate",
        "description": "Delete an estimate invoice\n\nYou must have \"**Delete**\" role in \"**Estimate**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Estimer Number"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "Estimate001"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Estimate befa74af-234f-4a43-bd87-054b41824a5e has been deleted!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Estimate/Detail": {
      "get": {
        "operationId": "GetEstimateDetail",
        "tags": [
          "Estimate"
        ],
        "summary": "Get Estimate Detail",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet an estimate detail\n\nRequired Group Role: \"**Orders**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Number",
            "in": "query",
            "description": "estimate number. this is primary key for the object",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "OTL1.23.01.005"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "outlet of the created estimate",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet 1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "outlet of the created estimate"
                  },
                  "Number": {
                    "type": "string",
                    "description": "estimate number. this is primary key for the object"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet 1",
                "Number": "OTL1.23.01.005"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/estimate"
                },
                "example": {
                  "Outlet": "Outlet 1",
                  "Number": "OTL1.23.01.005",
                  "Date": "2023-01-20",
                  "Discount": 20,
                  "DiscountAmount": 10000,
                  "TaxType": "No Tax",
                  "Tag": "Walk In",
                  "Customer": {
                    "Email": "Hendry@dealpos.com",
                    "Name": "Hendry",
                    "Mobile": 85693145151,
                    "Address": "Jl. Muara Karang P3T No.30",
                    "Gender": "1",
                    "Code": "HW001"
                  },
                  "Variants": [
                    {
                      "Code": "Bj001",
                      "Quantity": 1,
                      "Cost": 200000,
                      "Price": 500000,
                      "Discount": 10,
                      "Note": "New Arrival"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Estimate/WithTotalCount": {
      "get": {
        "operationId": "GetEstimateWithTotalCount",
        "tags": [
          "Estimate"
        ],
        "summary": "List Estimate With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n<br>\nGet list of estimate order with total count\n\nRequired Group Role: \"**Orders**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy-mm-dd)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2019-12-31"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed\n",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API\n",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "PageNumber",
                  "PageSize"
                ],
                "type": "object",
                "properties": {
                  "PageNumber": {
                    "type": "integer",
                    "description": "The number of page data to be displayed\n"
                  },
                  "PageSize": {
                    "type": "integer",
                    "description": "The number of rows returned by the API\n"
                  },
                  "From": {
                    "type": "string",
                    "description": "From Date (format: yyyy-mm-dd)"
                  },
                  "To": {
                    "type": "string",
                    "description": "To Date (format: yyyy-mm-dd)"
                  }
                }
              },
              "example": {
                "PageNumber": 1,
                "PageSize": 20,
                "From": "2019-12-01",
                "To": "2019-12-31"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Name of The origin outlet"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Number of Estimate Invoice"
                          },
                          "Customer": {
                            "type": "string",
                            "description": "Name of the customer"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of Estimate Invoice"
                          },
                          "Status": {
                            "type": "string",
                            "description": "Progress/State of the estimate Invoice"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice created Estimate Date by system\n"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "19.12.00102",
                      "Customer": "Hendry",
                      "Date": "2019-12-31T00:00:00",
                      "Status": "Waiting",
                      "Created": "2019-12-31T09:30:01"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "Estimate001",
                      "Customer": "Hendry",
                      "Date": "2019-12-05T00:00:00",
                      "Status": "Approved",
                      "Created": "2019-12-05T08:45:08"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "String '20139-12-05' was not recognized as a valid DateTime.",
                  "StackTrace": "   at System.DateTimeParse.Parse....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Outlet": {
      "get": {
        "operationId": "GetOutletList",
        "tags": [
          "Outlet"
        ],
        "summary": "List Outlets",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/Outlet/p)**\n\n<br>\nGet List of Outlets\n\nRequired Group Role: \"**Outlets**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Name",
            "in": "query",
            "required": false,
            "description": "Outlet Name (Can be searched keyword contain of outlet name)",
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Access",
            "in": "query",
            "required": false,
            "description": "Access Restriction",
            "schema": {
              "type": "string",
              "default": "All",
              "enum": [
                "Peek",
                "Read",
                "Write",
                "All"
              ]
            },
            "example": "All"
          },
          {
            "name": "Suspended",
            "in": "query",
            "required": false,
            "description": "Outlet status",
            "schema": {
              "type": "boolean",
              "default": false,
              "enum": [
                false,
                true
              ],
              "example": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Outlet ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Outlet's name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Outlet's code"
                      },
                      "Suspended": {
                        "type": "boolean",
                        "description": "Outlet's status"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "227427f5-fb25-4f47-9e39-2370fa70d156",
                    "Name": "Outlet1",
                    "Code": "001",
                    "Suspended": false
                  },
                  {
                    "ID": "28342qw5-fb25-4287-3259-2210faaf156",
                    "Name": "Outlet2",
                    "Code": "002",
                    "Suspended": false
                  },
                  {
                    "ID": "30e4a41d-7fc6-46f5-9945-fd5e0642w3e3",
                    "Name": "Outlet3",
                    "Code": "003",
                    "Suspended": false
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "operationId": "PutOutlet",
        "tags": [
          "Outlet"
        ],
        "summary": "Update an Outlet",
        "description": "Update an Outlet\n\nYou must have \"**EDIT**\" role in \"**Outlets**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet name that will be updated"
                  },
                  "Code": {
                    "type": "string",
                    "description": "Code of outlet"
                  },
                  "Receipt": {
                    "type": "string",
                    "description": "Code Of receipt"
                  },
                  "NegativeInventory": {
                    "type": "string",
                    "description": "Negative inventory configuration",
                    "enum": [
                      "Yes",
                      "No"
                    ]
                  }
                }
              },
              "example": {
                "Outlet": "Emporium Pluit",
                "Code": "001",
                "Receipt": "001",
                "NegativeInventory": "Yes"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Outlet has been updated"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet has been updated"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Code not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "Data": {
                      "type": "object",
                      "properties": {
                        "HelpLink.ProdName": {
                          "type": "string"
                        },
                        "HelpLink.ProdVer": {
                          "type": "string"
                        },
                        "HelpLink.EvtSrc": {
                          "type": "string"
                        },
                        "HelpLink.EvtID": {
                          "type": "string"
                        },
                        "HelpLink.BaseHelpUrl": {
                          "type": "string"
                        },
                        "HelpLink.LinkId": {
                          "type": "string"
                        },
                        "SqlError 1": {
                          "type": "string"
                        }
                      }
                    },
                    "StackTraceString": {
                      "type": "string"
                    },
                    "RemoteStackIndex": {
                      "type": "integer"
                    },
                    "HResult": {
                      "type": "integer"
                    },
                    "Source": {
                      "type": "string"
                    },
                    "ClientConnectionId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "System.Data.SqlClient.SqlException",
                  "Message": "The parameterized query '(@ID uniqueidentifier,@EntityGroupID nvarchar(4000),@Code nvarch' expects the parameter '@Name', which was not supplied.",
                  "Data": {
                    "HelpLink.ProdName": "Microsoft SQL Server",
                    "HelpLink.ProdVer": "15.00.2000",
                    "HelpLink.EvtSrc": "MSSQLServer",
                    "HelpLink.EvtID": "8178",
                    "HelpLink.BaseHelpUrl": "http://go.microsoft.com/fwlink",
                    "HelpLink.LinkId": "20476",
                    "SqlError 1": "System.Data.SqlClient.SqlError: The parameterized query '(@ID uniqueidentifier,@EntityGroupID nvarchar(4000),@Code nvarch' expects the parameter '@Name', which was not supplied."
                  },
                  "StackTraceString": "   at System.Data.SqlClient.SqlConnection....",
                  "RemoteStackIndex": 0,
                  "HResult": -2146232060,
                  "Source": "Core .Net SqlClient Data Provider",
                  "ClientConnectionId": "94b98778-7e64-4293-a569-112929bef8f4"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "operationId": "PostOutlet",
        "tags": [
          "Outlet"
        ],
        "summary": "Create an Outlet",
        "description": "Create an Outlet\n\nYou must have \"**CREATE**\" role in \"**Outlets**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "Outlet's name that will be created"
                  },
                  "Code": {
                    "type": "string",
                    "description": "Code of new outlet"
                  },
                  "Receipt": {
                    "type": "string",
                    "description": "Code Of receipt"
                  },
                  "NegativeInventory": {
                    "type": "string",
                    "description": "Negative inventory configuration",
                    "enum": [
                      "Yes",
                      "No"
                    ]
                  }
                }
              },
              "example": {
                "Name": "Emporium Pluit",
                "Code": "001",
                "Receipt": "001",
                "NegativeInventory": "Yes"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Outlet has been created"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet has been created"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Code cannot duplicate"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "Data": {
                      "type": "object",
                      "properties": {
                        "HelpLink.ProdName": {
                          "type": "string"
                        },
                        "HelpLink.ProdVer": {
                          "type": "string"
                        },
                        "HelpLink.EvtSrc": {
                          "type": "string"
                        },
                        "HelpLink.EvtID": {
                          "type": "string"
                        },
                        "HelpLink.BaseHelpUrl": {
                          "type": "string"
                        },
                        "HelpLink.LinkId": {
                          "type": "string"
                        },
                        "SqlError 1": {
                          "type": "string"
                        }
                      }
                    },
                    "StackTraceString": {
                      "type": "string"
                    },
                    "RemoteStackIndex": {
                      "type": "integer"
                    },
                    "HResult": {
                      "type": "integer"
                    },
                    "Source": {
                      "type": "string"
                    },
                    "ClientConnectionId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "System.Data.SqlClient.SqlException",
                  "Message": "The parameterized query '(@ID uniqueidentifier,@EntityGroupID nvarchar(4000),@Code nvarch' expects the parameter '@Name', which was not supplied.",
                  "Data": {
                    "HelpLink.ProdName": "Microsoft SQL Server",
                    "HelpLink.ProdVer": "15.00.2000",
                    "HelpLink.EvtSrc": "MSSQLServer",
                    "HelpLink.EvtID": "8178",
                    "HelpLink.BaseHelpUrl": "http://go.microsoft.com/fwlink",
                    "HelpLink.LinkId": "20476",
                    "SqlError 1": "System.Data.SqlClient.SqlError: The parameterized query '(@ID uniqueidentifier,@EntityGroupID nvarchar(4000),@Code nvarch' expects the parameter '@Name', which was not supplied."
                  },
                  "StackTraceString": "   at System.Data.SqlClient.SqlConnection...",
                  "RemoteStackIndex": 0,
                  "HResult": -2146232060,
                  "Source": "Core .Net SqlClient Data Provider",
                  "ClientConnectionId": "94b98778-7e64-4293-a569-112929bef8f4"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "operationId": "DeleteOutlet",
        "tags": [
          "Outlet"
        ],
        "summary": "Delete an Outlet",
        "description": "Delete an Outlet\n\nYou must have \"**DELETE**\" role in \"**Outlets**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Code of outlet that will be deleted"
                  }
                }
              },
              "example": {
                "Code": "emporium"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet Emporium Pluit has been deleted"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "RemoteStackIndex": {
                      "type": "integer"
                    },
                    "HResult": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "ClassName": "System.Exception",
                  "Message": "Object reference not set to an instance of an objects.",
                  "RemoteStackIndex": 0,
                  "HResult": -2146233088
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Outlet/ID/{id}": {
      "get": {
        "operationId": "GetOutletByID",
        "tags": [
          "Outlet"
        ],
        "summary": "Get Outlet By ID",
        "description": ">Get Outlet Name and Code By ID\n\nRequired Group Role: \"**Outlets**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "ID of outlet",
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "example": "227427f5-fb25-4f47-9e39-2370fa70d156"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Outlet ID"
                    },
                    "Name": {
                      "type": "string",
                      "description": "Outlet's name"
                    },
                    "Code": {
                      "type": "string",
                      "description": "Outlet's code"
                    },
                    "Suspended": {
                      "type": "boolean",
                      "description": "Outlet's status"
                    }
                  }
                },
                "example": {
                  "ID": "227427f5-fb25-4f47-9e39-2370fa70d156",
                  "Name": "Outlet1",
                  "Code": "001",
                  "Suspended": false
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Outlet/ListID": {
      "get": {
        "operationId": "GetOutletListByListID",
        "tags": [
          "Outlet"
        ],
        "summary": "Get Outlet List By List ID",
        "description": ">Get Outlet Name and Code By ID\n\nRequired Group Role: \"**Outlets**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ListID",
            "in": "query",
            "description": "List of OutletID",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "guid"
              }
            },
            "example": "227427f5-fb25-4f47-9e39-2370fa70d156, 212347f5-gt52-4127-8148-7780fabcd123"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Outlet ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Outlet's name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Outlet's code"
                      },
                      "Suspended": {
                        "type": "boolean",
                        "description": "Outlet's status"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "227427f5-fb25-4f47-9e39-2370fa70d156",
                    "Name": "Outlet1",
                    "Code": "001",
                    "Suspended": false
                  },
                  {
                    "ID": "212347f5-gt52-4127-8148-7780fabcd123",
                    "Name": "Outlet1",
                    "Code": "001",
                    "Suspended": false
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Outlet/Detail": {
      "get": {
        "operationId": "GetOutletDetail",
        "tags": [
          "Outlet"
        ],
        "summary": "Get Outlet Detail",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet Outlet Detail\n\nRequired Group Role: \"**Outlet**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Code",
            "in": "query",
            "description": "Outlet Code.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "OTL1"
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Outlet Name.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Outlet ID"
                    },
                    "Code": {
                      "type": "string",
                      "description": "Outlet Code"
                    },
                    "Name": {
                      "type": "string",
                      "description": "Outlet Name"
                    },
                    "Email": {
                      "type": "string",
                      "description": "Outlet's Email"
                    },
                    "SalesTarget": {
                      "type": "integer",
                      "description": "Target sales per outlet"
                    },
                    "Suspended": {
                      "type": "boolean",
                      "description": "Status of Outlet (false = unsuspend, true = suspend)"
                    },
                    "MinimumInventory": {
                      "type": "integer",
                      "description": "Reorder Point"
                    },
                    "EnabledKitchenDisplay": {
                      "type": "boolean",
                      "description": "Kitchen Display status "
                    },
                    "ReceiptTemplate": {
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Receipt template Code"
                        },
                        "OutletName": {
                          "type": "string",
                          "description": "Receipt outlet name"
                        },
                        "Address": {
                          "type": "string",
                          "description": "Receipt Address"
                        },
                        "ContactInfo": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "410ba2b7-8eff-4759-b5f1-cf47b33ef1cc",
                  "Code": "OTL1",
                  "Name": "Outlet1",
                  "Email": "hendry@gmail.com",
                  "SalesTarget": 50000,
                  "Suspended": false,
                  "MinimumInventory": 0,
                  "EnabledKitchenDisplay": false,
                  "ReceiptTemplate": {
                    "Code": "B1",
                    "OutletName": "Outlet1",
                    "Address": "Muara Karang P 3 Timur No 30\r\nJakarta Utara, Indonesia",
                    "ContactInfo": "Phone: 021-66600886"
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/Code": {
      "get": {
        "operationId": "GetCustomerByCode",
        "tags": [
          "Deprecated"
        ],
        "summary": "Get Customer By Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet customer based on customer code\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Member Code of customer. this is primary key of the object"
                  }
                }
              },
              "example": {
                "Code": "HW008"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer"
                },
                "example": {
                  "ID": "5acffe34-346f-4888-afd8-0a551e556681",
                  "Name": "Tafta tata",
                  "Email": "Tafta@dealpos.com",
                  "Title": "Mr.",
                  "FirstName": "Tafta",
                  "LastName": "tata",
                  "Gender": "Male",
                  "Code": "HW008",
                  "Phone": "021-66698155",
                  "MobilePhone": "081588818888",
                  "Fax": "6325894",
                  "Address": "Jl. Lenteng Agung",
                  "City": "Jakarta",
                  "Nationality": "Indonesian",
                  "ReferredBy": "449e35af-190d-4137-aa13-9cf2cf6af57a",
                  "Identification": "3173656111",
                  "Birthday": "18 Mar 1994",
                  "JoinDate": "22 Jul 2019",
                  "Group": "Gold",
                  "ExpiredGroup": "31 Jul 2019",
                  "SignUpOutlet": "Outlet1",
                  "ImageURL": "//res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg",
                  "LoyaltyPoint": 88,
                  "Status": "Active"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/MobilePhone": {
      "get": {
        "operationId": "GetCustomerByMobilePhone",
        "tags": [
          "Deprecated"
        ],
        "summary": "Get Customer By MobilePhone",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet a customer based on customer mobile phone number\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "MobilePhone"
                ],
                "type": "object",
                "properties": {
                  "MobilePhone": {
                    "type": "string",
                    "description": "Phone / Mobile Phone Number of customer "
                  }
                }
              },
              "example": {
                "MobilePhone": "081588818888"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "ID of customer"
                    },
                    "Name": {
                      "type": "string",
                      "description": "Name of customer"
                    },
                    "Email": {
                      "type": "string",
                      "description": "Email Address of customer"
                    },
                    "Title": {
                      "type": "string",
                      "description": "Title Name of customer"
                    },
                    "FirstName": {
                      "type": "string",
                      "description": "First name of customer"
                    },
                    "LastName": {
                      "type": "string",
                      "description": "Last name of customer"
                    },
                    "Gender": {
                      "type": "string",
                      "description": "Gender of customer"
                    },
                    "Code": {
                      "type": "string",
                      "description": "Code of customer"
                    },
                    "Phone": {
                      "type": "string",
                      "description": "Phone number of customer"
                    },
                    "MobilePhone": {
                      "type": "string",
                      "description": "Mobile number of customer. this is primary key for the object"
                    },
                    "Fax": {
                      "type": "string",
                      "description": "Fax number of customer"
                    },
                    "Address": {
                      "type": "string",
                      "description": "Address of customer"
                    },
                    "City": {
                      "type": "string",
                      "description": "City of customer"
                    },
                    "Nationality": {
                      "type": "string",
                      "description": "Nationality of customer"
                    },
                    "ReferredBy": {
                      "type": "string",
                      "description": "Customer ID who referred this customer"
                    },
                    "Identification": {
                      "type": "string",
                      "description": "identification number of customer"
                    },
                    "Birthday": {
                      "type": "string",
                      "description": "Birthday of customer"
                    },
                    "JoinDate": {
                      "type": "string",
                      "description": "Join date of customer"
                    },
                    "Group": {
                      "type": "string",
                      "description": "Group of customer"
                    },
                    "ExpiredGroup": {
                      "type": "string",
                      "description": "Expired group of customer"
                    },
                    "SignUpOutlet": {
                      "type": "string",
                      "description": "Sign up oulet when created the new customer"
                    },
                    "ImageURL": {
                      "type": "string",
                      "description": "Image url of customer"
                    },
                    "LoyaltyPoint": {
                      "type": "integer",
                      "description": "Loyalty point of customer"
                    },
                    "Status": {
                      "type": "string",
                      "description": "Customer Activation Status",
                      "default": "Active / WaitingForApproval / Suspended"
                    }
                  }
                },
                "example": {
                  "ID": "5acffe34-346f-4888-afd8-0a551e556681",
                  "Name": "Tafta tata",
                  "Email": "Tafta@dealpos.com",
                  "Title": "Mr.",
                  "FirstName": "Tafta",
                  "LastName": "tata",
                  "Gender": "Male",
                  "Code": "HW008",
                  "Phone": "021-66698155",
                  "MobilePhone": "081588818888",
                  "Fax": "6325894",
                  "Address": "Jl. Lenteng Agung",
                  "City": "Jakarta",
                  "Nationality": "Indonesian",
                  "ReferredBy": "449e35af-190d-4137-aa13-9cf2cf6af57a",
                  "Identification": "3173656111",
                  "Birthday": "18 Mar 1994",
                  "JoinDate": "22 Jul 2019",
                  "Group": "Gold",
                  "ExpiredGroup": "31 Jul 2019",
                  "SignUpOutlet": "Outlet1",
                  "ImageURL": "//res.cloudinary.com/dealposdev/image/upload//Contact/ff63d5ad-b42b-4a84-a77f-eb40f0bd6dd8/0.jpg",
                  "LoyaltyPoint": 88,
                  "Status": "Active"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/ByCode": {
      "put": {
        "operationId": "UpdateCustomerByCode",
        "tags": [
          "Customer"
        ],
        "summary": "Update Customer By Code",
        "description": "Update a customer based on customer code\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "the code of the customer. this is primary key for the object"
                  },
                  "Name": {
                    "type": "string",
                    "description": "the name of customer"
                  },
                  "FirstName": {
                    "type": "string",
                    "description": "first name of the customer"
                  },
                  "LastName": {
                    "type": "string",
                    "description": "last name of the customer"
                  },
                  "Birthdate": {
                    "type": "string",
                    "description": "birthdate of the customer"
                  },
                  "Email": {
                    "type": "string",
                    "description": "email of the customer"
                  },
                  "Phone": {
                    "type": "string",
                    "description": "phone number of the customer"
                  },
                  "Mobile": {
                    "type": "string",
                    "description": "mobile phone of the customer"
                  },
                  "Address": {
                    "type": "string",
                    "description": "address of the customer"
                  },
                  "Gender": {
                    "type": "string",
                    "description": "gender of the customer"
                  },
                  "Group": {
                    "type": "string",
                    "description": "group of the customer"
                  },
                  "ExpiredGroup": {
                    "type": "string",
                    "description": "expiry date of the customer group"
                  },
                  "LoyaltyPoint": {
                    "type": "integer",
                    "description": "loyalty point of the customer"
                  },
                  "ImageURL": {
                    "type": "string",
                    "description": "picture of the customer"
                  },
                  "Status": {
                    "type": "string",
                    "description": "Status Customer",
                    "enum": [
                      "Active",
                      "WaitingForApproval",
                      "Suspended"
                    ]
                  },
                  "ReferredByID": {
                    "type": "string",
                    "format": "guid",
                    "description": "the ID of the customer who refer this customer"
                  }
                }
              },
              "example": {
                "Code": "0011",
                "Name": "Hendry Wijaya",
                "FirstName": "Hendry",
                "LastName": "Wijaya",
                "Birthdate": "1994-03-21",
                "Email": "hendryw@gmail.com",
                "Phone": "0216892235",
                "Mobile": "081589632178",
                "Address": "Jl.Pluit Karang Jelita no 51",
                "Gender": "Male",
                "Group": "Gold",
                "ExpiredGroup": "2020-12-12",
                "LoyaltyPoint": 80,
                "Status": "Active",
                "ReferredByID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer-Response"
                },
                "example": {
                  "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                  "Message": "Record updated"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/ByID": {
      "put": {
        "operationId": "UpdateCustomerByID",
        "tags": [
          "Customer"
        ],
        "summary": "Update Customer By ID",
        "description": "Update a customer based on customer ID\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string",
                    "description": "Customer ID"
                  },
                  "Name": {
                    "type": "string",
                    "description": "the name of customer"
                  },
                  "Code": {
                    "type": "string",
                    "description": "the code of the customer. this is primary key for the object"
                  },
                  "FirstName": {
                    "type": "string",
                    "description": "first name of the customer"
                  },
                  "LastName": {
                    "type": "string",
                    "description": "last name of the customer"
                  },
                  "Birthdate": {
                    "type": "string",
                    "description": "birthdate of the customer"
                  },
                  "Email": {
                    "type": "string",
                    "description": "email of the customer"
                  },
                  "Phone": {
                    "type": "string",
                    "description": "phone number of the customer"
                  },
                  "Mobile": {
                    "type": "string",
                    "description": "mobile phone of the customer"
                  },
                  "Address": {
                    "type": "string",
                    "description": "address of the customer"
                  },
                  "Gender": {
                    "type": "string",
                    "description": "gender of the customer"
                  },
                  "Group": {
                    "type": "string",
                    "description": "group of the customer"
                  },
                  "ExpiredGroup": {
                    "type": "string",
                    "description": "expiry date of the customer group"
                  },
                  "LoyaltyPoint": {
                    "type": "integer",
                    "description": "loyalty point of the customer"
                  },
                  "ImageURL": {
                    "type": "string",
                    "description": "picture of the customer"
                  },
                  "Status": {
                    "type": "string",
                    "description": "Status Customer",
                    "enum": [
                      "Active",
                      "WaitingForApproval",
                      "Suspended"
                    ]
                  }
                }
              },
              "example": {
                "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                "Name": "Hendry Wijaya",
                "Code": "0011",
                "FirstName": "Hendry",
                "LastName": "Wijaya",
                "Birthdate": "1994-03-21",
                "Email": "hendryw@gmail.com",
                "Phone": "0216892235",
                "Mobile": "081589632178",
                "Address": "Jl.Pluit Karang Jelita no 51",
                "Gender": "Male",
                "Group": "Gold",
                "ExpiredGroup": "2020-12-12",
                "LoyaltyPoint": 80,
                "Status": "Active"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer-Response"
                },
                "example": {
                  "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                  "Message": "Record updated"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/ListID": {
      "get": {
        "operationId": "GetCustomerByListID",
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer By List ID",
        "description": ">Get customer based on customer List ID\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ListID",
            "in": "query",
            "description": "List of CustomerID",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "guid"
              }
            },
            "example": "227427f5-fb25-4f47-9e39-2370fa70d156,212347f5-gt52-4127-8148-7780fabcd123"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of customer"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of customer"
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email Address of customer"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of customer"
                      },
                      "MobilePhone": {
                        "type": "string",
                        "description": "Mobile number of customer"
                      },
                      "Status": {
                        "type": "string",
                        "description": "Status Customer ",
                        "default": "Active / WaitingForApproval / Suspended"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "5acffe34-346f-4888-afd8-0a551e556681",
                    "Name": "Tafta tata",
                    "Email": "Tafta@dealpos.com",
                    "Code": "DP036",
                    "MobilePhone": "081588818888",
                    "Status": "Active"
                  },
                  {
                    "ID": "c9b9e5d6-78ce-413d-a02b-1de97e7cd125",
                    "Name": "Hendry",
                    "Email": "hendry@dealpos.com",
                    "Code": "DP008",
                    "MobilePhone": "081588818324",
                    "Status": "Active"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/ByMobilePhone": {
      "put": {
        "operationId": "UpdateCustomerByMobilePhone",
        "tags": [
          "Customer"
        ],
        "summary": "Update Customer By MobilePhone",
        "description": "Update a customer based on customer' mobile phone\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Mobile"
                ],
                "type": "object",
                "properties": {
                  "Mobile": {
                    "type": "string",
                    "description": "mobile phone of the customer"
                  },
                  "Name": {
                    "type": "string",
                    "description": "the name of customer"
                  },
                  "FirstName": {
                    "type": "string",
                    "description": "first name of the customer"
                  },
                  "LastName": {
                    "type": "string",
                    "description": "last name of the customer"
                  },
                  "Birthdate": {
                    "type": "string",
                    "description": "birthdate of the customer"
                  },
                  "Code": {
                    "type": "string",
                    "description": "the code of the customer. this is primary key for the object"
                  },
                  "Email": {
                    "type": "string",
                    "description": "email of the customer"
                  },
                  "Phone": {
                    "type": "string",
                    "description": "phone number of the customer"
                  },
                  "Address": {
                    "type": "string",
                    "description": "address of the customer"
                  },
                  "Gender": {
                    "type": "string",
                    "description": "gender of the customer"
                  },
                  "Group": {
                    "type": "string",
                    "description": "group of the customer"
                  },
                  "ExpiredGroup": {
                    "type": "string",
                    "description": "expiry date of the customer group"
                  },
                  "LoyaltyPoint": {
                    "type": "integer",
                    "description": "loyalty point of the customer"
                  },
                  "ImageURL": {
                    "type": "string",
                    "description": "picture of the customer"
                  },
                  "Status": {
                    "type": "string",
                    "description": "Status Customer.",
                    "enum": [
                      "Active",
                      "WaitingForApproval",
                      "Suspended"
                    ]
                  }
                }
              },
              "example": {
                "Code": "0011",
                "Name": "Hendry Wijaya",
                "FirstName": "Hendry",
                "LastName": "Wijaya",
                "Birthdate": "1994-03-21",
                "Email": "hendryw@gmail.com",
                "Phone": "0216892235",
                "Mobile": "081589632178",
                "Address": "Jl.Pluit Karang Jelita no 51",
                "Gender": "Male",
                "Group": "Gold",
                "ExpiredGroup": "2020-12-12",
                "LoyaltyPoint": 80,
                "Status": "Active"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer-Response"
                },
                "example": {
                  "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                  "Message": "Record updated"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/VerifyMobile": {
      "put": {
        "operationId": "VerifyCustomerMobile",
        "tags": [
          "Customer"
        ],
        "summary": "Verify Customer's Mobile",
        "description": "Use to verify customer's mobile phone\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Mobile",
                  "MobileVerified"
                ],
                "type": "object",
                "properties": {
                  "Mobile": {
                    "type": "string",
                    "description": "MobilePhone of the customer"
                  },
                  "MobileVerified": {
                    "type": "boolean",
                    "description": "true means customer's mobile phone is valid, false means customer's mobile phone is invalid"
                  }
                },
                "example": {
                  "Mobile": "081574945443",
                  "MobileVerified": false
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Update Mobile Verified is success"
                  }
                },
                "example": {
                  "Message": "Update Mobile Verified is success"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Mobile Phone is not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/VerifyEmail": {
      "put": {
        "operationId": "VerifyCustomerEmail",
        "tags": [
          "Customer"
        ],
        "summary": "Verify Customer's Email",
        "description": "Use to verify customer's email\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Email",
                  "EmailVerified"
                ],
                "type": "object",
                "properties": {
                  "Email": {
                    "type": "string",
                    "description": "Email of the customer"
                  },
                  "EmailVerified": {
                    "type": "boolean",
                    "description": "true means customer's email is valid, false means customer's email is invalid"
                  }
                },
                "example": {
                  "Email": "raizaldi.achmad@gmail.com",
                  "EmailVerified": true
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Update Email Verified is success"
                  }
                },
                "example": {
                  "Message": "Update Email Verified is success"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Email is not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/DeleteByCode": {
      "delete": {
        "operationId": "DeleteCustomerByCode",
        "tags": [
          "Customer"
        ],
        "summary": "Delete Customer By Code",
        "description": "Delete a customer based on customer code\n\nYou must have \"**DELETE**\" role in \"**Contacts**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "customer code of the customer. this is primary key for the object"
                  }
                }
              },
              "example": {
                "Code": "0011"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Customer has been deleted successfully."
                    }
                  }
                },
                "example": {
                  "Message": "Customer ID: 4b237266-a20d-4979-87e9-685b8fd41658 has been deleted successfully."
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/WithTotalCount": {
      "get": {
        "operationId": "ListCustomerWithTotalCount",
        "tags": [
          "Customer"
        ],
        "summary": "List Customer With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nList Customer With Total Count\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The Number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "From",
            "in": "query",
            "description": "Selected start of a date prefix range",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "Selected end of a date prefix range",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-28"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Customer Name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Customer code"
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Customer Phone number"
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Customer mobile phone"
                          },
                          "Email": {
                            "type": "string",
                            "description": "Customer email"
                          },
                          "City": {
                            "type": "string",
                            "description": "Customer city"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Name": "A WI",
                      "Code": "TIA20887",
                      "Phone": "0811698616",
                      "Mobile": "",
                      "Email": "secyliac@gmail.com",
                      "City": ""
                    },
                    {
                      "Name": "a. asyura alikha",
                      "Code": "TIA9981",
                      "Phone": "082188891313",
                      "Mobile": "",
                      "Email": "asyuraalikha@gmail.com",
                      "City": ""
                    },
                    {
                      "Name": "A. Dalaisa A. Beso",
                      "Code": "TIA21264",
                      "Phone": "087884993345",
                      "Mobile": "",
                      "Email": "ndisabeni@yahoo.com",
                      "City": ""
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "String '20321-01-01' was not recognized as a valid DateTime.",
                  "StackTrace": "   at System.DateTimeParse.Parse....3"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/Suspend": {
      "put": {
        "operationId": "SuspendCustomer",
        "tags": [
          "Customer"
        ],
        "summary": "Suspend a Customer",
        "description": "Suspend a Customer by their ID, Code, Email, & Phone. You can choose ONE of those options because those options have this hierarchy tier:\n\n1. ID\n2. Code\n3. Email\n4. Phone\n\nIf ID is not found, we will search for the Code, and so on base on those hierarchy\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string"
                  },
                  "Code": {
                    "type": "string"
                  },
                  "Email": {
                    "type": "string"
                  },
                  "Phone": {
                    "type": "string"
                  }
                },
                "example": {
                  "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                  "Code": "HWCISAP",
                  "Email": "hendryw@gmail.com",
                  "Phone": "0216892235"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "200": {
                "example": {
                  "Message": "The contact has been successfully suspended."
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "The contact has been successfully suspended."
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/Unsuspend": {
      "put": {
        "operationId": "UnsuspendCustomer",
        "tags": [
          "Customer"
        ],
        "summary": "Unsuspend a Customer",
        "description": "Unsuspend a Customer by their ID, Code, Email, & Phone. You can choose ONE of those options because those options have this hierarchy tier:\n\n1. ID\n2. Code\n3. Email\n4. Phone\n\nIf ID is not found, we will search for the Code, and so on base on those hierarchy\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string"
                  },
                  "Code": {
                    "type": "string"
                  },
                  "Email": {
                    "type": "string"
                  },
                  "Phone": {
                    "type": "string"
                  }
                },
                "example": {
                  "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
                  "Code": "HWCISAP",
                  "Email": "hendryw@gmail.com",
                  "Phone": "0216892235"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "200": {
                "example": {
                  "Message": "The contact has been successfully unsuspended."
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "The contact has been successfully suspended."
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/NewCode": {
      "get": {
        "operationId": "GetNewCustomerCode",
        "tags": [
          "Customer"
        ],
        "summary": "Get New Customer Code",
        "description": "This API is only working if you use Customer Code Generator (auto increment customer code [Learn more Here](https://support.dealpos.com/en/articles/4773848-auto-generate-contact-code)). \n\nWith this API, you can get the Next Customer code that the generator could assign. For example, the last customer code existed is MM-003, the API will return \"MM-004\" as the response.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "The contact has been successfully suspended."
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "un76skvr8jfba"
        }
      }
    },
    "/Supplier": {
      "get": {
        "operationId": "ListSupplier",
        "tags": [
          "Supplier"
        ],
        "summary": "List Supplier",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Number of page begin. this is primary key for the object",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Page size of list supplier. this is primary key for the object",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "the name of supplier to be shown"
                      },
                      "Code": {
                        "type": "string",
                        "description": "the supplier code of the supplier to be shown"
                      },
                      "Phone": {
                        "type": "string",
                        "description": "the phone number of supplier to be shown"
                      },
                      "Mobile": {
                        "type": "string",
                        "description": "the mobile phone number of supplier to be shown"
                      },
                      "Email": {
                        "type": "string",
                        "description": "the email of the supplier to be shown"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "A WI",
                    "Code": "TIA20887",
                    "Phone": "0811698616",
                    "Mobile": "0811698616",
                    "Email": "secyliac@gmail.com"
                  },
                  {
                    "Name": "a. asyura alikha",
                    "Code": "TIA9981",
                    "Phone": "082188891313",
                    "Mobile": "082188891313",
                    "Email": "asyuraalikha@gmail.com"
                  },
                  {
                    "Name": "A. Dalaisa A. Beso",
                    "Code": "TIA21264",
                    "Phone": "087884993345",
                    "Mobile": "087884993345",
                    "Email": "ndisabeni@yahoo.com"
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetRawText..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "operationId": "CreateSupplier",
        "tags": [
          "Supplier"
        ],
        "summary": "Create Supplier",
        "description": "Create a supplier based on the name\n\nYou must have **“CREATE”** role in **“Contacts”** Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/supplier"
              },
              "example": {
                "Email": "hendry@outlook.com",
                "Name": "Hendry Wijaya",
                "FirstName": "Hendry",
                "LastName": "Wijaya",
                "Phone": "0216892235",
                "Mobile": "0815896321227",
                "Address": "Jl.Pluit Karang Jelita no 51",
                "Gender": "Male",
                "Status": "Active",
                "Code": "HW0021",
                "Group": "Gold",
                "ImageURL": "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcR5MITQo_ngwwEGEZqlw7PQLiaO21AoYmLRSkSF5Q2UwJuPgYZx"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "ID of supplier created"
                    }
                  }
                },
                "example": {
                  "ID": "8e92164f-4826-4984-8d1d-7a7280851170"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Code is already registered."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Cannot insert the value NULL into column 'Name', table 'tokoferdi2.dbo.Supplier'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection...."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Supplier/ByCode": {
      "put": {
        "operationId": "UpdateSupplierByCode",
        "tags": [
          "Supplier"
        ],
        "summary": "Update Supplier By Code",
        "description": "Update a supplier based on customer code\n\nYou must have \"**EDIT**\" role in \"**Contacts**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/supplier"
              },
              "example": {
                "Code": "0011",
                "Name": "Hendry Wijaya",
                "FirstName": "Hendry",
                "LastName": "Wijaya",
                "Email": "hendryw@gmail.com",
                "Phone": "0216892235",
                "Mobile": "081589632178",
                "Address": "Jl.Pluit Karang Jelita no 51",
                "Gender": "Male",
                "Group": "Gold",
                "Status": "Active"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Supplier has been deleted successfully"
                    }
                  }
                },
                "example": {
                  "ID": "4b237266-a20d-4979-87e9-685b8fd41658"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Code of the supplier does not exist."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.TryGetProperty..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Supplier/DeleteByCode": {
      "delete": {
        "operationId": "DeleteSupplierByCode",
        "tags": [
          "Supplier"
        ],
        "summary": "Delete Supplier By Code",
        "description": "Delete a supplier based on customer code\n\nYou must have \"**DELETE**\" role in \"**Contacts**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "type": "string",
                    "description": "Supplier code of the customer. this is primary key for the object"
                  }
                }
              },
              "example": {
                "Code": "000015"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "the supplier has been deleted"
                    }
                  }
                },
                "example": {
                  "Message": "Customer ID: 4b237266-a20d-4979-87e9-685b8fd41658 has been deleted successfully."
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Supplier with code not Found!"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetSupplierIDByCode' expects parameter '@Code', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection...."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Supplier/Code": {
      "get": {
        "operationId": "GetSupplierByCode",
        "tags": [
          "Supplier"
        ],
        "summary": "Get Supplier By Code",
        "description": "Get supplier based on supplier code\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Code",
            "in": "query",
            "description": "Supplier Code of supplier. this is primary key of the object",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AR012345"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Name": {
                      "type": "string",
                      "description": "Supplier's name"
                    },
                    "Email": {
                      "type": "string",
                      "description": "Supplier's email"
                    },
                    "Title": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Supplier's title"
                    },
                    "FirstName": {
                      "type": "string",
                      "description": "Supplier's first name"
                    },
                    "LastName": {
                      "type": "string",
                      "description": "Supplier's last name"
                    },
                    "Gender": {
                      "type": "string",
                      "description": "Supplier's gender"
                    },
                    "Code": {
                      "type": "string",
                      "description": "Supplier's code"
                    },
                    "Phone": {
                      "type": "string",
                      "description": "Supplier's phone"
                    },
                    "MobilePhone": {
                      "type": "string",
                      "description": "Supplier's mobile phone"
                    },
                    "Address": {
                      "type": "string",
                      "description": "Supplier's address"
                    },
                    "ImageURL": {
                      "type": "string",
                      "description": "Supplier's imageURL"
                    },
                    "Status": {
                      "type": "string",
                      "description": "Supplier's status"
                    }
                  }
                },
                "example": {
                  "Name": "Hendry",
                  "Email": "hendry@outlook.comm",
                  "Title": "Mr",
                  "FirstName": "Hendry",
                  "LastName": "Wijaya",
                  "Gender": "Male",
                  "Code": "AR012345",
                  "Phone": "0216892235",
                  "MobilePhone": "081574945443111",
                  "Address": "Jl.Pluit Karang Jelita no 51",
                  "ImageURL": "//res.cloudinary.com/dealposdev/image/upload/Contact/7d8bb3dc-cbd1-4b56-98a7-ff3557347817/images",
                  "Status": "Active"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no supplier with Code 0011"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Unrecognized Guid format.",
                  "StackTrace": "   at System.Guid.GuidResult.SetFailure..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Supplier/WithTotalCount": {
      "get": {
        "operationId": "ListSupplierWithTotalCount",
        "tags": [
          "Supplier"
        ],
        "summary": "List Supplier With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nList Supplier With Total Count\n\nRequired Group Role: \"**Orders**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "PageNumber",
                  "PageSize"
                ],
                "type": "object",
                "properties": {
                  "PageNumber": {
                    "type": "integer",
                    "description": "The number of page data to be displayed"
                  },
                  "PageSize": {
                    "type": "integer",
                    "description": "The number of rows returned by the API"
                  }
                },
                "example": {
                  "PageNumber": 1,
                  "PageSize": 20
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "the name of supplier to be shown"
                          },
                          "Code": {
                            "type": "string",
                            "description": "the supplier code of the supplier to be shown"
                          },
                          "Phone": {
                            "type": "string",
                            "description": "the phone number of supplier to be shown"
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "the mobile phone number of suppleir to be shown"
                          },
                          "Email": {
                            "type": "string",
                            "description": "the email of the supplier to be shown"
                          },
                          "City": {
                            "type": "string",
                            "description": "the supplier's city name to be shown"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "the total result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Name": "A WI",
                      "Code": "TIA20887",
                      "Phone": "0811698616",
                      "Mobile": "0811698616",
                      "Email": "secyliac@gmail.com",
                      "City": "Jakarta"
                    },
                    {
                      "Name": "a. asyura alikha",
                      "Code": "TIA9981",
                      "Phone": "082188891313",
                      "Mobile": "0811698616",
                      "Email": "asyuraalikha@gmail.com",
                      "City": "Jakarta"
                    },
                    {
                      "Name": "A. Dalaisa A. Beso",
                      "Code": "TIA21264",
                      "Phone": "087884993345",
                      "Mobile": "0811698616",
                      "Email": "ndisabeni@yahoo.com",
                      "City": "Jakarta"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetRawText().."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Supplier/ListID": {
      "get": {
        "operationId": "GetSupplierByListID",
        "tags": [
          "Supplier"
        ],
        "summary": "Get Supplier By List ID",
        "description": ">Get supplier based on supploer List ID\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ListID",
            "in": "query",
            "description": "List of SupplierID",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "guid"
              }
            },
            "example": "227427f5-fb25-4f47-9e39-2370fa70d156,212347f5-gt52-4127-8148-7780fabcd123"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of Supplier"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of Supplier"
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email Address of Supplier"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of Supplier"
                      },
                      "MobilePhone": {
                        "type": "string",
                        "description": "Mobile number of Supplier"
                      },
                      "Status": {
                        "type": "string",
                        "description": "Status Supplier ",
                        "default": "Active / WaitingForApproval / Suspended"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "5acffe34-346f-4888-afd8-0a551e556681",
                    "Name": "Tafta tata",
                    "Email": "Tafta@dealpos.com",
                    "Code": "DP036",
                    "MobilePhone": "081588818888",
                    "Status": "Active"
                  },
                  {
                    "ID": "c9b9e5d6-78ce-413d-a02b-1de97e7cd125",
                    "Name": "Hendry",
                    "Email": "Hendry@dealpos.com",
                    "Code": "DP008",
                    "MobilePhone": "08158881823423",
                    "Status": "Active"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder": {
      "post": {
        "operationId": "CreateSalesOrder",
        "tags": [
          "Sales Order"
        ],
        "summary": "Create Sales Order",
        "description": "Create Sales Order\n\nYou must have \"**Create**\" role in \"**Sell**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Outlet Name",
                    "required": [
                      "Outlet",
                      "Number",
                      "Date"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Register": {
                        "type": "string",
                        "description": "Register Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Date of customer invoice created (YYYY-MM-DD)"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Sales Order Tag"
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name"
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type"
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage"
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage"
                      },
                      "DiscountAmount": {
                        "type": "integer",
                        "description": "Discount amount"
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use"
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option"
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number that associated with a specific invoice issued to a customer which gets from invoice Marketplace channel. (Backwards Compatibility with property PurchaseOrderNumber)"
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer"
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer"
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Phone of Customer"
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer"
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Quantity of Variant "
                            },
                            "Price": {
                              "type": "string",
                              "description": "Unit Price per item"
                            },
                            "PriceOriginal": {
                              "type": "string",
                              "description": "Original Unit Price per item. If value less than Price, it does not take effect",
                              "x-stoplight": {
                                "id": "70gsy94cgm4ft"
                              }
                            },
                            "Discount": {
                              "type": "integer",
                              "description": "Discount percentage"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Register": "Cashier 1",
                      "Number": "20.06.00001",
                      "Date": "2020-06-24",
                      "Tag": "Tokopedia",
                      "SalesPerson": "Sales 1",
                      "TaxType": "No Tax",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "OrderNote": "Order from Omnichannel",
                      "Deposit": 50000,
                      "LogisticServiceCode": "JNE-R",
                      "ReferenceNumber": "TKPD-001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021"
                      },
                      "Variants": [
                        {
                          "Code": "200536",
                          "Quantity": "10",
                          "Price": "3500",
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": "10",
                          "Price": "4000",
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ]
                    }
                  },
                  {
                    "title": "with Outlet ID",
                    "required": [
                      "OutletID",
                      "Number",
                      "Date"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID"
                      },
                      "RegisterID": {
                        "type": "string",
                        "description": "Guid of Register ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Date of customer invoice created (YYYY-MM-DD)"
                      },
                      "TagID": {
                        "type": "integer",
                        "description": "Sales Order Tag ID"
                      },
                      "SalesPerson": {
                        "type": "string",
                        "description": "Sales Person name"
                      },
                      "TaxType": {
                        "type": "string",
                        "description": "Tax Type"
                      },
                      "Discount1": {
                        "type": "integer",
                        "description": "Discount 1 percentage"
                      },
                      "Discount2": {
                        "type": "integer",
                        "description": "Discount 2 percentage"
                      },
                      "DiscountAmount": {
                        "type": "integer",
                        "description": "Discount amount"
                      },
                      "OrderNote": {
                        "type": "string",
                        "description": "Note for internal use"
                      },
                      "Deposit": {
                        "type": "number",
                        "description": "Amount of deposit paid by customer before."
                      },
                      "LogisticServiceCode": {
                        "type": "string",
                        "description": "Code of Logistic Service Option"
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number that associated with a specific invoice issued to a customer which gets from invoice Marketplace channel. (Backwards Compatibility with property PurchaseOrderNumber)"
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of Customer"
                          },
                          "Email": {
                            "type": "string",
                            "description": "Email of Customer"
                          },
                          "Phone": {
                            "type": "string",
                            "description": "Phone of Customer"
                          },
                          "Mobile": {
                            "type": "string",
                            "description": "Mobile Phone of Customer"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Code of Customer"
                          }
                        }
                      },
                      "Variants": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Variant Code"
                            },
                            "Quantity": {
                              "type": "string",
                              "description": "Quantity of Variant "
                            },
                            "Price": {
                              "type": "string",
                              "description": "Unit Price per item"
                            },
                            "PriceOriginal": {
                              "type": "string",
                              "description": "Original Unit Price per item. If value less than Price, it does not take effect",
                              "x-stoplight": {
                                "id": "70gsy94cgm4ft"
                              }
                            },
                            "Discount": {
                              "type": "integer",
                              "description": "Discount percentage"
                            },
                            "Note": {
                              "type": "string",
                              "description": "Note per Item"
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "RegisterID": "586fb8f4-95d0-4f05-a73b-c1673d9e6f7d",
                      "Number": "20.06.00001",
                      "Date": "2020-06-24",
                      "TagID": 1,
                      "SalesPerson": "Sales 1",
                      "TaxType": "No Tax",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "OrderNote": "Order from Omnichannel",
                      "Deposit": 50000,
                      "LogisticServiceCode": "JNE-R",
                      "ReferenceNumber": "TKPD-001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021"
                      },
                      "Variants": [
                        {
                          "Code": "200536",
                          "Quantity": "10",
                          "Price": "3500",
                          "Discount": 0,
                          "Note": "Item 1"
                        },
                        {
                          "Code": "1315L",
                          "Quantity": "10",
                          "Price": "4000",
                          "Discount": 0,
                          "Note": "Item 2"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Sales order ID which has been made"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Sales Order Number which has been made"
                    }
                  }
                },
                "example": {
                  "ID": "21e0dbb6-f240-4bda-8f03-769362f88d10",
                  "Number": "20.06.00001"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet not found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetSalesOrderIDByEntityNNumber' expects parameter '@Number', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "operationId": "DeleteSalesOrder",
        "tags": [
          "Sales Order"
        ],
        "summary": "Delete Sales Order",
        "description": "Delete Sales Order\n\nYou must have \"**Delete**\" role in \"**Sell**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Outlet.Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales Order Number"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.06.00001"
                    }
                  },
                  {
                    "title": "with Outlet.ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Outlet ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales Or"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "20.06.00001"
                    }
                  }
                ],
                "required": [
                  "Number",
                  "Outlet",
                  "OutletID"
                ],
                "type": "object",
                "properties": {
                  "OutletID": {
                    "type": "string",
                    "description": "Guid of Outlet ID",
                    "x-stoplight": {
                      "id": "z5l8vrtxu516a"
                    }
                  },
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Invoice number to be deleted"
                  }
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "SalesOrder  21.02.00011 has been deleted"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no sales order with Number 20.02.00011 - at Outlet Outlet1"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/ConvertInvoice": {
      "put": {
        "operationId": "ConvertSalesOrderToInvoice",
        "tags": [
          "Sales Order"
        ],
        "summary": "Convert Sales Order to Invoice",
        "description": "Convert Sales Order to Invoice\n\nYou must have “**Create**” role in “**Sell**” Module OR “EDIT” role in “Global” Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "jx9dhvaoclrab"
                        }
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales Order Number"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.06.00001"
                    }
                  },
                  {
                    "title": "with Customer Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string"
                      },
                      "Number": {
                        "type": "string"
                      },
                      "Customer": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string"
                          },
                          "Email": {
                            "type": "string",
                            "format": "email"
                          },
                          "Phone": {
                            "type": "string"
                          },
                          "Mobile": {
                            "type": "string"
                          },
                          "Code": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.07.00001",
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": 216515156,
                        "Mobile": 81514515156,
                        "Code": "HW021"
                      }
                    }
                  },
                  {
                    "title": "with Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "jx9dhvaoclrab"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales Order Number"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "20.06.00001"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Invoice ID"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Invoice Number"
                    }
                  }
                },
                "example": {
                  "ID": "21e0dbb6-f240-4bda-8f03-769362f88d10",
                  "Number": "20.06.00001"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet not found"
                }
              },
              "Sales Order Voided": {
                "example": {
                  "Message": "Cannot Convert Sales Order to Invoice, cause [SONumber] had been voided"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is an invoice with number 21.01.00001 in outlet Outlet1 is already exist"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "StackTraceString": {
                      "type": "string"
                    },
                    "RemoteStackIndex": {
                      "type": "integer"
                    },
                    "HResult": {
                      "type": "integer"
                    },
                    "Source": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "System.NullReferenceException",
                  "Message": "Object reference not set to an instance of an object.",
                  "StackTraceString": "   at POS.WEB.Controllers.v3.SalesOrderController...",
                  "RemoteStackIndex": 0,
                  "HResult": -2147467261,
                  "Source": "POS.WEB"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/ReferenceNumber": {
      "put": {
        "operationId": "UpdateReferenceNumberSalesOrder",
        "tags": [
          "Deprecated"
        ],
        "summary": "Update Sales Order Reference Number",
        "description": "Update the Reference Number of an existing Sales Order.\n\nYou must have \"**Edit**\" role in \"**Sell**\" Module OR \"**EDIT**\" role in \"**Global**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Outlet",
                  "Number",
                  "ReferenceNumber"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Invoice Number"
                  },
                  "ReferenceNumber": {
                    "type": "string",
                    "description": "Number related to this Order ex: logistic tracking_number or purchase_order number (If this property is null or empty, it will not update the Reference Number)"
                  },
                  "LogisticServiceCode": {
                    "type": "string",
                    "description": "Code of the logistic service (if this property is null or empty, it will not update the Logistic Service Code)"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Sales Order Note (if this property is null or empty, it will not update the Note)"
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "20.06.00001",
                  "ReferenceNumber": "TKPD-001",
                  "LogisticServiceCode": "JNE123",
                  "Note": "This is a note for Sales Order"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "reference number for sales order 20.06.00001 has been updated"
                  }
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Stored Reference Number 20.06.00001 - nothing is updated!"
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "OutletNotFound": {
                    "value": {
                      "Message": "Outlet not found"
                    }
                  },
                  "SalesOrderNotFound": {
                    "value": {
                      "Message": "There is no Sales Order with Number 20.06.00001 - at Outlet Outlet1"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetSalesOrderIDByEntityNNumber' expects parameter '@Number', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/Field": {
      "put": {
        "operationId": "UpdateFieldSalesOrder",
        "tags": [
          "Sales Order"
        ],
        "summary": "Update Sales Order Fields",
        "description": "Update the fields (Reference Number, Logistic Service Code, Note) of an existing Sales Order.\n\nYou must have \"**Edit**\" role in \"**Sell**\" Module OR \"**EDIT**\" role in \"**Global**\" Module\n* * *\n**POS Condition**\n*   The system sets the fulfillment state to `AWAITING_COLLECTION` when a payload containing `\"Fulfillment\": \"AwaitingCollection\"` is received.\n    \n*   A transition to `AWAITING_COLLECTION` occurs only if the current fulfillment state is `UNSENT` or any earlier state.\n    \n*   When duplicate updates are received, the existing fulfillment state remains unchanged. Metadata fields (`ReferenceNumber` and/or `LogisticServiceCode`) are updated only when new values are provided.\n* * *\n**Channel Service Condition**\n*   `\"Fulfillment\": \"AwaitingCollection\"` is emitted to the Channel Service only when at least one of the following fields is included:\n    \n    *   `ReferenceNumber`\n        \n    *   `LogisticServiceCode`",
        "parameters": [
          {
            "name": "IgnoreFulfillment",
            "in": "header",
            "description": "To ignore fulfillment rules when updating the Sales Order fields, set this header to true",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "example": true
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Outlet",
                  "Number"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Invoice Number"
                  },
                  "ReferenceNumber": {
                    "type": "string",
                    "description": "Number related to this Order ex: logistic tracking_number or purchase_order number (If this property is null or empty, it will not update the Reference Number)"
                  },
                  "LogisticServiceCode": {
                    "type": "string",
                    "description": "Code of the logistic service (if this property is null or empty, it will not update the Logistic Service Code)"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Sales Order Note (if this property is null or empty, it will not update the Note)"
                  },
                  "Fulfillment": {
                    "type": "string",
                    "description": "Fulfillment status of the Sales Order from Unsent to 'AwaitingCollection' (if this property is null or empty, it will not update the Fulfillment status)"
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "20.06.00001",
                  "ReferenceNumber": "TKPD-001",
                  "LogisticServiceCode": "JNE123",
                  "Note": "This is a note for Sales Order",
                  "Fulfillment": "AwaitingCollection"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "reference number for sales order 20.06.00001 has been updated"
                  }
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Stored Reference Number 20.06.00001 - nothing is updated!"
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "OutletNotFound": {
                    "value": {
                      "Message": "Outlet not found"
                    }
                  },
                  "SalesOrderNotFound": {
                    "value": {
                      "Message": "There is no Sales Order with Number 20.06.00001 - at Outlet Outlet1"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetSalesOrderIDByEntityNNumber' expects parameter '@Number', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/GetByListNumber": {
      "get": {
        "operationId": "GetSalesOrderListByListNumber",
        "tags": [
          "Sales Order"
        ],
        "summary": "Get Sales Order By List Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Order List based on Number\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "array",
                        "description": "Sales Order Numbers",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": [
                        "20.11.00003",
                        "20.11.00002",
                        "20.11.00001"
                      ]
                    }
                  },
                  {
                    "title": "with Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "t2xpx5xqn3tt3"
                        }
                      },
                      "Number": {
                        "type": "array",
                        "description": "Sales Order Numbers",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "Outlet": "O0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": [
                        "20.11.00003",
                        "20.11.00002",
                        "20.11.00001"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Sales Order ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Sales order date"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales order number"
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Reference number of the sales order"
                      },
                      "InvoicedState": {
                        "type": "string",
                        "description": "status progress of the sales order"
                      },
                      "DeliveryState": {
                        "type": "string",
                        "description": "delivery status progres of the sales order",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial"
                        ]
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "payment status progress of the sales order"
                      },
                      "Bin": {
                        "type": "boolean",
                        "description": "Recycle bin status of the sales order"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "d5f8e8b3-1c4e-4f7a-9f3a-2b8e5d6c7a9b",
                    "Outlet": "Outlet1",
                    "Date": "2020-11-05T00:00:00",
                    "Number": "20.11.00003",
                    "ReferenceNumber": "JX2020110500001",
                    "InvoicedState": "Complete",
                    "DeliveryState": "Sent",
                    "PaymentState": "Paid",
                    "Bin": false
                  },
                  {
                    "ID": "a3c9e7b2-2d4f-4e8b-8f3b-3c9e6d7e8b0c",
                    "Outlet": "Outlet1",
                    "Date": "2020-11-05T00:00:00",
                    "Number": "20.11.00002",
                    "ReferenceNumber": "JX2020110500002",
                    "InvoicedState": "Complete",
                    "DeliveryState": "Sent",
                    "PaymentState": "Paid",
                    "Bin": false
                  },
                  {
                    "ID": "b4d0f9c3-3e5f-4f9c-9f4c-4d0f7e8f9c1d",
                    "Outlet": "Outlet1",
                    "Date": "2020-11-05T00:00:00",
                    "Number": "20.11.00001",
                    "ReferenceNumber": "JX2020110500003",
                    "InvoicedState": "Complete",
                    "DeliveryState": "Sent",
                    "PaymentState": "Paid",
                    "Bin": false
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name offlaine"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetSalesOrderListByListNumber..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/GetIDByNumber": {
      "get": {
        "operationId": "GetSalesOrderIDByNumber",
        "tags": [
          "Sales Order"
        ],
        "summary": "Get Sales Order ID by Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Order ID by Number\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Sales Order Number",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "20.11.00003"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales Order Number"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.11.00003"
                    }
                  },
                  {
                    "title": "with Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "t2xpx5xqn3tt3"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales Order Number"
                      }
                    },
                    "example": {
                      "OutletID": "O0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "20.11.00003"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Sales order ID"
                    }
                  }
                },
                "example": {
                  "ID": "90ad0fb6-0340-4254-90f5-15e213b95a82"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.TryGetProperty..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/TotalCount": {
      "get": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Get Sales Order Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Order Total Count based on selected outlet(s).\n\nRequired Group Role: \"**Orders**\" - \"**View**\"",
        "operationId": "salesorder-totalcount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with Outlet Name",
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "Start Date of Sales Order Created",
                        "format": "date",
                        "x-stoplight": {
                          "id": "kjbw0kcojed4c"
                        }
                      },
                      "To": {
                        "type": "string",
                        "description": "Till Date of Sales Order Created ",
                        "format": "date",
                        "x-stoplight": {
                          "id": "ezqeoewhjecf9"
                        }
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List OutletID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "yuki5dwjf40kt"
                          }
                        }
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet Name",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging System",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ]
                    }
                  },
                  {
                    "title": "with Outlet ID",
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "Start Date of Sales Order Created",
                        "format": "date",
                        "x-stoplight": {
                          "id": "kjbw0kcojed4c"
                        }
                      },
                      "To": {
                        "type": "string",
                        "description": "Till Date of Sales Order Created ",
                        "format": "date",
                        "x-stoplight": {
                          "id": "ezqeoewhjecf9"
                        }
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List OutletID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "yuki5dwjf40kt"
                          }
                        }
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet Name",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging System",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "ListOutletID": [
                        "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                        "8846700d-3883-88b5-8b8a-84c870b5a881"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Count": {
                      "type": "integer",
                      "description": "Total Sales Order of selected outlet"
                    }
                  },
                  "x-examples": {
                    "example-1": {
                      "Count": 550
                    }
                  }
                },
                "example": {
                  "Count": 550
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PrepaidPackage/CheckIn": {
      "post": {
        "operationId": "CheckInPrepaidPackage",
        "tags": [
          "Prepaid Package"
        ],
        "summary": "Check In for Prepaid Package",
        "description": "Check In prepaid packages\n\nYou must have \"**CREATE**\" role in \"**Prepaid Packages**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "MemberCode"
                ],
                "type": "object",
                "properties": {
                  "MemberCode": {
                    "type": "string",
                    "description": "Code member of customer"
                  },
                  "Package": {
                    "type": "string",
                    "description": "Prepaid package that the customer want to use (Optional)"
                  },
                  "Doctor": {
                    "type": "string",
                    "description": "The doctor/trainer that do the prepaid package (optional)"
                  }
                }
              },
              "example": {
                "MemberCode": "12345",
                "Package": "Gym Package",
                "Doctor": "Dr. Smith"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Member has been checked in"
                    }
                  }
                },
                "example": {
                  "Message": "Success register with number 20.03.00024 And Use Package Amd Gym(1x) With Customer Achmad raizaldi"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "Data": {
                      "type": "object",
                      "properties": {
                        "HelpLink.ProdName": {
                          "type": "string"
                        },
                        "HelpLink.ProdVer": {
                          "type": "string"
                        },
                        "HelpLink.EvtSrc": {
                          "type": "string"
                        },
                        "HelpLink.EvtID": {
                          "type": "string"
                        },
                        "HelpLink.BaseHelpUrl": {
                          "type": "string"
                        },
                        "HelpLink.LinkId": {
                          "type": "string"
                        },
                        "SqlError 1": {
                          "type": "string"
                        }
                      }
                    },
                    "StackTraceString": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "Microsoft.Data.SqlClient.SqlException",
                  "Message": "Procedure or function 'GetContactByCode' expects parameter '@Code', which was not supplied.",
                  "Data": {
                    "HelpLink.ProdName": "Microsoft SQL Server",
                    "HelpLink.ProdVer": "15.00.2000",
                    "HelpLink.EvtSrc": "MSSQLServer",
                    "HelpLink.EvtID": "201",
                    "HelpLink.BaseHelpUrl": "http://go.microsoft.com/fwlink",
                    "HelpLink.LinkId": "20476",
                    "SqlError 1": "Microsoft.Data.SqlClient.SqlError: Procedure or function 'GetContactByCode' expects parameter '@Code', which was not supplied."
                  },
                  "StackTraceString": "   at Microsoft.Data.SqlClient.SqlConnection..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/GetParked": {
      "get": {
        "operationId": "GetParkedOrder",
        "tags": [
          "Sales Order"
        ],
        "summary": "Get Parked Order",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Parked Order List with multiple outlet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "with List Outlet Name",
                    "required": [
                      "From",
                      "ListOutletID",
                      "Outlet",
                      "PageNumber",
                      "PageSize",
                      "Tag",
                      "To"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "From Date Sales Order created",
                        "x-stoplight": {
                          "id": "w3w2pz3spjhd6"
                        }
                      },
                      "To": {
                        "type": "string",
                        "description": "Till Date Sales Order created",
                        "x-stoplight": {
                          "id": "6dr4pysaqwr5l"
                        }
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The number of rows returned by the API"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List OutletID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "2muet56qqttfy"
                          }
                        }
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet Name",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging System.(ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "From": "2021-01-01",
                      "To": "2021-01-31",
                      "PageNumber": 1,
                      "PageSize": 20,
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ]
                    }
                  },
                  {
                    "title": "with List Outlet ID",
                    "required": [
                      "From",
                      "ListOutletID",
                      "Outlet",
                      "PageNumber",
                      "PageSize",
                      "Tag",
                      "To"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "From Date Sales Order created",
                        "x-stoplight": {
                          "id": "w3w2pz3spjhd6"
                        }
                      },
                      "To": {
                        "type": "string",
                        "description": "Till Date Sales Order created",
                        "x-stoplight": {
                          "id": "6dr4pysaqwr5l"
                        }
                      },
                      "PageNumber": {
                        "type": "integer",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "integer",
                        "description": "The number of rows returned by the API"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List OutletID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "2muet56qqttfy"
                          }
                        }
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "Outlet Name",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging System.(ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "From": "2021-01-01",
                      "To": "2021-01-31",
                      "PageNumber": 1,
                      "PageSize": 20,
                      "Outlet": [
                        "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                        "8846700d-3883-88b5-8b8a-84c870b5a881"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Sales Order (Parked Order) ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Sales order (parked order) number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Sales order (parked order) date"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Sales order (parked order) created date"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Sales order (parked order) customer name"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex: Tokopedia, Shopee)"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "21a4168b-d2b5-48e8-8d60-ff63cd5e30f6",
                    "Outlet": "Outlet2",
                    "Number": "21.01.00002",
                    "Date": "2021-01-21T00:00:00",
                    "Created": "2021-01-21T09:36:14.07",
                    "Customer": "hendry",
                    "Tag": "Tokopedia"
                  },
                  {
                    "ID": "21a4we8b-d995-48ty-8880-ff6abc5e30f6",
                    "Outlet": "Outlet2",
                    "Number": "21.01.00001",
                    "Date": "2021-01-21T00:00:00",
                    "Created": "2021-01-21T09:14:56.447",
                    "Customer": "Tafta",
                    "Tag": "Shopee"
                  },
                  {
                    "ID": "21yu169b-dio5-48e8-8pp0-ff63bh5e30f6",
                    "Outlet": "Outlet1",
                    "Number": "21.01.00093",
                    "Date": "2021-01-07T00:00:00",
                    "Created": "2021-01-07T16:18:30.837",
                    "Customer": "Aldi",
                    "Tag": "Tokopedia"
                  },
                  {
                    "ID": "21a41vvb-d2b5-4ve8-8ven-ff63cd5ev0f6",
                    "Outlet": "Outlet1",
                    "Number": "21.01.00092",
                    "Date": "2021-01-07T00:00:00",
                    "Created": "2021-01-07T16:13:27.2",
                    "Customer": "Syakri",
                    "Tag": "Tokopedia"
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.WEB.Controllers.v3.SalesOrderController.GetParked(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\SalesOrderController.cs:line 290"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PrepaidPackage/CheckOut": {
      "post": {
        "operationId": "CheckOutPrepaidPackage",
        "tags": [
          "Prepaid Package"
        ],
        "summary": "Check Out for Prepaid Package",
        "description": "Check Out prepaid packages\n\nYou must have \"**CREATE**\" role in \"**Prepaid Packages**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "MemberCode"
                ],
                "type": "object",
                "properties": {
                  "MemberCode": {
                    "type": "string",
                    "description": "Code member of customer"
                  }
                }
              },
              "example": {
                "MemberCode": "123456"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Member has been checked out"
                    }
                  }
                },
                "example": {
                  "Message": " Check Out : 16:35 - Mr Achmad raizaldi - 65478 - P:1029348 - ID:4455221445 - Point(s) remaining :4,781.8  Expired on :16 Mar 2020 (4 Days),"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "Data": {
                      "type": "object",
                      "properties": {
                        "HelpLink.ProdName": {
                          "type": "string"
                        },
                        "HelpLink.ProdVer": {
                          "type": "string"
                        },
                        "HelpLink.EvtSrc": {
                          "type": "string"
                        },
                        "HelpLink.EvtID": {
                          "type": "string"
                        },
                        "HelpLink.BaseHelpUrl": {
                          "type": "string"
                        },
                        "HelpLink.LinkId": {
                          "type": "string"
                        },
                        "SqlError 1": {
                          "type": "string"
                        }
                      }
                    },
                    "StackTraceString": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "Microsoft.Data.SqlClient.SqlException",
                  "Message": "Procedure or function 'GetContactByCode' expects parameter '@Code', which was not supplied.",
                  "Data": {
                    "HelpLink.ProdName": "Microsoft SQL Server",
                    "HelpLink.ProdVer": "15.00.2000",
                    "HelpLink.EvtSrc": "MSSQLServer",
                    "HelpLink.EvtID": "201",
                    "HelpLink.BaseHelpUrl": "http://go.microsoft.com/fwlink",
                    "HelpLink.LinkId": "20476",
                    "SqlError 1": "Microsoft.Data.SqlClient.SqlError: Procedure or function 'GetContactByCode' expects parameter '@Code', which was not supplied."
                  },
                  "StackTraceString": "   at Microsoft.Data.SqlClient.SqlConnection....."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PaymentMethod": {
      "get": {
        "operationId": "ListPaymentMethod",
        "tags": [
          "Payment Method"
        ],
        "summary": "List Payment Method",
        "description": "List of payment method",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "integer",
                        "description": "Payment method ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Payment method name"
                      },
                      "Type": {
                        "type": "string",
                        "description": "Payment method type / category"
                      },
                      "Suspended": {
                        "type": "boolean",
                        "description": "Payment method status"
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "ID": 1,
                        "Name": "Cash",
                        "Type": "Cash",
                        "Suspended": false
                      },
                      {
                        "ID": 2,
                        "Name": "Debit Card",
                        "Type": "Card",
                        "Suspended": false
                      },
                      {
                        "ID": 2,
                        "Name": "Credit Card",
                        "Type": "Card",
                        "Suspended": true
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "ID": 1,
                    "Name": "Cash",
                    "Type": "Cash",
                    "Suspended": false
                  },
                  {
                    "ID": 2,
                    "Name": "Debit Card",
                    "Type": "Card",
                    "Suspended": false
                  },
                  {
                    "ID": 2,
                    "Name": "Credit Card",
                    "Type": "Card",
                    "Suspended": true
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Tax": {
      "get": {
        "operationId": "ListTax",
        "tags": [
          "Tax"
        ],
        "summary": "List Tax",
        "description": "List of Tax",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Unique ID of the selected Tax"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of the Tax"
                      },
                      "Rate": {
                        "type": "integer",
                        "description": "Tax Percentage"
                      },
                      "Type": {
                        "type": "string",
                        "example": "Add , Include"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "58a4e4c8-36e8-478a-bdde-aae8c413f69b",
                    "Name": "No Tax",
                    "Rate": 0,
                    "Type": "Add"
                  },
                  {
                    "ID": "bb57893b-58ad-4375-9ee1-7a39d3aeeadb",
                    "Name": "PPN 10%",
                    "Rate": 10,
                    "Type": "Include"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Expense": {
      "get": {
        "operationId": "ListExpense",
        "tags": [
          "Expense"
        ],
        "summary": "List Expense",
        "description": "Get List of Expense",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Unique ID of the selected Tax"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of the Tax"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "58a4e4c8-36e8-478a-bdde-aae8c413f69b",
                    "Name": "Operational Cost"
                  },
                  {
                    "ID": "bb57893b-58ad-4375-9ee1-7a39d3aeeadb",
                    "Name": "Building Maintenance"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LogisticsService": {
      "get": {
        "operationId": "ListLogisticsService",
        "tags": [
          "Logistics Service"
        ],
        "summary": "List Logistics Service",
        "description": "List of Logistics Service",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of Logistics Services Option"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name Of Logistic Service"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of Logistic Service"
                      }
                    }
                  },
                  "x-examples": {
                    "Example 1": [
                      {
                        "ID": "09f0fe38-79b2-4535-a014-f45d3d18a5c8",
                        "Name": "JNE (Regular)",
                        "Code": "JNE-R"
                      },
                      {
                        "ID": "09f0fe38-79b2-4535-a014-f45d3ah9828",
                        "Name": "JNE (Express)",
                        "Code": "JNE-E"
                      }
                    ]
                  }
                },
                "example": [
                  {
                    "ID": "09f0fe38-79b2-4535-a014-f45d3d18a5c8",
                    "Name": "JNE (Regular)",
                    "Code": "JNE-R"
                  },
                  {
                    "ID": "09f0fe38-79b2-4535-a014-f45d3ah9828",
                    "Name": "JNE (Express)",
                    "Code": "JNE-E"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Apps/List": {
      "get": {
        "operationId": "ListApps",
        "tags": [
          "Apps"
        ],
        "summary": "List Apps",
        "description": "List of Apps which can integrated with our system",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "integer",
                        "description": "Unique ID of the Application"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Name of the Application"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": 1,
                    "Name": "Marketplace"
                  },
                  {
                    "ID": 2,
                    "Name": "TADA"
                  },
                  {
                    "ID": 3,
                    "Name": "Jurnal"
                  },
                  {
                    "ID": 4,
                    "Name": "Jubelio"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Apps/Active": {
      "get": {
        "operationId": "ActiveApps",
        "tags": [
          "Apps"
        ],
        "summary": "Active Apps",
        "description": "Detected apps which checklist in config POS",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "example": [
                  1,
                  3,
                  4
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/ClientSecret": {
      "get": {
        "operationId": "GetClientSecret",
        "tags": [
          "Client Secret"
        ],
        "summary": "Get Client Secret",
        "description": "Get Client Secret from existing client secret",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClientID": {
                      "type": "string",
                      "description": "GUID of Client ID."
                    },
                    "ClientSecret": {
                      "type": "string",
                      "description": "GUID of Client Secret."
                    }
                  }
                },
                "example": {
                  "ClientID": "b2fb9b2e-e2dc-47a2-a5de-36444bcb02be",
                  "ClientSecret": "224e5f1a-3e19-4b2c-b8bf-a984e8e897f1"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The username and/or password is invalid!",
                  "StackTrace": "   at POS.WEB.Controllers.v3.DeveloperController.GetClientSecret(JsonElement request) in D:\\GITLAB\\POSWEB-Prod\\src\\POS.WEB\\Controllers\\v3\\DeveloperController.cs:line 102"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/ratelimit": {
      "get": {
        "operationId": "RateLimitChecking",
        "tags": [
          "Rate Limit"
        ],
        "summary": "Rate Limit Checking",
        "description": "Get number of PermitLimit, Window, QueueLimit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "PermitLimit": {
                      "type": "integer"
                    },
                    "Window": {
                      "type": "integer"
                    },
                    "QueueLimit": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "PermitLimit": 100,
                  "Window": 60,
                  "QueueLimit": 30
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/ClientSecret/Update": {
      "put": {
        "operationId": "UpdateClientSecret",
        "tags": [
          "Client Secret"
        ],
        "summary": "Generate Client Secret",
        "description": "Generate New Client Secret",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClientSecret": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClientSecret": "f7aef432-d548-45dc-a7a9-2d65f7374d85"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The username and/or password is invalid!",
                  "StackTrace": "   at POS.WEB.Controllers.v3.DeveloperController.GenerateClientSecret(JsonElement request) in D:\\GITLAB\\POSWEB-Prod\\src\\POS.WEB\\Controllers\\v3\\DeveloperController.cs:line 53"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Barcode/ByBillNumber": {
      "get": {
        "operationId": "GetBarcodeByBillNumber",
        "tags": [
          "Deprecated"
        ],
        "summary": "Get Barcode by Bill Number",
        "description": "Get List Variant by Bill Number",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Bill Number"
                  }
                },
                "example": {
                  "Outlet": "Pluit",
                  "Number": "2023.09.00001"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "VariantID": {
                        "type": "string",
                        "description": "Product Variant ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Variant Name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant Code"
                      },
                      "Quantity": {
                        "type": "integer",
                        "description": "Product Quantity Brought"
                      },
                      "UnitPrice": {
                        "type": "integer",
                        "description": "Unit price you pay for the product"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "VariantID": "6f96d108-1af5-45de-a593-74719a0ee8e2",
                    "Name": "Cardigan (L)",
                    "Code": "1315L",
                    "Quantity": 10,
                    "UnitPrice": 280000
                  },
                  {
                    "VariantID": "bb5fd4fc-e7fb-4e99-92f4-b3caac23c183",
                    "Name": "Boots (36)",
                    "Code": "200536",
                    "Quantity": 15,
                    "UnitPrice": 540000
                  },
                  {
                    "VariantID": "f4adff17-6e0c-499d-af3f-db8c16e62375",
                    "Name": "Cardigan (XL)",
                    "Code": "1315XL",
                    "Quantity": 20,
                    "UnitPrice": 280000
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet not found"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Barcode/ByOutletDeliveryNumber": {
      "get": {
        "operationId": "GetBarcodeByOutletDeliveryNumber",
        "tags": [
          "Deprecated"
        ],
        "summary": "Get Barcode By Outlet Delivery Number",
        "description": "Get List Variant By Outlet Delivery Number",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Source Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Outlet Delivery Number"
                  }
                },
                "example": {
                  "Outlet": "Pluit",
                  "Number": "2023.09.00001"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "VariantID": {
                        "type": "string",
                        "description": "Variant ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "Variant's Name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant's Code"
                      },
                      "Quantity": {
                        "type": "integer",
                        "description": "Quantity will be deliver to another outlet"
                      },
                      "UnitPrice": {
                        "type": "integer",
                        "description": "Unit Price"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "VariantID": "6f96d108-1af5-45de-a593-74719a0ee8e2",
                    "Name": "Cardigan (L)",
                    "Code": "1315L",
                    "Quantity": 10,
                    "UnitPrice": 280000
                  },
                  {
                    "VariantID": "bb5fd4fc-e7fb-4e99-92f4-b3caac23c183",
                    "Name": "Boots (36)",
                    "Code": "200536",
                    "Quantity": 15,
                    "UnitPrice": 540000
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet not found"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/WithItemNetSales": {
      "get": {
        "operationId": "GetSalesInvoiceWithItemNetSales",
        "tags": [
          "Report"
        ],
        "summary": "Get Sales Invoice With Item Net Sales",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Invoice based on prorate nett sales calculation\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" ",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "From",
            "in": "query",
            "description": "From Date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-31"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number of get inventory",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Row count of get inventory",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet's transaction"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Transaction's number"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Transaction's date"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Transaction's date created"
                          },
                          "Discount1": {
                            "type": "integer",
                            "description": "Discount that applied in the transaction"
                          },
                          "Discount2": {
                            "type": "integer",
                            "description": "Special Discount that applied in the transaction"
                          },
                          "DiscountAmount": {
                            "type": "integer",
                            "description": "Discount amount that applied in the transaction"
                          },
                          "InvoiceID": {
                            "type": "string",
                            "description": "Unique ID of the Invoice Transaction"
                          },
                          "Gross": {
                            "type": "number",
                            "description": "Amount before tax and discount"
                          },
                          "DiscountTotal": {
                            "type": "number",
                            "description": "Total Amount of the discount"
                          },
                          "TaxType": {
                            "type": "string",
                            "description": "Tax applied to the transaction"
                          },
                          "TaxAmount": {
                            "type": "number",
                            "description": "Tax Amount applied in transaction"
                          },
                          "Sales": {
                            "type": "number",
                            "description": "Total Amount without tax"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "Sales + Tax"
                          },
                          "Surcharge": {
                            "type": "number",
                            "description": "Surcharge Amount"
                          },
                          "Tax": {
                            "type": "number",
                            "description": "Tax in percentage"
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "Name": {
                                "type": "string",
                                "description": "Customer's Name"
                              },
                              "Email": {
                                "type": "string",
                                "description": "Customer's Email"
                              },
                              "Phone": {
                                "type": "string",
                                "description": "Customer's Phone"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Customer's Mobile Phone"
                              },
                              "Code": {
                                "type": "string",
                                "description": "Customer's Code"
                              },
                              "ID": {
                                "type": "string",
                                "description": "Customer's ID"
                              }
                            }
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "required": [
                                "Note"
                              ],
                              "type": "object",
                              "properties": {
                                "Name": {
                                  "type": "string",
                                  "description": "Name of Product Variant"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Variant's code"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "description": "Quantity of variant sold in the transaction"
                                },
                                "UnitQuantity": {
                                  "type": "integer",
                                  "description": "Unit quantity of variant sold in the transaction"
                                },
                                "Cost": {
                                  "type": "number",
                                  "description": "Product Variant Unit Cost"
                                },
                                "Price": {
                                  "type": "number",
                                  "description": "Product variant Selling Price"
                                },
                                "PriceOriginal": {
                                  "type": "number",
                                  "description": "Price before edit"
                                },
                                "Discount": {
                                  "type": "integer",
                                  "description": "Discount applied for the variant in the transaction"
                                },
                                "DiscountAmount": {
                                  "type": "number",
                                  "description": "Discount amount applied in the variant in the transaction"
                                },
                                "Taxable": {
                                  "type": "boolean",
                                  "description": "Taxable status of the variant"
                                },
                                "LoyaltyPoint": {
                                  "type": "boolean",
                                  "description": "Loyalty point status of the variant"
                                },
                                "Expense": {
                                  "type": "integer",
                                  "description": "Additional Charge Amount"
                                },
                                "NetSales": {
                                  "type": "number",
                                  "description": "Net price per variant "
                                },
                                "GrossSales": {
                                  "type": "number",
                                  "description": "Price before tax and discount"
                                },
                                "TaxAmount": {
                                  "type": "number",
                                  "description": "Tax applied per variant"
                                },
                                "PriceTypeID": {
                                  "type": "integer"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Product Transaction Note"
                                }
                              }
                            }
                          },
                          "Payments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Date": {
                                  "type": "string",
                                  "description": "Payment Date"
                                },
                                "Amount": {
                                  "type": "number",
                                  "description": "Amount to pay in transaction"
                                },
                                "Method": {
                                  "type": "string",
                                  "description": "Payment method"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Payment Code"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Payment Note"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "TotalRow": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "21.03.00124",
                      "Date": "2021-03-10T00:00:00",
                      "Created": "2021-03-09T13:03:12.903",
                      "Discount1": 10,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "InvoiceID": "250f0917-d3be-42ef-9ac4-3be17ef7b21f",
                      "Gross": 50000,
                      "DiscountTotal": 5000,
                      "TaxType": "PPN 10%",
                      "TaxAmount": 4500,
                      "Sales": 45000,
                      "SalesNTax": 49500,
                      "Surcharge": 0,
                      "Tax": 10,
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021",
                        "ID": "fdab116e-f6ae-4499-81b5-53f554fd7f4a"
                      },
                      "Variants": [
                        {
                          "Name": "Muffin (Medium)",
                          "Code": "03152",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 10000,
                          "Price": 20000,
                          "PriceOriginal": 20000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetSales": 18000,
                          "GrossSales": 20000,
                          "TaxAmount": 1800,
                          "PriceTypeID": 0,
                          "Note": "Paid"
                        },
                        {
                          "Name": "Muffin (Large)",
                          "Code": "ML3001",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 30000,
                          "Price": 30000,
                          "PriceOriginal": 20000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetSales": 27000,
                          "GrossSales": 30000,
                          "TaxAmount": 2700,
                          "PriceTypeID": 0,
                          "Note": "Paid"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2021-03-10T00:00:00",
                          "Amount": 49500,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Paid"
                        }
                      ]
                    }
                  ],
                  "TotalRow": 1
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Outlet": "Outlet1",
                  "From": "2020/03/16",
                  "To": "2020/03/16",
                  "PageNumber": 1,
                  "PageSize": 20
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/DailySales": {
      "get": {
        "operationId": "GetDailySales",
        "tags": [
          "Report"
        ],
        "summary": "Get Daily Sales By Month",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Daily Sales Transaction by Month\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" \n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Year"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "array",
                    "description": "List of Outlets Name",
                    "items": {
                      "type": "string"
                    }
                  },
                  "Year": {
                    "type": "integer",
                    "description": "Year of date (format: (YYYY))"
                  }
                }
              },
              "example": {
                "Outlet": [
                  "Outlet1"
                ],
                "Year": 2021
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Month": {
                        "type": "string",
                        "description": "List of Months of selected Year"
                      },
                      "Trans": {
                        "type": "integer",
                        "description": "Total count of Invoice Transactions"
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "Total Accumulation of Sales and Taxes"
                      },
                      "Cost": {
                        "type": "number",
                        "description": "Total accumulation of costs"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Month": "January",
                    "Trans": 34,
                    "SalesNTax": 1021000,
                    "Cost": 881615.75
                  },
                  {
                    "Month": "February",
                    "Trans": 376,
                    "SalesNTax": 135397168.68,
                    "Cost": 97501389.32
                  },
                  {
                    "Month": "March",
                    "Trans": 311,
                    "SalesNTax": 45215217.85,
                    "Cost": 34635477.25
                  },
                  {
                    "Month": "April",
                    "Trans": 86,
                    "SalesNTax": 18103161.03,
                    "Cost": 17157404.54
                  },
                  {
                    "Month": "May",
                    "Trans": 5,
                    "SalesNTax": 247000.12,
                    "Cost": 90522.17
                  },
                  {
                    "Month": "June",
                    "Trans": 94,
                    "SalesNTax": 13250883.61,
                    "Cost": 18746522.55
                  },
                  {
                    "Month": "July",
                    "Trans": 139,
                    "SalesNTax": 14682156.82,
                    "Cost": 17858903.23
                  },
                  {
                    "Month": "August",
                    "Trans": 38,
                    "SalesNTax": 1573348.5,
                    "Cost": 9734012.73
                  },
                  {
                    "Month": "September",
                    "Trans": 108,
                    "SalesNTax": 468493094.25,
                    "Cost": 17126179.21
                  },
                  {
                    "Month": "October",
                    "Trans": 152,
                    "SalesNTax": 34584026.75,
                    "Cost": 4806827.8
                  },
                  {
                    "Month": "November",
                    "Trans": 166,
                    "SalesNTax": 26655324,
                    "Cost": 14904432.27
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/Report/WithItemNetSalesComplete": {
      "get": {
        "operationId": "GetSalesInvoiceWithItemNetSalesComplete",
        "tags": [
          "Report"
        ],
        "summary": "Get Sales Invoice With Item Net Sales Complete",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Sales Invoice based on prorate nett sales calculation\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" ",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number of get inventory",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Row count of get inventory",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet's transaction"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Transaction's number"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Transaction's date"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Transaction's date created"
                          },
                          "Discount1": {
                            "type": "integer",
                            "description": "Discount that applied in the transaction"
                          },
                          "Discount2": {
                            "type": "integer",
                            "description": "Special Discount that applied in the transaction"
                          },
                          "DiscountAmount": {
                            "type": "integer",
                            "description": "Discount amount that applied in the transaction"
                          },
                          "InvoiceID": {
                            "type": "string",
                            "description": "Unique ID of the Invoice Transaction"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Invoice Note"
                          },
                          "SalesType": {
                            "type": "string",
                            "description": "Sales order type"
                          },
                          "SalesPerson": {
                            "type": "string",
                            "description": "Name of sales person"
                          },
                          "Gross": {
                            "type": "integer",
                            "description": "Amount before tax and discount"
                          },
                          "DiscountTotal": {
                            "type": "integer",
                            "description": "Total Amount of the discount"
                          },
                          "TaxType": {
                            "type": "string",
                            "description": "Tax applied to the transaction"
                          },
                          "TaxAmount": {
                            "type": "integer",
                            "description": "Tax Amount applied in transaction"
                          },
                          "Sales": {
                            "type": "integer",
                            "description": "Total Amount without tax"
                          },
                          "SalesNTax": {
                            "type": "integer",
                            "description": "Sales + Tax"
                          },
                          "Surcharge": {
                            "type": "integer",
                            "description": "Surcharge Amount"
                          },
                          "Tax": {
                            "type": "integer",
                            "description": "Tax in percentage"
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "Name": {
                                "type": "string",
                                "description": "Customer's Name"
                              },
                              "Email": {
                                "type": "string",
                                "description": "Customer's Email"
                              },
                              "Phone": {
                                "type": "string",
                                "description": "Customer's Phone"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Customer's MobilePhone"
                              },
                              "Code": {
                                "type": "string",
                                "description": "Customer's Code"
                              },
                              "ID": {
                                "type": "string",
                                "description": "Customer's ID"
                              }
                            }
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Name": {
                                  "type": "string",
                                  "description": "Name of Product Variant"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Variant's code"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "description": "Quantity of variant sold in the transaction"
                                },
                                "UnitQuantity": {
                                  "type": "integer",
                                  "description": "Unit quantity of variant sold in the transaction"
                                },
                                "Cost": {
                                  "type": "number",
                                  "description": "Product Variant Unit Cost"
                                },
                                "Price": {
                                  "type": "integer",
                                  "description": "Product variant Selling Price"
                                },
                                "PriceOriginal": {
                                  "type": "integer",
                                  "description": "Price before edit"
                                },
                                "Discount": {
                                  "type": "integer",
                                  "description": "Discount applied for the variant in the transaction"
                                },
                                "DiscountAmount": {
                                  "type": "integer",
                                  "description": "Discount amount applied in the variant in the transaction"
                                },
                                "Taxable": {
                                  "type": "boolean",
                                  "description": "Taxable status of the variant"
                                },
                                "LoyaltyPoint": {
                                  "type": "boolean",
                                  "description": "Loyalty point status of the variant"
                                },
                                "Expense": {
                                  "type": "integer",
                                  "description": "Additional Charge Amount"
                                },
                                "NetSales": {
                                  "type": "integer",
                                  "description": "Net price per variant"
                                },
                                "GrossSales": {
                                  "type": "integer",
                                  "description": "Price before tax and discount"
                                },
                                "TaxAmount": {
                                  "type": "integer",
                                  "description": "Tax applied per variant"
                                },
                                "PriceTypeID": {
                                  "type": "integer"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Product Transaction Note"
                                }
                              }
                            }
                          },
                          "Payments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Date": {
                                  "type": "string",
                                  "description": "Payment Date"
                                },
                                "Amount": {
                                  "type": "integer",
                                  "description": "Amount to pay in transaction"
                                },
                                "Method": {
                                  "type": "string",
                                  "description": "Payment method"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Payment code"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Payment note"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "TotalRow": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "1-OT/21/11/0112",
                      "Date": "2021-11-11T00:00:00",
                      "Created": "2021-11-11T08:32:11.85",
                      "Discount1": 0,
                      "Discount2": 0,
                      "DiscountAmount": 0,
                      "InvoiceID": "a1d8c308-c4ae-4f6a-9b6a-c976a99655ca",
                      "Note": "test note api",
                      "SalesType": "Online",
                      "SalesPerson": "dea",
                      "Gross": 102000,
                      "DiscountTotal": 0,
                      "TaxType": "No Tax",
                      "TaxAmount": 0,
                      "Sales": 102000,
                      "SalesNTax": 102000,
                      "Surcharge": 0,
                      "Tax": 0,
                      "Customer": {
                        "Name": "Hendry Wijaya",
                        "Email": "Hendry@dealpos.com",
                        "Phone": "02165498468",
                        "Mobile": "081514515156",
                        "Code": "HW021",
                        "ID": "fdab116e-f6ae-4499-81b5-53f554fd7f4a"
                      },
                      "Variants": [
                        {
                          "Name": "bango, nasi capcay",
                          "Code": "BC",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 13786.41,
                          "Price": 102000,
                          "PriceOriginal": 100000,
                          "Discount": 0,
                          "DiscountAmount": 0,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 0,
                          "NetSales": 102000,
                          "GrossSales": 102000,
                          "TaxAmount": 0,
                          "PriceTypeID": 0,
                          "Note": "Paid"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2021-11-11T00:00:00",
                          "Amount": 102000,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Paid"
                        }
                      ]
                    }
                  ],
                  "TotalRow": 1
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/SendReceiptByEmail": {
      "post": {
        "operationId": "SendReceiptByEmail",
        "tags": [
          "Invoice"
        ],
        "summary": "Send Receipt By Email",
        "description": "Send Receipt to customer by email\n\nYou must have \"**View**\" role in \"**Orders**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Email",
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email Customer will be sent the email. This is primary of the API"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "18.10.00009",
                      "Email": "ezzan212@dealpos.com"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Email",
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "sucb0xs5ldyr7"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Email": {
                        "type": "string",
                        "description": "Email Customer will be sent the email. This is primary of the API"
                      }
                    },
                    "example": {
                      "OutletID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Number": "18.10.00009",
                      "Email": "ezzan212@dealpos.com"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    }
                  }
                },
                "example": {
                  "Message": "Sent to email success"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Exception message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Exception type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/GetCountMultipleOutlet": {
      "get": {
        "operationId": "GetCountMultipleOutlet",
        "tags": [
          "Invoice"
        ],
        "summary": "Invoice Count",
        "description": "Count total invoice with multiple outlet\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "From",
                      "Outlet",
                      "To"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "yyyy/mm/dd"
                      },
                      "To": {
                        "type": "string",
                        "description": "yyyy/mm/dd"
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "List of multiple outlets",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system. (ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "Payment status / progress of the invoice",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial",
                          "Returned"
                        ]
                      },
                      "Bin": {
                        "type": "boolean",
                        "description": "Invoice in bin or not",
                        "default": false
                      }
                    },
                    "example": {
                      "From": "2022-09-01",
                      "To": "2022-09-06",
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "PaymentState": "Paid",
                      "Fulfillment": "Sent",
                      "Bin": false
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "From",
                      "ListOutletID",
                      "To"
                    ],
                    "type": "object",
                    "properties": {
                      "From": {
                        "type": "string",
                        "description": "yyyy/mm/dd"
                      },
                      "To": {
                        "type": "string",
                        "description": "yyyy/mm/dd"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List Outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "0mywr1cthupbs"
                          }
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system. (ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "string",
                        "description": "Payment status / progress of the invoice",
                        "enum": [
                          "Paid",
                          "Partial",
                          "Unpaid"
                        ]
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "Delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ]
                      },
                      "Bin": {
                        "type": "boolean",
                        "description": "Invoice in bin or not",
                        "default": false
                      }
                    },
                    "example": {
                      "From": "2022-09-01",
                      "To": "2022-09-06",
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee"
                      ],
                      "PaymentState": "Paid",
                      "Fulfillment": "Sent",
                      "Bin": false
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Count": {
                      "type": "number",
                      "description": "Total invoice count"
                    }
                  },
                  "x-examples": {
                    "example-1": {
                      "Count": 37
                    }
                  }
                },
                "example": {
                  "Count": 37
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetTotalInvoiceMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 529\r\n   at POS.WEB.Controllers.v3.InvoiceController.GetCountMultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 523"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Bill/GetCountMultipleOutlet": {
      "get": {
        "operationId": "GetCountMultipleOutlets",
        "tags": [
          "Bill"
        ],
        "summary": "Bill Count",
        "description": "Count total bill with multiple outlet\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "From",
                  "Outlet",
                  "To"
                ],
                "type": "object",
                "properties": {
                  "From": {
                    "type": "string",
                    "description": "yyyy/mm/dd"
                  },
                  "To": {
                    "type": "string",
                    "description": "yyyy/mm/dd"
                  },
                  "Outlet": {
                    "type": "array",
                    "description": "List of multiple outlets",
                    "items": {
                      "type": "string"
                    }
                  },
                  "PaymentState": {
                    "type": "string",
                    "description": "Payment status / progress of the bill",
                    "enum": [
                      "Paid",
                      "Partial",
                      "Unpaid"
                    ]
                  },
                  "DeliveryState": {
                    "type": "string",
                    "description": "Delivery status / progress of the bill",
                    "enum": [
                      "Waiting",
                      "Partial",
                      "Received"
                    ]
                  },
                  "Bin": {
                    "type": "boolean",
                    "description": "Invoice in bin or not",
                    "default": false,
                    "enum": [
                      true,
                      false
                    ]
                  }
                }
              },
              "example": {
                "From": "2021/01/01",
                "To": "2021/01/31",
                "Outlet": [
                  "Outlet 1",
                  "Outlet 2"
                ],
                "PaymentState": "Paid",
                "DeliveryState": "Received",
                "Bin": false
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Count": {
                      "type": "number"
                    }
                  }
                },
                "example": {
                  "Count": 37
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetTotalInvoiceMultipleOutlet(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 529\r\n   at POS.WEB.Controllers.v3.InvoiceController.GetCountMultipleOutlet(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 523"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/GetByListNumber": {
      "get": {
        "operationId": "GetByListNumber",
        "tags": [
          "Invoice"
        ],
        "summary": "List Invoice by Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet List Invoices By Number\n\nRequired Group Role: \"**Orders**\" - \"**View**\"\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name"
                      },
                      "Number": {
                        "type": "array",
                        "description": "Number of Invoices",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": [
                        "20.10.00087",
                        "20.10.00086"
                      ]
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "jfooxpiw0fvdv"
                        }
                      },
                      "Number": {
                        "type": "array",
                        "description": "Number of Invoices",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": [
                        "20.10.00087",
                        "20.10.00086"
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "the outlet name where the invoice has been made"
                      },
                      "Number": {
                        "type": "string",
                        "description": "invoice number"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "customer name"
                      },
                      "Date": {
                        "type": "string",
                        "description": "sell date"
                      },
                      "EventDate": {
                        "type": "string"
                      },
                      "Due": {
                        "type": "string",
                        "description": "due date of the invoice"
                      },
                      "Amount": {
                        "type": "integer",
                        "description": "invoice transaction total amount\n"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "payment state of the invoice\n"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status of the invoice\n",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial",
                          "Returned"
                        ]
                      },
                      "Created": {
                        "type": "string",
                        "description": "sell date created by system"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "20.10.00087",
                    "Customer": "Achmad raizaldi",
                    "Date": "2020-10-14T00:00:00",
                    "EventDate": "2020-10-14T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 24310,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2020-10-14T14:53:01.79"
                  },
                  {
                    "Outlet": "Outlet1",
                    "Number": "20.10.00086",
                    "Customer": "",
                    "Date": "2020-10-14T00:00:00",
                    "EventDate": "2020-10-14T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 22100,
                    "Payment": "Paid",
                    "Fulfillment": "Sent",
                    "Created": "2020-10-14T14:51:42.603"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace of the exception"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceListByListNumber(POSContext ctx, JsonElement request, List`1 listEntityID, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 562\r\n   at POS.WEB.Controllers.v3.InvoiceController.GetByListNumber(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 549"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/MultipleOutletNPayment": {
      "get": {
        "operationId": "GetInvoiceMultipleOutletNPayment",
        "tags": [
          "Invoice"
        ],
        "summary": "List Invoice Multiple Outlet and Payment",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\nGet Invoice List by Multiple Outlet and Payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Fulfillment",
                      "Outlet",
                      "PageNumber",
                      "PageSize",
                      "PaymentState",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "Outlet": {
                        "type": "array",
                        "description": "List of multiple outlet names",
                        "items": {
                          "type": "string"
                        }
                      },
                      "PaymentState": {
                        "type": "array",
                        "description": "List of multiple payment status",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system. (ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Partial",
                          "Unsent",
                          "Returned"
                        ]
                      },
                      "Status": {
                        "type": "string",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      }
                    },
                    "example": {
                      "PageNumber": 1,
                      "PageSize": 20,
                      "Outlet": [
                        "Outlet1",
                        "Outlet2"
                      ],
                      "PaymentState": [
                        "Paid",
                        "Unpaid"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee",
                        "Offline"
                      ],
                      "Fulfillment": "Sent",
                      "Status": "Active"
                    }
                  },
                  {
                    "title": "With List Outlet ID",
                    "required": [
                      "Fulfillment",
                      "ListOutletID",
                      "PageNumber",
                      "PageSize",
                      "PaymentState",
                      "Tag"
                    ],
                    "type": "object",
                    "properties": {
                      "PageNumber": {
                        "type": "number",
                        "description": "The number of page data to be displayed"
                      },
                      "PageSize": {
                        "type": "number",
                        "description": "The size of one page. Max=500"
                      },
                      "ListOutletID": {
                        "type": "array",
                        "description": "Array of List Outlet ID",
                        "items": {
                          "type": "string",
                          "x-stoplight": {
                            "id": "gbozm5l32vhy5"
                          }
                        }
                      },
                      "PaymentState": {
                        "type": "array",
                        "description": "List of multiple payment status",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Tag": {
                        "type": "array",
                        "description": "Channel Tagging system. (ex: Tokopedia, Shopee)",
                        "items": {
                          "type": "string"
                        }
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Partial",
                          "Unsent"
                        ]
                      },
                      "Status": {
                        "type": "string",
                        "enum": [
                          "Active",
                          "Cancelled",
                          "Any"
                        ],
                        "description": "Filter Orders By their status (Active, Cancelled, Any.)",
                        "default": "Active",
                        "x-enum-descriptions": {
                          "Active": "Show Only Active Orders.",
                          "Cancelled": "Show Only Cancelled Orders.",
                          "Any": "Show All Orders."
                        }
                      }
                    },
                    "example": {
                      "PageNumber": 1,
                      "PageSize": 20,
                      "ListOutletID": [
                        "65ba885e-cf19-4b68-ad6a-80164788adfd",
                        "72784126-b1bc-45e3-8d29-f20f212cb29f"
                      ],
                      "PaymentState": [
                        "Paid",
                        "Unpaid"
                      ],
                      "Tag": [
                        "Tokopedia",
                        "Shopee",
                        "Offline"
                      ],
                      "Fulfillment": "Sent",
                      "Status": "Active"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "Invoice ID"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of the invoice"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "Name of the customer"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Invoice Transaction Date"
                      },
                      "EventDate": {
                        "type": "string"
                      },
                      "Due": {
                        "type": "string",
                        "description": "due date of the invoice"
                      },
                      "Amount": {
                        "type": "number",
                        "description": "Total amount transaction of the invoice"
                      },
                      "Payment": {
                        "type": "string",
                        "description": "payment status / progress of the invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "delivery status / progres of the invoice",
                        "enum": [
                          "Sent",
                          "Unsent",
                          "Partial"
                        ]
                      },
                      "Created": {
                        "type": "string",
                        "description": "Invoice created Transaction Date by system"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app."
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "3c76f9b5-d1b8-4159-85a0-0630ac0caa47",
                    "Outlet": "Outlet1",
                    "Number": "20.03.00336",
                    "Customer": "adera simalungun",
                    "Date": "2020-03-27T00:00:00",
                    "EventDate": "2020-03-27T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 11250000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2020-03-27T13:50:16.627",
                    "Tag": "Tokopedia"
                  },
                  {
                    "ID": "3076b3af-1773-4bf9-9073-279be7b76327",
                    "Outlet": "Outlet1",
                    "Number": ".20.02.00080",
                    "Customer": "",
                    "Date": "2020-02-06T00:00:00",
                    "EventDate": "2020-02-06T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 75000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2020-02-06T09:43:25.163",
                    "Tag": "Shopee"
                  },
                  {
                    "ID": "3076b3af-1773-4bf9-9883-279be7b76as7",
                    "Outlet": "Outlet2",
                    "Number": "19.12.00088",
                    "Customer": "",
                    "Date": "2019-12-18T00:00:00",
                    "EventDate": "2019-12-18T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 2655000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2019-12-18T11:34:41.947",
                    "Tag": "Offline"
                  },
                  {
                    "ID": "6576b3af-1773-4bf4-9073-279be7b76789",
                    "Outlet": "Outlet2",
                    "Number": "19.12.00087",
                    "Customer": "",
                    "Date": "2019-12-18T00:00:00",
                    "EventDate": "2019-12-18T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 30000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2019-12-18T10:16:40.623",
                    "Tag": "Tokopedia"
                  },
                  {
                    "ID": "307628af-1993-4bf9-9573-279be7b76555",
                    "Outlet": "Outlet1",
                    "Number": "19.12.04.000000020",
                    "Customer": "",
                    "Date": "2019-12-04T00:00:00",
                    "EventDate": "2019-12-04T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 92500,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2019-12-04T16:02:28.897",
                    "Tag": "Tokopedia"
                  },
                  {
                    "ID": "3076b3af-1723-4bf9-9011-279be7b76123",
                    "Outlet": "Outlet1",
                    "Number": "19.12.00019",
                    "Customer": "",
                    "Date": "2019-12-04T00:00:00",
                    "EventDate": "2019-12-04T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 150000,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2019-12-04T16:45:54.507",
                    "Tag": "Whatsapp"
                  },
                  {
                    "ID": "307ab3af-1cd3-4bf9-9073-279be7b763ef",
                    "Outlet": "Outlet1",
                    "Number": "19.09.24.000000039",
                    "Customer": "",
                    "Date": "2019-09-23T00:00:00",
                    "EventDate": "2019-09-23T00:00:00",
                    "Due": "0001-01-01T00:00:00",
                    "Amount": 5500,
                    "Payment": "Paid",
                    "Fulfillment": "Partial",
                    "Created": "2019-09-24T16:27:22.767",
                    "Tag": "Offline"
                  }
                ]
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace message"
                    }
                  }
                },
                "example": {
                  "Message": "The given key was not present in the dictionary.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetProperty(String propertyName)\r\n   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceByMultipleOutletNPayment(POSContext ctx, JsonElement request, POSIdentity identity, IMemoryCache cache) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.BLL\\API\\Model\\OrderAPIModel.cs:line 720\r\n   at POS.WEB.Controllers.v3.InvoiceController.MultipleOutletNPayment(JsonElement request) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.WEB\\Controllers\\v3\\InvoiceController.cs:line 575"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/Void": {
      "put": {
        "operationId": "VoidInvoice",
        "tags": [
          "Invoice"
        ],
        "summary": "Void Invoice",
        "description": "Void Invoice to recycle bin\n\nYou must have \"**EDIT**\" role in \"**Sell**\" Module OR \"**VoidInvoice**\" role in \"**Orders**\" Module\n",
        "requestBody": {
          "description": "Request can be send with payload Outlet+Number / OutletID + Number /InvoiceID only",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "Using Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet's name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for the voided invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "When provided it will prevent VOID when the specified Order.Fulfillment state does not match!",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "example": "Sent"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "2020.06.00005",
                      "Note": "Void invoice"
                    }
                  },
                  {
                    "title": "Using Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "r9hbkst5es46u"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for the voided invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "When provided it will prevent VOID when the specified Order.Fulfillment state does not match!",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "example": "Sent"
                      }
                    },
                    "example": {
                      "OutletID": "9f527088-35a3-4ft8-988a-888c37885a88",
                      "Number": "2020.06.00005",
                      "Note": "Void invoice"
                    }
                  },
                  {
                    "title": "Using Invoice ID",
                    "required": [
                      "InvoiceID"
                    ],
                    "type": "object",
                    "properties": {
                      "InvoiceID": {
                        "type": "string",
                        "description": "ID of Invoice",
                        "x-stoplight": {
                          "id": "ybb2ed6tcxsp3"
                        }
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for the voided invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "When provided it will prevent VOID when the specified Order.Fulfillment state does not match!",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "example": "Sent"
                      }
                    },
                    "example": {
                      "InvoiceID": "9f527088-35a3-4ft8-988a-888c37885a88",
                      "Note": "Void invoice"
                    }
                  },
                  {
                    "title": "Using Fulfilment Filter",
                    "required": [
                      "InvoiceID"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet's Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for the voided invoice"
                      },
                      "Fulfillment": {
                        "type": "string",
                        "description": "When provided it will prevent VOID when the specified Order.Fulfillment state does not match!",
                        "enum": [
                          "Sent",
                          "Unsent"
                        ],
                        "example": "Sent"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "2020.06.00005",
                      "Note": "Void invoice",
                      "Fulfillment": "Sent"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice has been Updated!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Outlet is required field"
                }
              }
            }
          },
          "422": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is no invoice with Number 2020.06.00005 - at Outlet Outlet1"
                }
              }
            }
          }
        }
      }
    },
    "/Invoice/Restore": {
      "put": {
        "operationId": "RestoreInvoice",
        "tags": [
          "Invoice"
        ],
        "summary": "Restore Invoice",
        "description": "Restore Invoice from recycle bin\n\nYou must have \"**EDIT**\" role in \"**Sell**\" Module OR \"**EDIT**\" role in \"**Global**\" Module\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet's name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for the voided invoice"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "2020.06.00005",
                      "Note": "Restore invoice"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID",
                        "x-stoplight": {
                          "id": "h7skb0lny22yw"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice number"
                      },
                      "Note": {
                        "type": "string",
                        "description": "Note for the voided invoice"
                      }
                    },
                    "example": {
                      "OutletID": "0d46700d-35a3-4fb5-9b3a-644c370b5af1",
                      "Number": "2020.06.00005",
                      "Note": "Restore invoice"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice has been Updated!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Stack trace of the error"
                    }
                  }
                },
                "example": {
                  "Message": "Procedure or function 'GetInvoiceIDByEntityNNumber' expects parameter '@Number', which was not supplied.",
                  "StackTrace": "   at Microsoft.Data.SqlClient.SqlConnection....."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/Erase": {
      "delete": {
        "tags": [
          "Invoice"
        ],
        "summary": "Erase Invoice",
        "description": "<!-- theme: danger -->\n\n> Please keep in mind that erased Invoice cannot be restored\n\nPermanently Delete Invoice if its already on Recycle Bin\n\nYou must have \"**DELETE**\" role in \"**ORDER**\" Module OR \"**DELETE**\" role in \"**Global**\" Module\n",
        "operationId": "invoice-erase",
        "requestBody": {
          "description": "Request can be send with payload Outlet+Number / OutletID + Number /InvoiceID only",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      }
                    },
                    "example": {
                      "Outlet": "Offline",
                      "Number": "B1.22.08.00003"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Outlet ID",
                        "x-stoplight": {
                          "id": "7gsttobcv134a"
                        }
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number"
                      }
                    },
                    "example": {
                      "OutletID": "9f527088-35a3-4ft8-988a-888c37885a88",
                      "Number": "B1.22.08.00003"
                    }
                  },
                  {
                    "title": "With Invoice ID",
                    "required": [
                      "InvoiceID"
                    ],
                    "type": "object",
                    "properties": {
                      "InvoiceID": {
                        "type": "string",
                        "description": "ID of Invoice",
                        "x-stoplight": {
                          "id": "rscuxp01bqha4"
                        }
                      }
                    },
                    "example": {
                      "InvoiceID": "9f527088-35a3-4ft8-988a-888c37885a88"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice has been Erased!"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/Join": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "summary": "List Join Invoice",
        "description": "Get List of Join Invoice\n\nRequired Group Role: \"**Debt**\" - \"**View**\"",
        "operationId": "GetJoinInvoicelist",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Filter transactions by outlet name.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "From",
            "in": "query",
            "description": "Start date for filtering transactions.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-01T00:00:00Z"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "End date for filtering transactions.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-31T23:59:59Z"
            }
          },
          {
            "name": "CustomerID",
            "in": "query",
            "description": "Unique identifier for the customer.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Filter transactions by transaction number.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "JI.25.04.00001"
            }
          },
          {
            "name": "PaymentState",
            "in": "query",
            "description": "Filter transactions by payment state. if not provided, all states will be included.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Paid",
                "Unpaid",
                "Partial",
                "Exceed",
                "Bulk",
                "WriteOff"
              ],
              "example": "Paid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique identifier for the transaction",
                            "format": "guid",
                            "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet associated with the transaction",
                            "example": "Outlet1"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Transaction number",
                            "example": "JI.25.04.00001"
                          },
                          "Customer": {
                            "type": "string",
                            "description": "Name of the customer associated with the transaction",
                            "example": "Ferdian"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of the transaction",
                            "format": "date-time",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Due": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Due date for the transaction",
                            "example": "2020-08-24T00:00:00Z"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Additional notes related to the transaction",
                            "example": "Paid off in 1 week"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "Payment method used for the transaction",
                            "example": "Paid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Invoice/Join/TotalCount": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "summary": "List Join Invoice with Total Count",
        "description": "Get List of Join Invoice with Total Count\n\nRequired Group Role: \"**Debt**\" - \"**View**\"",
        "operationId": "GetJoinInvoicelistTotalCount",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Filter transactions by outlet name.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "From",
            "in": "query",
            "description": "Start date for filtering transactions.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-01T00:00:00Z"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "End date for filtering transactions.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-31T23:59:59Z"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique identifier for the transaction",
                            "format": "guid",
                            "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet associated with the transaction",
                            "example": "Outlet1"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Transaction number",
                            "example": "JI.25.04.00001"
                          },
                          "Customer": {
                            "type": "string",
                            "description": "Name of the customer associated with the transaction",
                            "example": "Ferdian"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of the transaction",
                            "format": "date-time",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Due": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Due date for the transaction",
                            "example": "2020-08-24T00:00:00Z"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Additional notes related to the transaction",
                            "example": "Paid off in 1 week"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "Payment method used for the transaction",
                            "example": "Paid"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total number of transactions Join Invoice",
                      "example": 88
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Invoice/Join/Detail/{id}": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "summary": "Join Invoice Detail",
        "description": "Get Join Invoice Detail based on ID Join Invoice.\n\nRequired Group Role: \"**Debt**\" - \"**View**\"",
        "operationId": "GetJoinInvoiceDetail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier for the transaction",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Join Invoice ID",
                      "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
                    },
                    "OutletID": {
                      "type": "string",
                      "description": "Outlet ID",
                      "format": "guid",
                      "example": "62844da2-47c8-43d1-b3f1-dfa5c014c872"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Name of the outlet",
                      "example": "Outlet1"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Number of the join invoice",
                      "example": "JI.25.04.00001"
                    },
                    "Date": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Date of the join invoice",
                      "example": "2020-08-17T00:00:00Z"
                    },
                    "Customer": {
                      "type": "string",
                      "description": "Name of the customer",
                      "example": "Ferdian"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "ID of the user who created the join invoice",
                      "format": "guid",
                      "example": "abc2b688-cd78-8118-9064-6123aed1b1234"
                    },
                    "Invoice": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Date of the invoice",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Sales": {
                            "type": "number",
                            "description": "Total sales amount",
                            "example": 1500000
                          },
                          "Tax": {
                            "type": "number",
                            "description": "Total tax amount",
                            "example": 150000
                          }
                        }
                      }
                    },
                    "Payment": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Date of the payment",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Amount": {
                            "type": "number",
                            "description": "Amount paid",
                            "example": 1650000
                          },
                          "Method": {
                            "type": "string",
                            "description": "Payment method used",
                            "example": "Cash"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/LoyaltyPoint/Mobile": {
      "put": {
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Add / Redeem Loyalty Point by Mobile",
        "description": "Add / Redeem Loyalty Point Customer by Mobile",
        "operationId": "put-LoyaltyPoint-Mobile",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "LoyaltyPoint",
                  "MobilePhone"
                ],
                "type": "object",
                "properties": {
                  "MobilePhone": {
                    "type": "string",
                    "description": "Customer mobile phone. This is primary key for the object"
                  },
                  "LoyaltyPoint": {
                    "type": "integer",
                    "description": "The number of loyalty points you want to add / redeem"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Note add loyalty point"
                  }
                },
                "example": {
                  "MobilePhone": "081251545454",
                  "LoyaltyPoint": 1000,
                  "Note": "Add loyalty point"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "add": {
                    "summary": "Points Added",
                    "value": {
                      "Message": "Your loyalty point has been added by 100 points"
                    }
                  },
                  "redeem": {
                    "summary": "Points Redeemed",
                    "value": {
                      "Message": "Your loyalty points have been redeemed by 1000 points"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "x-examples": {
                    "Example 1": {
                      "Message": "MobilePhone Not Found"
                    }
                  }
                }
              },
              "Example 1": {
                "example": {
                  "Message": "MobilePhone Not Found"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LoyaltyPoint": {
      "get": {
        "operationId": "GetLoyaltyPoint",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Get Loyalty Point",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/LoyaltyPoint/p)**\n\n<br>\nGet Loyalty Point History\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page of data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The Number of rows returned by The API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "Customer's Name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Customer's member code"
                      },
                      "Email": {
                        "type": "string",
                        "description": "Customer's email"
                      },
                      "LoyaltyPoint": {
                        "type": "integer",
                        "description": "Customer's loyalty point"
                      },
                      "Timestamp": {
                        "type": "string",
                        "description": "Last transaction time related to loyalty point (earned/redeemed)"
                      },
                      "ExpiryDate": {
                        "type": "string",
                        "description": "Loyalty point expired date"
                      },
                      "Redeemed": {
                        "type": "integer",
                        "description": "Total of redeemed loyalty point"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "John Doe",
                    "Code": "ABC-001",
                    "Email": "",
                    "LoyaltyPoint": 25,
                    "Timestamp": "2020-03-04T15:08:15.997",
                    "ExpiryDate": "",
                    "Redeemed": 8
                  },
                  {
                    "Name": "Jane Doe",
                    "Code": "ABC-002",
                    "Email": "",
                    "LoyaltyPoint": 15,
                    "Timestamp": "2019-08-22T14:00:48.36",
                    "ExpiryDate": "",
                    "Redeemed": 5
                  },
                  {
                    "Name": "Richard",
                    "Code": "ABC-003",
                    "Email": "",
                    "LoyaltyPoint": 100,
                    "Timestamp": "2020-02-18T16:53:58.697",
                    "ExpiryDate": "",
                    "Redeemed": 50
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "operationId": "AddRedeemLoyaltyPointByEmail",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Add / Redeem Loyalty Point By Email",
        "description": "Add / Redeem Loyalty Point Customer by Email\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Email",
                  "LoyaltyPoint"
                ],
                "type": "object",
                "properties": {
                  "Email": {
                    "type": "string",
                    "description": "Customer email address. This is primary key for the object"
                  },
                  "LoyaltyPoint": {
                    "type": "integer",
                    "description": "The number of loyalty points you want to add / redeem"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Note add loyalty point"
                  }
                }
              },
              "example": {
                "Email": "riyan@gmail.com",
                "LoyaltyPoint": 100,
                "Note": "Adding loyalty points for promotion"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Description of loyalty point action"
                    }
                  }
                },
                "examples": {
                  "add": {
                    "summary": "Points Added",
                    "value": {
                      "Message": "Your loyalty point has been added by 100 points"
                    }
                  },
                  "redeem": {
                    "summary": "Points Redeemed",
                    "value": {
                      "Message": "Your loyalty points have been redeemed by 1000 points"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Email Not Found"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ClassName": {
                      "type": "string"
                    },
                    "Message": {
                      "type": "string"
                    },
                    "Data": {
                      "type": "object",
                      "properties": {
                        "HelpLink.ProdName": {
                          "type": "string"
                        },
                        "HelpLink.ProdVer": {
                          "type": "string"
                        },
                        "HelpLink.EvtSrc": {
                          "type": "string"
                        },
                        "HelpLink.EvtID": {
                          "type": "string"
                        },
                        "HelpLink.BaseHelpUrl": {
                          "type": "string"
                        },
                        "HelpLink.LinkId": {
                          "type": "string"
                        },
                        "SqlError 1": {
                          "type": "string"
                        }
                      }
                    },
                    "StackTraceString": {
                      "type": "string"
                    },
                    "RemoteStackIndex": {
                      "type": "integer"
                    },
                    "HResult": {
                      "type": "integer"
                    },
                    "Source": {
                      "type": "string"
                    },
                    "ClientConnectionId": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "ClassName": "System.Data.SqlClient.SqlException",
                  "Message": "Procedure or function 'GetContactByEmail' expects parameter '@Customer', which was not supplied.",
                  "Data": {
                    "HelpLink.ProdName": "Microsoft SQL Server",
                    "HelpLink.ProdVer": "14.00.1000",
                    "HelpLink.EvtSrc": "MSSQLServer",
                    "HelpLink.EvtID": "201",
                    "HelpLink.BaseHelpUrl": "http://go.microsoft.com/fwlink",
                    "HelpLink.LinkId": "20476",
                    "SqlError 1": "System.Data.SqlClient.SqlError: Procedure or function 'GetContactByEmail' expects parameter '@Customer', which was not supplied."
                  },
                  "StackTraceString": "   at System.Data.SqlClient.SqlConnection....",
                  "RemoteStackIndex": 0,
                  "HResult": -2146232060,
                  "Source": "Core .Net SqlClient Data Provider",
                  "ClientConnectionId": "eca58533-f8e4-4020-8256-b5c795242410"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LoyaltyPoint/EarnAndRedeem": {
      "get": {
        "operationId": "GetEarnAndRedeemLoyaltyPoint",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Get Total Earn and Redeem Loyalty Point",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/LoyaltyPoint/p)**\n\n<br>\nGet total Earn and Redeem Loyalty Point according period define\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-31"
          },
          {
            "name": "Email",
            "in": "query",
            "description": "Customer's email which will be used to pull the loyalty point history",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "hendry@dealpos.com"
          },
          {
            "name": "MobilePhone",
            "in": "query",
            "description": "Customer's Mobile or Phone Number which will be used to pull the loyalty point history",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "081231234546"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Earn": {
                      "type": "integer"
                    },
                    "Redeem": {
                      "type": "integer"
                    }
                  }
                },
                "example": {
                  "Earn": 100,
                  "Redeem": -28
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection.....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/LoyaltyPoint/WithTotalCount": {
      "get": {
        "operationId": "GetLoyaltyPointWithTotalCount",
        "tags": [
          "Loyalty Point"
        ],
        "summary": "Get Loyalty Point With Total Count",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Loyalty Point With Total Count\n\nRequired Group Role: \"**Contacts**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Name of the customer"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Unique Code of the customer"
                          },
                          "Email": {
                            "type": "string",
                            "description": "E-mail detail of the customer"
                          },
                          "LoyaltyPoint": {
                            "type": "integer",
                            "description": "Total account loyalty point of the customer"
                          },
                          "Timestamp": {
                            "type": "string",
                            "description": "Customer loyalty point time stamp"
                          },
                          "ExpiryDate": {
                            "type": "string",
                            "description": "Customer loyalty point expiry date"
                          },
                          "Redeemed": {
                            "type": "integer",
                            "description": "Customer loyalty point total that has been redeemed"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Name": "John Doe",
                      "Code": "ABC-001",
                      "Email": "",
                      "LoyaltyPoint": 25,
                      "Timestamp": "2020-03-04T15:08:15.997",
                      "ExpiryDate": "",
                      "Redeemed": 8
                    },
                    {
                      "Name": "Jane Doe",
                      "Code": "ABC-002",
                      "Email": "",
                      "LoyaltyPoint": 15,
                      "Timestamp": "2019-08-22T14:00:48.36",
                      "ExpiryDate": "",
                      "Redeemed": 5
                    },
                    {
                      "Name": "Richard",
                      "Code": "ABC-003",
                      "Email": "",
                      "LoyaltyPoint": 100,
                      "Timestamp": "2020-02-18T16:53:58.697",
                      "ExpiryDate": "",
                      "Redeemed": 50
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Authentication failed, invalid Bearer Token!"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/OutboundLogistic/Number": {
      "get": {
        "operationId": "GetOutboundLogisticByNumber",
        "tags": [
          "OutboundLogistic"
        ],
        "summary": "Get OutboundLogistic By Number",
        "description": ">Previous Endpoint: https://brand.dealpos.net/api/v3/CustomerDelivery/Number. As for now, both the new & the old ones can be use.\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Customer Delivery By Number\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Number",
            "in": "query",
            "description": "Number of customer delivery",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "20.04.00018"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name of customer delivery. if Outlet provided, OutletID will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID. if OutletID provided, Outlet name will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "30b10eae-8a4e-43de-8a37-4bb2b1807280"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet where the transaction is created"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Transaction Number"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Transaction date"
                    },
                    "Customer": {
                      "type": "object",
                      "properties": {},
                      "description": "Customer's data"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "User who create the transaction"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Transaction created date"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Variant's name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Variant's code"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Variant's quantity for the transaction"
                          },
                          "Cost": {
                            "type": "number",
                            "description": "Variant's sold cost"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Note for the variant"
                          },
                          "VariantID": {
                            "type": "string",
                            "description": "Product Variant Unique ID"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "20.04.00018",
                  "Date": "2020-04-29T00:00:00",
                  "Customer": {},
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Created": "2020-04-29T12:02:26.903",
                  "Variants": [
                    {
                      "Name": "T-Shirt",
                      "Code": "2004",
                      "Quantity": 1,
                      "Cost": 200000,
                      "Note": "",
                      "VariantID": "30b10eae-8a4e-43de-8a37-4bb2b1807280"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Error type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/OutboundLogistic/byOrderNumber": {
      "get": {
        "tags": [
          "OutboundLogistic"
        ],
        "summary": "Get OutboundLogistic By Order Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Customer Delivery By Order / Invoice Number\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "operationId": "oubound-logistic-bynumber",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "With Outlet Name",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet name of customer delivery"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of customer delivery"
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "20.04.00018"
                    }
                  },
                  {
                    "title": "With Outlet ID",
                    "required": [
                      "Number",
                      "OutletID"
                    ],
                    "type": "object",
                    "properties": {
                      "OutletID": {
                        "type": "string",
                        "description": "Guid of Outlet ID"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of customer delivery"
                      }
                    },
                    "example": {
                      "OutletID": "30b10eae-8a4e-43de-8a37-4bb2b1807280",
                      "Number": "20.04.00018"
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "title": "Single Outlet Delivery",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Destination Outlet Name"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Outbound Logistic Number"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Transaction date"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Transaction created date"
                          }
                        }
                      },
                      "example": [
                        {
                          "Outlet": "Outlet1",
                          "Number": "1-OLT1/22/07/0021",
                          "Date": "2022-07-06T00:00:00",
                          "Created": "2022-07-06T09:37:53.937"
                        },
                        {
                          "Outlet": "Outlet1",
                          "Number": "1-OLT1/22/07/0021_2",
                          "Date": "2022-07-06T00:00:00",
                          "Created": "2022-07-06T09:38:05.857"
                        }
                      ]
                    },
                    {
                      "title": "Multiple Outlet Delivery",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Destination Outlet Name"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Outbound Logistic Number"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Transaction date"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Transaction created date"
                          }
                        }
                      },
                      "example": [
                        {
                          "Outlet": "Outlet2",
                          "Number": "1-OLT2/22/07/0021",
                          "Date": "2022-07-06T00:00:00",
                          "Created": "2022-07-06T09:37:53.937"
                        },
                        {
                          "Outlet": "Outlet3",
                          "Number": "1-OLT3/22/07/0021_2",
                          "Date": "2022-07-06T00:00:00",
                          "Created": "2022-07-06T09:38:05.857"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionMessage": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "ExceptionType": {
                      "type": "string",
                      "description": "Error type"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/OutboundLogistic/WithTotalCount": {
      "get": {
        "operationId": "GetOutboundLogisticWithTotalCount",
        "tags": [
          "OutboundLogistic"
        ],
        "summary": "List OutboundLogistic With Total Count",
        "description": ">Previous Endpoint: https://brand.dealpos.net/api/v3/CustomerDelivery/WithTotalCount. As for now, both the new & the old ones can be use.\n\n>**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet list of Customer Delivery with Total Count\n\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy-mm-dd)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2020-04-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy-mm-dd)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2020-04-30"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "number"
            },
            "example": 10
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Name of the outlet. if Outlet provided, OutletID will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Guid of Outlet ID. if OutletID provided, Outlet name will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "30b10eae-8a4e-43de-8a37-4bb2b1807280"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Number of the invoice customer delivery"
                          },
                          "Customer": {
                            "type": "string",
                            "description": "Name of the customer"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Date of the Customer Delivery"
                          },
                          "Delivery": {
                            "type": "string",
                            "description": "delivery date time of the Customer Delivery\n"
                          },
                          "Time": {
                            "type": "string",
                            "description": "Time of Date of the customer delivery"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total Count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.04.00082",
                      "Customer": "",
                      "Date": "2020-04-17T00:00:00",
                      "Delivery": "2020-04-17T00:00:00",
                      "Time": "2020-04-17T15:01:00"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "20.04.00081",
                      "Customer": "",
                      "Date": "2020-04-17T00:00:00",
                      "Delivery": "2020-04-17T00:00:00",
                      "Time": "2020-04-17T14:30:00"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet1"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "StackTrace": {
                      "type": "string",
                      "description": "Error stack trace"
                    }
                  }
                },
                "example": {
                  "Message": "Operation is not valid due to the current state of the object.",
                  "StackTrace": "   at System.Text.Json.JsonElement.GetRawText()\r\n   at POS.Library.Helper.JSONPropertyChecker.ToObject[T](JsonElement element) in D:\\Projects\\Gitlab\\pos-aspnet-core\\src\\POS.Library\\Helper\\JSONPropertyChecker.cs:line 141\r\n   at POS.WEB.Controllers.v3.CustomerDeliveryController.WithTotalCount(JsonElement obj)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/InboundLogistic": {
      "get": {
        "tags": [
          "InboundLogistic"
        ],
        "summary": "List InboundLogistic",
        "description": "Get list of Inbound Logistics\r\n\r\nYou must have \"**View**\" role in \"**Logistic**\" Module",
        "operationId": "get-InboundLogistic",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-02-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-02-28"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The Page of data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name that you want to filter",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet's Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Transaction Number"
                      },
                      "Supplier": {
                        "type": "string",
                        "description": "Supplier's Name"
                      },
                      "PONumber": {
                        "type": "string",
                        "description": "Purchase Order Number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Date of Inbound Logistics created"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "20.04.00082",
                    "Supplier": "Stephen",
                    "PONumber": "20.04.00082",
                    "Date": "2024-02-20T15:01:00"
                  },
                  {
                    "Outlet": "Outlet1",
                    "Number": "20.04.00081",
                    "Supplier": "Stephen",
                    "PONumber": "20.04.00081",
                    "Date": "2024-02-18T14:30:00"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet2"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "ji6zi2u1kjxe4"
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "operationId": "post-InboundLogistic",
        "tags": [
          "InboundLogistic"
        ],
        "summary": "Create InboundLogistic",
        "description": ">Previous Endpoint: https://brand.dealpos.net/api/v3/SupplierDelivery. As for now, both the new & the old ones can be use.\n\nReceive supplier delivery based on number\n\nYou must have \"**DelC**\" role in \"**Logistic**\" Module\nif config Workflow Buy Approve need \"**PurA**\" role in \"**Buy**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "All Product",
                    "required": [
                      "FulfillmentOutlet",
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of the Customer Delivery"
                      },
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Stock in this outlet will be reduced. Backwards compatibility with property \"DeliveryOutlet\""
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "21.05.00007",
                      "FulfillmentOutlet": "Outlet1"
                    }
                  },
                  {
                    "title": "Partial Product",
                    "required": [
                      "FulfillmentOutlet",
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Name of the outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Number of the Customer Delivery"
                      },
                      "FulfillmentOutlet": {
                        "type": "string",
                        "description": "Stock in this outlet will be reduced. Backwards compatibility with property \"DeliveryOutlet\""
                      },
                      "Variants": {
                        "type": "array",
                        "description": "If object Variants filled with empty array or not send, it will receive all products",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Code": {
                              "type": "string",
                              "description": "Code of Variant"
                            },
                            "Quantity": {
                              "type": "integer",
                              "description": "Quantity of stock will increase"
                            },
                            "Serial": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "Number": {
                                    "type": "string",
                                    "description": "Serial Number",
                                    "x-stoplight": {
                                      "id": "9y7y70gril7qt"
                                    }
                                  },
                                  "Quantity": {
                                    "type": "integer",
                                    "description": "Quantity of Serial Number"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "21.05.00007",
                      "FulfillmentOutlet": "Outlet1",
                      "Variants": [
                        {
                          "Code": "907",
                          "Quantity": 10
                        },
                        {
                          "Code": "908",
                          "Quantity": 5
                        }
                      ]
                    }
                  }
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string"
                    },
                    "OrderFulfillmentState": {
                      "type": "string",
                      "example": "Received / Partial"
                    }
                  }
                },
                "example": {
                  "ID": "712098c6-0703-4e36-9679-c14dbeb4e3fe",
                  "OrderFulfillmentState": "Received"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no invoice with Number 21.05.000ss07"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The order 21.05.00007 delivery status is RECEIVED. Double Delivery is not allowed"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "tags": [
          "InboundLogistic"
        ],
        "summary": "Delete Inbound Logistic",
        "description": "You must have \"**DELETE**\" role in \"**Logistic**\" Module",
        "operationId": "delete-InboundLogistic",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Fulfillment Number"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "21.12.00123"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Inbound Logistic number 21.12.00123 has been deleted!"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Inbound Logistic number 21.12.00124 not found"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "kle6pq2ad7ayk"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift": {
      "get": {
        "operationId": "GetShiftList",
        "tags": [
          "Shift"
        ],
        "summary": "Get List Of Shifts",
        "description": "Required Group Role: \"**Shift**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Register",
            "in": "query",
            "description": "Register Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "From",
            "in": "query",
            "description": "Date From result of shift list shown",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2020-05-28"
          },
          {
            "name": "To",
            "in": "query",
            "description": "Date To result of shift list shown",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2020-05-29"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Number of page begin",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The size of one page. Max=500",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Open": {
                        "type": "string",
                        "description": "Opening date and time of the shift"
                      },
                      "Close": {
                        "type": "string",
                        "description": "closing date and time of the shift"
                      },
                      "Cashier": {
                        "type": "string",
                        "description": "the name of the cashier that open the shift"
                      },
                      "ID": {
                        "type": "string",
                        "format": "guid",
                        "description": "ID of the shift"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Shift Number"
                      },
                      "SalesNTax": {
                        "type": "number",
                        "description": "total sales that was created on sales shift"
                      },
                      "TotalInvoice": {
                        "type": "integer",
                        "description": "total invoice was created on sales shift"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "outlet location of the shift"
                      },
                      "Register": {
                        "type": "string",
                        "description": "register information of the shift"
                      },
                      "Visitors": {
                        "type": "integer",
                        "description": "total visitor during sales shift"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Open": "2020-05-28T15:24:45.293",
                    "Close": "2020-05-28T15:25:27.68",
                    "Cashier": "dealpos",
                    "ID": "22b33f3d-e89a-4b4a-89f1-a704740bbbdc",
                    "Number": "20.05.0001",
                    "SalesNTax": 16062.75,
                    "TotalInvoice": 1,
                    "Outlet": "Outlet1",
                    "Register": "Outlet1",
                    "Visitors": 10
                  },
                  {
                    "Open": "2020-05-29T15:24:05.13",
                    "Close": "2020-05-29T15:24:15.887",
                    "Cashier": "dealpos",
                    "ID": "c428483a-055b-4123-8c1d-59eb35152830",
                    "Number": "20.05.0002",
                    "SalesNTax": 15000,
                    "TotalInvoice": 1,
                    "Outlet": "Outlet1",
                    "Register": "Outlet1",
                    "Visitors": 10
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "put": {
        "operationId": "CloseShift",
        "tags": [
          "Shift"
        ],
        "summary": "Close register/end shift",
        "description": "Required Group Role: \"**Shift**\" - \"**VIEW**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Register": {
                    "type": "string",
                    "description": "Register Name"
                  }
                }
              },
              "example": {
                "Register": "Outlet1"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Number": {
                        "type": "string",
                        "description": "Shift Number"
                      },
                      "Sales": {
                        "type": "integer",
                        "description": "Total Sales that was created on sales shift"
                      },
                      "Tax": {
                        "type": "integer",
                        "description": "Total Tax Sales"
                      },
                      "Start": {
                        "type": "string",
                        "description": "Opening date and time of the shift"
                      },
                      "End": {
                        "type": "string",
                        "description": "closing date and time of the shift"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Number": "OLT1/21/12/0010",
                    "Sales": 60000,
                    "Tax": 2000,
                    "Start": "2021-12-15T14:09:06.567",
                    "End": "2021-12-15T14:09:13.8907518+07:00"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The register is not in the outlet list",
                  "StackTrace": "   at POS.WEB.Controllers.v3.ShiftController.Put(JsonElement request) in D:\\PROJECT\\POS\\src\\POS.WEB\\Controllers\\v3\\ShiftController.cs:line 336"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "post": {
        "operationId": "OpenShift",
        "tags": [
          "Shift"
        ],
        "summary": "Open Shift",
        "description": "Required Group Role: \"**Shift**\" - \"**VIEW**\"",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Register": {
                    "type": "string",
                    "description": "Register Name"
                  },
                  "OpAmount": {
                    "type": "integer",
                    "description": "Opening Cash"
                  }
                }
              },
              "example": {
                "Register": "Outlet1",
                "OpAmount": 100000
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Shift success created"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "The register is not in the outlet list",
                  "StackTrace": "   at POS.WEB.Controllers.v3.ShiftController.Post(JsonElement request) in D:\\PROJECT\\POS\\src\\POS.WEB\\Controllers\\v3\\ShiftController.cs:line 66"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      },
      "delete": {
        "operationId": "DeleteShift",
        "tags": [
          "Shift"
        ],
        "summary": "Delete Shift",
        "description": "Delete Previous Shift Invoice\n\nYou must have \"**Delete**\" role in \"**Shift**\" Module",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Shift Number"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "21.12.00007"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Shift 22b33f3d-e89a-4b4a-89f1-a704740bbbdc has been deleted!"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is No Shift with Number 21.12.00007 - at Outlet2"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift/TotalCount": {
      "get": {
        "operationId": "GetShiftListTotalCount",
        "tags": [
          "Shift"
        ],
        "summary": "Get List Of Shifts with Total Count",
        "description": "Required Group Role: \"**Shift**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Filter transactions by outlet name.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "From",
            "in": "query",
            "description": "Start date of shift list shown",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-05-28"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "End date of shift list shown",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-05-29"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Open": {
                            "type": "string",
                            "description": "Opening date and time of the shift"
                          },
                          "Close": {
                            "type": "string",
                            "description": "closing date and time of the shift"
                          },
                          "Cashier": {
                            "type": "string",
                            "description": "the name of the cashier that open the shift"
                          },
                          "ID": {
                            "type": "string",
                            "format": "guid",
                            "description": "ID of the shift"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Shift Number"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "total sales that was created on sales shift"
                          },
                          "TotalInvoice": {
                            "type": "integer",
                            "description": "total invoice was created on sales shift"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "outlet location of the shift"
                          },
                          "Register": {
                            "type": "string",
                            "description": "register information of the shift"
                          },
                          "Visitors": {
                            "type": "integer",
                            "description": "total visitor during sales shift"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of shifts"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Open": "2020-05-28T15:24:45.293",
                      "Close": "2020-05-28T15:25:27.68",
                      "Cashier": "dealpos",
                      "ID": "22b33f3d-e89a-4b4a-89f1-a704740bbbdc",
                      "Number": "20.05.0001",
                      "SalesNTax": 16062.75,
                      "TotalInvoice": 1,
                      "Outlet": "Outlet1",
                      "Register": "Outlet1",
                      "Visitors": 10
                    },
                    {
                      "Open": "2020-05-29T15:24:05.13",
                      "Close": "2020-05-29T15:24:15.887",
                      "Cashier": "dealpos",
                      "ID": "c428483a-055b-4123-8c1d-59eb35152830",
                      "Number": "20.05.0002",
                      "SalesNTax": 15000,
                      "TotalInvoice": 1,
                      "Outlet": "Outlet1",
                      "Register": "Outlet1",
                      "Visitors": 10
                    },
                    {
                      "Open": "2020-05-28T15:24:45.293",
                      "Close": "2020-05-28T15:25:27.68",
                      "Cashier": "dealpos",
                      "ID": "22b33f3d-e89a-4b4a-89f1-a704740bbbdc",
                      "Number": "20.05.0001",
                      "SalesNTax": 16062.75,
                      "TotalInvoice": 1,
                      "Outlet": "Outlet1",
                      "Register": "Outlet1",
                      "Visitors": 10
                    },
                    {
                      "Open": "2020-05-29T15:24:05.13",
                      "Close": "2020-05-29T15:24:15.887",
                      "Cashier": "dealpos",
                      "ID": "c428483a-055b-4123-8c1d-59eb35152830",
                      "Number": "20.05.0002",
                      "SalesNTax": 15000,
                      "TotalInvoice": 1,
                      "Outlet": "Outlet1",
                      "Register": "Outlet1",
                      "Visitors": 10
                    }
                  ],
                  "TotalCount": 50
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift/InvoiceDetail": {
      "get": {
        "operationId": "GetShiftInvoiceDetail",
        "tags": [
          "Shift"
        ],
        "summary": "Get Shift Invoice Detail",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n\n<br>\nGet Shift Invoice Detail\n\nRequired Group Role: \"**Shift**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Register",
            "in": "query",
            "description": "Register Name based on its Outlet",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Invoice Number of the transaction",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "21.03.00115"
          },
          {
            "name": "ID",
            "in": "query",
            "description": "Unique ID of the shift. Register and Number are not required if ID is provided.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "98180136-e9e8-4f7f-ac00-afd45723ad62"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page Number per-shift detail",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The size of one page. (default = 100) Max=500",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 100
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "description": "Array of data",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique ID of the invoice"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Number of the invoice transasction"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Sell date of the invoice transaction"
                          },
                          "DueDate": {
                            "type": "string",
                            "description": "Due date of the invoice transaction"
                          },
                          "Tag": {
                            "type": "string",
                            "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesType\""
                          },
                          "SalesPerson": {
                            "type": "string",
                            "description": "Sales person name of the invoice transaction"
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "Code": {
                                "type": "string",
                                "description": "Unique Code of the customer"
                              },
                              "Email": {
                                "type": "string",
                                "description": "E-mail of the customer"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Mobile Phone Number of the customer"
                              },
                              "Name": {
                                "type": "string",
                                "description": "Name of the customer"
                              },
                              "Phone": {
                                "type": "string",
                                "description": "Phone number of the customer"
                              }
                            }
                          },
                          "CreatorID": {
                            "type": "string",
                            "description": "Unique ID of the creator"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice created Transaction Date by system\n"
                          },
                          "Discount1": {
                            "type": "integer",
                            "description": "Percentage of discount 1"
                          },
                          "Discount2": {
                            "type": "integer",
                            "description": "Percentage of discount 2"
                          },
                          "DiscountAmount": {
                            "type": "number",
                            "description": "Amount of Discount amount-based"
                          },
                          "Gross": {
                            "type": "number",
                            "description": "Total amount of the transaction before discounted"
                          },
                          "DiscountTotal": {
                            "type": "number",
                            "description": "Total accumulation of the discounts"
                          },
                          "TaxType": {
                            "type": "string",
                            "description": "Type name of the tax"
                          },
                          "Tax": {
                            "type": "number",
                            "description": "Total amount of the taxes"
                          },
                          "TaxRate": {
                            "type": "number",
                            "description": "Rate of Tax in percentage",
                            "x-stoplight": {
                              "id": "f3iosfcfnch91"
                            }
                          },
                          "Sales": {
                            "type": "number",
                            "description": "Total amount of the sales after subtraction"
                          },
                          "Surcharge": {
                            "type": "number",
                            "description": "Additional expense (ex: from credit card)"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "Total amount of sales after taxes"
                          },
                          "Coupon": {
                            "type": "string",
                            "description": "Promotion Coupon Key"
                          },
                          "InvoiceID": {
                            "type": "string",
                            "description": "Unique ID of the invoice"
                          },
                          "PointUsed": {
                            "type": "integer",
                            "description": "Total point used in the transaction"
                          },
                          "PointsEarned": {
                            "type": "integer",
                            "description": "Total point earned from the transaction"
                          },
                          "Fulfillment": {
                            "type": "string",
                            "description": "delivery status / progres of the invoice\n",
                            "enum": [
                              "Sent",
                              "Unsent",
                              "Partial"
                            ]
                          },
                          "LogisticServiceCode": {
                            "type": "string",
                            "description": "Code of Logistic Service Option",
                            "x-stoplight": {
                              "id": "y62h8lln99i47"
                            }
                          },
                          "Payment": {
                            "type": "string",
                            "description": "payment status / state of the invoice"
                          },
                          "Void": {
                            "type": "string",
                            "description": "Void state / status of the invoice"
                          },
                          "Bin": {
                            "type": "boolean",
                            "description": "Recycle bin state/status of the invoice"
                          },
                          "ReferenceInvoiceNumber": {
                            "type": "string",
                            "description": "Another Invoice that is associated with this Invoice ex: SalesReturn scenario, null when it is normal Sales transaction"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "VariantID": {
                                  "type": "string",
                                  "description": "Product Variant ID"
                                },
                                "Name": {
                                  "type": "string",
                                  "description": "Product Variant Name"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Product Variant Code"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "description": "Quantity of the product variant"
                                },
                                "UnitQuantity": {
                                  "type": "integer",
                                  "description": "Unit Quantity Messurement of the product variant"
                                },
                                "Cost": {
                                  "type": "integer",
                                  "description": "Unit Cost of the product variant"
                                },
                                "Price": {
                                  "type": "integer",
                                  "description": "Selling Price of the product variant"
                                },
                                "PriceOriginal": {
                                  "type": "integer",
                                  "description": "Original Price (before discounted) of the product variant"
                                },
                                "Discount": {
                                  "type": "integer",
                                  "description": "Discount Percentage (%) of the product variant"
                                },
                                "DiscountAmount": {
                                  "type": "integer",
                                  "description": "Discount Amount of the product variant"
                                },
                                "Taxable": {
                                  "type": "boolean",
                                  "description": "Taxable state/status of the invoice transaction"
                                },
                                "LoyaltyPoint": {
                                  "type": "boolean",
                                  "description": "Loyalty state/status of the invoice transaction"
                                },
                                "Expense": {
                                  "type": "integer",
                                  "description": "Additional Expense of the product variant"
                                },
                                "Sales": {
                                  "type": "integer",
                                  "description": "Net Sales for the Product (after deducted by Discount - DiscountAmount - TaxInclude)",
                                  "x-stoplight": {
                                    "id": "z512zkumpn6x3"
                                  }
                                },
                                "Tax": {
                                  "type": "integer",
                                  "description": "Tax applied for the product depending on chosen TaxType (Rate + Calculation)",
                                  "x-stoplight": {
                                    "id": "nixjrsddw2r6l"
                                  }
                                },
                                "Commission": {
                                  "type": "integer",
                                  "description": "Sales commision of the invoice transaction"
                                },
                                "SalesName": {
                                  "type": "string",
                                  "description": "Sales Person Name of the transaction"
                                },
                                "PriceTypeID": {
                                  "type": "integer",
                                  "description": "Sales price type of the transaction"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Product Variant Note of the invoice transaction"
                                }
                              }
                            }
                          },
                          "OutboundLogistics": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Outlet": {
                                  "type": "string",
                                  "description": "Outlet_Name_of_Outbound_Logistic",
                                  "x-stoplight": {
                                    "id": "bbzgvmvkhq8n4"
                                  }
                                },
                                "Number": {
                                  "type": "string",
                                  "description": "Outbound_Logistic_Number",
                                  "x-stoplight": {
                                    "id": "ofyrjtnsli5ap"
                                  }
                                },
                                "Date": {
                                  "type": "string",
                                  "description": "Date of Outbound Logistic",
                                  "x-stoplight": {
                                    "id": "vok3apb9s0973"
                                  }
                                }
                              },
                              "x-stoplight": {
                                "id": "elw8t6uzp0kgl"
                              }
                            }
                          },
                          "Payments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Date": {
                                  "type": "string",
                                  "description": "Date of the payment"
                                },
                                "Amount": {
                                  "type": "integer",
                                  "description": "Total amount of the payment"
                                },
                                "Method": {
                                  "type": "string",
                                  "description": "Payment method of the invoice transaction"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Code of the payment method"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Note of the payment method"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "Open": {
                      "type": "string",
                      "description": "Opening date and time of the shift"
                    },
                    "Close": {
                      "type": "string",
                      "description": "Closing date and time of the shift"
                    },
                    "Cashier": {
                      "type": "string",
                      "description": "Cashier name of the shift"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Shift Number"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet Name of the shift"
                    },
                    "Register": {
                      "type": "string",
                      "description": "Register Name based on its Outlet"
                    },
                    "TotalInvoice": {
                      "type": "integer",
                      "description": "Total amount of invoice in the shift"
                    },
                    "SalesNTax": {
                      "type": "integer",
                      "description": "Total amount of sales in the shift"
                    },
                    "Visitor": {
                      "type": "integer",
                      "description": "Total visitor in the shift"
                    },
                    "ARAmount": {
                      "type": "integer",
                      "description": "Total amount of AR in the shift"
                    },
                    "ARTransaction": {
                      "type": "integer",
                      "description": "Number of transaction of AR in the shift"
                    },
                    "TotalRow": {
                      "type": "integer",
                      "description": "Total row of the data (invoice)"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Outlet": "Outlet1",
                      "Number": "20.05.00157",
                      "Date": "2020-05-27T00:00:00",
                      "DueDate": "0001-01-01T00:00:00",
                      "Tag": "Offline",
                      "SalesPerson": "Sales 1",
                      "Customer": {
                        "Code": "HW0001",
                        "Email": "hendry@dealpos.com",
                        "Mobile": "0815161688",
                        "Name": "hendry",
                        "Phone": "0815161688"
                      },
                      "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                      "Created": "2020-05-27T11:10:50.57",
                      "Discount1": 20,
                      "Discount2": 0,
                      "DiscountAmount": 20000,
                      "Gross": 100000,
                      "DiscountTotal": 48800,
                      "TaxType": "No Tax",
                      "Tax": 0,
                      "TaxRate": 0,
                      "Sales": 51200,
                      "Surcharge": 1000,
                      "SalesNTax": 51200,
                      "Coupon": "889977",
                      "InvoiceID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "PointUsed": 0,
                      "PointsEarned": 0,
                      "Fulfillment": "Sent",
                      "LogisticServiceCode": "JNE-R",
                      "Payment": "Paid",
                      "Void": "No",
                      "Bin": false,
                      "ReferenceInvoiceNumber": "20.05.00156",
                      "Variants": [
                        {
                          "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                          "Name": "Muffin (Medium)",
                          "Code": "MM3002",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 50000,
                          "Price": 100000,
                          "PriceOriginal": 100000,
                          "Discount": 10,
                          "DiscountAmount": 1000,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 10000,
                          "Sales": 89000,
                          "Tax": 0,
                          "Commission": 0,
                          "SalesName": "Jane",
                          "PriceTypeID": 1,
                          "Note": "Item note"
                        }
                      ],
                      "OutboundLogistics": [
                        {
                          "Outlet": "Outlet2",
                          "Number": "20.05.00157",
                          "Date": "2020-05-27T00:00:00"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2020-05-27T00:00:00",
                          "Amount": 52200,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Payment Note"
                        }
                      ]
                    },
                    {
                      "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Outlet": "Outlet1",
                      "Number": "20.05.00157",
                      "Date": "2020-05-27T00:00:00",
                      "DueDate": "0001-01-01T00:00:00",
                      "Tag": "Offline",
                      "SalesPerson": "Sales 1",
                      "Customer": {
                        "Code": "HW0001",
                        "Email": "hendry@dealpos.com",
                        "Mobile": "0815161688",
                        "Name": "hendry",
                        "Phone": "0815161688"
                      },
                      "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                      "Created": "2020-05-27T11:10:50.57",
                      "Discount1": 20,
                      "Discount2": 0,
                      "DiscountAmount": 20000,
                      "Gross": 100000,
                      "DiscountTotal": 48800,
                      "TaxType": "No Tax",
                      "Tax": 0,
                      "TaxRate": 0,
                      "Sales": 51200,
                      "Surcharge": 1000,
                      "SalesNTax": 51200,
                      "Coupon": "889977",
                      "InvoiceID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "PointUsed": 0,
                      "PointsEarned": 0,
                      "Fulfillment": "Sent",
                      "LogisticServiceCode": "JNE-R",
                      "Payment": "Paid",
                      "Void": "No",
                      "Bin": false,
                      "ReferenceInvoiceNumber": "20.05.00156",
                      "Variants": [
                        {
                          "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                          "Name": "Muffin (Medium)",
                          "Code": "MM3002",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 50000,
                          "Price": 100000,
                          "PriceOriginal": 100000,
                          "Discount": 10,
                          "DiscountAmount": 1000,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 10000,
                          "Sales": 89000,
                          "Tax": 0,
                          "Commission": 0,
                          "SalesName": "Jane",
                          "PriceTypeID": 1,
                          "Note": "Item note"
                        }
                      ],
                      "OutboundLogistics": [
                        {
                          "Outlet": "Outlet2",
                          "Number": "20.05.00157",
                          "Date": "2020-05-27T00:00:00"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2020-05-27T00:00:00",
                          "Amount": 52200,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Payment Note"
                        }
                      ]
                    }
                  ],
                  "Open": "2020-05-27T11:10:50.57",
                  "Close": "2020-05-27T11:10:50.57",
                  "Cashier": "Jane",
                  "Number": "20.05.00157",
                  "Outlet": "Outlet1",
                  "Register": "Outlet1",
                  "TotalInvoice": 2,
                  "SalesNTax": 102400,
                  "Visitor": 2,
                  "ARAmount": 500000,
                  "ARTransaction": 2,
                  "TotalRow": 2
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift/InvoiceDetailWithNote": {
      "get": {
        "operationId": "GetShiftInvoiceDetailWithNote",
        "tags": [
          "Shift"
        ],
        "summary": "Get Shift Invoice Detail With Note",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n\n<br>\nGet Shift Invoice Detail with Note",
        "parameters": [
          {
            "name": "Register",
            "in": "query",
            "description": "Register Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Shift Number",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "21.03.00115"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page Number per-shift detail",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The size of one page. (default = 100) Max=500",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 100
          },
          {
            "name": "NoteVisible",
            "in": "query",
            "description": "Must be sent the object property to show note in response",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "description": "Array of data",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Unique ID of the invoice"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Number of the invoice transasction"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Sell date of the invoice transaction"
                          },
                          "DueDate": {
                            "type": "string",
                            "description": "Due date of the invoice transaction"
                          },
                          "Tag": {
                            "type": "string",
                            "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesType\""
                          },
                          "SalesPerson": {
                            "type": "string",
                            "description": "Sales person name of the invoice transaction"
                          },
                          "Customer": {
                            "type": "object",
                            "properties": {
                              "Code": {
                                "type": "string",
                                "description": "Unique Code of the customer"
                              },
                              "Email": {
                                "type": "string",
                                "description": "E-mail of the customer"
                              },
                              "Mobile": {
                                "type": "string",
                                "description": "Mobile Phone Number of the customer"
                              },
                              "Name": {
                                "type": "string",
                                "description": "Name of the customer"
                              },
                              "Phone": {
                                "type": "string",
                                "description": "Phone number of the customer"
                              }
                            }
                          },
                          "CreatorID": {
                            "type": "string",
                            "description": "Unique ID of the creator"
                          },
                          "Created": {
                            "type": "string",
                            "description": "Invoice created Transaction Date by system\n"
                          },
                          "Discount1": {
                            "type": "integer",
                            "description": "Percentage of discount 1"
                          },
                          "Discount2": {
                            "type": "integer",
                            "description": "Percentage of discount 2"
                          },
                          "DiscountAmount": {
                            "type": "number",
                            "description": "Amount of Discount amount-based"
                          },
                          "Gross": {
                            "type": "number",
                            "description": "Total amount of the transaction before discounted"
                          },
                          "DiscountTotal": {
                            "type": "number",
                            "description": "Total accumulation of the discounts"
                          },
                          "TaxType": {
                            "type": "string",
                            "description": "Type name of the tax"
                          },
                          "Tax": {
                            "type": "number",
                            "description": "Total amount of the taxes"
                          },
                          "TaxRate": {
                            "type": "number",
                            "description": "Rate of Tax in percentage",
                            "x-stoplight": {
                              "id": "f3iosfcfnch91"
                            }
                          },
                          "Sales": {
                            "type": "number",
                            "description": "Total amount of the sales after subtraction"
                          },
                          "Surcharge": {
                            "type": "number",
                            "description": "Additional expense (ex: from credit card)"
                          },
                          "SalesNTax": {
                            "type": "number",
                            "description": "Total amount of sales after taxes"
                          },
                          "Coupon": {
                            "type": "string",
                            "description": "Promotion Coupon Key"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Note of the invoice transaction"
                          },
                          "InvoiceID": {
                            "type": "string",
                            "description": "Unique ID of the invoice"
                          },
                          "PointUsed": {
                            "type": "integer",
                            "description": "Total point used in the transaction"
                          },
                          "PointsEarned": {
                            "type": "integer",
                            "description": "Total point earned from the transaction"
                          },
                          "Fulfillment": {
                            "type": "string",
                            "description": "delivery status / progres of the invoice\n",
                            "enum": [
                              "Sent",
                              "Unsent",
                              "Partial"
                            ]
                          },
                          "LogisticServiceCode": {
                            "type": "string",
                            "description": "Code of Logistic Service Option",
                            "x-stoplight": {
                              "id": "y62h8lln99i47"
                            }
                          },
                          "Payment": {
                            "type": "string",
                            "description": "payment status / state of the invoice"
                          },
                          "Void": {
                            "type": "string",
                            "description": "Void state / status of the invoice"
                          },
                          "Bin": {
                            "type": "boolean",
                            "description": "Recycle bin state/status of the invoice"
                          },
                          "ReferenceInvoiceNumber": {
                            "type": "string",
                            "description": "Another Invoice that is associated with this Invoice ex: SalesReturn scenario, null when it is normal Sales transaction"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "VariantID": {
                                  "type": "string",
                                  "description": "Product Variant ID"
                                },
                                "Name": {
                                  "type": "string",
                                  "description": "Product Variant Name"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Product Variant Code"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "description": "Quantity of the product variant"
                                },
                                "UnitQuantity": {
                                  "type": "integer",
                                  "description": "Unit Quantity Messurement of the product variant"
                                },
                                "Cost": {
                                  "type": "integer",
                                  "description": "Unit Cost of the product variant"
                                },
                                "Price": {
                                  "type": "integer",
                                  "description": "Selling Price of the product variant"
                                },
                                "PriceOriginal": {
                                  "type": "integer",
                                  "description": "Original Price (before discounted) of the product variant"
                                },
                                "Discount": {
                                  "type": "integer",
                                  "description": "Discount Percentage (%) of the product variant"
                                },
                                "DiscountAmount": {
                                  "type": "integer",
                                  "description": "Discount Amount of the product variant"
                                },
                                "Taxable": {
                                  "type": "boolean",
                                  "description": "Taxable state/status of the invoice transaction"
                                },
                                "LoyaltyPoint": {
                                  "type": "boolean",
                                  "description": "Loyalty state/status of the invoice transaction"
                                },
                                "Expense": {
                                  "type": "integer",
                                  "description": "Additional Expense of the product variant"
                                },
                                "Sales": {
                                  "type": "integer",
                                  "description": "Net Sales for the Product (after deducted by Discount - DiscountAmount - TaxInclude)",
                                  "x-stoplight": {
                                    "id": "z512zkumpn6x3"
                                  }
                                },
                                "Tax": {
                                  "type": "integer",
                                  "description": "Tax applied for the product depending on chosen TaxType (Rate + Calculation)",
                                  "x-stoplight": {
                                    "id": "nixjrsddw2r6l"
                                  }
                                },
                                "Commission": {
                                  "type": "integer",
                                  "description": "Sales commision of the invoice transaction"
                                },
                                "SalesName": {
                                  "type": "string",
                                  "description": "Sales Person Name of the transaction"
                                },
                                "PriceTypeID": {
                                  "type": "integer",
                                  "description": "Sales price type of the transaction"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Product Variant Note of the invoice transaction"
                                }
                              }
                            }
                          },
                          "OutboundLogistics": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Outlet": {
                                  "type": "string",
                                  "description": "Outlet_Name_of_Outbound_Logistic",
                                  "x-stoplight": {
                                    "id": "bbzgvmvkhq8n4"
                                  }
                                },
                                "Number": {
                                  "type": "string",
                                  "description": "Outbound_Logistic_Number",
                                  "x-stoplight": {
                                    "id": "ofyrjtnsli5ap"
                                  }
                                },
                                "Date": {
                                  "type": "string",
                                  "description": "Date of Outbound Logistic",
                                  "x-stoplight": {
                                    "id": "vok3apb9s0973"
                                  }
                                }
                              },
                              "x-stoplight": {
                                "id": "elw8t6uzp0kgl"
                              }
                            }
                          },
                          "Payments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Date": {
                                  "type": "string",
                                  "description": "Date of the payment"
                                },
                                "Amount": {
                                  "type": "integer",
                                  "description": "Total amount of the payment"
                                },
                                "Method": {
                                  "type": "string",
                                  "description": "Payment method of the invoice transaction"
                                },
                                "Code": {
                                  "type": "string",
                                  "description": "Code of the payment method"
                                },
                                "Note": {
                                  "type": "string",
                                  "description": "Note of the payment method"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "Open": {
                      "type": "string",
                      "description": "Opening date and time of the shift"
                    },
                    "Close": {
                      "type": "string",
                      "description": "Closing date and time of the shift"
                    },
                    "Cashier": {
                      "type": "string",
                      "description": "Cashier name of the shift"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Shift Number"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet Name of the shift"
                    },
                    "Register": {
                      "type": "string",
                      "description": "Register Name based on its Outlet"
                    },
                    "TotalInvoice": {
                      "type": "integer",
                      "description": "Total amount of invoice in the shift"
                    },
                    "SalesNTax": {
                      "type": "integer",
                      "description": "Total amount of sales in the shift"
                    },
                    "Visitor": {
                      "type": "integer",
                      "description": "Total visitor in the shift"
                    },
                    "ARAmount": {
                      "type": "integer",
                      "description": "Total amount of AR in the shift"
                    },
                    "ARTransaction": {
                      "type": "integer",
                      "description": "Number of transaction of AR in the shift"
                    },
                    "TotalRow": {
                      "type": "integer",
                      "description": "Total row of the data (invoice)"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Outlet": "Outlet1",
                      "Number": "20.05.00157",
                      "Date": "2020-05-27T00:00:00",
                      "DueDate": "0001-01-01T00:00:00",
                      "Tag": "Offline",
                      "SalesPerson": "Sales 1",
                      "Customer": {
                        "Code": "HW0001",
                        "Email": "hendry@dealpos.com",
                        "Mobile": "0815161688",
                        "Name": "hendry",
                        "Phone": "0815161688"
                      },
                      "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                      "Created": "2020-05-27T11:10:50.57",
                      "Discount1": 20,
                      "Discount2": 0,
                      "DiscountAmount": 20000,
                      "Gross": 100000,
                      "DiscountTotal": 48800,
                      "TaxType": "No Tax",
                      "Tax": 0,
                      "TaxRate": 0,
                      "Sales": 51200,
                      "Surcharge": 1000,
                      "SalesNTax": 51200,
                      "Coupon": "889977",
                      "Note": "Test Note",
                      "InvoiceID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "PointUsed": 0,
                      "PointsEarned": 0,
                      "Fulfillment": "Sent",
                      "LogisticServiceCode": "JNE-R",
                      "Payment": "Paid",
                      "Void": "No",
                      "Bin": false,
                      "ReferenceInvoiceNumber": "20.05.00156",
                      "Variants": [
                        {
                          "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                          "Name": "Muffin (Medium)",
                          "Code": "MM3002",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 50000,
                          "Price": 100000,
                          "PriceOriginal": 100000,
                          "Discount": 10,
                          "DiscountAmount": 1000,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 10000,
                          "Sales": 89000,
                          "Tax": 0,
                          "Commission": 0,
                          "SalesName": "Jane",
                          "PriceTypeID": 1,
                          "Note": "Item note"
                        }
                      ],
                      "OutboundLogistics": [
                        {
                          "Outlet": "Outlet2",
                          "Number": "20.05.00157",
                          "Date": "2020-05-27T00:00:00"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2020-05-27T00:00:00",
                          "Amount": 52200,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Payment Note"
                        }
                      ]
                    },
                    {
                      "ID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "Outlet": "Outlet1",
                      "Number": "20.05.00157",
                      "Date": "2020-05-27T00:00:00",
                      "DueDate": "0001-01-01T00:00:00",
                      "Tag": "Offline",
                      "SalesPerson": "Sales 1",
                      "Customer": {
                        "Code": "HW0001",
                        "Email": "hendry@dealpos.com",
                        "Mobile": "0815161688",
                        "Name": "hendry",
                        "Phone": "0815161688"
                      },
                      "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                      "Created": "2020-05-27T11:10:50.57",
                      "Discount1": 20,
                      "Discount2": 0,
                      "DiscountAmount": 20000,
                      "Gross": 100000,
                      "DiscountTotal": 48800,
                      "TaxType": "No Tax",
                      "Tax": 0,
                      "TaxRate": 0,
                      "Sales": 51200,
                      "Surcharge": 1000,
                      "SalesNTax": 51200,
                      "Coupon": "889977",
                      "Note": "Test Note",
                      "InvoiceID": "aad4a789-b802-49c1-b66f-f45fbc7ce17f",
                      "PointUsed": 0,
                      "PointsEarned": 0,
                      "Fulfillment": "Sent",
                      "LogisticServiceCode": "JNE-R",
                      "Payment": "Paid",
                      "Void": "No",
                      "Bin": false,
                      "ReferenceInvoiceNumber": "20.05.00156",
                      "Variants": [
                        {
                          "VariantID": "d23adf38-6739-4083-ac7b-4c665b6ba76f",
                          "Name": "Muffin (Medium)",
                          "Code": "MM3002",
                          "Quantity": 1,
                          "UnitQuantity": 1,
                          "Cost": 50000,
                          "Price": 100000,
                          "PriceOriginal": 100000,
                          "Discount": 10,
                          "DiscountAmount": 1000,
                          "Taxable": true,
                          "LoyaltyPoint": true,
                          "Expense": 10000,
                          "Sales": 89000,
                          "Tax": 0,
                          "Commission": 0,
                          "SalesName": "Jane",
                          "PriceTypeID": 1,
                          "Note": "Item note"
                        }
                      ],
                      "OutboundLogistics": [
                        {
                          "Outlet": "Outlet2",
                          "Number": "20.05.00157",
                          "Date": "2020-05-27T00:00:00"
                        }
                      ],
                      "Payments": [
                        {
                          "Date": "2020-05-27T00:00:00",
                          "Amount": 52200,
                          "Method": "Cash",
                          "Code": "C001",
                          "Note": "Payment Note"
                        }
                      ]
                    }
                  ],
                  "Open": "2020-05-27T11:10:50.57",
                  "Close": "2020-05-27T11:10:50.57",
                  "Cashier": "Jane",
                  "Number": "20.05.00157",
                  "Outlet": "Outlet1",
                  "Register": "Outlet1",
                  "TotalInvoice": 2,
                  "SalesNTax": 102400,
                  "Visitor": 2,
                  "ARAmount": 500000,
                  "ARTransaction": 2,
                  "TotalRow": 2
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is not Register name offline or number 20.03.00002"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Object reference not set to an instance of an object.",
                  "StackTrace": "   at POS.BLL.API.Model.OrderAPIModel.GetInvoiceInShift..."
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift/Number": {
      "get": {
        "operationId": "GetShiftNumber",
        "tags": [
          "Shift"
        ],
        "summary": "Get Shift By Number",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n\n<br>\nGet Shift By Number\n\nRequired Group Role: \"**Shift**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "description": "Outlet ID (Guid). If not provided, it will use property OutletName",
            "required": true,
            "schema": {
              "type": "string",
              "example": "aad4a789-b802-49c1-b66f-f45fbc7ce17f"
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name. If not provided, it will use property OutletID",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Shift Number. this is primary key for the object",
            "required": true,
            "schema": {
              "type": "string",
              "example": "21.04.002"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Shift Number"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "21.04.002"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Open": {
                      "type": "string",
                      "description": "Opening Date time of shift"
                    },
                    "Close": {
                      "type": "string",
                      "description": "Closing date time of shift"
                    },
                    "Number": {
                      "type": "string",
                      "description": "shift number"
                    },
                    "Cashier": {
                      "type": "string",
                      "description": "Cashier assigned at the shift"
                    },
                    "Register": {
                      "type": "string",
                      "description": "register of the shift"
                    },
                    "TotalInvoice": {
                      "type": "integer",
                      "description": "Total invoice in the shift"
                    },
                    "SalesNTax": {
                      "type": "integer",
                      "description": "Total amount of whole transactions in shift"
                    },
                    "Visitor": {
                      "type": "integer",
                      "description": "Total visitor in shift"
                    },
                    "Invoice": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Number": {
                            "type": "string",
                            "description": "Invoice number"
                          },
                          "Amount": {
                            "type": "integer",
                            "description": "Total amount invoice"
                          }
                        }
                      }
                    },
                    "Payments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Payment method name"
                          },
                          "Start": {
                            "type": "integer",
                            "description": "Start balance"
                          },
                          "Received": {
                            "type": "integer",
                            "description": "Payment that get from all invoices happened"
                          },
                          "Expected": {
                            "type": "integer",
                            "description": "Start + received amount"
                          },
                          "Counted": {
                            "type": "integer",
                            "description": "Total cash in hand"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Open": "14 Apr 2021 10:19",
                  "Close": "14 Apr 2021 10:19",
                  "Number": "21.04.002",
                  "Cashier": "dealpos",
                  "Register": "Outlet1",
                  "TotalInvoice": 2,
                  "SalesNTax": 75000,
                  "Visitor": 2,
                  "Invoice": [
                    {
                      "Number": "20.03.00039",
                      "Amount": 25000
                    },
                    {
                      "Number": "20.03.00027",
                      "Amount": 25000
                    }
                  ],
                  "Payments": [
                    {
                      "Name": "Cash",
                      "Start": 25000,
                      "Received": 50000,
                      "Expected": 75000,
                      "Counted": 70000
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection....)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/ProductSold": {
      "get": {
        "operationId": "GetProductSold",
        "tags": [
          "Report"
        ],
        "summary": "Get Product Sold",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Product Sold\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" ",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "OutletID",
            "in": "query",
            "description": "Outlet ID. if provided, will take precedence over Outlet name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          {
            "name": "VariantCode",
            "in": "query",
            "description": "Variant Code",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "VAR12345"
          },
          {
            "name": "From",
            "in": "query",
            "description": "From date (ISO 8601 format)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-01"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To date (ISO 8601 format)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2021-01-31"
          },
          {
            "name": "Category",
            "in": "query",
            "description": "Product Category",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Shirt"
          },
          {
            "name": "Sales",
            "in": "query",
            "description": "Sales Person / Employee Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Ferdi"
          },
          {
            "name": "CustomerEmail",
            "in": "query",
            "description": "Customer Email",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "customer@example.com"
          },
          {
            "name": "Tags",
            "in": "query",
            "description": "Product Tags",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Summer"
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Filter to show only specific product types. (If not specified, will return all types)\n",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "All",
                "Standard",
                "NonInventory"
              ]
            },
            "example": "All"
          },
          {
            "name": "Scope",
            "in": "query",
            "description": "Scope for the report result",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Product",
                "Variant"
              ],
              "default": "Product"
            },
            "example": "Product"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "Name of the Product"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Code of the Product"
                      },
                      "Quantity": {
                        "type": "integer",
                        "description": "Total Quantity of the Product sold"
                      },
                      "Cost": {
                        "type": "integer",
                        "description": "Cost of the product"
                      },
                      "Sales": {
                        "type": "integer",
                        "description": "Sales of the product"
                      },
                      "Profit": {
                        "type": "integer",
                        "description": "Profit of the product transaction"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "Baju Summer",
                    "Code": "SummerShirt",
                    "Quantity": 12,
                    "Cost": 10000,
                    "Sales": 15000,
                    "Profit": 5000
                  },
                  {
                    "Name": "Baju Winter",
                    "Code": "WinterShirt",
                    "Quantity": 15,
                    "Cost": 20000,
                    "Sales": 30000,
                    "Profit": 10000
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/InvoiceGroupByOutletNTag": {
      "get": {
        "operationId": "GetSalesGroupByOutletTag",
        "tags": [
          "Report"
        ],
        "summary": "Get Sales Group by Outlet Tag",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nChart for Sales Transaction in omni.dealpos.app\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" \n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "From": {
                    "type": "string"
                  },
                  "To": {
                    "type": "string"
                  },
                  "Outlet": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "Tag": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "From": "2022-12-25",
                "To": "2022-12-31",
                "Outlet": [
                  "Outlet1",
                  "Outlet2"
                ],
                "Tag": [
                  "Shopee",
                  "Tokopedia",
                  "TikTok"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Channel Tagging System"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Transactions Date"
                      },
                      "Sum": {
                        "type": "number",
                        "description": "Total Amount invoice in date range period"
                      },
                      "Count": {
                        "type": "integer",
                        "description": "Total invoice in date range period"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Tag": "Shopee",
                    "Date": "2023-03-10T00:00:00",
                    "Sum": 450000,
                    "Count": 2
                  },
                  {
                    "Outlet": "Outlet1",
                    "Tag": "Tokopedia",
                    "Date": "2023-03-10T00:00:00",
                    "Sum": 550000,
                    "Count": 10
                  },
                  {
                    "Outlet": "Outlet2",
                    "Tag": "Shopee",
                    "Date": "2023-03-10T00:00:00",
                    "Sum": 4500000,
                    "Count": 22
                  },
                  {
                    "Outlet": "Outlet2",
                    "Tag": "Tokopedia",
                    "Date": "2023-03-10T00:00:00",
                    "Sum": 55000,
                    "Count": 1
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "Message": "An error has occurred.",
                    "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                    "ExceptionType": "System.Data.SqlClient.SqlException",
                    "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Report/ProductSold/BySKUGroupDay": {
      "get": {
        "operationId": "GetProductSalesBySKUGroupByDay",
        "tags": [
          "Report"
        ],
        "summary": "Get Product Sales by SKU Group by Day",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) with the same endpoint**\n\n<br>\nGet Quantity Product Sales by SKU Group by Day\n\nRequired Group Role: \"**Report**\" - \"**VIEW**\" \n",
        "parameters": [
          {
            "name": "VariantCode",
            "in": "query",
            "description": "Variant SKU. if provided, VariantID will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "BAG01"
          },
          {
            "name": "VariantID",
            "in": "query",
            "description": "Variant ID. if VariantCode is provided, this will be ignored",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "5c064c24-c40d-4912-9be6-1c06515d7032"
          },
          {
            "name": "From",
            "in": "query",
            "description": "From Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-02-28"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-03-28"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Date": {
                        "type": "string",
                        "description": "Transaction Date"
                      },
                      "Quantity": {
                        "type": "integer",
                        "description": "Total Qty product sales in a day"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Date": "2023-02-28",
                    "Quantity": 10
                  },
                  {
                    "Date": "2023-03-01 ",
                    "Quantity": 15
                  },
                  {
                    "Date": "2023-03-05",
                    "Quantity": 17
                  },
                  {
                    "Date": "2023-03-09",
                    "Quantity": 20
                  },
                  {
                    "Date": "2023-03-14",
                    "Quantity": 22
                  },
                  {
                    "Date": "2023-03-18",
                    "Quantity": 8
                  },
                  {
                    "Date": "2023-03-21",
                    "Quantity": 50
                  },
                  {
                    "Date": "2023-03-27",
                    "Quantity": 10
                  },
                  {
                    "Date": "2023-03-28",
                    "Quantity": 29
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "Message": "An error has occurred.",
                    "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                    "ExceptionType": "System.Data.SqlClient.SqlException",
                    "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Invoice/GetReferenceNumber": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "summary": "Get Reference Number By Invoice ID",
        "description": "Get List Reference Number by Invoice ID",
        "operationId": "get-Invoice-GetReferenceNumber",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "description": "Array of List Invoice ID",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListID": [
                  "1e9c45af-9916-4131-a138-01ffd0ec1eba",
                  "0b9657f4-5e12-4d4a-89d6-c104a55c6c49"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of Invoice"
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number that associated with a specific invoice issued to a customer which gets from invoice Marketplace channel"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "1e9c45af-9916-4131-a138-01ffd0ec1eba",
                    "ReferenceNumber": "TKPD-001"
                  },
                  {
                    "ID": "0b9657f4-5e12-4d4a-89d6-c104a55c6c49",
                    "ReferenceNumber": "TKPD-002"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/GetReferenceNumber": {
      "get": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Get Reference Number By Sales Order ID",
        "description": "Get List of Reference Number By Sales Order ID",
        "operationId": "get-SalesOrder-GetReferenceNumber",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "description": "Array of List Sales Order ID",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "ListID": [
                  "1e9c45af-9916-4131-a138-01ffd0ec1eba",
                  "0b9657f4-5e12-4d4a-89d6-c104a55c6c49"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "description": "ID of Sales Order"
                      },
                      "ReferenceNumber": {
                        "type": "string",
                        "description": "Number that associated with a specific invoice issued to a customer which gets from invoice Marketplace channel"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "1e9c45af-9916-4131-a138-01ffd0ec1eba",
                    "ReferenceNumber": "TKPD-001"
                  },
                  {
                    "ID": "0b9657f4-5e12-4d4a-89d6-c104a55c6c49",
                    "ReferenceNumber": "TKPD-002"
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Serial": {
      "get": {
        "tags": [
          "Serial"
        ],
        "summary": "List Serial",
        "description": "Return a list of Variant Serial (type is Serialized / Batch Number)\n\nCan be used to aggregate Serial Number from Multiple Outlets",
        "operationId": "get-Serial",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "PageNumber": {
                    "type": "integer",
                    "description": "Page Number of Variant Serial List"
                  },
                  "PageSize": {
                    "type": "integer",
                    "description": "The size of one page. Max=500"
                  },
                  "ListOutlet": {
                    "type": "array",
                    "description": "List of Outlet. (if filled with blank, it will show for all outlet)",
                    "items": {
                      "type": "string",
                      "x-stoplight": {
                        "id": "9np0qel11z0gb"
                      }
                    }
                  }
                }
              },
              "example": {
                "PageNumber": 1,
                "PageSize": 20,
                "ListOutlet": [
                  "Outlet1",
                  "Outlet2"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "Variant's Name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant Code"
                      },
                      "Serial": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Number": {
                              "type": "string",
                              "description": "Serial Number"
                            },
                            "Quantity": {
                              "type": "integer",
                              "description": "Quantity of Serial Number from outlet filter in request payload ",
                              "x-stoplight": {
                                "id": "8h2v3e9ka8egt"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "Iphone1",
                    "Code": "IP1",
                    "Serial": [
                      {
                        "Number": "S001",
                        "Quantity": 2
                      },
                      {
                        "Number": "S002",
                        "Quantity": 5
                      }
                    ]
                  },
                  {
                    "Name": "Iphone2",
                    "Code": "IP2",
                    "Serial": [
                      {
                        "Number": "X001",
                        "Quantity": 2
                      },
                      {
                        "Number": "X002",
                        "Quantity": 5
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Serial/byVariantCode": {
      "get": {
        "tags": [
          "Serial"
        ],
        "summary": "Get Serial By Variant Code",
        "description": "Get Variant with Type Serialized by Variant Code for specific variant",
        "operationId": "get-Variant-Serialized",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "MK"
          },
          {
            "name": "Code",
            "in": "query",
            "description": "Variant Code",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "SM-001"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Code"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Code": {
                    "type": "string",
                    "description": "Variant Code"
                  }
                }
              },
              "example": {
                "Outlet": "MK",
                "Code": "SM-001"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Serial": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "Number": {
                              "type": "string",
                              "description": "Serial Number in Variant Code",
                              "x-stoplight": {
                                "id": "jkh4zeb24krhq"
                              }
                            },
                            "Quantity": {
                              "type": "integer",
                              "description": "Quantity of Serialized ",
                              "x-stoplight": {
                                "id": "tb7j4gletq5q7"
                              }
                            }
                          },
                          "x-stoplight": {
                            "id": "hscz0qjtz5z3d"
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "MK",
                    "Serial": [
                      {
                        "Number": "S001",
                        "Quantity": 2
                      },
                      {
                        "Number": "S002",
                        "Quantity": 5
                      }
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "Message": "Variant Code ABC is not type Serialized "
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Estimate/ConvertToSalesOrder": {
      "put": {
        "tags": [
          "Estimate"
        ],
        "summary": "Convert To Sales Order",
        "description": "Convert Estimate to Sales Order",
        "operationId": "put-Estimate-ConvertToSalesOrder",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Estimate Number"
                  },
                  "OrderNumber": {
                    "type": "string",
                    "description": "Sales Order Number. If the value with null, it will set with number the generate from system"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "23.03.0003",
                "OrderNumber": "23.03.0003"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "ID of Sales Order created"
                    }
                  }
                },
                "example": {
                  "ID": "ea11903e-d396-44f4-8bb8-185cbaead18c"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "EstimateNumberNotFound": {
                    "value": {
                      "Message": "Estimate number 23.03.0004 not found"
                    }
                  },
                  "OrderNumber conflict": {
                    "value": {
                      "Message": "SalesOrder number 23.03.0004 already exist"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Estimate/ConvertToInvoice": {
      "put": {
        "tags": [
          "Estimate"
        ],
        "summary": "Convert To Invoice",
        "description": "Convert Estimate to Invoice ",
        "operationId": "put-Estimate-ConvertToInvoice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "without OrderNumber",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Estimate Number"
                      },
                      "OrderNumber": {
                        "type": "string",
                        "description": "Invoice Number. If the value with null, it will set with number the generate from system",
                        "x-stoplight": {
                          "id": "evjcghki76aaa"
                        }
                      }
                    },
                    "example": {
                      "Outlet": "Outlet1",
                      "Number": "23.03.0003"
                    }
                  },
                  {
                    "title": "with OrderNumber",
                    "required": [
                      "Number",
                      "Outlet"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Estimate Number"
                      },
                      "OrderNumber": {
                        "type": "string",
                        "description": "Invoice Number. If the value with null, it will set with number the generate from system",
                        "x-stoplight": {
                          "id": "evjcghki76aaa"
                        }
                      }
                    }
                  }
                ],
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "23.03.0003",
                  "OrderNumber": "23.03.0003"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "ID of Invoice Created"
                    }
                  }
                },
                "example": {
                  "ID": "ea11903e-d396-44f4-8bb8-185cbaead18c"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Estimate Number not Found": {
                    "value": {
                      "Message": "Estimate number 23.03.0004 not found"
                    }
                  },
                  "Order Number Conflict": {
                    "value": {
                      "Message": "Invoice number 23.03.0004 already exist"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Payment/Midtrans/Charge": {
      "post": {
        "tags": [
          "Midtrans Payment Gateway"
        ],
        "summary": "Generate QRIS",
        "description": "Generate QRIS for specified Invoice\nWhen the QR has been paid, an Invoice Payment is automatically added to the Invoice\n\nNote:<br>\nIf you require custom amount for your QR you can also directly use Midtrans API\nhttps://docs.midtrans.com/reference/qris",
        "operationId": "get-Payment-Midtrans-Charge",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Invoice Number"
                  },
                  "NotificationURL": {
                    "type": "string",
                    "description": "Notification sent from our server after the QR has been paid (Coming Soon)",
                    "x-stoplight": {
                      "id": "8i1xqzw0zvbj3"
                    }
                  }
                }
              },
              "example": {
                "Outlet": "Pluit",
                "Number": "2023.09.00001",
                "NotificationURL": "https://domain.com/api/paymentnotification/gopay"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Transaction_id": {
                      "type": "string"
                    },
                    "Url": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Transaction_id": "260b81c6-8244-404e-97a7-91ed24cbf58d",
                  "Url": "https://api.midtrans.com/v2/qris/260b81c6-8244-404e-97a7-91ed24cbf58d/qr-code"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "zp9fbymgjub2a"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Payment/Midtrans/Status": {
      "post": {
        "tags": [
          "Midtrans Payment Gateway"
        ],
        "summary": "Get Transaction Status",
        "description": "Wrapper for https://docs.midtrans.com/reference/get-transaction-status\nhttps://docs.midtrans.com/reference/get-transaction-status",
        "operationId": "get-Payment-Midtrans-Status",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Transaction_id": {
                    "type": "string"
                  }
                },
                "example": {
                  "Transaction_id": "260b81c6-8244-404e-97a7-91ed24cbf58d"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transaction_type": {
                      "type": "string"
                    },
                    "transaction_time": {
                      "type": "string"
                    },
                    "transaction_status": {
                      "type": "string"
                    },
                    "transaction_id": {
                      "type": "string"
                    },
                    "status_message": {
                      "type": "string"
                    },
                    "status_code": {
                      "type": "string"
                    },
                    "signature_key": {
                      "type": "string"
                    },
                    "settlement_time": {
                      "type": "string"
                    },
                    "payment_type": {
                      "type": "string"
                    },
                    "order_id": {
                      "type": "string"
                    },
                    "merchant_id": {
                      "type": "string"
                    },
                    "issuer": {
                      "type": "string"
                    },
                    "gross_amount": {
                      "type": "string"
                    },
                    "fraud_status": {
                      "type": "string"
                    },
                    "expiry_time": {
                      "type": "string"
                    },
                    "custom_field2": {
                      "type": "string"
                    },
                    "custom_field1": {
                      "type": "string"
                    },
                    "currency": {
                      "type": "string"
                    },
                    "acquirer": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "transaction_type": "off-us",
                    "transaction_time": "2023-08-31 10:53:59",
                    "transaction_status": "settlement",
                    "transaction_id": "4c4f9fc0-abdf-4242-a2d5-9c90437d0dbd",
                    "status_message": "midtrans payment notification",
                    "status_code": 200,
                    "signature_key": "a2515dad47fc2c00b01f14995d6d603843857b77de9786ca91eb0c7743728968d0ebca1b4bccd455b57c36594e0cebf3524a960cb000a6ec90153cc2c1ec27ec",
                    "settlement_time": "2023-08-31 10:54:10",
                    "payment_type": "qris",
                    "order_id": "23.08.00030",
                    "merchant_id": "G668581401",
                    "issuer": "DANA",
                    "gross_amount": 1000,
                    "fraud_status": "accept",
                    "expiry_time": "2023-08-31 11:08:59",
                    "custom_field2": "nelsenlim.dealpos.net",
                    "custom_field1": "410ba2b7-8eff-4759-b5f1-cf47b33ef1cc",
                    "currency": "IDR",
                    "acquirer": "gopay"
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "xhw8ndd2vi40c"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Outlet/Register": {
      "get": {
        "tags": [
          "Outlet"
        ],
        "summary": "Get Register by Outlet",
        "description": "Get Register List by Outlet\n",
        "operationId": "get-Outlet-Register",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "The outlet name. If filled in with blank value it will display registers from all outlet.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "The outlet name."
                      },
                      "Register": {
                        "type": "array",
                        "description": "The register name from the requested outlet",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "singleOutletExample": {
                    "summary": "Single Outlet Example",
                    "value": [
                      {
                        "Outlet": "Outlet1",
                        "Register": [
                          "Register1",
                          "Register2"
                        ]
                      }
                    ]
                  },
                  "multipleOutletExample": {
                    "summary": "Multiple Outlet Example",
                    "value": [
                      {
                        "Outlet": "Outlet1",
                        "Register": [
                          "Register1",
                          "Register2"
                        ]
                      },
                      {
                        "Outlet": "Outlet2",
                        "Register": [
                          "Register1",
                          "Register2"
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "9we1f0tw6qx4n"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Outlet/Register/ID": {
      "get": {
        "operationId": "GetRegisterByOutletID",
        "tags": [
          "Outlet"
        ],
        "summary": "Get Register By OutletID",
        "description": "> Get Register By OutletID\n\nRequired Group Role: \"**Outlets**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ListID",
            "in": "query",
            "description": "List of OutletID",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "guid"
              }
            },
            "example": "227427f5-fb25-4f47-9e39-2370fa70d156, 212347f5-gt52-4127-8148-7780fabcd123"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of outlets with register details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "The name of the outlet."
                      },
                      "Register": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "ID": {
                              "type": "string",
                              "format": "guid",
                              "description": "The unique identifier of the register."
                            },
                            "Name": {
                              "type": "string",
                              "description": "The name of the register."
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Register": [
                      {
                        "ID": "a178f803-10e3-478a-a2f5-c029ea84c813",
                        "Name": "Cashier1"
                      },
                      {
                        "ID": "f0f2f7d1-f921-45c9-8281-be4c04f25369",
                        "Name": "Cashier2"
                      }
                    ]
                  },
                  {
                    "Outlet": "Outlet2",
                    "Register": [
                      {
                        "ID": "10c5cbb8-725a-45f4-8376-1d334b96c52f",
                        "Name": "Cashier1"
                      },
                      {
                        "ID": "7c703692-a6a6-4c03-965a-097eafa42461",
                        "Name": "Cashier2"
                      }
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/User": {
      "post": {
        "operationId": "CreateUser",
        "tags": [
          "User"
        ],
        "summary": "Create User",
        "description": "Create a new user with the specified details.\nRequired Group Role: \"**Users**\" - \"**Create**\"",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "LoginID",
                  "Email",
                  "Password",
                  "Group",
                  "ListOutlets"
                ],
                "properties": {
                  "LoginID": {
                    "type": "string",
                    "example": "tafta"
                  },
                  "Email": {
                    "type": "string",
                    "example": "tafta@dealpos.com"
                  },
                  "Password": {
                    "type": "string",
                    "example": "4321"
                  },
                  "Group": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "Group1",
                      "Group2"
                    ]
                  },
                  "ListOutlets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "Outlet",
                        "Access"
                      ],
                      "properties": {
                        "Outlet": {
                          "type": "string",
                          "example": "Outlet1"
                        },
                        "Access": {
                          "type": "string",
                          "enum": [
                            "NoAccess",
                            "Peek",
                            "Read",
                            "Write"
                          ],
                          "example": "Read"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "LoginID": "tafta",
                  "Email": "tafta@dealpos.com",
                  "Password": "4321",
                  "Group": [
                    "Group1",
                    "Group2"
                  ],
                  "ListOutlets": [
                    {
                      "Outlet": "Outlet1",
                      "Access": "Read"
                    },
                    {
                      "Outlet": "Outlet2",
                      "Access": "Write"
                    }
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Message success created"
                    }
                  }
                },
                "example": {
                  "Message": "User Tafta created successfully"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "User Tafta is already exists."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Group": {
      "post": {
        "operationId": "CreateGroup",
        "tags": [
          "User"
        ],
        "summary": "Create Group",
        "description": "Create a new group with the specified details.\nRequired Group Role: \"**Users**\" - \"**Group**\"",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "Group",
                  "Role"
                ],
                "properties": {
                  "Group": {
                    "type": "string",
                    "example": "Cashier"
                  },
                  "Role": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "Sell",
                      "SellE",
                      "SellD"
                    ]
                  }
                },
                "example": {
                  "Group": "Cashier",
                  "Role": [
                    "Sell",
                    "SellE",
                    "SellD"
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Message success created"
                    }
                  }
                },
                "example": {
                  "Message": "Group Cashier created successfully"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Group Cashier is already exists."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/User/ID": {
      "get": {
        "operationId": "GetUserByListID",
        "tags": [
          "User"
        ],
        "summary": "Get User By List ID",
        "description": ">Get User Name By List ID\n\nRequired Group Role: \"**Users**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "ListID",
            "in": "query",
            "required": true,
            "description": "ListID of user",
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "example": "227427f5-fb25-4f47-9e39-2370fa70d156,227427f5-fb25-4f47-9e39-2370fa70d156"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "format": "guid",
                        "description": "User ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "User's name"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "ID": "550e8400-e29b-41d4-a716-446655440000",
                    "Name": "Admin"
                  },
                  {
                    "ID": "7b27bbfe-71c4-4f3d-9957-fd1cd57c5f1c",
                    "Name": "Cashier"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/User/List": {
      "get": {
        "operationId": "GetUserByList",
        "tags": [
          "User"
        ],
        "summary": "Get User By List",
        "description": ">Get User Name List By status and role\n\nRequired Group Role: \"**Users**\" - \"**VIEW**\"",
        "parameters": [
          {
            "name": "Status",
            "in": "query",
            "required": true,
            "description": "Status of user",
            "schema": {
              "type": "string",
              "enum": [
                "All/Suspend/Unsuspend"
              ],
              "default": "Unsuspend"
            },
            "example": "Unsuspend"
          },
          {
            "name": "Role",
            "in": "query",
            "description": "Role of user",
            "schema": {
              "type": "string"
            },
            "example": "Books"
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Name of user / LoginID",
            "schema": {
              "type": "string"
            },
            "example": "Ahmad"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of items per page",
            "schema": {
              "type": "integer",
              "default": 20
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "LoginID": {
                        "type": "string",
                        "description": "User's login name to use when login"
                      },
                      "ID": {
                        "type": "string",
                        "format": "guid",
                        "description": "User ID"
                      },
                      "Name": {
                        "type": "string",
                        "description": "User's name"
                      },
                      "Email": {
                        "type": "string",
                        "description": "User's email"
                      },
                      "Type": {
                        "type": "integer",
                        "description": "User's type (0 for Normal user, 1 for Root user, 2  for System User)"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "LoginID": "Admin",
                    "ID": "550e8400-e29b-41d4-a716-446655440000",
                    "Name": "Ahmad",
                    "Email": "admin@example.com",
                    "Type": 1
                  },
                  {
                    "LoginID": "Cashier",
                    "ID": "7b27bbfe-71c4-4f3d-9957-fd1cd57c5f1c",
                    "Name": "Nurul",
                    "Email": "cashier@example.com",
                    "Type": 1
                  }
                ]
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Invalid token is inserted! Please check your profile page for the valid token."
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    },
                    "ExceptionMessage": {
                      "type": "string"
                    },
                    "ExceptionType": {
                      "type": "string"
                    },
                    "StackTrace": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "An error has occurred.",
                  "ExceptionMessage": "The parameterized query '(@Name nvarchar(4000))GetProductCategoryIDByName @Name' expects the parameter '@Name', which was not supplied.",
                  "ExceptionType": "System.Data.SqlClient.SqlException",
                  "StackTrace": "   at System.Data.SqlClient.SqlConnection...)"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Token/OAuth2": {
      "post": {
        "tags": [
          "Token"
        ],
        "summary": "Get Token by Client ID & Client Secret",
        "description": "[Get Oauth 2.0 to access our API using ClientID and API Client Secret.](/guides/authentication)",
        "operationId": "post-Token-OAuth2",
        "security": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "description": "Guid of Client ID"
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "Guid of Client Secret"
                  }
                }
              },
              "example": {
                "client_id": "26337f8c-2874-46d4-a124-ddd6cf30e93d",
                "client_secret": "26337f8c-2874-46d4-a124-ddd6cf30e93d"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token_type": {
                      "type": "string",
                      "description": "Type of the token, typically \"Bearer\" for OAuth 2.0 authentication"
                    },
                    "expires_in": {
                      "type": "integer",
                      "description": "Token's validity duration in seconds (2 days in this case)"
                    },
                    "expiredAt": {
                      "type": "string",
                      "description": "The exact timestamp when the token expires"
                    },
                    "access_token": {
                      "type": "string",
                      "description": "The actual token used for authentication in API requests"
                    }
                  }
                },
                "example": {
                  "token_type": "Bearer",
                  "expires_in": 172800,
                  "expiredAt": "2021-01-23T10:01:55.7638103",
                  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiZGVhbHBvcyIsIlVzZXJJRCI6ImZmNzg0OGM5LTIxZjEtNGMwNS1hYzllLTFlNzFkODI5Y2M5YyIsIlNhbGVzSUQiOiIzNzQxNmNiMy1lYjEyLTQ2MTItOTcwZC1hNTcyN2MxNDRlZjkiLCJMaXZlQ2hhdEVuYWJsZWQiOiJUcnVlIiwiVHlwZSI6IlN5c3RlbSIsImRhdGFEYXlzUmFuZ2UiOjAsIlNlc3Npb25JRCI6IjZiNjE1ZjdhLTM2N2QtNDAzNi04NDU0LTQzNTMwOGU4YTg1NyIsIkVtYWlsIjoibG9jYWxob3N0LmRlYWxwb3NAZ21haWwuY29tIiwiRW50aXR5QWNjZXNzSlNPTiI6Ilt7XCJlXCI6XCJhMzk4ZTU1MC0xMTJkLTRhOTgtOGUyZi0wM2RkMjc5Y2FiMGNcIixcImFcIjozfSx7XCJlXCI6XCI4N2I3ZWM0MC0xNjgxLTQ0ZWMtOWIzOS0wZjIxODhkOGQxOTdcIixcImFcIjozfSx7XCJlXCI6XCI5YWQxZDZmYy0yOGFlLTRmZjMtOWY2NC0xNDQyYjc2ZDUxMThcIixcImFcIjozfSx7XCJlXCI6XCIxNWJkNWY1OS00ODlmLTQ5OGQtOWNlMC0xNTdiZWI0MGUzMTFcIixcImFcIjozfSx7XCJlXCI6XCI2Yjc4MGVmZC01ZTlhLTQ5ODQtYmI3Zi0xZTY1ZmM3N2Q3NGRcIixcImFcIjozfSx7XCJlXCI6XCJmMDQ1MTg3NC01NWNmLTQ2YjgtYThiZC0yMGE1ZDFhZTQ0ZGFcIixcImFcIjozfSx7XCJlXCI6XCI4YzM4MGVlMi0zMzY0LTRmNTItYmM4Zi0yYjcwY2M2ZDgxZjVcIixcImFcIjozfSx7XCJlXCI6XCIzYWQxYTc3Yi02NzBkLTQ0MjMtYTI0Ni00NTExYjFmYzM4MmJcIixcImFcIjozfSx7XCJlXCI6XCJmMDI3OWJlNy01YTRkLTRkZWMtYTk3ZC00N2IyNTYwMzE1NTZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZhMDk0OC0wYmZlLTQzMWQtYWFmMS01MGEyZmM1NDJiYzVcIixcImFcIjozfSx7XCJlXCI6XCI2MmMzYjdhOS1kNDFjLTQ2MTUtOGY0My01NzJkOGZlNDc3OGJcIixcImFcIjozfSx7XCJlXCI6XCJlNzY0NTFlMy00MTM5LTQxZjAtYTNjYy02NDMyYzMzZDQ0Y2FcIixcImFcIjozfSx7XCJlXCI6XCJmMDUzZDhiNC1mYzZjLTRhMGMtYmM2NC02YWU0MzQ5ODg4YWVcIixcImFcIjozfSx7XCJlXCI6XCIyNzcxZDcxMS1lZmRhLTRhMTMtYjgwMy02YjcwZDgyZmE0YzZcIixcImFcIjozfSx7XCJlXCI6XCIzOWUxOThmOC02OWQxLTRjZjktOWFjOC02ZTg0N2YxNmY5YjhcIixcImFcIjozfSx7XCJlXCI6XCI1OTFlZGE4Ny1lNDUyLTQxZTYtOWZlOS03MjVjZjM4NjQ3NGFcIixcImFcIjozfSx7XCJlXCI6XCI2NjU0MjliOS00NTBmLTQ5NTMtYjY5My03YmJlYTI1YmQyYWFcIixcImFcIjozfSx7XCJlXCI6XCJiMTBkMjlkZi0zNTg4LTQzZTYtOGUzOS04Y2FiNDlhZjAzYWFcIixcImFcIjozfSx7XCJlXCI6XCJkYTg2ZWIxZS05OTQ1LTRkN2MtOGQwNC05NDNjMmQyN2U1NDFcIixcImFcIjozfSx7XCJlXCI6XCJhMWM4MTdkMS04YmVkLTQzYjItODJkNy05OTVhNDk0M2I5ZjdcIixcImFcIjozfSx7XCJlXCI6XCJhZThkZWM3Yi05YmM2LTRlNDctOTViNC1hN2YxMjk1OWFhZjlcIixcImFcIjozfSx7XCJlXCI6XCJiZGQzMTU4My1jNWNhLTQ1NjYtODE2Yy1hOTEwNzVhNThjNDdcIixcImFcIjozfSx7XCJlXCI6XCIzOTFjZGIyNi1hMGFiLTQ0NTMtYjFjZi1hOWIxNjc5YjRkNzRcIixcImFcIjozfSx7XCJlXCI6XCJmNjA2YzE5YS0zZjc3LTQxOTgtODJkMy1hYTYyODBhZWI1MTRcIixcImFcIjozfSx7XCJlXCI6XCI1OWMwZjBmZi1mYWM1LTRlYzctYjkzNS1iMjdlZDI3YmU0MDJcIixcImFcIjozfSx7XCJlXCI6XCIyMjNkODJjMy04YmFhLTQyM2MtOTc1My1iM2MwYWNhODU4OThcIixcImFcIjozfSx7XCJlXCI6XCJiYTNmNTRjZC04Y2Q4LTQ1MGItOTFlNS1iNjI4YmRiOGFhODRcIixcImFcIjozfSx7XCJlXCI6XCJlMTYzMmEzNi1iNDU0LTRlNzktOTEzYS1iZTViYzc0YTc3YjZcIixcImFcIjozfSx7XCJlXCI6XCJlZTZiZTQ2ZC1kMDE4LTRmZjAtYmEwMC1jNGZlY2VlYmUyMjVcIixcImFcIjozfSx7XCJlXCI6XCJjOTMzYjIwNS1lMzk0LTRhNTEtOTkwYS1jNTNhODljMmYyNmVcIixcImFcIjozfSx7XCJlXCI6XCI3NjYxZTYxOC1iYTY5LTQ5NTUtODFmMS1jOGVkYmQ1ZDU2ZDJcIixcImFcIjozfSx7XCJlXCI6XCJiMWZkOGMyMy1lZTRjLTRmYzMtOGVjMS1kNWM4MmE4YzdiMjdcIixcImFcIjozfSx7XCJlXCI6XCJmOTg4YzM0Yy0yNGVkLTRmNWEtOWMyNy1lOTMzNWU0YmZmNjBcIixcImFcIjozfSx7XCJlXCI6XCJmY2FhN2YxYi1hMzM0LTQ0NjAtODIxMy1lOTk5ZjM4NGUzMDlcIixcImFcIjozfSx7XCJlXCI6XCJjMzVjOGNjZS0xMWZlLTQyZmItOTY3Ni1mMzJkMmQxYWQ3M2NcIixcImFcIjozfSx7XCJlXCI6XCIwZThiYWFiOS0xOGI1LTRhM2EtYWExMi1mYjdjMjc3MzIwOWVcIixcImFcIjozfV0iLCJFbnRpdHlBY2Nlc3NTdG9yYWdlIjoiSldUVG9rZW4iLCJTdG9yZU5hbWUiOiJIZW5kcnkiLCJJc0F1dGhlbnRpY2F0ZWQiOiJ0cnVlIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjpbIkVzdGltYXRlIiwiRXN0aW1hdGVFZGl0b3IiLCJDdXN0b21lckRpc3BsYXkiLCJQcm9maWxlIiwiUHJvbW90aW9uIiwiUmVwb3J0MiIsIlRvb2xzIiwiU2V0dXAiLCJLaXRjaGVuRGlzcGxheSIsIk91dGxldHMiLCJJbnZlbnRvcnkiLCJTZXJ2aWNlIiwiQmlyIiwiUmVwb3J0IiwiQWRqdXN0bWVudCIsIkdsb2JhbEVkaXRvciIsIkFjdGl2aXR5IiwiUGF5bWVudCIsIlByb2R1Y3RzIiwiU2hpZnQiLCJEZWJ0IiwiQWNjb3VudGluZyIsIlRyZWF0bWVudCIsIkNvbnRhY3RzIiwiTWFudWZhY3R1cmUiLCJEZXZlbG9wZXJUb29scyIsIk9yZGVycyIsIkNoYXJ0IiwiTWFya2V0cGxhY2UiLCJVc2VycyIsIkNhbGVuZGFyIiwiUGF5bWVudEVkaXRvciIsIkFkanVzdG1lbnRFZGl0b3IiLCJTaGlmdENyZWF0ZSIsIkRlYnRDcmVhdGUiLCJNYW51ZmFjdHVyZUNyZWF0ZSIsIlN1YnNjcmlwdGlvbiIsIkJ1eSIsIlJlcG9ydEFkdmFuY2VkIiwiQ29udGFjdHNDcmVhdGUiLCJJbnZlbnRvcnlFZGl0b3IiLCJPdXRsZXRzQ3JlYXRlIiwiU2VsbCIsIkFjY291bnRpbmdDcmVhdGUiLCJQcm9kdWN0c0NyZWF0ZSIsIlByb21vdGlvbkNyZWF0ZSIsIk5vdGlmaWNhdGlvbiIsIkRlbGl2ZXJ5IiwiVHJlYXRtZW50Q3JlYXRlIiwiQWNjb3VudGluZ0VtcHR5T3V0bGV0IiwiSnVybmFsIiwiVXNlcnNDcmVhdGUiLCJTZXR1cENyZWF0ZSIsIlRyZWF0bWVudEVkaXRvciIsIlZvaWRJbnZvaWNlIiwiU2hpZnRFZGl0b3IiLCJQcm9tb3Rpb25FZGl0b3IiLCJBZGp1c3RtZW50Q3JlYXRlIiwiU2V0dXBFZGl0b3IiLCJTZWxsRGVsZXRlIiwiVXNlcnNFZGl0b3IiLCJPdXRsZXRzRWRpdG9yIiwiRGVsaXZlcnlFZGl0b3IiLCJQcm9maXQiLCJBY2NvdW50aW5nRWRpdG9yIiwiRXN0aW1hdGVEZWxldGUiLCJCdXlEZWxldGUiLCJNYW51ZmFjdHVyZUVkaXRvciIsIkNvbnRhY3RzRWRpdG9yIiwiRGVidEVkaXRvciIsIlByb2R1Y3RzRWRpdG9yIiwiVHJlYXRtZW50RGVsZXRlIiwiU2V0dXBEZWxldGUiLCJQYXltZW50RGVsZXRlIiwiRGF0ZUVkaXRvciIsIkFjY291bnRpbmdEZWxldGUiLCJTZWxsRWRpdG9yIiwiRGVidERlbGV0ZSIsIkludmVudG9yeVByb2R1Y3RDb3VudCIsIlByb21vdGlvbkRlbGV0ZSIsIk91dGxldHNEZWxldGUiLCJDb250YWN0c0RlbGV0ZSIsIk1hbnVmYWN0dXJlRGVsZXRlIiwiQWRqdXN0bWVudERlbGV0ZSIsIkRlbGl2ZXJ5RGVsZXRlIiwiU2hpZnREZWxldGUiLCJVc2Vyc0RlbGV0ZSIsIkJ1eUVkaXRvciIsIlByb2R1Y3RzRGVsZXRlIiwiV2ViaG9va1NldHVwIiwiR3JvdXBzIiwiV2ViaG9va0NvbmZpZ3VyYXRpb25WaWV3IiwiUGF5bWVudENyZWF0ZSIsIkxveWFsdHlQb2ludEVkaXRvciIsIk51bWJlckVkaXRvciIsIkNvc3QiLCJUcmVhdG1lbnRJbmNlbnRpdmUiLCJQcm9tb3Rpb25Db3Vwb24iLCJJbWFnZUVkaXRvciIsIlNoYXJlUGFja2FnZUVkaXRvciIsIkRldmVsb3BlclNldHVwIiwiQWNjb3VudGluZ0xlZGdlciIsIkRlbGl2ZXJ5Q3JlYXRlIiwiU2FsZXNtYW5FZGl0b3IiLCJSZXR1cm4iLCJEZWxpdmVyeURhdGVFZGl0b3IiLCJUcmVhdG1lbnROb3RlIiwiUHJpY2Vib29rIiwiRXhwZW5zZSIsIkRpc2NvdW50IiwiRGVsaXZlcnlSZWNlaXZlciIsIlVuaXRQcmljZUVkaXRvciIsIkJ1bmRsaW5nUHJpY2UiLCJEYXNoYm9hcmQiLCJEb2N0b3IiLCJFeHBvcnQiLCJNb25leSIsIlNlYXJjaCIsIkJlc3RTZWxsZXIiLCJUb3BDdXN0b21lcnMiLCJBdXRob3JpemF0aW9uS2V5IiwiTW9uaXRvciIsIlB1cmNoYXNlT3JkZXIiLCJTYWxlc1RyYW5zYWN0aW9uIiwiU2hpcHBpbmdFZGl0b3IiLCJBY2NvdW50aW5nUmVwb3J0IiwiQWNjb3VudGluZ0Nhc2hiYWxhbmNlIiwiRGVsZXRlQWxsT3V0bGV0UHJpY2UiLCJBZGp1c3RtZW50QXBwcm92YWwiLCJCdXlEYXRlRWRpdG9yIiwiUXVhbnRpdHkiLCJSZWN1cnJpbmciLCJQcmljZWJvb2tTZWxlY3RvciJdLCJleHAiOjE2MTEzNzA5MTUsImlzcyI6ImNocmlzdG9waGVyLmRlYWxwb3MubmV0IiwiYXVkIjoiY2hyaXN0b3BoZXIuZGVhbHBvcy5uZXQifQ.Zie2cYtqg4xmssBWFC6h6v_XAYSZrtdv22vL8npHdy0"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "3djf3hvs0nmrc"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Bill/ID": {
      "get": {
        "tags": [
          "Bill"
        ],
        "summary": "Get a Bill by ID",
        "description": "Get a Supplier Bill detail based on bill ID.\n\nYou must have \"SupplierBill\" role in \"Orders\" Module",
        "operationId": "get-Bill-ID",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Supplier Bill ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ff7448c9-21f1-4c05-ac9e-1e71d829cc9c"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Supplier bill ID"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet name"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Supplier bill number"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Supplier bill date"
                    },
                    "DueDate": {
                      "type": "string",
                      "description": "Supplier bill due date"
                    },
                    "Supplier": {
                      "type": "object",
                      "properties": {},
                      "description": "Supplier name"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "Creator ID"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Created time"
                    },
                    "Discount1": {
                      "type": "integer",
                      "description": "Discount percentage that given in bill"
                    },
                    "DiscountAmount": {
                      "type": "integer",
                      "description": "Discount amount that given in bill"
                    },
                    "Gross": {
                      "type": "integer",
                      "description": "Total amount before discount"
                    },
                    "DiscountTotal": {
                      "type": "integer",
                      "description": "Total discount in bill"
                    },
                    "TaxType": {
                      "type": "string",
                      "description": "Tax type assigned"
                    },
                    "Tax": {
                      "type": "integer",
                      "description": "Tax Percentage"
                    },
                    "Purchase": {
                      "type": "integer",
                      "description": "Total nett purchase amount"
                    },
                    "PurchaseNTax": {
                      "type": "integer",
                      "description": "Total amount in bill after tax"
                    },
                    "Delivery": {
                      "type": "string",
                      "description": "Delivery State"
                    },
                    "TaxCalculation": {
                      "type": "string",
                      "description": "Type of tax calculation (Add / Include)"
                    },
                    "Variants": {
                      "type": "array",
                      "description": "Variants detail",
                      "items": {
                        "type": "object",
                        "properties": {
                          "VariantID": {
                            "type": "string",
                            "description": "Variant ID"
                          },
                          "Name": {
                            "type": "string",
                            "description": "Variant name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Variant code"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Variant quantity"
                          },
                          "Price": {
                            "type": "integer",
                            "description": "Variant price"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "Variant discount percentage"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Variant note"
                          },
                          "Taxable": {
                            "type": "boolean",
                            "description": "Is the variant taxable or not"
                          }
                        }
                      }
                    },
                    "Payments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "ID of payment Bill"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Payment date"
                          },
                          "Amount": {
                            "type": "integer",
                            "description": "Payment amount"
                          },
                          "Method": {
                            "type": "string",
                            "description": "Payment method name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Payment code"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Payment note"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "ID": "ff7448c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Outlet": "Outlet1",
                  "Number": "19.11.14.000000003",
                  "Date": "2019-11-14T00:00:00",
                  "DueDate": "2020-08-25T00:00:00",
                  "Supplier": {},
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Created": "2019-11-14T14:19:44.25",
                  "Discount1": 0,
                  "DiscountAmount": 0,
                  "Gross": 2660000,
                  "DiscountTotal": -166854688,
                  "TaxType": "No Tax",
                  "Tax": 0,
                  "Purchase": 169514688,
                  "PurchaseNTax": 169514688,
                  "Delivery": "Received",
                  "TaxCalculation": "Include",
                  "Variants": [
                    {
                      "VariantID": "44061928-caf9-412f-8321-0ec93ee6963e",
                      "Name": "Denim Shirt(M)",
                      "Code": "50918",
                      "Quantity": 1,
                      "Price": 664000,
                      "Discount": 0,
                      "Note": "",
                      "Taxable": true
                    },
                    {
                      "VariantID": "44061928-caf9-412f-8321-0ec93ee6678e",
                      "Name": "Denim Shirt(L)",
                      "Code": "100430",
                      "Quantity": 2,
                      "Price": 666000,
                      "Discount": 0,
                      "Note": "",
                      "Taxable": true
                    },
                    {
                      "VariantID": "44061928-caf9-4198-8321-0ec93ee6963e",
                      "Name": "Denim Shirt(XL)",
                      "Code": "100531",
                      "Quantity": 1,
                      "Price": 664000,
                      "Discount": 0,
                      "Note": "",
                      "Taxable": true
                    }
                  ],
                  "Payments": [
                    {
                      "ID": "8b13ba50-14b1-486c-9ad2-207ade23c0d6",
                      "Date": "2019-11-14T00:00:00",
                      "Amount": 169514688,
                      "Method": "Cash",
                      "Code": "",
                      "Note": ""
                    }
                  ]
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "oio5vjpougj70"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Bill/Join/Detail/{id}": {
      "get": {
        "tags": [
          "Bill"
        ],
        "summary": "Join Bill Detail",
        "description": "Get Join Bill Detail based on ID Join Bill\n\nRequired Group Role: \"**Debt**\" - \"**View**\"",
        "operationId": "GetJoinBillDetail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "description": "Join Bill ID",
                      "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
                    },
                    "OutletID": {
                      "type": "string",
                      "description": "Outlet ID",
                      "format": "guid",
                      "example": "62844da2-47c8-43d1-b3f1-dfa5c014c872"
                    },
                    "Outlet": {
                      "type": "string",
                      "description": "Name of the outlet",
                      "example": "Outlet1"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Join Bill Number",
                      "example": "JI.25.04.00001"
                    },
                    "Date": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Date of the Join Bill",
                      "example": "2020-08-17T00:00:00Z"
                    },
                    "Supplier": {
                      "type": "string",
                      "description": "Name of the supplier",
                      "example": "Ferdian"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "ID of the user who created the Join Bill",
                      "format": "guid",
                      "example": "bca2b9ia-gh77-89d5-9654-976aed1b2234"
                    },
                    "Invoice": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Date of the invoice",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Sales": {
                            "type": "number",
                            "description": "Total sales amount",
                            "example": 1500000
                          },
                          "Tax": {
                            "type": "number",
                            "description": "Total tax amount",
                            "example": 150000
                          }
                        }
                      }
                    },
                    "Payment": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Date of the payment",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Amount": {
                            "type": "number",
                            "description": "Amount paid",
                            "example": 1650000
                          },
                          "Method": {
                            "type": "string",
                            "description": "Payment method used",
                            "example": "Bank Transfer"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Bill/Join": {
      "get": {
        "tags": [
          "Bill"
        ],
        "summary": "List Join Bill",
        "description": "Get List of Join Bill\n\nRequired Group Role: \"**Debt**\" - \"**View**\"",
        "operationId": "GetJoinBillList",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number for pagination",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of items per page",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Filter transaction by outlet name",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "From",
            "in": "query",
            "description": "Start date for filtering invoices",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-01T00:00:00Z"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "End date for filtering invoices",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-31T23:59:59Z"
            }
          },
          {
            "name": "SupplierID",
            "in": "query",
            "description": "Unique identifier for the supplier.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
            }
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Filter transactions by transaction number.",
            "required": false,
            "schema": {
              "type": "string",
              "example": "JI.25.04.00001"
            }
          },
          {
            "name": "PaymentState",
            "in": "query",
            "description": "Filter transactions by payment state. if not provided, all states will be included.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Paid",
                "Unpaid",
                "Partial",
                "Exceed",
                "Bulk",
                "WriteOff"
              ],
              "example": "Paid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of transactions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Join Bill ID",
                            "format": "guid",
                            "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet",
                            "example": "Outlet1"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Join Bill Number",
                            "example": "JI.25.04.00001"
                          },
                          "Supplier": {
                            "type": "string",
                            "description": "Name of the supplier",
                            "example": "Ferdian"
                          },
                          "Date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Date of the Join Bill",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Due": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Due date of the Join Bill",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Additional notes related to the transaction",
                            "example": "Paid off in 1 week"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "Payment status of the Join Bill",
                            "example": "Paid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Bill/Join/TotalCount": {
      "get": {
        "tags": [
          "Bill"
        ],
        "summary": "List Join Bill with Total Count",
        "description": "Get List of Join Bill with Total Count\n\nRequired Group Role: \"**Debt**\" - \"**View**\"",
        "operationId": "GetJoinBillListTotalCount",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number for pagination",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of items per page",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Filter transaction by outlet name",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          },
          {
            "name": "From",
            "in": "query",
            "description": "Start date for filtering invoices",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-01T00:00:00Z"
            }
          },
          {
            "name": "To",
            "in": "query",
            "description": "End date for filtering invoices",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2020-08-31T23:59:59Z"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of transactions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "description": "Join Bill ID",
                            "format": "guid",
                            "example": "d4a2b6ea-bf51-4e14-9d82-685aed1b2936"
                          },
                          "Outlet": {
                            "type": "string",
                            "description": "Name of the outlet",
                            "example": "Outlet1"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Join Bill Number",
                            "example": "JI.25.04.00001"
                          },
                          "Supplier": {
                            "type": "string",
                            "description": "Name of the supplier",
                            "example": "Ferdian"
                          },
                          "Date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Date of the Join Bill",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Due": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Due date of the Join Bill",
                            "example": "2020-08-17T00:00:00Z"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Additional notes related to the transaction",
                            "example": "Paid off in 1 week"
                          },
                          "Payment": {
                            "type": "string",
                            "description": "Payment status of the Join Bill",
                            "example": "Paid"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total number of transactions Join Bill",
                      "example": 88
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/PrepaidPackage/History": {
      "post": {
        "tags": [
          "Prepaid Package"
        ],
        "summary": "Get Prepaid Package History",
        "description": "Get prepaid packages history.\r\n\r\nYou must have \"VIEW\" role in \"Prepaid Packages\" Module",
        "operationId": "post-PrepaidPackage-History",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Prepaid package outlet",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed (Each page will display 20 records)",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "CustomerCode",
            "in": "query",
            "description": "Customer's code",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "CUST-001"
          },
          {
            "name": "Email",
            "in": "query",
            "description": "Customer's email",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "teguhwarsini@gmail.com"
          },
          {
            "name": "Doctor",
            "in": "query",
            "description": "The doctor in charge",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Dr. Panji Gumilang"
          },
          {
            "name": "From",
            "in": "query",
            "description": "Prepaid package date started",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2018-09-07"
          },
          {
            "name": "To",
            "in": "query",
            "description": "End of prepaid package date (for filter)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2018-10-17"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "required": [
                      "Customer",
                      "Date",
                      "Doctor",
                      "Incentive",
                      "Number",
                      "Outlet",
                      "Package",
                      "State",
                      "Type"
                    ],
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Prepaid package outlet"
                      },
                      "Number": {
                        "type": "string",
                        "description": "The prepaid package number"
                      },
                      "Date": {
                        "type": "string",
                        "description": "The treatment date"
                      },
                      "Customer": {
                        "type": "string",
                        "description": "The doctor in charge"
                      },
                      "Doctor": {
                        "type": "string",
                        "description": "The doctor / the employee insentive"
                      },
                      "Incentive": {
                        "type": "integer",
                        "description": "The package name / prepaid package product name"
                      },
                      "Package": {
                        "type": "string",
                        "description": "The package name / prepaid package product name"
                      },
                      "Type": {
                        "type": "string",
                        "description": "The treatment type"
                      },
                      "State": {
                        "type": "string",
                        "description": "Treatment state / progress"
                      }
                    }
                  },
                  "example": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "Prepaid-001",
                      "Date": "2018-09-07",
                      "Customer": "Teguh Warsini",
                      "Doctor": "Dr. Panji Gumilang",
                      "Incentive": 30000,
                      "Package": "Cutting Package",
                      "Type": "Hair Cutting with Style",
                      "State": "Waiting"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "Prepaid-002",
                      "Date": "2018-09-08",
                      "Customer": "Stephen Wijaya",
                      "Doctor": "Dr. Prabowo Widodo",
                      "Incentive": 60000,
                      "Package": "Laser Package",
                      "Type": "Laser Treatment by Lion King",
                      "State": "Finish"
                    }
                  ]
                }
              },
              "Response Example": {
                "example": [
                  {
                    "Outlet": "Outlet1",
                    "Number": "Prepaid-001",
                    "Date": "2018-09-07",
                    "Customer": "Teguh Warsini",
                    "Doctor": "Dr. Panji Gumilang",
                    "Incentive": 30000,
                    "Package": "Cutting Package",
                    "Type": "Hair Cutting with Style",
                    "State": "Waiting"
                  },
                  {
                    "Outlet": "Outlet1",
                    "Number": "Prepaid-002",
                    "Date": "2018-09-08",
                    "Customer": "Stephen Wijaya",
                    "Doctor": "Dr. Prabowo Widodo",
                    "Incentive": 60000,
                    "Package": "Laser Package",
                    "Type": "Laser Treatment by Lion King",
                    "State": "Finish"
                  }
                ]
              }
            }
          }
        },
        "x-stoplight": {
          "id": "15y9yap1cfar4"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PrepaidPackage/History/Detail": {
      "post": {
        "tags": [
          "Prepaid Package"
        ],
        "summary": "Get Prepaid Package History Detail",
        "description": "Get single prepaid packages history with detail.\r\n\r\nYou must have \"VIEW\" role in \"Prepaid Packages\" Module",
        "operationId": "post-PrepaidPackage-History-Detail",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Prepaid package outlet",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "The number of prepaid package / treatment number\r\n\r\n",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Prepaid-001"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "required": [
                    "Assistant",
                    "AssistantNote",
                    "Customer",
                    "Date",
                    "Doctor",
                    "DoctorNote",
                    "Duration",
                    "Finish",
                    "Incentive",
                    "Number",
                    "Outlet",
                    "Package",
                    "RecommendedBy",
                    "Start",
                    "State",
                    "Type"
                  ],
                  "type": "object",
                  "properties": {
                    "Outlet": {
                      "type": "string",
                      "description": "The prepaid package outlet"
                    },
                    "Number": {
                      "type": "string",
                      "description": "The prepaid package number / treatment number"
                    },
                    "Date": {
                      "type": "string",
                      "description": "The treatment date"
                    },
                    "Start": {
                      "type": "string",
                      "description": "Treatment start time"
                    },
                    "Finish": {
                      "type": "string",
                      "description": "Treatment end time"
                    },
                    "Duration": {
                      "type": "string",
                      "description": "Treatment duration (in hour and minutes)"
                    },
                    "Customer": {
                      "type": "string",
                      "description": "Customers receiving treatment"
                    },
                    "Doctor": {
                      "type": "string",
                      "description": "The doctor in charge (main performer)"
                    },
                    "Assistant": {
                      "type": "string",
                      "description": "The doctor assistant in charge (performer assistant)"
                    },
                    "RecommendedBy": {
                      "type": "string",
                      "description": "Who can recommend or provide recommendations"
                    },
                    "Incentive": {
                      "type": "integer",
                      "description": "The doctor incentive"
                    },
                    "Package": {
                      "type": "string",
                      "description": "The package name / prepaid package product name"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Prepaid package type / treatment type"
                    },
                    "State": {
                      "type": "string",
                      "description": "Treatment state / progress"
                    },
                    "DoctorNote": {
                      "type": "string",
                      "description": "The doctor note for the customer"
                    },
                    "AssistantNote": {
                      "type": "string",
                      "description": "The doctor assistant note for the customer"
                    }
                  },
                  "example": {
                    "Outlet": "Outlet1",
                    "Number": "Prepaid-001",
                    "Date": "2018-09-07",
                    "Start": "12:10",
                    "Finish": "14:30",
                    "Duration": "2 hr 20 min",
                    "Customer": "Teguh Warsini",
                    "Doctor": "Dr. Panji Gumilang",
                    "Assistant": "Dr. Gayus Tabunan",
                    "RecommendedBy": "Hendry Wijaya",
                    "Incentive": 30000,
                    "Package": "Cutting Package",
                    "Type": "Hair Cutting with Style",
                    "State": "Waiting",
                    "DoctorNote": "Keep the hair dry",
                    "AssistantNote": "Do not use too much shampoo"
                  }
                }
              },
              "Sample Format": {
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "Prepaid-001",
                  "Date": "2018-09-07",
                  "Start": "12:10",
                  "Finish": "14:30",
                  "Duration": "2 hr 20 min",
                  "Customer": "Teguh Warsini",
                  "Doctor": "Dr. Panji Gumilang",
                  "Assistant": "Dr. Gayus Tabunan",
                  "RecommendedBy": "Hendry Wijaya",
                  "Incentive": 30000,
                  "Package": "Cutting Package",
                  "Type": "Hair Cutting with Style",
                  "State": "Waiting",
                  "DoctorNote": "Keep the hair dry",
                  "AssistantNote": "Do not use too much shampoo"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "scglmrk9w9byn"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PrepaidPackage/List": {
      "post": {
        "tags": [
          "Prepaid Package"
        ],
        "summary": "Get Prepaid Package List",
        "description": "Get Prepaid Package List\r\n\r\nYou must have \"VIEW\" role in \"Prepaid Packages\" Module",
        "operationId": "post-PrepaidPackage-list",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Prepaid package outlet",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Customer",
            "in": "query",
            "description": "Customer's name",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Achmad Taftazani"
          },
          {
            "name": "From",
            "in": "query",
            "description": "Prepaid package date started",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-12-05"
          },
          {
            "name": "To",
            "in": "query",
            "description": "End of prepaid package date (for filter)",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-12-31"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Outlet": {
                      "type": "string"
                    },
                    "Package": {
                      "type": "string"
                    },
                    "Customer": {
                      "type": "string"
                    },
                    "Point": {
                      "type": "string"
                    },
                    "Start": {
                      "type": "string"
                    },
                    "Activated": {
                      "type": "string"
                    },
                    "Expired": {
                      "type": "string"
                    },
                    "Price": {
                      "type": "string"
                    },
                    "Invoice": {
                      "type": "string"
                    },
                    "SalesnTax": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Package": "GYM",
                  "Customer": "Achmad Taftazani",
                  "Point": "118",
                  "Start": "120",
                  "Activated": "2023-12-05",
                  "Expired": "2024-12-31",
                  "Price": "100000",
                  "Invoice": "23.11.00021",
                  "SalesnTax": "12000000"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "gbygrf2fk342g"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionCoupon/ByCode": {
      "get": {
        "tags": [
          "Promotion Coupon"
        ],
        "summary": "Get Promotion Coupon by Code",
        "description": ">**Also available as [HTTP POST](https://pos.docs.stoplight.io/FAQ#1-my-httpclient-library-does-not-support-http-get-with-request-body-what-should-i-do) (endpoint: /api/v3/PromotionCoupon/p)**\r\n\r\n<br>\r\nGet Promotion Coupon Detail by Coupon Code\r\n\r\nRequired Group Role: \"**Promotion**\" - \"**VIEW**\"",
        "operationId": "get-PromotionCoupon-ByCode",
        "parameters": [
          {
            "name": "Code",
            "in": "query",
            "description": "Promotion Coupon Code",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": 889977
          }
        ],
        "responses": {
          "200": {
            "description": "The payload response that users will get.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Code": {
                      "type": "string",
                      "description": "Coupon code"
                    },
                    "Limit": {
                      "type": "integer",
                      "description": "Coupon limit"
                    },
                    "Balance": {
                      "type": "integer",
                      "description": "Coupon balance"
                    },
                    "Discount": {
                      "type": "integer",
                      "description": "Coupon discount"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Coupon created time"
                    },
                    "StartDate": {
                      "type": "string",
                      "description": "Coupon start time"
                    },
                    "ExpiryDate": {
                      "type": "string",
                      "description": "Coupon expiry time"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Coupon type"
                    },
                    "Description": {
                      "type": "string",
                      "description": "Coupon description",
                      "x-stoplight": {
                        "id": "aof3gt2mwc6bw"
                      }
                    },
                    "CustomerCode": {
                      "type": "string",
                      "description": "The customer code that assigned to the coupon"
                    },
                    "RequirementType": {
                      "type": "string",
                      "description": "Type of requirement for this coupon. If this property not set, the coupon will be available for all items.",
                      "enum": [
                        "Variant",
                        "Category"
                      ]
                    },
                    "ListRequirementVariants": {
                      "type": "array",
                      "description": "List of variants that required for this coupon",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Code": {
                            "type": "string",
                            "description": "Code of the variant"
                          },
                          "UnitPrice": {
                            "type": "number",
                            "description": "Unit price of the variant"
                          }
                        }
                      }
                    },
                    "ListRequirementCategories": {
                      "type": "array",
                      "description": "List of categories that required for this coupon",
                      "items": {
                        "type": "object",
                        "properties": {
                          "CatergoryID": {
                            "type": "string",
                            "description": "ID of the category"
                          },
                          "CategoryName": {
                            "type": "string",
                            "description": "Name of the category"
                          }
                        }
                      }
                    },
                    "MultipleItemRequirementDiscount": {
                      "type": "integer",
                      "description": "If set to true, the coupon can be used for multiple items (0 = All, 1 = OneOf, 2 = One of First Quantity)",
                      "default": 0
                    }
                  },
                  "example": {
                    "Code": "889977",
                    "Limit": 10,
                    "Balance": 5,
                    "Discount": 10,
                    "Created": "2019-12-17T14:58:15.447",
                    "StartDate": "2019-12-17T14:58:15.447",
                    "ExpiryDate": "2019-12-19T00:00:00",
                    "Type": "Discount",
                    "Description": "Discount percentage 99%",
                    "CustomerCode": "CUST001",
                    "RequirementType": "Variant",
                    "MultipleItemRequirementDiscount": 0,
                    "ListRequirementVariants": [
                      {
                        "Code": "S0001",
                        "UnitPrice": 100000
                      },
                      {
                        "Code": "TS001",
                        "UnitPrice": 200000
                      }
                    ],
                    "ListRequirementCategories": []
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Promotion coupon Code QWERTY does not exist"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "brgquktvawn77"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionCoupon/ListCode": {
      "delete": {
        "tags": [
          "Promotion Coupon"
        ],
        "summary": "Delete Promotion Coupon List",
        "description": "Bulk Delete Promotion by Promotion Coupon Key. Please use NEW LINE as the separator.\r\n\r\nYou must have \"DELETE\" role in \"Promotion\" Module\r\n\r\n",
        "operationId": "delete-PromotionCoupon-ListCode",
        "requestBody": {
          "description": "Please use NEW LINE as the separator",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "Array of promotion coupon code, use NEW LINE as the separator",
                "items": {
                  "type": "string"
                },
                "example": [
                  "Coupon001",
                  "Coupon002"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "2 Coupon Key has been deleted successfully!"
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "yhgqqh09bk5sd"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Pricebook": {
      "get": {
        "tags": [
          "Pricebook"
        ],
        "operationId": "ListPricebook",
        "summary": "List Pricebooks",
        "description": ">\nGet List of Pricebooks\n\nRequired Group Role: \"**Promotion**\" - \"**Pricebook**\"",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "Name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "School"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "System successfully returned the list of pricebooks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "ID": {
                        "type": "string",
                        "format": "guid"
                      },
                      "Name": {
                        "type": "string"
                      }
                    }
                  },
                  "example": [
                    {
                      "ID": "123e4567-e89b-12d3-a456-426614174001",
                      "Name": "Back to School"
                    },
                    {
                      "ID": "123e4567-e89b-12d3-a456-426614174002",
                      "Name": "School Holiday"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pricebook"
        ],
        "operationId": "CreatePricebook",
        "summary": "Create Pricebook",
        "description": "Create a new Pricebook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Name",
                  "Variants"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "Pricebook name"
                  },
                  "MinimumQuantity": {
                    "type": "integer",
                    "description": "Pricebook minimum quantity"
                  },
                  "ListOutlets": {
                    "type": "array",
                    "description": "Array List of multiple outlet ID ",
                    "items": {
                      "type": "string"
                    }
                  },
                  "StartDate": {
                    "type": "string",
                    "format": "date",
                    "description": "Pricebook start Date"
                  },
                  "Expiration": {
                    "type": "string",
                    "format": "date",
                    "description": "Pricebook expiration Date"
                  },
                  "Description": {
                    "type": "string",
                    "description": "Pricebook description"
                  },
                  "Variants": {
                    "type": "array",
                    "description": "List of variants and price in this pricebook",
                    "items": {
                      "type": "object",
                      "required": [
                        "Code",
                        "OriginalPrice",
                        "PricebookPrice"
                      ],
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Variant code"
                        },
                        "OriginalPrice": {
                          "type": "number",
                          "description": "Original price of the variant"
                        },
                        "PricebookPrice": {
                          "type": "number",
                          "description": "Price of the variant in this pricebook"
                        },
                        "Discount": {
                          "type": "number",
                          "description": "Discount percentage of the variant in this pricebook"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Name": "Pricebook November",
                  "MinimumQuantity": 1,
                  "ListOutlets": [
                    "8b13ba50-14b1-486c-9ad2-207ade23c0d6",
                    "8b13ba50-14b1-486c-9ad2-207ade23c0d7"
                  ],
                  "StartDate": "2019-11-01",
                  "Expiration": "2019-11-30",
                  "Description": "Pricebook for November",
                  "Variants": [
                    {
                      "Code": "S0001",
                      "OriginalPrice": 100000,
                      "PricebookPrice": 90000,
                      "Discount": 10
                    },
                    {
                      "Code": "TS001",
                      "OriginalPrice": 150000,
                      "PricebookPrice": 120000,
                      "Discount": 20
                    }
                  ]
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    },
                    "ID": {
                      "type": "string",
                      "description": "Pricebook ID",
                      "format": "guid"
                    }
                  },
                  "example": {
                    "Message": "Pricebook November created successfully",
                    "ID": "123e4567-e89b-12d3-a456-426614174001"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pricebook"
        ],
        "operationId": "Update Pricebook",
        "summary": "Update Pricebook",
        "description": "Update an existing Pricebook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ID",
                  "Name",
                  "Variants"
                ],
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string",
                    "format": "guid",
                    "description": "Pricebook ID"
                  },
                  "Name": {
                    "type": "string",
                    "description": "Pricebook name"
                  },
                  "MinimumQuantity": {
                    "type": "integer",
                    "description": "Pricebook minimum quantity"
                  },
                  "ListOutlets": {
                    "type": "array",
                    "description": "Array List of multiple outlet ID ",
                    "items": {
                      "type": "string"
                    }
                  },
                  "StartDate": {
                    "type": "string",
                    "format": "date",
                    "description": "Pricebook start Date"
                  },
                  "Expiration": {
                    "type": "string",
                    "format": "date",
                    "description": "Pricebook expiration Date"
                  },
                  "Description": {
                    "type": "string",
                    "description": "Pricebook description"
                  },
                  "Variants": {
                    "type": "array",
                    "description": "List of variants and price in this pricebook",
                    "items": {
                      "type": "object",
                      "required": [
                        "Code",
                        "OriginalPrice",
                        "PricebookPrice"
                      ],
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "Variant code"
                        },
                        "OriginalPrice": {
                          "type": "number",
                          "description": "Original price of the variant"
                        },
                        "PricebookPrice": {
                          "type": "number",
                          "description": "Price of the variant in this pricebook"
                        },
                        "Discount": {
                          "type": "number",
                          "description": "Discount percentage of the variant in this pricebook"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Name": "Pricebook November",
                  "MinimumQuantity": 1,
                  "ListOutlets": [
                    "8b13ba50-14b1-486c-9ad2-207ade23c0d6",
                    "8b13ba50-14b1-486c-9ad2-207ade23c0d7"
                  ],
                  "StartDate": "2019-11-01",
                  "Expiration": "2019-11-30",
                  "Description": "Pricebook for November",
                  "Variants": [
                    {
                      "Code": "S0001",
                      "OriginalPrice": 100000,
                      "PricebookPrice": 90000,
                      "Discount": 10
                    },
                    {
                      "Code": "TS001",
                      "OriginalPrice": 150000,
                      "PricebookPrice": 120000,
                      "Discount": 20
                    }
                  ]
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    },
                    "ID": {
                      "type": "string",
                      "description": "Pricebook ID",
                      "format": "guid"
                    }
                  },
                  "example": {
                    "Message": "Pricebook November created successfully",
                    "ID": "123e4567-e89b-12d3-a456-426614174001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Pricebook/ID/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of Pricebook",
          "required": true,
          "schema": {
            "type": "string",
            "format": "guid",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        }
      ],
      "get": {
        "tags": [
          "Pricebook"
        ],
        "operationId": "pricebook_DetailById",
        "summary": "Pricebook Detail By ID",
        "description": ">\nGet Pricebook Detail By ID\n\nRequired Group Role: \"**Promotion**\" - \"**Pricebook**\"",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ID": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "Name": {
                      "type": "string"
                    },
                    "MinimumQuantity": {
                      "type": "integer"
                    },
                    "Outlet": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "StartDate": {
                      "type": "string",
                      "format": "date"
                    },
                    "Expiration": {
                      "type": "string",
                      "format": "date"
                    },
                    "Description": {
                      "type": "string"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ID": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "Code": {
                            "type": "string"
                          },
                          "Name": {
                            "type": "string"
                          },
                          "OriginalPrice": {
                            "type": "integer"
                          },
                          "PricebookPrice": {
                            "type": "integer"
                          },
                          "Discount": {
                            "type": "integer"
                          }
                        }
                      }
                    }
                  },
                  "example": {
                    "ID": "123e4567-e89b-12d3-a456-426614174001",
                    "Name": "Back to School",
                    "MinimumQuantity": 1,
                    "Outlet": [
                      "Outlet1",
                      "Outlet2"
                    ],
                    "StartDate": "2025-07-15",
                    "Expiration": "2025-07-30",
                    "Description": "Limited",
                    "Variants": [
                      {
                        "ID": "123e4567-e89b-12d3-a456-426614174002",
                        "Code": "B001",
                        "Name": "Book",
                        "OriginalPrice": 10000,
                        "PricebookPrice": 9000,
                        "Discount": 10
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/InboundLogistic/Number": {
      "get": {
        "tags": [
          "InboundLogistic"
        ],
        "summary": "Get InboundLogistic By Number",
        "description": "Get Inbound Logistic By Number\r\nRequired Group Role: \"**Logistic**\" - \"**VIEW**\"",
        "operationId": "inboundnumber",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name of Inbound Logistics",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          },
          {
            "name": "Number",
            "in": "query",
            "description": "Number of Inbound Logistics",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "24.02.00018"
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Outlet": {
                      "type": "string",
                      "description": "Outlet name on the transaction created"
                    },
                    "Number": {
                      "type": "string",
                      "description": "Transaction Number"
                    },
                    "Date": {
                      "type": "string",
                      "description": "Transaction Date"
                    },
                    "Supplier": {
                      "type": "object",
                      "properties": {},
                      "description": "Supplier's Data"
                    },
                    "CreatorID": {
                      "type": "string",
                      "description": "User ID who made the transaction"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Transaction created date"
                    },
                    "Variants": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "description": "Variant's name"
                          },
                          "Code": {
                            "type": "string",
                            "description": "Variant's Code"
                          },
                          "Quantity": {
                            "type": "integer",
                            "description": "Variant's quantity on the Transaction"
                          },
                          "Price": {
                            "type": "integer",
                            "description": "Variant Selling Price"
                          },
                          "PriceOriginal": {
                            "type": "integer",
                            "description": "Variant original price"
                          },
                          "Discount": {
                            "type": "integer",
                            "description": "Discount % applied for variant"
                          },
                          "DiscountAmount": {
                            "type": "integer",
                            "description": "Discount amount for the variant"
                          },
                          "NettPrice": {
                            "type": "integer",
                            "description": "Price after discount"
                          },
                          "Note": {
                            "type": "string",
                            "description": "Note for variant"
                          },
                          "VariantID": {
                            "type": "string",
                            "description": "Product variant Unique ID"
                          },
                          "Taxable": {
                            "type": "boolean",
                            "description": "Is the variant taxable or not"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "24.04.00018",
                  "Date": "2024-04-29T00:00:00",
                  "Supplier": {},
                  "CreatorID": "ff7848c9-21f1-4c05-ac9e-1e71d829cc9c",
                  "Created": "2024-04-29T12:02:26.903",
                  "Variants": [
                    {
                      "Name": "T-Shirt",
                      "Code": "2004",
                      "Quantity": 1,
                      "Price": 200000,
                      "PriceOriginal": 200000,
                      "Discount": 0,
                      "DiscountAmount": 0,
                      "NettPrice": 200000,
                      "VariantID": "30b10eae-8a4e-43de-8a37-4bb2b1807280",
                      "Taxable": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is No InboundLogistic with Number 24.02.00018 - at Outlet1"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "tqh7i3gixa6ux"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/InboundLogistic/byOrderNumber": {
      "get": {
        "tags": [
          "InboundLogistic"
        ],
        "summary": "Get InboundLogistic By Order Number",
        "description": "Get Supplier Delivery By Order / Invoice Number\r\nRequired Group Role: \"Logistic\" - \"VIEW\"",
        "operationId": "ordnumberinbound",
        "parameters": [
          {
            "name": "Number",
            "in": "query",
            "description": "Order / Invoice Number of Inbound Logistics",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "24.02.00012"
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet name of Inbound Logistics",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Number": {
                        "type": "string",
                        "description": "Invoice Number Inbound Logistics"
                      },
                      "Date": {
                        "type": "string",
                        "description": "Invoice date"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Date invoice was created"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Outlet": "Outlet3",
                    "Number": "SB.TNG.24.01.0012",
                    "Date": "2024-01-21T00:00:00",
                    "Created": "2024-01-21T09:37:53.937"
                  },
                  {
                    "Outlet": "Outlet2",
                    "Number": "SB.TNG.24.01.0012_2",
                    "Date": "2024-01-21T00:00:00",
                    "Created": "2024-01-21T09:38:05.857"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is No InboundLogistic with Number 24.02.00012 - at Outlet1"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "mxjmth03k7lmo"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/InboundLogistic/WithTotalCount": {
      "get": {
        "tags": [
          "InboundLogistic"
        ],
        "summary": "Get InboundLogistic With Total Count",
        "description": "Get list of Supplier Delivery with Total Count\r\nRequired Group Role: \"Logistic\" - \"VIEW\"",
        "operationId": "withtotalcountinbound",
        "parameters": [
          {
            "name": "From",
            "in": "query",
            "description": "From Date (format: yyyy-mm-dd)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2024-01-17"
          },
          {
            "name": "To",
            "in": "query",
            "description": "To Date (format: yyyy-mm-dd)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2024-01-30"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The number of page data to be displayed",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 1
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of rows returned by the API",
            "required": true,
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Outlet1"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Outlet": {
                            "type": "string",
                            "description": "Outlet name"
                          },
                          "Number": {
                            "type": "string",
                            "description": "Invoice Number"
                          },
                          "Supplier": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Supplier name"
                          },
                          "Date": {
                            "type": "string",
                            "description": "Invoice Date"
                          },
                          "Fulfillment": {
                            "type": "string",
                            "description": "Fullfilment date"
                          },
                          "Time": {
                            "type": "string",
                            "description": "Time invoice was created"
                          }
                        }
                      }
                    },
                    "TotalCount": {
                      "type": "integer",
                      "description": "Total count of the result"
                    }
                  }
                },
                "example": {
                  "Data": [
                    {
                      "Outlet": "Outlet1",
                      "Number": "24.01.00082",
                      "Date": "2024-01-17T00:00:00",
                      "Fulfillment": "2024-01-17T00:00:00",
                      "Time": "2024-01-17T15:01:00"
                    },
                    {
                      "Outlet": "Outlet1",
                      "Number": "24.01.00081",
                      "Date": "2024-01-17T00:00:00",
                      "Fulfillment": "2024-01-17T00:00:00",
                      "Time": "2024-01-17T14:30:00"
                    }
                  ],
                  "TotalCount": 100
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "There is no Outlet with that name Outlet1"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "81vvusadvo1oc"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/SalesOrder/GetNextNumber": {
      "get": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Get Sales Order Next Number",
        "description": "This API use to check sales order next number that generated from our system",
        "operationId": "get-SalesOrder-GetNextNumber",
        "parameters": [
          {
            "name": "Outlet",
            "in": "query",
            "description": "Outlet Name",
            "required": true,
            "schema": {
              "type": "string",
              "example": "Outlet1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Number": {
                      "type": "string",
                      "description": "Next Sales Order number that generated from system"
                    }
                  }
                },
                "example": {
                  "Number": "B1.24.06.00013"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "jj0aaby586inh"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/WriteOff/Invoice/ListInvoiceNumber": {
      "get": {
        "tags": [
          "Invoice Write Off"
        ],
        "summary": "Get WriteOff By List Invoice Number",
        "description": "This APi is use for get WriteOff invoice by List Invoice Number",
        "operationId": "get-WriteOff-Invoice-ListInvoiceNumber",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "InvoiceNumber",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "InvoiceNumber": {
                    "type": "array",
                    "description": "List Invoice Number",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "InvoiceNumber": [
                    "INV001",
                    "INV002",
                    "INV003"
                  ]
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Number": {
                        "type": "string",
                        "description": "Number of Invoice"
                      },
                      "Outlet": {
                        "type": "string",
                        "description": "Outlet Name"
                      },
                      "Created": {
                        "type": "string",
                        "description": "Write off time created"
                      },
                      "CreatedBy": {
                        "type": "string",
                        "description": "User that write off the invoice"
                      },
                      "Amount": {
                        "type": "integer",
                        "description": "Amount of write off payment"
                      },
                      "Tag": {
                        "type": "string",
                        "description": "Reason of WriteOff Invoice"
                      }
                    }
                  },
                  "example": [
                    {
                      "Number": "INV001",
                      "Outlet": "Outlet1",
                      "Created": "2023-01-04T11:13:21.33",
                      "CreatedBy": "dealpos",
                      "Amount": 2000,
                      "Tag": "Logistics"
                    },
                    {
                      "Number": "INV002",
                      "Outlet": "Outlet1",
                      "Created": "2023-01-04T11:13:21.33",
                      "CreatedBy": "dealpos",
                      "Amount": 2000,
                      "Tag": "Logistics"
                    },
                    {
                      "Number": "INV003",
                      "Outlet": "Outlet1",
                      "Created": "2023-01-04T11:13:21.33",
                      "CreatedBy": "dealpos",
                      "Amount": 2000,
                      "Tag": "Logistics"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "2sozc2pscv1ns"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift/Void": {
      "delete": {
        "tags": [
          "Shift"
        ],
        "summary": "Void Previous Shift",
        "description": "Void Previous Shift Invoice\r\n\r\nYou must have \"**Void**\" role in \"**Shift**\" Modul",
        "operationId": "void-Shift",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Shift Number"
                  },
                  "Note": {
                    "type": "string"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet2",
                "Number": "21.12.00007",
                "Note": "Cancelled by Manager"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Shift Number 21.12.00007 with ID 22b33f3d-e89a-4b4a-89f1-a704740bbbdc has been voided!"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "zptn6divjr15o"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Shift/Erase": {
      "delete": {
        "tags": [
          "Shift"
        ],
        "summary": "Erase Previous Shift",
        "description": "Erase (Delete Permanent)  Previous Shift Invoice\r\n\r\nYou must have \"**Erase**\" role in \"**Orders**\" Module\r\n",
        "operationId": "delete-Shift-Erase",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Shift Number"
                  },
                  "Note": {
                    "type": "string"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet2",
                "Number": "21.12.00007",
                "Note": "Cancelled"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "Message": "Shift Number 21.12.00007 with ID 22b33f3d-e89a-4b4a-89f1-a704740bbbdc has been deleted permanent!"
                }
              }
            }
          }
        }
      }
    },
    "/Invoice/Note": {
      "put": {
        "tags": [
          "Invoice"
        ],
        "summary": "Update Note in Invoice",
        "description": "Add / edit Invoice note\r\n\r\nYou must have \"EDIT\" role in \"Sell\" Modul",
        "operationId": "put-Invoice-Note",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Note",
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Number Invoice"
                  },
                  "Note": {
                    "type": "string",
                    "description": "Invoice Note. (If send the request with empty string will replace invoice note to null value)"
                  }
                }
              },
              "example": {
                "Outlet": "Outlet1",
                "Number": "2020.06.00005",
                "Note": "Invoice Note"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Success response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "description": "Success message"
                    }
                  }
                },
                "example": {
                  "Message": "Invoice note has been Updated!"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "rhy83ndtwpx5a"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Inventory/InTransit": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get Inventory In Transit",
        "description": "This API use for get data from Inventory In Transit",
        "operationId": "get-Inventory-InTransit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ListOutlet": {
                    "type": "array",
                    "description": "List Outlet Destination Name. If send with empty value will be show data from all outlet",
                    "items": {
                      "type": "string"
                    }
                  },
                  "Category": {
                    "type": "string",
                    "description": "Category Name. If empty value will be show data from all category"
                  }
                }
              },
              "example": {
                "ListOutlet": [
                  "Outlet1",
                  "Outlet2"
                ],
                "Category": "Top"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Name": {
                        "type": "string",
                        "description": "Variant Name"
                      },
                      "Code": {
                        "type": "string",
                        "description": "Variant Code"
                      },
                      "Category": {
                        "type": "string",
                        "description": "Category"
                      },
                      "Transit": {
                        "type": "integer",
                        "description": "Qty in transit to Outlet Destination"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "Name": "Shirt (L)",
                    "Code": "S001",
                    "Category": "Top/Men",
                    "Transit": 3
                  },
                  {
                    "Name": "Shirt (M)",
                    "Code": "S002",
                    "Category": "Top/Men",
                    "Transit": 4
                  }
                ]
              }
            }
          }
        },
        "x-stoplight": {
          "id": "vppjdo47nmxm6"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/PromotionCoupon/ByReferenceID": {
      "get": {
        "tags": [
          "Promotion Coupon"
        ],
        "summary": "Get Promotion Coupon By Reference ID",
        "description": "Get Promotion Coupon Detail by ReferenceI\r\nRequired Group Role: \"Promotion\" - \"VIEW\"",
        "operationId": "get-PromotionCoupon-ByReferenceID",
        "parameters": [
          {
            "name": "ReferenceID",
            "in": "query",
            "description": "Invoice ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Code": {
                      "type": "string",
                      "description": "Coupon Code"
                    },
                    "Limit": {
                      "type": "integer",
                      "description": "Coupon Limit"
                    },
                    "Balance": {
                      "type": "integer",
                      "description": "Coupon Balance"
                    },
                    "Discount": {
                      "type": "integer",
                      "description": "Coupon Discount"
                    },
                    "Created": {
                      "type": "string",
                      "description": "Coupon Created Time"
                    },
                    "StartDate": {
                      "type": "string",
                      "description": "Coupon Start Time"
                    },
                    "ExpiryDate": {
                      "type": "string",
                      "description": "Coupon Expired Time"
                    },
                    "Type": {
                      "type": "string",
                      "description": "Coupon Type"
                    },
                    "Description": {
                      "type": "string",
                      "description": "Coupon Description"
                    },
                    "CustomerCode": {
                      "type": "string",
                      "description": "The customer code that assigned to the coupon"
                    }
                  },
                  "example": {
                    "Code": "889977",
                    "Limit": 5,
                    "Balance": 5,
                    "Discount": 99,
                    "Created": "2019-12-17T14:58:15.447",
                    "StartDate": "2019-12-01T00:00:00",
                    "ExpiryDate": "2019-12-19T00:00:00",
                    "Type": "Discount",
                    "Description": "Discount percentage 99%",
                    "CustomerCode": "DP-001"
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "l67mr92y58mcv"
        }
      }
    },
    "/Adjustment/Submit": {
      "put": {
        "tags": [
          "Inventory Adjustment"
        ],
        "summary": "Submit Review Adjustment",
        "description": "This API is for Submit Review for Pending Adjustment based on Outlet and Number Adjustment\r\n\r\n\r\nYou must have \"**APPROVAL**\" role in \"**Adjustment**\" Module",
        "operationId": "put-Adjustment-Submit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Adjustment number"
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "Adjustment001"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Inventory Adjustment Number Adjustment001 already Submitted"
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "rut5xgla22zqu"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment/Accept": {
      "put": {
        "tags": [
          "Inventory Adjustment"
        ],
        "summary": "Accept Adjustment",
        "description": "This API is for Accept Adjustment based on Outlet and Number Adjustment\r\n\r\n\r\nYou must have \"**APPROVAL**\" role in \"**Adjustment**\" Module",
        "operationId": "put-Adjustment-Accept",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Number",
                  "Outlet"
                ],
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string",
                    "description": "Outlet Name"
                  },
                  "Number": {
                    "type": "string",
                    "description": "Adjustment number"
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "Adjustment001"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Inventory Adjustment Number Adjustment001 Accepted"
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "rut5xgla22zqu"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Adjustment/Reject": {
      "put": {
        "tags": [
          "Inventory Adjustment"
        ],
        "summary": "Reject Adjustment",
        "description": "This API is for Reject Adjustment based on Outlet and Number Adjustment\r\n\r\nYou must have \"**APPROVAL**\" role in \"**Adjustment**\" Module",
        "operationId": "put-Adjustment-Reject",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "Outlet": {
                    "type": "string"
                  },
                  "Number": {
                    "type": "string"
                  }
                },
                "example": {
                  "Outlet": "Outlet1",
                  "Number": "Adjustment001"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Inventory Adjustment Number Adjustment001 Accepted"
                  }
                },
                "example": {
                  "Message": "Inventory Adjustment Number Adjustment001 Rejected"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "xcjrpi6eystnk"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/Merge": {
      "put": {
        "tags": [
          "Customer"
        ],
        "summary": "Merge Customer",
        "description": "This API use for merge several customer to be one customer",
        "operationId": "put-Customer-Merge",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "deleted",
                  "mergeTarget"
                ],
                "type": "object",
                "properties": {
                  "mergeTarget": {
                    "type": "string",
                    "description": "Customer ID that want to merged"
                  },
                  "deleted": {
                    "type": "array",
                    "description": "Customer ID that will be deleted after merged complete",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "mergeTarget": "f930a0ba-21da-47fd-99a4-5dcc98fb10c8",
                  "deleted": [
                    "7156869b-6c3d-4761-8118-77efafca87cc",
                    "7156869b-6c3d-4761-8118-77efafca87cb"
                  ]
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "Merge Completed"
                  }
                },
                "example": {
                  "Message": "Merge Completed"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "ks5mik01hcjuz"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Supplier/Merge": {
      "put": {
        "tags": [
          "Supplier"
        ],
        "summary": "Merge Supplier",
        "description": "This API use for merge several Supplie to be one customer",
        "operationId": "put-Supplier-Merge",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "deleted",
                  "mergeTarget"
                ],
                "type": "object",
                "properties": {
                  "mergeTarget": {
                    "type": "string",
                    "description": "Supplier ID that want to merged"
                  },
                  "deleted": {
                    "type": "array",
                    "description": "Supplier ID that will be deleted after merged complete",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "x-examples": {
                  "Example 1": {
                    "mergeTarget": "f930a0ba-21da-47fd-99a4-5dcc98fb10c8",
                    "deleted": [
                      "7156869b-6c3d-4761-8118-77efafca87cc",
                      "7156869b-6c3d-4761-8118-77efafca87cb"
                    ]
                  }
                }
              },
              "example": {
                "mergeTarget": "f930a0ba-21da-47fd-99a4-5dcc98fb10c8",
                "deleted": [
                  "7156869b-6c3d-4761-8118-77efafca87cc",
                  "7156869b-6c3d-4761-8118-77efafca87cb"
                ]
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "x-examples": {
                    "Example 1": {
                      "Message": "Merge Completed"
                    }
                  }
                },
                "example": {
                  "Message": "Merge Completed"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "v3exehlf5f0yf"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/PIN/Authenticate": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Check Customer PIN Authenticate",
        "description": "Check Customer PIN Authenticate for redemption point",
        "operationId": "check-Customer-PIN-Authenticate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ID",
                  "PIN"
                ],
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string",
                    "description": "Customer ID"
                  },
                  "PIN": {
                    "type": "string",
                    "description": "PIN use for redemption point. (Max-length= 6 digits and only number)"
                  }
                },
                "example": {
                  "ID": "2b4c7d76-6ac7-49a3-a1f2-6022439d7958",
                  "PIN": "123456"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Success": {
                      "type": "boolean"
                    }
                  },
                  "example": {
                    "Success": true
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Success": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Success": false
                  }
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "fan0r0kvx7965"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/Customer/PIN": {
      "get": {
        "tags": [
          "Deprecated"
        ],
        "summary": "Get Customer PIN",
        "description": "Get Customer PIN for redemption point",
        "operationId": "get-Customer-PIN",
        "parameters": [
          {
            "name": "ID",
            "in": "query",
            "description": "Customer ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "PIN": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "PIN": "123654"
                  }
                },
                "example": {
                  "PIN": "123654"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "2at07q2blz5s3"
        }
      },
      "put": {
        "tags": [
          "Customer"
        ],
        "summary": "Set Customer PIN",
        "description": "Set Customer PIN for redemption point",
        "operationId": "put-Customer-PIN",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "ID",
                  "PIN"
                ],
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "string",
                    "description": "Customer ID"
                  },
                  "PIN": {
                    "type": "string",
                    "description": "PIN use for redemption point. (Max-length= 6 digits and only number)"
                  }
                },
                "example": {
                  "ID": "2b4c7d76-6ac7-49a3-a1f2-6022439d7958",
                  "PIN": "123456"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string"
                    }
                  },
                  "example": {
                    "Message": "PIN for Customer 2b4c7d76-6ac7-49a3-a1f2-6022439d7958 already"
                  }
                },
                "example": {
                  "Message": "PIN for Customer 2b4c7d76-6ac7-49a3-a1f2-6022439d7958 already set"
                }
              }
            }
          }
        },
        "x-stoplight": {
          "id": "fan0r0kvx7965"
        },
        "x-codegen-request-body-name": "body"
      }
    },
    "/ParkedOrderDisplay/UpdateState": {
      "put": {
        "tags": [
          "Park Order Display"
        ],
        "summary": "Update State",
        "description": "Updates the state of multiple items using query parameters.",
        "operationId": "updateState",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ListID": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "guid"
                    },
                    "description": "List of variant GUIDs to update",
                    "example": [
                      "f7b3b3b3-4b1b-4b3b-8b3b-3b3b3b3b3b3b",
                      "abcwb4b6-8gh9-xyu3-poi8-yt4b3b3b3b4b"
                    ]
                  },
                  "StateID": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2,
                      3
                    ],
                    "description": "New state ID to set for the variants (0=New, 1=Pick, 2=Pack, 3=Ship)",
                    "example": 1
                  },
                  "ShipToFulfill": {
                    "type": "boolean",
                    "description": "default false (Coming Soon - For create outbound logistic when state updated to Ship)",
                    "example": true
                  }
                },
                "required": [
                  "ID",
                  "StateID"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "State updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Message": {
                      "type": "string",
                      "example": "Variant in park orders has been updated to Pick"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ParkedOrderDisplay/Summary/Default": {
      "get": {
        "summary": "Get Parked Order Summary Default",
        "description": "Retrieves a summary of parked orders based on Outlet and Category by Entry Time",
        "operationId": "getParkedOrderSummary",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "required": true,
            "description": "Unique identifier for the outlet.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ff3c515e-c2b7-4309-8c29-30e44cecb23f"
            }
          },
          {
            "name": "CategoryID",
            "in": "query",
            "required": true,
            "description": "Unique identifier for the category.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ba003c7a-b7ed-410d-8c0d-af32ef08443f"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved order summary.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Summary": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "StateID": {
                            "type": "integer",
                            "enum": [
                              0,
                              1,
                              2,
                              3
                            ],
                            "description": "Order state ID (0=New, 1=Pick, 2=Pack, 3=Ship).",
                            "example": 0
                          },
                          "Count": {
                            "type": "integer",
                            "example": 8
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Summary": [
                    {
                      "StateID": 0,
                      "Count": 10
                    },
                    {
                      "StateID": 1,
                      "Count": 8
                    },
                    {
                      "StateID": 2,
                      "Count": 6
                    },
                    {
                      "StateID": 3,
                      "Count": 20
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request, missing or invalid parameters."
          },
          "404": {
            "description": "No data found for the given parameters."
          }
        },
        "tags": [
          "Park Order Display"
        ]
      }
    },
    "/ParkedOrderDisplay/Summary/GroupByOrder": {
      "get": {
        "summary": "Get Parked Order Summary Group By Order",
        "description": "Retrieves a summary of parked orders based on Outlet and Category group by order.",
        "operationId": "getParkedOrderSummaryOrder",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "required": true,
            "description": "Unique identifier for the outlet.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ff3c515e-c2b7-4309-8c29-30e44cecb23f"
            }
          },
          {
            "name": "CategoryID",
            "in": "query",
            "required": true,
            "description": "Unique identifier for the category.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ba003c7a-b7ed-410d-8c0d-af32ef08443f"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved order summary.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Summary": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "StateID": {
                            "type": "integer",
                            "enum": [
                              0,
                              1,
                              2,
                              3
                            ],
                            "description": "Order state ID (0=New, 1=Pick, 2=Pack, 3=Ship).",
                            "example": 0
                          },
                          "Count": {
                            "type": "integer",
                            "example": 8
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Summary": [
                    {
                      "StateID": 0,
                      "Count": 10
                    },
                    {
                      "StateID": 1,
                      "Count": 8
                    },
                    {
                      "StateID": 2,
                      "Count": 6
                    },
                    {
                      "StateID": 3,
                      "Count": 20
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request, missing or invalid parameters."
          },
          "404": {
            "description": "No data found for the given parameters."
          }
        },
        "tags": [
          "Park Order Display"
        ]
      }
    },
    "/ParkedOrderDisplay/Summary/GroupByVariant": {
      "get": {
        "summary": "Get Parked Order Summary Group By Variant",
        "description": "Retrieves a summary of parked orders based on Outlet and Category group by variant.",
        "operationId": "getParkedOrderSummaryVariant",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "required": true,
            "description": "Unique identifier for the outlet.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ff3c515e-c2b7-4309-8c29-30e44cecb23f"
            }
          },
          {
            "name": "CategoryID",
            "in": "query",
            "required": true,
            "description": "Unique identifier for the category.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ba003c7a-b7ed-410d-8c0d-af32ef08443f"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved order summary.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Summary": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "StateID": {
                            "type": "integer",
                            "example": 0
                          },
                          "Count": {
                            "type": "integer",
                            "example": 8
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "Summary": [
                    {
                      "StateID": 0,
                      "Count": 10
                    },
                    {
                      "StateID": 1,
                      "Count": 8
                    },
                    {
                      "StateID": 2,
                      "Count": 6
                    },
                    {
                      "StateID": 3,
                      "Count": 20
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request, missing or invalid parameters."
          },
          "404": {
            "description": "No data found for the given parameters."
          }
        },
        "tags": [
          "Park Order Display"
        ]
      }
    },
    "/ParkedOrderDisplay/GroupByVariant": {
      "get": {
        "summary": "Get Parked Orders Grouped by Variant",
        "description": "Retrieves parked orders grouped by variant, filtered by state, outlet, and category.",
        "operationId": "getParkedOrdersByVariant",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "required": false,
            "description": "Unique identifier for the outlet.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ff3c515e-c2b7-4309-8c29-30e44cecb23f"
            }
          },
          {
            "name": "CategoryID",
            "in": "query",
            "required": false,
            "description": "Unique identifier for the category.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ba003c7a-b7ed-410d-8c0d-af32ef08443f"
            }
          },
          {
            "name": "StateID",
            "in": "query",
            "required": false,
            "description": "Order state filter (0=New, 1=Pick, 2=Pack, 3=Ship).",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1,
                2,
                3
              ],
              "example": 0
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "required": true,
            "description": "Page number for pagination.",
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "required": true,
            "description": "Number of items per page for pagination.",
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "MaxHours",
            "in": "query",
            "required": false,
            "description": "Maximum hours to filter parked orders. (If not provided, default is 24 hours)",
            "schema": {
              "type": "integer",
              "example": 24
            }
          },
          {
            "name": "OrderType",
            "in": "query",
            "required": false,
            "description": "Type of order will be shown in the display. (Parked / All). If not provided, default is \"Parked\".  <br><b> Parked => Only for Invoice Pending <br> All => Display all pending and processed invoices </b>",
            "schema": {
              "type": "string",
              "example": "Parked",
              "default": "Parked",
              "enum": [
                "Parked",
                "All"
              ]
            }
          },
          {
            "name": "Sort",
            "in": "query",
            "required": false,
            "description": "Sort result by Descending or Ascending. If not provided, default is \"Desc\".",
            "schema": {
              "type": "string",
              "example": "Desc",
              "default": "Desc",
              "enum": [
                "Desc",
                "Asc"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved parked orders grouped by variant.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "Name": {
                            "type": "string",
                            "example": "Muffin (Medium)"
                          },
                          "Code": {
                            "type": "string",
                            "example": "MM3002"
                          },
                          "ThumbnailURL": {
                            "type": "string",
                            "example": "https://dealpos.b-cdn.net/net/nelsenlim/Product/fd64873d-cc07-4acd-8ed8-fa46062427c4/sandal-naga.jpg?width=160"
                          },
                          "Orders": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "OrderID": {
                                  "type": "string",
                                  "format": "guid",
                                  "example": "f7b3b3b3-4b1b-4b3b-8b3b-3b3b3b3b3b3"
                                },
                                "Number": {
                                  "type": "string",
                                  "example": "B1-25-03-00001"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "example": 6
                                },
                                "Customer": {
                                  "type": "string",
                                  "example": "Hendry"
                                },
                                "ParkLabel": {
                                  "type": "string",
                                  "example": "Meja2"
                                },
                                "Created": {
                                  "type": "string",
                                  "format": "date-time",
                                  "example": "2025-03-18T08:12:46.157"
                                },
                                "ItemID": {
                                  "type": "string",
                                  "format": "guid",
                                  "example": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab"
                                },
                                "Note": {
                                  "type": "string",
                                  "example": "Take Away"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request, missing or invalid parameters."
          },
          "404": {
            "description": "No data found for the given parameters."
          }
        },
        "tags": [
          "Park Order Display"
        ]
      }
    },
    "/ParkedOrderDisplay/GroupByOrder": {
      "get": {
        "summary": "Get Parked Orders Grouped by Order",
        "description": "Retrieves parked orders grouped by order, filtered by state, outlet, and category.",
        "operationId": "getParkedOrdersByOrder",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "required": false,
            "description": "Unique identifier for the outlet.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ff3c515e-c2b7-4309-8c29-30e44cecb23f"
            }
          },
          {
            "name": "CategoryID",
            "in": "query",
            "required": false,
            "description": "Unique identifier for the category.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ba003c7a-b7ed-410d-8c0d-af32ef08443f"
            }
          },
          {
            "name": "StateID",
            "in": "query",
            "required": false,
            "description": "Order state filter (0=New, 1=Pick, 2=Pack, 3=Ship).",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1,
                2,
                3
              ],
              "example": 0
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "required": true,
            "description": "Page number for pagination.",
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "required": true,
            "description": "Number of items per page for pagination.",
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "MaxHours",
            "in": "query",
            "required": false,
            "description": "Maximum hours to filter parked orders. (If not provided, default is 24 hours)",
            "schema": {
              "type": "integer",
              "example": 24
            }
          },
          {
            "name": "OrderType",
            "in": "query",
            "required": false,
            "description": "Type of order will be shown in the display. (Parked / All). If not provided, default is \"Parked\". <br><b> Parked => Only for Invoice Pending <br> All => Display all pending and processed invoices </b>",
            "schema": {
              "type": "string",
              "example": "Parked",
              "default": "Parked",
              "enum": [
                "Parked",
                "All"
              ]
            }
          },
          {
            "name": "Sort",
            "in": "query",
            "required": false,
            "description": "Sort result by Descending or Ascending. If not provided, default is \"Desc\".",
            "schema": {
              "type": "string",
              "example": "Desc",
              "default": "Desc",
              "enum": [
                "Desc",
                "Asc"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved parked orders grouped by order.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "OrderID": {
                            "type": "string",
                            "format": "guid",
                            "example": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab"
                          },
                          "ParkLabel": {
                            "type": "string",
                            "example": "Meja2"
                          },
                          "Created": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2025-03-18T08:12:46.157"
                          },
                          "Customer": {
                            "type": "string",
                            "example": "Ventines"
                          },
                          "Number": {
                            "type": "string",
                            "example": "B1-25-03-00001"
                          },
                          "Note": {
                            "type": "string",
                            "example": "Take Away"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "ItemID": {
                                  "type": "string",
                                  "format": "guid",
                                  "example": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab"
                                },
                                "Name": {
                                  "type": "string",
                                  "example": "Muffin (Medium)"
                                },
                                "Code": {
                                  "type": "string",
                                  "example": "MM3002"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "example": 1
                                },
                                "ThumbnailURL": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg"
                                },
                                "Note": {
                                  "type": "string",
                                  "example": "No sugar"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request, missing or invalid parameters."
          },
          "404": {
            "description": "No data found for the given parameters."
          }
        },
        "tags": [
          "Park Order Display"
        ]
      }
    },
    "/ParkedOrderDisplay/Default": {
      "get": {
        "summary": "Get Parked Orders Default",
        "description": "Retrieves a list of parked orders with filtering options.",
        "operationId": "getDefaultParkedOrders",
        "parameters": [
          {
            "name": "OutletID",
            "in": "query",
            "required": false,
            "description": "Unique identifier for the outlet.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ff3c515e-c2b7-4309-8c29-30e44cecb23f"
            }
          },
          {
            "name": "CategoryID",
            "in": "query",
            "required": false,
            "description": "Unique identifier for the category.",
            "schema": {
              "type": "string",
              "format": "guid",
              "example": "ba003c7a-b7ed-410d-8c0d-af32ef08443f"
            }
          },
          {
            "name": "StateID",
            "in": "query",
            "required": false,
            "description": "Order state filter (0=New, 1=Pick, 2=Pack, 3=Ship).",
            "schema": {
              "type": "integer",
              "enum": [
                0,
                1,
                2,
                3
              ],
              "example": 0
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "required": true,
            "description": "Page number for pagination.",
            "schema": {
              "type": "integer",
              "example": 1
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "required": true,
            "description": "Number of items per page for pagination.",
            "schema": {
              "type": "integer",
              "example": 20
            }
          },
          {
            "name": "MaxHours",
            "in": "query",
            "required": false,
            "description": "Maximum hours to filter parked orders. (If not provided, default is 24 hours)",
            "schema": {
              "type": "integer",
              "example": 24
            }
          },
          {
            "name": "OrderType",
            "in": "query",
            "required": false,
            "description": "Type of order will be shown in the display. (Parked / All). If not provided, default is \"Parked\".  <br><b> Parked => Only for Invoice Pending <br> All => Display all pending and processed invoices </b>",
            "schema": {
              "type": "string",
              "example": "Parked",
              "default": "Parked",
              "enum": [
                "Parked",
                "All"
              ]
            }
          },
          {
            "name": "Sort",
            "in": "query",
            "required": false,
            "description": "Sort result by Descending or Ascending. If not provided, default is \"Desc\".",
            "schema": {
              "type": "string",
              "example": "Desc",
              "default": "Desc",
              "enum": [
                "Desc",
                "Asc"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved parked orders.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "OrderID": {
                            "type": "string",
                            "format": "guid",
                            "example": "acf007a9-1d43-4289-9edc-713066c3527c"
                          },
                          "ParkLabel": {
                            "type": "string",
                            "example": "Meja2"
                          },
                          "Customer": {
                            "type": "string",
                            "example": "Ventines"
                          },
                          "Created": {
                            "type": "string",
                            "format": "date-time",
                            "example": "2025-03-18T08:12:46.157"
                          },
                          "Number": {
                            "type": "string",
                            "example": "B1-25-03-00001"
                          },
                          "Note": {
                            "type": "string",
                            "example": "Take Away"
                          },
                          "Variants": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "ItemID": {
                                  "type": "string",
                                  "format": "guid",
                                  "example": "d06648f8-9a3f-4da4-93bb-38bd3a89bbab"
                                },
                                "Name": {
                                  "type": "string",
                                  "example": "Muffin (Medium)"
                                },
                                "Code": {
                                  "type": "string",
                                  "example": "MM3002"
                                },
                                "Quantity": {
                                  "type": "integer",
                                  "example": 1
                                },
                                "ThumbnailURL": {
                                  "type": "string",
                                  "format": "uri",
                                  "example": "//res.cloudinary.com/dealpos/image/upload/w_80/id/postman/Product/f74bba14-99f0-4246-84bf-3064e3d516c3/url/1342M.jpg"
                                },
                                "Note": {
                                  "type": "string",
                                  "example": "No sugar"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request, missing or invalid parameters."
          },
          "404": {
            "description": "No data found for the given parameters."
          }
        },
        "tags": [
          "Park Order Display"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "OAuth2_clientCredentials": {
        "type": "oauth2",
        "description": "require access_token",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "{{server}}/token/oauth2",
            "scopes": {
              "read": "Grants read access",
              "write": "Grants write access",
              "admin": "Grants access to admin operations"
            }
          }
        }
      }
    },
    "schemas": {
      "category": {
        "title": "Category",
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name of the category that you want to create. This is primary key for the object\nIf you want to create category child use a \"/\" operator ex: \"Food/Snack/Pastries\" will create 3 level category"
          },
          "Code": {
            "type": "string",
            "description": "Code Category",
            "x-stoplight": {
              "id": "vebp8v8wdayw0"
            }
          }
        },
        "x-internal": false
      },
      "product": {
        "title": "Product",
        "required": [
          "Category",
          "Code",
          "Discontinued",
          "Name"
        ],
        "type": "object",
        "properties": {
          "Category": {
            "type": "string",
            "description": "The name of the category that will be use, you also can create new category.\n\nIf you want to nest a category use a \"/\" operator ex: \"Food/Snack/Pastries\" will create 3 level category"
          },
          "Name": {
            "type": "string",
            "description": "The name of the product to be created."
          },
          "Brand": {
            "type": "string",
            "description": "The name of the brand to be created. Backwards compatibility with property \"BrandName\""
          },
          "Code": {
            "type": "string",
            "description": "the code of the product to be created."
          },
          "Discontinued": {
            "type": "boolean",
            "description": "The product availability for selling."
          },
          "ImageURL": {
            "type": "string",
            "description": "The image link of the product to be created."
          },
          "ExtraImagesURL": {
            "type": "array",
            "description": " Image link of additional image in product",
            "items": {
              "type": "string"
            }
          },
          "Description": {
            "type": "string",
            "description": "The description of the product."
          },
          "Variants": {
            "type": "array",
            "items": {
              "required": [
                "Code",
                "Discontinued",
                "Model"
              ],
              "type": "object",
              "properties": {
                "Model": {
                  "type": "string",
                  "description": "The name of the variant to be created."
                },
                "Code": {
                  "type": "string",
                  "description": "The code of the variant to be created."
                },
                "UnitCost": {
                  "type": "integer",
                  "description": "The cost of the variant to be created."
                },
                "UnitPrice": {
                  "type": "integer",
                  "description": "The price of the variant to be created."
                },
                "Discontinued": {
                  "type": "boolean",
                  "description": "The variant availability for selling."
                },
                "VariantDescription": {
                  "type": "string",
                  "description": "The description of the product to be inserted."
                }
              }
            }
          }
        },
        "x-examples": {
          "example-1": {
            "Category": "Top/Men",
            "Name": "Captain America T-Shirt",
            "Brand": "Brand",
            "Code": "1003",
            "Discontinued": false,
            "ImageURL": "https://images.unsplash.com/photo-1622793348115-4e85dc2ca4eb?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8Y2FwdGFpbiUyMGFtZXJpY2F8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=600&q=60",
            "ExtraImagesURL": [
              "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/vgzleqpgujlspm9ltdiht.jpg",
              "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/q7dbzf9qnif8vbxuzxo0.jpg",
              "//res.cloudinary.com/pos/image/upload/Product/afa67ca2-46f4-418a-a5fe-a3a79b1dbc95/ur871mubz7ioecvja8ex.jpg"
            ],
            "Description": "New Arrival",
            "Variants": [
              {
                "Model": "Small",
                "Code": "1003S",
                "UnitCost": 100000,
                "UnitPrice": 150000,
                "Discontinued": true,
                "VariantDescription": "Unavailable"
              },
              {
                "Model": "Medium",
                "Code": "1003M",
                "UnitCost": 125000,
                "UnitPrice": 175000,
                "Discontinued": false
              },
              {
                "Model": "Large",
                "Code": "1003L",
                "UnitCost": 150000,
                "UnitPrice": 200000,
                "Discontinued": false
              }
            ]
          }
        },
        "x-internal": false
      },
      "customer": {
        "title": "Customer",
        "required": [
          "ID",
          "Code",
          "Email",
          "MobilePhone",
          "Name",
          "Status"
        ],
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "description": "ID of customer"
          },
          "Name": {
            "type": "string",
            "description": "Name of customer"
          },
          "Email": {
            "type": "string",
            "description": "Email Address of customer"
          },
          "Title": {
            "type": "string",
            "description": "Title Name of customer"
          },
          "FirstName": {
            "type": "string",
            "description": "First name of customer"
          },
          "LastName": {
            "type": "string",
            "description": "Last name of customer"
          },
          "Gender": {
            "type": "string",
            "description": "Gender of customer"
          },
          "Code": {
            "type": "string",
            "description": "Code of customer"
          },
          "Phone": {
            "type": "string",
            "description": "Phone number of customer"
          },
          "MobilePhone": {
            "type": "string",
            "description": "Mobile number of customer. this is primary key for the object"
          },
          "Fax": {
            "type": "string",
            "description": "Fax number of customer"
          },
          "Address": {
            "type": "string",
            "description": "Address of customer"
          },
          "City": {
            "type": "string",
            "description": "City of customer"
          },
          "Nationality": {
            "type": "string",
            "description": "Nationality of customer"
          },
          "ReferredBy": {
            "type": "string",
            "description": "Customer ID who referred this customer"
          },
          "Identification": {
            "type": "string",
            "description": "identification number of customer"
          },
          "Birthday": {
            "type": "string",
            "description": "Birthday of customer"
          },
          "JoinDate": {
            "type": "string",
            "description": "Join date of customer"
          },
          "Group": {
            "type": "string",
            "description": "Group of customer"
          },
          "ExpiredGroup": {
            "type": "string",
            "description": "Expired group of customer"
          },
          "SignUpOutlet": {
            "type": "string",
            "description": "Sign up oulet when created the new customer"
          },
          "ImageURL": {
            "type": "string",
            "description": "Image url of customer"
          },
          "LoyaltyPoint": {
            "type": "integer",
            "description": "Loyalty point of customer"
          },
          "Status": {
            "type": "string",
            "description": "Customer Activation Status"
          },
          "AppLastSignIn": {
            "type": "string",
            "format": "date-time",
            "description": "Last sign in from Brand Loyalty app (Null if never sign in)"
          }
        }
      },
      "Customer-Response": {
        "type": "object",
        "properties": {
          "ID": {
            "type": "string"
          },
          "Message": {
            "type": "string"
          }
        },
        "x-examples": {
          "Example 1": {
            "ID": "c27bfb13-4936-43e5-bd7d-410dc8d041c2",
            "Message": "Record updated"
          }
        },
        "x-internal": true
      },
      "customerdetail": {
        "title": "Customer",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "description": "ID of customer"
          },
          "Name": {
            "type": "string",
            "description": "Name of customer"
          },
          "Email": {
            "type": "string",
            "description": "Email Address of customer"
          },
          "Title": {
            "type": "string",
            "description": "Title Name of customer"
          },
          "FirstName": {
            "type": "string",
            "description": "First name of customer"
          },
          "LastName": {
            "type": "string",
            "description": "Last name of customer"
          },
          "Gender": {
            "type": "string",
            "description": "Gender of customer"
          },
          "Code": {
            "type": "string",
            "description": "Code of customer"
          },
          "Phone": {
            "type": "string",
            "description": "Phone number of customer"
          },
          "MobilePhone": {
            "type": "string",
            "description": "Mobile number of customer. this is primary key for the object"
          },
          "Fax": {
            "type": "string",
            "description": "Fax number of customer"
          },
          "Address": {
            "type": "string",
            "description": "Address of customer"
          },
          "City": {
            "type": "string",
            "description": "City of customer"
          },
          "Nationality": {
            "type": "string",
            "description": "Nationality of customer"
          },
          "ReferredBy": {
            "type": "string",
            "description": "Customer ID who referred this customer"
          },
          "Identification": {
            "type": "string",
            "description": "identification number of customer"
          },
          "Birthday": {
            "type": "string",
            "description": "Birthday of customer"
          },
          "JoinDate": {
            "type": "string",
            "description": "Join date of customer"
          },
          "Group": {
            "type": "string",
            "description": "Group of customer"
          },
          "ExpiredGroup": {
            "type": "string",
            "description": "Expired group of customer"
          },
          "SignUpOutlet": {
            "type": "string",
            "description": "Sign up oulet when created the new customer"
          },
          "ImageURL": {
            "type": "string",
            "description": "Image url of customer"
          },
          "LoyaltyPoint": {
            "type": "integer",
            "description": "Loyalty point of customer"
          },
          "Status": {
            "type": "string",
            "description": "Customer Activation Status"
          },
          "PINRegistered": {
            "type": "boolean",
            "description": "Indicates if the customer has registered a PIN for app access"
          },
          "AppLastSignIn": {
            "type": "string",
            "format": "date-time",
            "description": "Last sign in from Brand Loyalty app (Null if never sign in)"
          }
        }
      },
      "VariantSerial": {
        "title": "Variant Serial",
        "required": [
          "Number",
          "Quantity"
        ],
        "type": "object",
        "properties": {
          "Number": {
            "type": "string",
            "description": "Serial Number"
          },
          "Quantity": {
            "type": "integer",
            "description": "Quantity of Serial Number specified"
          }
        }
      },
      "adjustment": {
        "title": "Adjustment",
        "required": [
          "Date",
          "Number",
          "Outlet",
          "Variants"
        ],
        "type": "object",
        "properties": {
          "Outlet": {
            "type": "string",
            "description": "The name of the outlet that made the adjustment"
          },
          "Date": {
            "type": "string",
            "description": "Date of adjusment.(yyyy/mm/dd)"
          },
          "Number": {
            "type": "string",
            "description": "Number of invoice adjusment. This is primary key for the object"
          },
          "StateID": {
            "type": "number",
            "description": "State of Adjustment. it will be required if config with Approval is turned on. 1= InProgress, 2= Waiting",
            "x-stoplight": {
              "id": "2vbxuk9ho1d10"
            }
          },
          "PIC": {
            "type": "string",
            "description": "The name of the PIC that made the adjustment"
          },
          "Note": {
            "type": "string",
            "description": "Note of adjustment"
          },
          "CountMethod": {
            "type": "string",
            "enum": [
              "web",
              "csv",
              "barcode",
              "rfid"
            ],
            "description": "Source of adjustment creation"
          },
          "Variants": {
            "type": "array",
            "items": {
              "required": [
                "Code",
                "Quantity"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "type": "string",
                  "description": "Code of variant"
                },
                "Quantity": {
                  "type": "number",
                  "description": "Variant's adjusted quantity"
                },
                "Note": {
                  "type": "string",
                  "description": "Note of variant adjustment"
                },
                "TID": {
                  "type": "array",
                  "description": "Tag ID for RFID (This property is used only for product Standard type and adjustment type Count)",
                  "items": {
                    "type": "string"
                  }
                },
                "Serial": {
                  "type": "array",
                  "description": "Use this property only for product type Serialized",
                  "items": {
                    "$ref": "#/components/schemas/VariantSerial"
                  }
                }
              }
            }
          }
        },
        "x-internal": false
      },
      "variant-result": {
        "title": "Variant",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "description": "Unique ID of the variant"
          },
          "Category": {
            "type": "string",
            "description": "Category of the product"
          },
          "Brand": {
            "type": "string",
            "description": "Brand of the product"
          },
          "Product": {
            "type": "string",
            "description": "Name of the product variant"
          },
          "Variant": {
            "type": "string",
            "description": "Name of the variant"
          },
          "Name": {
            "type": "string",
            "description": "Name of the product"
          },
          "Code": {
            "type": "string",
            "description": "Code of the product"
          },
          "Weight": {
            "type": "integer",
            "description": "Weight of the product"
          },
          "Type": {
            "type": "string",
            "enum": [
              "Standard",
              "NonInventory",
              "Composite",
              "Serialized",
              "Manufactured",
              "Complementary",
              "MultipleUOM",
              "PrepaidPoint",
              "PrepaidPackage"
            ],
            "description": "Type of the product"
          },
          "OrderPrice": {
            "type": "integer",
            "description": "Last order price of the product"
          },
          "UnitCost": {
            "type": "integer",
            "description": "Unit cost of the product"
          },
          "UnitPrice": {
            "type": "integer",
            "description": "Unit selling price of the product"
          },
          "Taxable": {
            "type": "boolean",
            "description": "Taxable status of the product"
          },
          "LoyaltyPoint": {
            "type": "boolean",
            "description": "Loyalty Point status of the product"
          },
          "Discontinued": {
            "type": "boolean",
            "description": "Discontinue status of the product"
          },
          "ImageURL": {
            "type": "string",
            "description": "Image URL of the product"
          },
          "ThumbnailURL": {
            "type": "string",
            "description": "Thumbnail URL of the product"
          },
          "Components": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Name": {
                  "type": "string",
                  "description": "Component name of the product"
                },
                "Code": {
                  "type": "string",
                  "description": "Component code of the product"
                },
                "Qty": {
                  "type": "integer",
                  "description": "Qty of the component"
                }
              }
            }
          },
          "Description": {
            "type": "string",
            "description": "Description of variant"
          },
          "OutletPrice": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Outlet": {
                  "type": "string",
                  "description": "Selected outlet of the product"
                },
                "Price": {
                  "type": "integer",
                  "description": "Price of the selected outlet of the product"
                },
                "ExtraCost": {
                  "type": "integer",
                  "description": "Extra Cost of the selected outlet of the product"
                }
              }
            }
          },
          "Pricebook": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Name": {
                  "type": "string",
                  "description": "Pricebook name",
                  "x-stoplight": {
                    "id": "1fbg4i6fdicwo"
                  }
                },
                "UnitPrice": {
                  "type": "integer",
                  "description": "Pricebook price",
                  "x-stoplight": {
                    "id": "uprwowwako3dx"
                  }
                },
                "MinimumQuantity": {
                  "type": "integer",
                  "description": "Pricebook minimum quantity",
                  "x-stoplight": {
                    "id": "nq641j2imr2xb"
                  }
                }
              }
            }
          },
          "Promotions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Name": {
                  "type": "string",
                  "description": "Promotion Event name"
                },
                "UnitPrice": {
                  "type": "integer",
                  "description": "Promotion unit price"
                },
                "ExtraCost": {
                  "type": "integer",
                  "description": "Promotion extra cost"
                },
                "Discount": {
                  "type": "integer",
                  "description": "Promotion discount"
                },
                "StartDate": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Promotion start date"
                },
                "ExpirationDate": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Promotion expiration date"
                },
                "StartTime": {
                  "type": "string",
                  "format": "time",
                  "description": "Promotion start time"
                },
                "ExpirationTime": {
                  "type": "string",
                  "format": "time",
                  "description": "Promotion expiration time"
                },
                "Type": {
                  "type": "string",
                  "description": "Promotion type"
                },
                "PromotionID": {
                  "type": "string",
                  "description": "Promotion ID",
                  "x-stoplight": {
                    "id": "92i31zik4viu6"
                  }
                }
              }
            }
          }
        },
        "x-examples": {
          "Standard": {
            "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
            "Category": "Food",
            "Product": "Sandwich",
            "Variant": "Default",
            "Name": "Sandwich",
            "Code": "SW001",
            "Weight": 100,
            "Type": "Composite",
            "OrderPrice": 0,
            "UnitCost": 20000,
            "UnitPrice": 50000,
            "Taxable": true,
            "LoyaltyPoint": true,
            "Discontinued": false,
            "Components": [
              {
                "Code": "S001",
                "Name": "Sausage",
                "Qty": 1
              },
              {
                "Code": "B001",
                "Name": "Bread",
                "Qty": 2
              }
            ],
            "OutletPrice": [
              {
                "Outlet": "Outlet1",
                "Price": 55000,
                "ExtraCost": 5000
              }
            ]
          },
          "With Pricebook": {
            "ID": "string",
            "Category": "string",
            "Product": "string",
            "Variant": "string",
            "Name": "string",
            "Code": "string",
            "Weight": 0,
            "Type": "string",
            "OrderPrice": 0,
            "UnitCost": 0,
            "UnitPrice": 0,
            "Taxable": true,
            "LoyaltyPoint": true,
            "Discontinued": true,
            "Components": [
              {
                "Name": "string",
                "Code": "string",
                "Qty": 0
              }
            ],
            "OutletPrice": [
              {
                "Outlet": "string",
                "Price": 0,
                "ExtraCost": 0
              }
            ],
            "": [
              {
                "Name": "string",
                "UnitPrice": 0,
                "MinimumQuantity": 0
              }
            ]
          },
          "Example 2": {
            "ID": "f2296e61-e405-4884-9e54-55f14a91748b",
            "Category": "Food",
            "Product": "Sandwich",
            "Variant": "Default",
            "Name": "Sandwich",
            "Code": "SW001",
            "Weight": 100,
            "Type": "Composite",
            "OrderPrice": 0,
            "UnitCost": 20000,
            "UnitPrice": 50000,
            "Taxable": true,
            "LoyaltyPoint": true,
            "Discontinued": false,
            "Components": [
              {
                "Code": "S001",
                "Name": "Sausage",
                "Qty": 1
              },
              {
                "Code": "B001",
                "Name": "Bread",
                "Qty": 2
              }
            ],
            "OutletPrice": [
              {
                "Outlet": "Outlet1",
                "Price": 55000,
                "ExtraCost": 5000
              }
            ],
            "Pricebook": [
              {
                "Name": "Reseller Price",
                "UnitPrice": 40000,
                "MinimumQuantity": 2
              },
              {
                "Name": "Grocery Price",
                "UnitPrice": 30000,
                "MinimumQuantity": 5
              }
            ]
          }
        },
        "x-stoplight": {
          "id": "7f5f4d82cadda"
        },
        "x-internal": false
      },
      "estimate": {
        "title": "Estimate",
        "required": [
          "Date",
          "Number",
          "Outlet"
        ],
        "type": "object",
        "properties": {
          "Outlet": {
            "type": "string",
            "description": "Outlet Name"
          },
          "Number": {
            "type": "string",
            "description": "Estimate Number"
          },
          "Date": {
            "type": "string",
            "description": "Estimate Date Created"
          },
          "Discount": {
            "type": "number",
            "description": "Discount percentage given"
          },
          "DiscountAmount": {
            "type": "number",
            "description": "Discount amount given"
          },
          "TaxType": {
            "type": "string",
            "description": "Name of Taxtype"
          },
          "Tag": {
            "type": "string",
            "description": "Channel Tagging system. (ex:Offline / Whatsapp / Shopee / Tokopedia) used in marketplace.dealpos.app. Backwards Compatibility with property request \"SalesType\""
          },
          "Customer": {
            "required": [
              "Code",
              "Email",
              "Mobile",
              "Name"
            ],
            "type": "object",
            "properties": {
              "Email": {
                "type": "string",
                "description": "Email of Customer"
              },
              "Name": {
                "type": "string",
                "description": "Name of Customer"
              },
              "Mobile": {
                "type": "integer",
                "description": "Mobile of Customer"
              },
              "Address": {
                "type": "string",
                "description": "Address of Customer"
              },
              "Gender": {
                "type": "string",
                "description": "Gender of Customer (Male / Female)"
              },
              "Code": {
                "type": "string",
                "description": "Code of Customer"
              }
            }
          },
          "Variants": {
            "type": "array",
            "items": {
              "required": [
                "Code",
                "Quantity"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "type": "string",
                  "description": "Code of Variant"
                },
                "Quantity": {
                  "type": "integer",
                  "description": "Quantity of Variant for the estimate"
                },
                "Cost": {
                  "type": "number",
                  "description": "Cost of Variant"
                },
                "Price": {
                  "type": "number",
                  "description": "Price of Variant"
                },
                "Discount": {
                  "type": "integer",
                  "description": "Discount percentage of variant given"
                },
                "Note": {
                  "type": "string",
                  "description": "Note of variant"
                }
              }
            }
          }
        },
        "x-internal": false
      },
      "supplier": {
        "title": "Supplier",
        "required": [
          "Code",
          "Email",
          "Mobile",
          "Name",
          "Status"
        ],
        "type": "object",
        "properties": {
          "Email": {
            "type": "string",
            "description": "Email address of Supplier"
          },
          "Name": {
            "type": "string",
            "description": "Name of supplier. This is primary key for the object"
          },
          "FirstName": {
            "type": "string",
            "description": "First name of supplier"
          },
          "LastName": {
            "type": "string",
            "description": "Last name of supplier"
          },
          "Phone": {
            "type": "string",
            "description": "Phone number of supplier"
          },
          "Mobile": {
            "type": "string",
            "description": "Mobile number of supplier"
          },
          "Address": {
            "type": "string",
            "description": "Address of Supplier"
          },
          "Gender": {
            "type": "string",
            "description": "Gender of supplier",
            "enum": [
              "Male",
              "Female"
            ]
          },
          "Code": {
            "type": "string",
            "description": "Code member of supplier"
          },
          "Group": {
            "type": "string",
            "description": "Group of supplier"
          },
          "ImageURL": {
            "type": "string",
            "description": "Supplier's photo URL"
          },
          "Status": {
            "type": "string",
            "default": "Active / WaitingForApproval / Suspended"
          }
        },
        "x-internal": false
      }
    }
  }
}