@startjson

<style>
    ' Общий стиль схемы задан здесь
    jsonDiagram {
        node {
            LineColor #000
            FontName Helvetica
            FontColor black
            FontSize 18
            'FontStyle bold
        }
    arrow {
        LineColor #000
        LineThickness 1
        LineStyle 5
    }
    highlight {
        BackGroundColor #e5e5e5
        FontColor black
        }
    }
    ' Здесь находятся расцветки изменений. Необходимо создать новый объект по образу .headerBlock
    .headerBlock {
        FontColor red
        FontStyle bold
        BackGroundColor grey
    }
    .firstChange {
      FontColor black
      FontStyle bold
      BackGroundColor Blue
    }
</style>

' Здесь указываем какие атрибуты нужно подсвечивать в схеме
'Пример другого цвета
#highlight "order" / "Shipment" / "shipmentFastDelivery" <<firstChange>>

' Заголовки (выделены красным и темно-серым для улучшения читаемости)
#highlight "order" / "Artifacts" / "Artifacts" <<headerBlock>>
#highlight "order" / "Artifacts" / "Artifacts" <<headerBlock>>
#highlight "order" / "B2CContractor" / "B2CContractor" <<headerBlock>>
#highlight "order" / "B2BContractor" / "B2BContractor" <<headerBlock>>
#highlight "order" / "Properties" / "Properties" <<headerBlock>>
#highlight "order" / "Supplies (array)" / "Supplies (array)" <<headerBlock>>
#highlight "order" / "Shipment" / "Shipment" <<headerBlock>>
#highlight "order" / "Shipment" / "ShipmentPickup" / "ShipmentPickup" <<headerBlock>>
#highlight "order" / "Shipment" / "ShipmentPickupFranchise" / "ShipmentPickupFranchise" <<headerBlock>>
#highlight "order" / "Shipment" / "ShipmentCourier" / "ShipmentCourier" <<headerBlock>>
#highlight "order" / "Shipment" / "shipmentTKCourier" / "shipmentTKCourier" <<headerBlock>>
#highlight "order" / "Shipment" / "ShipmentTKPickup" / "ShipmentTKPickup" <<headerBlock>>
#highlight "order" / "Shipment" / "shipmentFastDelivery" / "shipmentFastDelivery" <<headerBlock>>
#highlight "order" / "Shipment" / "Meta" / "Meta" <<headerBlock>>
#highlight "order" / "Contractor" / "Contractor" <<headerBlock>>
#highlight "order" / "Recipient" / "Recipient" <<headerBlock>>
#highlight "order" / "managerInfo" / "managerInfo" <<headerBlock>>

