package model type User struct { /* - айдишник в нашей системе Primary Key*/ ID int64 `json:"ID"` /* - id пользователя из токена в нашей системе*/ Accountid string `json:"AccountID"` /* - айдишник пользователя в амо*/ AmoID int32 `json:"AmocrmID"` /* - имя аккаунта в амо*/ Name string `json:"Name"` /* - почта пользователя из амо*/ Email string `json:"Email"` /* - роль пользователя в амо*/ Role int32 `json:"Role"` /* - группы пользователя в амо*/ Group int32 `json:"Group"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания аккаунта*/ Createdat int64 `json:"CreatedAt"` /* - поддомен организации в амо*/ Subdomain string `json:"Subdomain"` /* - айдишник пользвателя, который подключал интеграцию*/ Amouserid int32 `json:"AmoUserID"` /* - страна указанная в настройках амо*/ Country string `json:"Country"` } type UserGroups struct { ID int `json:"id" bson:"id"` Name string `json:"name" bson:"name"` UUID interface{} `json:"uuid" bson:"uuid"` } type Token struct { AccountID string `json:"account_id"` // id в квизе RefreshToken string `json:"refresh_token"` // 80 дней AccessToken string `json:"access_token"` // 20 минут AuthCode string `json:"auth_code"` Expiration int64 `json:"expiration"` // таймшамп времени когда кончится AccessToken CreatedAt int64 `json:"created_at"` // таймшамп времени создания, нужен для отслеживания 80 дней } type Pipeline struct { // айдишник в нашей системе Primary Key ID int64 `json:"ID"` /* - айдишник воронки в амо*/ Amoid int32 `json:"AmoID"` /* - связь с аккаунтом в интеграции амо id аккаунта в амо*/ AccountID int32 `json:"AccountID"` /* - название воронки в амо*/ Name string `json:"Name"` /* - флаг архивной воронки в амо*/ Isarchive bool `json:"IsArchive"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания воронки в нашей системе*/ Createdat int64 `json:"CreatedAt"` } type Step struct { /* - айдишник в нашей системе Primary Key*/ ID int64 `json:"ID"` /* - айдишник шага воронки в амо*/ Amoid int32 `json:"AmoID"` /* - айдишник воронки в амо*/ Pipelineid int32 `json:"PipelineID"` /* - связь с аккаунтом в интеграции амо id в амо*/ Accountid int32 `json:"AccountID"` /* - название воронки в амо*/ Name string `json:"Name"` /* - цвет шага в амо*/ Color string `json:"Color"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания воронки в нашей системе*/ Createdat int64 `json:"CreatedAt"` } type Tag struct { /* - айдишник в нашей системе Primary Key*/ ID int64 `json:"ID"` /* - айдишник тега в амо*/ Amoid int32 `json:"AmoID"` /* - связь с аккаунтом в интеграции амо id аккаунта в амо*/ Accountid int32 `json:"AccountID"` /* - сущность, к которой принадлежит этот тег. Наверное, стоит сделать через enum в базе*/ Entity EntityType `json:"Entity"` /* - название тега в амо*/ Name string `json:"Name"` /* - цвет тега в амо*/ Color *string `json:"Color"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания тега в нашей системе*/ Createdat int64 `json:"CreatedAt"` } type Field struct { /* - айдишник в нашей системе Primary Key*/ ID int64 `json:"ID"` /* - айдишник кастомного поля в амо*/ Amoid int32 `json:"AmoID"` /* - кодовое слово в амо*/ Code string `json:"Code"` /* - связь с аккаунтом в интеграции амо id аккаунта в амо*/ Accountid int32 `json:"AccountID"` /* - название воронки в амо*/ Name string `json:"Name"` /* - тип сущности в амо, для которой это кастомное поле*/ Entity EntityType `json:"Entity"` /* - тип поля https://www.amocrm.ru/developers/content/crm_platform/custom-fields#%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9*/ Type FieldType `json:"Type"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания воронки в нашей системе*/ Createdat int64 `json:"CreatedAt"` } type EntityType string const ( LeadsType EntityType = "leads" ContactsType EntityType = "contacts" CompaniesType EntityType = "companies" CustomersType EntityType = "customers" ) type Rule struct { /* - айдишник в нашей системе*/ ID int64 `json:"ID"` /* - связь с аккаунтом в интеграции амо id в амо*/ Accountid int32 `json:"AccountID"` /* - айдишник опроса*/ Quizid int32 `json:"QuizID"` /* - айдишник ответственного за сделку*/ Performerid int32 `json:"PerformerID"` /* - айдишник воронки*/ Pipelineid int32 `json:"PipelineID"` /* - айдишник этапа*/ Stepid int32 `json:"StepID"` /* - список UTM для этого опроса*/ Utms []int32 `json:"UTMs"` /* - правила заполнения полей сущностей в амо*/ Fieldsrule Fieldsrule `json:"FieldsRule"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания воронки в нашей системе*/ Createdat int64 `json:"CreatedAt"` } type Fieldsrule struct { Lead []FieldRule `json:"Lead"` Contact []FieldRule `json:"Contact"` Company []FieldRule `json:"Company"` Customer []FieldRule `json:"Customer"` } type FieldRule struct { /* - сопоставление айдишника вопроса полю, которое будет заполняться ответом. соответственно QuestionID это айдишник вопроса. это я так мэпу пытался записать*/ Questionid map[int]int `json:"QuestionID"` // ключ id вопроса значение id астомного поля } type UTM struct { /* - айдишник в нашей системе Primary Key*/ ID int64 `json:"ID"` /* - айдишник кастомного поля в амо*/ Amofieldid int32 `json:"AmoFieldID"` /* - айдишник квиза*/ Quizid int32 `json:"QuizID"` /* - связь с аккаунтом в интеграции амо id амо*/ Accountid int32 `json:"AccountID"` /* - название тега в амо*/ Name string `json:"Name"` /* - флаг мягкого удаления*/ Deleted bool `json:"Deleted"` /* - таймштамп создания тега в нашей системе*/ Createdat int64 `json:"CreatedAt"` } type FieldType string const ( TypeAmoText FieldType = "text" //Текст TypeAmoNumeric FieldType = "numeric" //Число TypeAmoCheckbox FieldType = "checkbox" //Флаг TypeAmoSelect FieldType = "select" //Список TypeAmoMultiselect FieldType = "multiselect" //Мультисписок TypeAmoDate FieldType = "date" //Дата TypeAmoUrl FieldType = "url" // Ссылка TypeAmoTextarea FieldType = "textarea" // Текстовая область TypeAmoRadiobutton FieldType = "radiobutton" // Переключатель TypeAmoStreetAddress FieldType = "streetaddress" // Короткий адрес TypeAmoSmartAddress FieldType = "smart_address" // Адрес TypeAmoBirthday FieldType = "birthday" // День рождения TypeAmoLegalEntity FieldType = "legal_entity" // Юр. лицо TypeAmoDateTime FieldType = "date_time" // Дата и время TypeAmoPrice FieldType = "price" //Цена TypeAmoCategory FieldType = "category" // Категория TypeAmoItems FieldType = "items" // Предметы TypeAmoTrackingData FieldType = "tracking_data" // Отслеживаемые данные TypeAmoLinkedEntity FieldType = "linked_entity" // Связь с другим элементом TypeAmoChainedList FieldType = "chained_list" // Каталоги и списки (платная опция Супер-поля) TypeAmoMonetary FieldType = "monetary" // Денежное (платная опция Супер-поля) TypeAmoFile FieldType = "file" // Файл TypeAmoPayer FieldType = "payer" // Плательщик (только в списке Счета-покупки) TypeAmoSupplier FieldType = "supplier" // Поставщик (только в списке Счета-покупки) TypeAmoMultiText FieldType = "multitext" // что то чего нет в списке полей но она есть в амо)) ) type CheckUserUtm struct { ID int64 `json:"ID"` Amofieldid int32 `json:"AmoFieldID"` Quizid int32 `json:"QuizID"` Accountid int32 `json:"AccountID"` Name string `json:"Name"` Status bool }