forked from abclogin/dadata
-
Notifications
You must be signed in to change notification settings - Fork 0
/
model.go
301 lines (279 loc) · 18.4 KB
/
model.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
package dadata // import "gopkg.in/webdeskltd/dadata.v2"
// Address base struct for datdata.Address
type Address struct {
Source string `json:"source"` // Исходный адрес одной строкой
Result string `json:"result"` // Стандартизованный адрес одной строкой
PostalCode string `json:"postal_code"` // Индекс
Country string `json:"country"` // Страна
RegionFiasID string `json:"region_fias_id"` // Код ФИАС региона
RegionKladrID string `json:"region_kladr_id"` // Код КЛАДР региона
RegionWithType string `json:"region_with_type"` // Регион с типом
RegionType string `json:"region_type"` // Тип региона (сокращенный)
RegionTypeFull string `json:"region_type_full"` // Тип региона
Region string `json:"region"` // Регион
AreaFiasID string `json:"area_fias_id"` // Код ФИАС района в регионе
AreaKladrID string `json:"area_kladr_id"` // Код КЛАДР района в регионе
AreaWithType string `json:"area_with_type"` // Район в регионе с типом
AreaType string `json:"area_type"` // Тип района в регионе (сокращенный)
AreaTypeFull string `json:"area_type_full"` // Тип района в регионе
Area string `json:"area"` // Район в регионе
CityFiasID string `json:"city_fias_id"` // Код ФИАС города
CityKladrID string `json:"city_kladr_id"` // Код КЛАДР города
CityWithType string `json:"city_with_type"` // Город с типом
CityType string `json:"city_type"` // Тип города (сокращенный)
CityTypeFull string `json:"city_type_full"` // Тип города
City string `json:"city"` // Город
CityArea string `json:"city_area"` // Административный округ (только для Москвы)
CityDistrictFiasID string `json:"city_district_fias_id"` // Код ФИАС района города (заполняется, только если район есть в ФИАС)
CityDistrictKladrID string `json:"city_district_kladr_id"` // Код КЛАДР района города (не заполняется)
CityDistrictWithType string `json:"city_district_with_type"` // Район города с типом
CityDistrictType string `json:"city_district_type"` // Тип района города (сокращенный)
CityDistrictTypeFull string `json:"city_district_type_full"` // Тип района города
CityDistrict string `json:"city_district"` // Район города
SettlementFiasID string `json:"settlement_fias_id"` // Код ФИАС нас. пункта
SettlementKladrID string `json:"settlement_kladr_id"` // Код КЛАДР нас. пункта
SettlementWithType string `json:"settlement_with_type"` // Населенный пункт с типом
SettlementType string `json:"settlement_type"` // Тип населенного пункта (сокращенный)
SettlementTypeFull string `json:"settlement_type_full"` // Тип населенного пункта
Settlement string `json:"settlement"` // Населенный пункт
StreetFiasID string `json:"street_fias_id"` // Код ФИАС улицы
StreetKladrID string `json:"street_kladr_id"` // Код КЛАДР улицы
StreetWithType string `json:"street_with_type"` // Улица с типом
StreetType string `json:"street_type"` // Тип улицы (сокращенный)
StreetTypeFull string `json:"street_type_full"` // Тип улицы
Street string `json:"street"` // Улица
HouseFiasID string `json:"house_fias_id"` // Код ФИАС дома
HouseKladrID string `json:"house_kladr_id"` // Код КЛАДР дома
HouseType string `json:"house_type"` // Тип дома (сокращенный)
HouseTypeFull string `json:"house_type_full"` // Тип дома
House string `json:"house"` // Дом
BlockType string `json:"block_type"` // Тип корпуса/строения (сокращенный)
BlockTypeFull string `json:"block_type_full"` // Тип корпуса/строения
Block string `json:"block"` // Корпус/строение
FlatType string `json:"flat_type"` // Тип квартиры (сокращенный)
FlatTypeFull string `json:"flat_type_full"` // Тип квартиры
Flat string `json:"flat"` // Квартира
FlatArea string `json:"flat_area"` // Площадь квартиры
SquareMeterPrice string `json:"square_meter_price"` // Рыночная стоимость м²
FlatPrice string `json:"flat_price"` // Рыночная стоимость квартиры
PostalBox string `json:"postal_box"` // Абонентский ящик
FiasID string `json:"fias_id"` // Код ФИАС
FiasLevel string `json:"fias_level"` // Уровень детализации, до которого адрес найден в ФИАС
KladrID string `json:"kladr_id"` // Код КЛАДР
CapitalMarker string `json:"capital_marker"` // Статус центра
Okato string `json:"okato"` // Код ОКАТО
Oktmo string `json:"oktmo"` // Код ОКТМО
TaxOffice string `json:"tax_office"` // Код ИФНС для физических лиц
Timezone string `json:"timezone"` // Часовой пояс
GeoLat string `json:"geo_lat"` // Координаты: широта
GeoLon string `json:"geo_lon"` // Координаты: долгота
BeltwayHit string `json:"beltway_hit"` // Внутри кольцевой?
BeltwayDistance string `json:"beltway_distance"` // Расстояние от кольцевой в км.
// TODO: Переделать на собственный тип с кастомный unmarshaller поинмающий как string так и int типы
// QualityCodeGeo для clean вызовов он int для suggest в адресе банков он string поэтому в поле поставил interface{} чтобы работало и там и там)\
QualityCodeGeo interface{} `json:"qc_geo"` // Код точности координат
// TODO: Переделать на собственный тип с кастомный unmarshaller поинмающий как string так и int типы
// QualityCodeComplete для clean вызовов он int для suggest в адресе банков он string поэтому в поле поставил interface{} чтобы работало и там и там)\
QualityCodeComplete interface{} `json:"qc_complete"` // Код полноты
// TODO: Переделать на собственный тип с кастомный unmarshaller поинмающий как string так и int типы
// QualityCodeHouse для clean вызовов он int для suggest в адресе банков он string поэтому в поле поставил interface{} чтобы работало и там и там)\
QualityCodeHouse interface{} `json:"qc_house"` // Код проверки дома
// TODO: Переделать на собственный тип с кастомный unmarshaller поинмающий как string так и int типы
// QualityCode для clean вызовов он int для suggest в адресе банков он string поэтому в поле поставил interface{} чтобы работало и там и там)\
QualityCode interface{} `json:"qc"` // Код качества
UnparsedParts string `json:"unparsed_parts"` // Нераспознанная часть адреса. Для адреса
Metro []Metro `json:"metro"`
}
// ResponseAddress api response for address
type ResponseAddress struct {
Value string `json:"value"`
UnrestrictedValue string `json:"unrestricted_value"`
Data Address `json:"data"`
}
// Metro base struct for dadata.Metro
type Metro struct {
Name string `json:"name"`
Line string `json:"line"`
Distance float64 `json:"distance"`
}
// Phone base struct for dadata.Phone
type Phone struct {
Source string `json:"source"` // Исходный телефон одной строкой
Type string `json:"type"` // Тип телефона
Phone string `json:"phone"` // Стандартизованный телефон одной строкой
CountryCode string `json:"country_code"` // Код страны
CityCode string `json:"city_code"` // Код города / DEF-код
Number string `json:"number"` // Локальный номер телефона
Extension string `json:"extension"` // Добавочный номер
Provider string `json:"provider"` // Оператор связи
Region string `json:"region"` // Регион
Timezone string `json:"timezone"` // Часовой пояс
QualityCodeConflict int `json:"qc_conflict"` // Признак конфликта телефона с адресом
QualityCode int `json:"qc"` // Код качества
}
// Name base struct for dadata.Name
type Name struct {
Source string `json:"source"` // Исходное ФИО одной строкой
Result string `json:"result"` // Стандартизованное ФИО одной строкой
ResultGenitive string `json:"result_genitive"` // ФИО в родительном падеже (кого?)
ResultDative string `json:"result_dative"` // ФИО в дательном падеже (кому?)
ResultAblative string `json:"result_ablative"` // ФИО в творительном падеже (кем?)
Surname string `json:"surname"` // Фамилия
Name string `json:"name"` // Имя
Patronymic string `json:"patronymic"` // Отчество
Gender string `json:"gender"` // Пол
QualityCode interface{} `json:"qc"` // Код качества
}
// ResponseName api response for name
type ResponseName struct {
Value string `json:"value"`
UnrestrictedValue string `json:"unrestricted_value"`
Data Name `json:"data"`
}
// Email base struct for dadata.Email
type Email struct {
Source string `json:"source"` // Исходный e-mail
Email string `json:"email"` // Стандартизованный e-mail
QualityCode int `json:"qc"` // Код качества
}
// ResponseEmail api response for email
type ResponseEmail struct {
Value string `json:"value"`
UnrestrictedValue string `json:"unrestricted_value"`
Data Email `json:"data"`
}
// Birthdate base struct for dadata.Birthdate
type Birthdate struct {
Source string `json:"source"` // Исходная дата
Birthdate string `json:"birthdate"` // Стандартизованная дата
QualityCode int `json:"qc"` // Код качества
}
// Vehicle base struct for dadata.Vehicle
type Vehicle struct {
Source string `json:"source"` // Исходное значение
Result string `json:"result"` // Стандартизованное значение
Brand string `json:"brand"` // Марка
Model string `json:"model"` // Модель
QualityCode int `json:"qc"` // Код проверки
}
// Passport base struct for dadata.Passport
type Passport struct {
Source string `json:"source"` // Исходная серия и номер одной строкой
Series string `json:"series"` // Серия
Number string `json:"number"` // Номер
QualityCode int `json:"qc"` // Код проверки
}
// Bank base struct for dadata.Bank
type Bank struct {
Opf OrganizationOPF `json:"opf"`
Name BankName `json:"name"`
Bic string `json:"bic"` // Банковский идентификационный код (БИК) ЦБ РФ
Swift string `json:"swift"` // Банковский идентификационный код в системе SWIFT
Okpo string `json:"okpo"` // Код ОКПО
CorrespondentAccount string `json:"correspondent_account"` // Корреспондентский счет в ЦБ РФ
RegistrationNumber string `json:"registration_number"` // Регистрационный номер в ЦБ РФ
// Go cannot use recursive types - thats why we need copy paste all fields to Rks
Rkc struct {
Opf OrganizationOPF `json:"opf"`
Name BankName `json:"name"`
Bic string `json:"bic"`
Swift string `json:"swift"`
Okpo string `json:"okpo"`
CorrespondentAccount string `json:"correspondent_account"`
RegistrationNumber string `json:"registration_number"`
Rkc interface{} `json:"rkc"`
Address ResponseAddress `json:"address"`
Phone string `json:"phone"`
State OrganizationState `json:"state"`
} `json:"rkc"` // Расчетно-кассовый центр. Объект такой же структуры, как сам банк.
Address ResponseAddress `json:"address"` // см ResponseAddress
Phone string `json:"phone"` // Не заполняется
State OrganizationState `json:"state"`
}
// ResponseBank api response for bank
type ResponseBank struct {
Value string `json:"value"`
UnrestrictedValue string `json:"unrestricted_value"`
Data Bank `json:"data"`
}
// OrganizationOPF Тип Кредитной организации
type OrganizationOPF struct {
Type string `json:"type"` // Тип кредитной организации
Full string `json:"full"` // Тип кредитной организации (на русском)
Short string `json:"short"` // Тип кредитной организации (на русском, сокращенный)
}
// BankName наименование банка
type BankName struct {
Payment string `json:"payment"` // Платежное наименование
Full string `json:"full"` // Полное наименование
Short string `json:"short"` // Краткое наименование
}
// OrganizationState Статус организации
type OrganizationState struct {
Status string `json:"status"` //Статус организации:
// ACTIVE — действующая
// LIQUIDATING — ликвидируется
// LIQUIDATED — ликвидирована
ActualityDate int64 `json:"actuality_date"` // Дата актуальности сведений
RegistrationDate int64 `json:"registration_date"` // Дата регистрации
LiquidationDate string `json:"liquidation_date"` // Дата ликвидации
}
// Party base struct for dadata.Party (rus Организация)
type Party struct {
Kpp string `json:"kpp"`
Capital string `json:"capital"`
Management struct {
Name string `json:"name"`
Post string `json:"post"`
} `json:"management"`
Founders string `json:"founders"`
Managers string `json:"managers"`
BranchType string `json:"branch_type"`
BranchCount int `json:"branch_count"`
Source string `json:"source"`
Qc string `json:"qc"`
Hid string `json:"hid"`
Type string `json:"type"`
State OrganizationState `json:"state"`
Opf OrganizationOPF `json:"opf"`
Name struct {
FullWithOpf string `json:"full_with_opf"`
ShortWithOpf string `json:"short_with_opf"`
Latin string `json:"latin"`
Full string `json:"full"`
Short string `json:"short"`
} `json:"name"`
Inn string `json:"inn"`
Ogrn string `json:"ogrn"`
Okpo string `json:"okpo"`
Okved string `json:"okved"`
Okveds string `json:"okveds"`
Authorities string `json:"authorities"`
Documents string `json:"documents"`
Licenses string `json:"licenses"`
Address ResponseAddress `json:"address"`
Phones string `json:"phones"`
Emails string `json:"emails"`
OgrnDate int64 `json:"ogrn_date"`
OkvedType string `json:"okved_type"`
}
// ResponseParty api response for party
type ResponseParty struct {
Value string `json:"value"`
UnrestrictedValue string `json:"unrestricted_value"`
Data Party `json:"data"`
}
// StatResponse usage statitics
//see docs https://dadata.ru/api/stat/
type StatResponse struct {
Date string `json:"date"`
Services struct {
Merging int `json:"merging"`
Suggestions int `json:"suggestions"`
Clean int `json:"clean"`
} `json:"services"`
}
// BalanceResponse Response of API request
type BalanceResponse struct {
Balance float64 `json:"balance"`
}