{
  "order": {
    "ID": "uuid || Номер заказа",
    "ContractorID": "uuid || Идентификатор контрагента",
    "RootOrder": "uuid || UUID корневого заказа",
    "Number": "string || Номер заказа в формате ****-******-*****",
    "ContractorType": "int || Тип КА",
    "OrderStatus": "int || Идентификатор статуса заказа (от 0 до 7)",
    "managerInfo": {
      "managerInfo": "Блок информации о менеджере в заказе (ManagerInfo)",
      "CreatedBy": "uuid || Идентификатор автора заказа из AD",
      "CreatedFullName": "string || ФИО автора заказа",
      "UpdatedBy": "uuid || Идентификатор последнего обновлявшего заказ",
      "UpdatedFullName": "string || ФИО последнего обновлявшего заказ",
      "ManagerGroup": "int || Идентификатор группы менеджера",
      "ManagerPhoneNumber": "string || Номер телефона менеджера",
      "ManagerExtensionNumber": "string || Добавочный номер телефона менеджера"
    },
    "B2CContractor": {
      "B2CContractor": "Контрагент b2c (вложенный объект с атрибутами дальше по ветке)",
      "Person": {
        "ID": "uuid || Идентификатор (UUID) контрагента",
        "FullName": "string || Полное ФИО КА",
        "Phone": "string || Номер телефона КА",
        "Email": "string || Email адрес КА"
      }
    },
    "B2BContractor": {
      "B2BContractor": "Блок контрагента B2b",
      "ID": "uuid || Идентификатор (UUID) контрагента",
      "Name": "string || Полное наименование КА",
      "TIN": "string || Номер ИНН",
      "edo": "boolean || Признак что КА работает по ЭДО",
      "isPDZ": "boolean || false",
      "paymentType": "integer || Признак оплаты, 1 - предоплата, 2 - постоплата",
      "Agent": {
        "ID": "uuid || Индентификатор агента заказа",
        "OrderNumber": "string || Номер заказа в системе агента",
        "ContractType": "integer || Тип договора к заказу, 1 - агентский, 2 - клиентский, 3 - торговый дом"
      },
      "ContactPersons (array)": {
        "Person": {
          "ID": "uuid || Идентификатор (UUID) контрагента",
          "FullName": "string || Полное ФИО КА",
          "Phone": "string || Номер телефона КА",
          "Email": "string || Email адрес КА"
        },
        "SmsPhoneNumber": "string || Номер телефона для СМС"
      },
      "CurrentContactPersonID": "uuid || ID выбранного КЛ для заказа",
      "Curator": {
        "ID": "uuid || Идентификатор куратора",
        "FullName": "string || ФИО куратора"
      },
      "KAM": {
        "ID": "uuid || Идентификатор КАМа",
        "FullName": "string || ФИО КАМа"
      },
      "Contract": {
        "ID": "uuid || Идентификатор договора",
        "Number": "string || Номер договора",
        "Kind": "int || Тип договора"
      },
      "BaseDocumentSettings": {
        "GovernmentContractID": "string || Идентификатор государственного контракта",
        "InvoiceTransferBasis": "string || Основание передачи в счете на оплату",
        "ShippingDocuments": {
          "TransferBasisDocument": "string || документ-основание передачи(сдачи)/получения(приемки)",
          "TransferBasisAdditionalDetails": "string || Дополнительные сведения основания передачи",
          "OtherInformation": "string || Иные сведения"
        }
      }
    },
    "Recipient": {
      "Recipient": "Блок грузополучателя (Deprecated) для поддержки старых заказов. Актуальный в shipment",
      "ID": "uuid || Идентификатор (UUID) грузополучателя",
      "RecipientName": "string || Имя грузополучателя заказа",
      "RecipientPhone": "string || Номер телефона грузополучателя",
      "RecipientAddress": "string || Адрес грузополучателя",
      "isConsingeeApprove": "boolean || Признак подтверждения смены ГП"
    },
    "Items": "map[uuid.UUID]Item || Товары в заказе",
    "Supplies (array)": {
      "Supplies (array)": "Блок товарной части (supply)",
      "ID": "uuid || Идентификатор поставки",
      "ShipmentID": "uuid || Идентификатор шипмента",
      "ProductID": "uuid || Идентификатор номенклатуры",
      "SourceOffice": "uuid || Идентификатор склада на котором находится товар",
      "ReserveTo": "date-time || Дата резерв до",
      "PurchaseIDs": "array || Массив идентификаторов закупки",
      "UnreserveDate": "date-time || Дата фактического снятия с резерва товара",
      "Quantity": "int || Количество товара в доставке. Суммарное количество должно быть равно quantity в items",
      "StatusItem": "int || Идентификатор статуса товара",
      "Artifacts": {
        "UUIDWtis": "uuid || UID товара из wtis",
        "StatusItemWtis": "int || Статус товара из wtis",
        "Attb": "int || Состояние товара во WTIS",
        "AttbSklad": "int || Статус местонахождения товара (0 - Свободный, 1 - проверен)",
        "AttbShipped": "int || Признак 'Товар доставлен' (0 - не доставлен, 1 - доставлен)",
        "AttbReserve": "int || Атрибут резерва",
        "FlagReturn": "bool || Признак Возврат товара. 1 - товар с вкладки Возвраты, 0 - для товаров с вкладки Товары.",
        "FlagReturnedToSklad": "bool || Принят на склад",
        "ReturnReason": "int || Причина возврата (1-sklad,2-kurier,3-manager,4-client)",
        "AppendUser": "uuid || ID пользователя кто добавил поставку",
        "ChangeUser": "uuid || ID пользователя кто последний изменил поставку",
        "OnHold": "bool || Флаг товар в процессе переноса",
        "IsLargeSized": "bool || Флаг кгт (крупногабаритный товар)"
      },
      "DateCanDeliver": "date-time || Дата 'Сможем доставить'.",
      "CreatedAt": "date-time || Дата создания поставки",
      "UpdatedAt": "date-time || Дата последнего обновления поставки",
      "Prices": {
        "SupplyID": "uuid || Идентификатор поставки",
        "DiscountPrice": "float || Сумма скидки",
        "DiscountManualPrice": "float || Сумма скидки (ручная корректировка)",
        "DiscountCategory": "string || Категория скидки",
        "DiscountType": "string || Тип скидки (manager, contractor)",
        "DiscountManualType": "string || Тип ручной корректировки цены",
        "DiscountManualTypeID": "uuid || Идентификатор типа ручной корректировки",
        "Reason": "int || Причина скидки",
        "InitialPrice": "float || Начальная цена",
        "PurchasePrice": "float || Цена закупки",
        "Price": "float || Цена товара",
        "SalePrice": "float || Продажная цена",
        "Discount": "float || Процент скидки",
        "ClearanceSaleID": "uuid || Идентификатор распродажи",
        "IsPromoCodeUsed": "bool || Флаг использования промокода",
        "PromotionID": "int || Идентификатор акции из МС Promo",
        "PromoCode": "string || Промокод в заказе",
        "DiscountClearanceSale": "float || Сумма скидки от акции Промо",
        "DiscountPromoCode": "float || Сумма скидки от промокода",
        "DiscountClearance": "float || Процент скидки от акции/скидки",
        "ExtraCost": "float || Цена доставки на единицу товара"
      },
      "IsRestored": "bool || Признак восстановления поставки.",
      "IsAutoRestored": "bool || Признак автовосстановления поставки через sync",
      "DeliveryDate": "date-time || Дата доставки"
    },
    "Supplies": "Supplies || поставки",
    "Properties": {
      "Properties": "Блок свойства заказа",
      "BasicTimestamps": {
        "CreatedAt": "date-time || Дата и время создания заказа",
        "UpdatedAt": "date-time || Дата и время последнего обновления заказа"
      },
      "NumberSchemeBalance": "string || Номер схемы баланса",
      "AccountingLine": "AccountingLine || Линия учета",
      "OriginID": "int || Идентификатор источника заказа",
      "SiteOrderDate": "date-time || Дата и время заказа выбранное на сайте",
      "OrderComment": "string || Комментарий к заказу. Во wtis: primSklad",
      "PrimSklad": "string || Примечание для менеджера",
      "TtnNumber": "string || Номер ТТН",
      "TtnDate": "string || Дата ТТН",
      "Ttn": "string || Товарно-транспортная накладная (ТТН)",
      "BillIsAutoOrdered": "bool || Признак 'Счет автоотправлен'",
      "IsAutoReserved": "bool || Признак Заказ автооформлен",
      "IsAutoBotOrder": "bool || Признак Заказ создан автоботом",
      "IsPartialShipmentFromSite": "bool || Признак ЧО с сайта",
      "IsLeasing": "bool || Признак оформления заказа в лизинг",
      "PaymentAmount": "float || Сумма внесенной оплаты",
      "PaymentPercentage": "int || процент оплаченности заказа",
      "Prepayment": "float || Сумма внесенной предоплаты",
      "ManagerGroup": "int || Группа менеджера",
      "ManagerID": "uuid || Идентификатор (UUID) менеджера заказа",
      "ManagerFullName": "string || ФИО менеджера заказа",
      "ManagerPhoneNumber": "string || Телефон менеджера заказа",
      "ManagerExtensionNumber": "string || Добавочный номер телефона менеджера",
      "ConfirmationStatus": "ConfirmationStatus || Статус подтвержения заказа клиентом",
      "BookingEndDates": "array || Массив с датами истечения бронирования заказа",
      "PaymentDoc": "string || Наименование платежного документа",
      "IsPrepaymentRequired": "bool || Признак 'Необходима предоплата'",
      "RegionGUID": "uuid || Идентификатор (UUID) региона",
      "RegionName": "string || Наименование региона",
      "IsTest": "bool || Признак тестового заказа",
      "ReasonForCancelingOrder": "int || Причина отмены заказа",
      "TypeOrderFromSite": "string || Тип заказа с сайта. normal / fast",
      "Firma": "GUID фирмы отгружающей товар.",
      "FlowID": "int || Флоу заказа (аналог OriginID с доп логикой)",
      "PriceFixing": {
        "Number": "int || Порядковый номер фиксации",
        "EndDate": "date-time || Дата окончания фиксации"
      },
      "b2gLaw": "string || Федеральный закон по которому отгружается заказ",
      "b2gLawSite": "string || Федеральный закон выбранный пользователем на сайте",
      "SalesChannelID": "int || Идентификатор канала продаж",
      "SalesChannelName": "string || Наименование канала продаж",
      "GroupManagerName": "string || Наименование группы менеджеров",
      "IsAoSuccess": "bool || Флаг успешного автооформления",
      "ReturnOrder": "bool || Признак возвратного заказа",
      "VerificationCode": "bool || Признак подтверждения получения заказа по коду"
    },
    "Artifacts": {
      "Artifacts": "Блок артефактов",
      "UUIDWtis": "uuid || UUID заказа из wtis",
      "PartialShipment": "bool || Признак Частичная отгрузка",
      "Firma": "uuid || GUID фирмы отгружающей товар",
      "RegionID": "int || Идентификатор региона из wtis",
      "MainRegionID": "int || Идентификатор главного региона из wtis",
      "BasketNumber": "string || Номер корзины клиента",
      "OrderMasterSystem": "string || Признак мастер-система по заказу",
      "StockMasterSystem": "StockMasterSystem || Мастер система по товародвижению",
      "KkmDate": "string || Дата ККМ",
      "KkmAmount": "float || Сумма оплаты через ККМ",
      "PaymentKkm": "bool || Признак оплата через ККМ",
      "PaymentCb": "bool || Признак оплата по счету",
      "PaymentCard": "bool || Признак картой",
      "IsEwalletPayment": "bool || Признак оплата с сайта",
      "IsCredit": "bool || Признак кредитного заказа",
      "OrderStateWtis": "int || Состояние заказа из WTIS",
      "AttbOplata": "int || Статус оплаты (0 - Не оплачено, 1 - Частичная оплата, 2 - Оплачено). || deprecated",
      "OrderStatusWtis": "int || Статус заказа из WTIS",
      "IsPromoEnabled": "bool ||  Признак, что сайт взаимодействует с МС Promo и берет распродажную инфу оттуда.",
      "IsYandexEnabled": "bool || Признак, что адрес передается в новом формате для курьерки."
    },
    "UpdateReason": "int || Причина обновления",
    "Parts": "map[uuid.UUID]Part || Части заказа",
    "HasTransaction": "bool || Признак наличия транзакции",
    "IsNewVersion": "bool || Признак новой версии сущности",
    "BaseShipmentID": "uuid || UUID доставки",
    "DeliveryDate": "date-time || Дата доставки",
    "Shipment": {
  "Shipment": "Блок Доставка (Shipment)",
  "Meta": {
    "Meta": "Блок мета информации о доставке (Meta)",
    "ID": "uuid || Идентификатор shipment",
    "OrderID": "uuid || Идентификатор заказа",
    "MethodID": "int || Идентификатор шипмента",
    "Status": "int || Статус доставки",
    "FSMStatus": "object || fsm для статуса",
    "Artifacts": {
      "DeliveryWith": "string || Начальный временной промежуток курьерской доставки",
      "TrackingNumberID": "int || Deprecated",
      "PartnerDeliverTo": "string || Deprecated",
      "DestinationOfficeID": "int || Deprecated",
      "Category": "int || Deprecated",
      "DeliveryOn": "string || Верхняя граница часов доставки",
      "DeliveryWay": "string || Тип доставки, через транспортную компанию",
      "DeliveryType": "bool || 0 - обычная доставка 1 - доставка строительных материалов",
      "DeliveryZone": "int || id зоны доставки строительных материалов",
      "VeerouteExportDate": "date-time || Дата выгрузки в Veeroute",
      "AddressID": "int || Идентификатор адреса доставки (внутренний от WTIS)",
      "DeliveryDestinationType": "int || Тип отгрузки (1 - склад, 2 - курьер, 4 - ТК)"
    },
    "DeliveryDate": "date-time || Дата доставки",
    "IsCustomDeliveryDate": "bool || Ручное изменение дата доставки",
    "Services": {
      "Settings": {
        "SpreadExtraCost": "bool || Размазать стоимость доставки по товарам связанным с доставкой",
        "IsShipmentPossible": "bool || Отгружать с ПДЗ",
        "isPacking": "bool || Признак 'Упаковать заказ как на ТК'"
      },
      "LiftToFloor": {
        "Price": "int || Цена услуги подъема на этаж",
        "ElevatorStatus": "int || Статус лифта"
      }
    },
    "CreatedAt": "date-time || Дата создания доставки",
    "UpdatedAt": "date-time || Дата последнего обновления доставки",
    "Recipient": {
      "ID": "uuid || Идентификатор грузополучателя",
      "RecipientName": "string || Имя грузополучателя",
      "RecipientPhone": "string || Телефон грузополучателя",
      "IsConsigneeApprove": "bool || Наличие подтверждения о смене ГП",
      "InvoiceConsigneeAddress": "string || Доп адрес грузополучателя"
    }
  },
  "ShipmentPickup": {
    "ShipmentPickup": "Блок Самовывоз (ShipmentPickup)",
    "OfficeGUID": "uuid || Идентификатор офиса"
  },
  "ShipmentPickupFranchise": {
    "ShipmentPickupFranchise": "Блок Самовывоз франшиза (ShipmentPickupFranchise)",
    "OfficeGUID": "uuid || UUID ТТ франшизы",
    "FranchisePartnerID": "uuid || UUID партнера из МСКБ",
    "FranchisePartnerName": "string || Наименование партнера из МСКБ"
  },
  "ShipmentCourier": {
    "ShipmentCourier": "Блок Курьером (ShipmentCourier)",
    "FactDeliveryBoy": "uuid || Идентификатор курьера который отдал заказ",
    "FreeReason": "int || Причина бесплатной доставки",
    "FiasID": "uuid || FIAS идентификатор адреса доставки",
    "IntervalGUID": "uuid || Идентификатор интервала курьерской доставки",
    "DeliveryAregGUID": "uuid || Идентификатор AREG адреса доставки",
    "AddressTail": {
      "AddressTailID": "uuid || Идентификатор хвоста адреса",
      "Postcode": "string || Почтовый индекс",
      "Flat": "string || Кв./Офис",
      "Entrance": "string || Подъезд",
      "Floor": "string || Этаж",
      "AddressComment": "string || Комментарий к адресу",
      "ContactNumber": "string || Контактный номер в адресе доставки"
    },
    "IntervalValue": "string || Значение интервала доставки",
    "Latitude": "string || Широта адреса доставки",
    "Longitude": "string || Долгота адреса доставки",
    "CourierGUID": "uuid || Идентификатор курьера в заказе",
    "DeliveryBoyName": "string || ФИО курьера в заказе",
    "AddrDostav": "string || Адрес доставки",
    "CourierDeliveryCost": "int || Стоимость доставки",
    "InitialCourierDeliveryCost": "int || Начальная цена доставки курьером",
    "CourierComment": "string || Комментарий для курьера",
    "DeliveryCategoryType": "int || Тип категории доставки",
    "DeliveryCategoryName": "string || Название категории доставки",
    "OfficeGUID": "uuid || Офис отгрузки курьеру"
  },
  "ShipmentTKPickup": {
    "ShipmentTKPickup": "Блок ТК Самовывоз (ShipmentTKPickup)",
    "TransportCompanyID": "uuid || Идентификатор транспортной компании",
    "TransportCompanyCityID": "uuid || Идентификатор города ТК",
    "TransportCompanyCityName": "string || Название города ТК",
    "TransportCompanyExternalCode": "string || Внешний код офиса ТК в системе CDEK",
    "TransportCompanyTariffID": "uuid || Идентификатор тарифа ТК",
    "TransportCompanyTariffName": "string || Наименование тарифа",
    "CourierDeliveryCost": "int || Стоимость доставки",
    "InitialCourierDeliveryCost": "int || Начальная цена доставки курьером",
    "CourierComment": "string || Комментарий для курьера"
  },
  "shipmentTKCourier": {
    "shipmentTKCourier": "Блок ТК Курьером (ShipmentTKCourier)",
    "TransportCompanyID": "uuid || Идентификатор транспортной компании",
    "TransportCompanyCityID": "uuid || Идентификатор города ТК",
    "TransportCompanyCityName": "string || Название города ТК",
    "TransportCompanyExternalCode": "string || Внешний код офиса ТК в системе CDEK",
    "TransportCompanyTariffID": "uuid || Идентификатор тарифа ТК",
    "TransportCompanyTariffName": "string || Наименование тарифа",
    "IntervalValue": "string || Значение интервала доставки",
    "Latitude": "string || Широта адреса доставки",
    "Longitude": "string || Долгота адреса доставки",
    "AddrDostav": "string || Адрес доставки",
    "FiasID": "uuid || FIAS идентификатор адреса доставки",
    "IntervalGUID": "uuid || Идентификатор интервала курьерской доставки",
    "DeliveryAregGUID": "uuid || Идентификатор AREG адреса доставки",
    "AddressTail": {
      "AddressTailID": "uuid || Идентификатор хвоста адреса",
      "PostCode": "string || Индекс адреса доставки",
      "Flat": "string || Кв./Офис",
      "Entrance": "string || Подъезд",
      "Floor": "string || Этаж",
      "AddressComment": "string || Комментарий к адресу",
      "ContactNumber": "string || Контактный номер в адресе доставки"
    },
    "CourierDeliveryCost": "int || Стоимость доставки",
    "InitialCourierDeliveryCost": "int || Начальная цена доставки курьером",
    "DeliveryWay": "int || Тип доставки, через транспортную компанию",
    "CourierComment": "string || Комментарий для курьера",
    "DeliveryCategoryType": "int || Тип категории доставки",
    "DeliveryCategoryName": "string || Название категории доставки"
  },
  "shipmentFastDelivery": {
    "shipmentFastDelivery": "Блок Быстрая доставка (ShipmentFastDelivery)",
    "OfficeGUID": "uuid || Идентификатор офиса",
    "FactDeliveryBoy": "uuid || Идентификатор курьера который отдал заказ",
    "FreeReason": "int || Причина бесплатной доставки",
    "FiasID": "uuid || FIAS идентификатор адреса доставки",
    "IntervalGUID": "uuid || Идентификатор интервала курьерской доставки",
    "DeliveryAregGUID": "uuid || Идентификатор AREG адреса доставки",
    "AddressTail": {
      "AddressTailID": "uuid || Идентификатор хвоста адреса",
      "Flat": "string || Кв./Офис",
      "Entrance": "string || Подъезд",
      "Floor": "string || Этаж",
      "AddressComment": "string || Комментарий к адресу",
      "ContactNumber": "string || Контактный номер в адресе доставки"
    },
    "IntervalValue": "string || Значение интервала доставки",
    "Latitude": "string || Широта адреса доставки",
    "Longitude": "string || Долгота адреса доставки",
    "CourierGUID": "uuid || Идентификатор курьера в заказе",
    "DeliveryBoyName": "string || ФИО курьера в заказе",
    "AddrDostav": "string || Адрес доставки",
    "CourierDeliveryCost": "int || Стоимость доставки",
    "CourierComment": "string || Комментарий для курьера",
    "DeliveryDate": "date-time || Дата доставки"
  }
}
  }
}
@endjson
