tochka_cyclops_api 0.2.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +67 -10
- data/Rakefile +0 -4
- data/lib/tasks/methods.rake +11 -0
- data/lib/tochka_cyclops_api/data_processor.rb +46 -22
- data/lib/tochka_cyclops_api/generators/initializer_generator.rb +5 -5
- data/lib/tochka_cyclops_api/generators/{model_generator.rb → models_generator.rb} +8 -9
- data/lib/tochka_cyclops_api/generators/templates/tochka_cyclops_request_model_template.rb +1 -1
- data/lib/tochka_cyclops_api/generators/templates/tochka_cyclops_responses_migration_template.rb +1 -1
- data/lib/tochka_cyclops_api/methods.rb +198 -5
- data/lib/tochka_cyclops_api/request.rb +66 -31
- data/lib/tochka_cyclops_api/response.rb +27 -34
- data/lib/tochka_cyclops_api/result.rb +33 -0
- data/lib/tochka_cyclops_api/schemas/requests/activate_beneficiary.rb +22 -0
- data/lib/tochka_cyclops_api/schemas/requests/create_beneficiary_fl.rb +56 -0
- data/lib/tochka_cyclops_api/schemas/requests/create_beneficiary_ip.rb +22 -10
- data/lib/tochka_cyclops_api/schemas/requests/create_beneficiary_ul.rb +22 -10
- data/lib/tochka_cyclops_api/schemas/requests/deactivate_beneficiary.rb +22 -0
- data/lib/tochka_cyclops_api/schemas/requests/echo.rb +2 -0
- data/lib/tochka_cyclops_api/schemas/requests/get_beneficiary.rb +22 -0
- data/lib/tochka_cyclops_api/schemas/requests/list_beneficiary.rb +44 -0
- data/lib/tochka_cyclops_api/schemas/requests/update_beneficiary_fl.rb +51 -0
- data/lib/tochka_cyclops_api/schemas/requests/update_beneficiary_ip.rb +39 -0
- data/lib/tochka_cyclops_api/schemas/requests/update_beneficiary_ul.rb +38 -0
- data/lib/tochka_cyclops_api/schemas/responses/activate_beneficiary.rb +24 -0
- data/lib/tochka_cyclops_api/schemas/responses/create_beneficiary_fl.rb +24 -0
- data/lib/tochka_cyclops_api/schemas/responses/create_beneficiary_ip.rb +10 -1
- data/lib/tochka_cyclops_api/schemas/responses/create_beneficiary_ul.rb +9 -9
- data/lib/tochka_cyclops_api/schemas/responses/deactivate_beneficiary.rb +24 -0
- data/lib/tochka_cyclops_api/schemas/responses/echo.rb +1 -1
- data/lib/tochka_cyclops_api/schemas/responses/error.rb +5 -2
- data/lib/tochka_cyclops_api/schemas/responses/get_beneficiary.rb +48 -0
- data/lib/tochka_cyclops_api/schemas/responses/list_beneficiary.rb +38 -0
- data/lib/tochka_cyclops_api/schemas/responses/update_beneficiary_fl.rb +20 -0
- data/lib/tochka_cyclops_api/schemas/responses/update_beneficiary_ip.rb +20 -0
- data/lib/tochka_cyclops_api/schemas/responses/update_beneficiary_ul.rb +24 -0
- data/lib/tochka_cyclops_api/schemas/results/local_error.rb +0 -0
- data/lib/tochka_cyclops_api/test.rb +0 -0
- data/lib/tochka_cyclops_api/version.rb +1 -1
- data/lib/tochka_cyclops_api.rb +8 -2
- metadata +23 -17
@@ -1,63 +1,56 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative '
|
3
|
+
require_relative 'schemas/responses/error'
|
4
4
|
|
5
5
|
module TochkaCyclopsApi
|
6
6
|
# Class for processing the response received from the api bank
|
7
7
|
class Response
|
8
|
-
def self.create(request,
|
9
|
-
@method = method
|
8
|
+
def self.create(request: ,response: ,method:)
|
10
9
|
@request = request
|
11
|
-
@
|
12
|
-
parse
|
10
|
+
@method = method
|
11
|
+
@body = JSON.parse(response.body)
|
12
|
+
@response_schema = "TochkaCyclopsApi::Schemas::Responses::#{camel_case_method}".constantize
|
13
|
+
@error_schema = 'TochkaCyclopsApi::Schemas::Responses::Error'.constantize
|
13
14
|
|
14
|
-
|
15
|
-
response_struct: @response_struct,
|
16
|
-
result: @result
|
17
|
-
}
|
15
|
+
call
|
18
16
|
end
|
19
17
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
private
|
19
|
+
|
20
|
+
def self.call
|
21
|
+
@result = @body['result']
|
22
|
+
@error = @body['error']
|
23
|
+
|
24
|
+
if @error.present?
|
25
25
|
parse_error
|
26
|
+
else
|
27
|
+
parse_result
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
29
31
|
def self.parse_result
|
30
|
-
|
31
|
-
response_schema = schema || -> { "Schema for #{@method} is not found" }[]
|
32
|
+
return nil if @result.nil?
|
32
33
|
|
33
|
-
|
34
|
-
@request.update(result:
|
34
|
+
response = TochkaCyclopsResponse.create(body: @body, result: @result)
|
35
|
+
@request.update(result: response, status: 'success')
|
35
36
|
@result.deep_symbolize_keys if @result.is_a? Hash
|
36
|
-
|
37
|
+
response_struct = @response_schema.new(@result)
|
38
|
+
|
39
|
+
Result.success(response_struct)
|
37
40
|
end
|
38
41
|
|
39
42
|
def self.parse_error
|
40
|
-
|
41
|
-
require_relative './schemas/responses/error'
|
42
|
-
response_schema = 'TochkaCyclopsApi::Schemas::Responses::Error'.constantize
|
43
|
+
return nil if @error.nil?
|
43
44
|
|
44
|
-
|
45
|
+
response = TochkaCyclopsError.create(
|
45
46
|
body: @body,
|
46
47
|
code: @error['code'],
|
47
48
|
message: @error['message']
|
48
49
|
)
|
50
|
+
@request.update(result: response, status: 'failure')
|
51
|
+
response_struct = @error_schema.new(@error.deep_symbolize_keys)
|
49
52
|
|
50
|
-
|
51
|
-
|
52
|
-
@response_struct = response_schema.new(@error.deep_symbolize_keys)
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.schema
|
56
|
-
require_relative "./schemas/responses/#{@method}"
|
57
|
-
"TochkaCyclopsApi::Schemas::Responses::#{camel_case_method}".constantize
|
58
|
-
rescue StandardError => e
|
59
|
-
@errors = { error: e.message }
|
60
|
-
false
|
53
|
+
Result.success(response_struct)
|
61
54
|
end
|
62
55
|
|
63
56
|
def self.camel_case_method
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TochkaCyclopsApi
|
4
|
+
# Displays the result of request
|
5
|
+
class Result
|
6
|
+
attr_reader :success, :data, :error_message
|
7
|
+
|
8
|
+
def self.create(success, data = nil, error_message = nil)
|
9
|
+
@success = success
|
10
|
+
@data = data
|
11
|
+
@error_message = error_message
|
12
|
+
|
13
|
+
display_result
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.success(data)
|
17
|
+
Result.create(true, data)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.failure(error_message)
|
21
|
+
Result.create(false, nil, error_message)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def self.display_result
|
27
|
+
{
|
28
|
+
success: @success,
|
29
|
+
data: @data || @error_message
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-activate-beneficiary
|
9
|
+
class ActivateBeneficiary < Dry::Validation::Contract
|
10
|
+
schema do
|
11
|
+
required(:beneficiary_id).value(:string)
|
12
|
+
end
|
13
|
+
|
14
|
+
EXAMPLE = "
|
15
|
+
{
|
16
|
+
beneficiary_id: '981fee11-9969-4e80-9f5f-02af462cb51e'
|
17
|
+
}
|
18
|
+
"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-create-beneficiary-fl
|
9
|
+
class CreateBeneficiaryFl < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class BeneficiaryData < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
required(:first_name).value(:string)
|
14
|
+
required(:last_name).value(:string)
|
15
|
+
required(:birth_date).value(:string)
|
16
|
+
required(:birth_place).value(:string)
|
17
|
+
required(:passport_number).value(:string)
|
18
|
+
required(:passport_date).value(:string)
|
19
|
+
required(:registration_address).value(:string)
|
20
|
+
|
21
|
+
optional(:passport_series).value(:string)
|
22
|
+
optional(:middle_name).value(:string)
|
23
|
+
optional(:resident).value(:bool)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
schema do
|
28
|
+
required(:inn).value(:string)
|
29
|
+
required(:beneficiary_data).schema(
|
30
|
+
TochkaCyclopsApi::Schemas::Requests::CreateBeneficiaryFl::BeneficiaryData.schema
|
31
|
+
)
|
32
|
+
|
33
|
+
optional(:nominal_account_code).value(:string)
|
34
|
+
optional(:nominal_account_bic).value(:string)
|
35
|
+
end
|
36
|
+
|
37
|
+
EXAMPLE ="
|
38
|
+
{
|
39
|
+
inn: '7925930371',
|
40
|
+
nominal_account_code: '000000000000000000000',
|
41
|
+
nominal_account_bic: '0000000000',
|
42
|
+
beneficiary_data: {
|
43
|
+
first_name: 'Иван',
|
44
|
+
last_name: 'Иванов',
|
45
|
+
birth_date: '1990-01-24',
|
46
|
+
birth_place: 'г. Свердловск',
|
47
|
+
passport_series: '6509',
|
48
|
+
passport_number: '123456',
|
49
|
+
passport_date: '2020-01-01',
|
50
|
+
registration_address: '683031, г. Петропавловск-Камчатский, пр-кт. Карла Маркса, д. 21/1, офис 305'
|
51
|
+
}
|
52
|
+
}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -5,25 +5,37 @@ require 'dry-validation'
|
|
5
5
|
module TochkaCyclopsApi
|
6
6
|
module Schemas
|
7
7
|
module Requests
|
8
|
-
# Schema for beneficiary_data field of main schema
|
9
|
-
class BeneficiaryData < Dry::Validation::Contract
|
10
|
-
params do
|
11
|
-
required(:first_name).value(:string)
|
12
|
-
required(:last_name).value(:string)
|
13
|
-
optional(:middle_name).value(:string)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
8
|
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-create-beneficiary-ip
|
18
9
|
class CreateBeneficiaryIp < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class BeneficiaryData < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
required(:first_name).value(:string)
|
14
|
+
required(:last_name).value(:string)
|
15
|
+
optional(:middle_name).value(:string)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
19
|
schema do
|
20
20
|
required(:inn).value(:string)
|
21
21
|
optional(:nominal_account_code).value(:string)
|
22
22
|
optional(:nominal_account_bic).value(:string)
|
23
23
|
required(:beneficiary_data).schema(
|
24
|
-
TochkaCyclopsApi::Schemas::
|
24
|
+
TochkaCyclopsApi::Schemas::Requests::CreateBeneficiaryIp::BeneficiaryData.schema
|
25
25
|
)
|
26
26
|
end
|
27
|
+
|
28
|
+
EXAMPLE =
|
29
|
+
"{
|
30
|
+
inn: '7743745038',
|
31
|
+
nominal_account_code: '40702810338170022645',
|
32
|
+
nominal_account_bic: '044525225',
|
33
|
+
beneficiary_data: {
|
34
|
+
first_name: 'Иван',
|
35
|
+
last_name: 'Иванов',
|
36
|
+
middle_name: 'Иванович'
|
37
|
+
}
|
38
|
+
}"
|
27
39
|
end
|
28
40
|
end
|
29
41
|
end
|
@@ -5,25 +5,37 @@ require 'dry-validation'
|
|
5
5
|
module TochkaCyclopsApi
|
6
6
|
module Schemas
|
7
7
|
module Requests
|
8
|
-
# Schema for beneficiary_data field of main schema
|
9
|
-
class BeneficiaryData < Dry::Validation::Contract
|
10
|
-
params do
|
11
|
-
required(:name).value(:string)
|
12
|
-
required(:kpp).value(:string)
|
13
|
-
optional(:ogrn).value(:string)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
8
|
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-create-beneficiary-ul
|
18
9
|
class CreateBeneficiaryUl < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class BeneficiaryData < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
required(:name).value(:string)
|
14
|
+
required(:kpp).value(:string)
|
15
|
+
optional(:ogrn).value(:string)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
19
|
schema do
|
20
20
|
required(:inn).value(:string)
|
21
21
|
optional(:nominal_account_code).value(:string)
|
22
22
|
optional(:nominal_account_bic).value(:string)
|
23
23
|
required(:beneficiary_data).schema(
|
24
|
-
TochkaCyclopsApi::Schemas::Requests::BeneficiaryData.schema
|
24
|
+
TochkaCyclopsApi::Schemas::Requests::CreateBeneficiaryUl::BeneficiaryData.schema
|
25
25
|
)
|
26
26
|
end
|
27
|
+
|
28
|
+
EXAMPLE =
|
29
|
+
"{
|
30
|
+
inn: '7743745038',
|
31
|
+
nominal_account_code: '40702810338170022645',
|
32
|
+
nominal_account_bic: '044525225',
|
33
|
+
beneficiary_data: {
|
34
|
+
name: 'ООО «ТК ИнжСтройКомплект»',
|
35
|
+
kpp: '773401001',
|
36
|
+
ogrn: '1097746324169'
|
37
|
+
}
|
38
|
+
}"
|
27
39
|
end
|
28
40
|
end
|
29
41
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-deactivate-beneficiary
|
9
|
+
class DeactivateBeneficiary < Dry::Validation::Contract
|
10
|
+
schema do
|
11
|
+
required(:beneficiary_id).value(:string)
|
12
|
+
end
|
13
|
+
|
14
|
+
EXAMPLE = "
|
15
|
+
{
|
16
|
+
beneficiary_id: '981fee11-9969-4e80-9f5f-02af462cb51e'
|
17
|
+
}
|
18
|
+
"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-get-beneficiary
|
9
|
+
class GetBeneficiary < Dry::Validation::Contract
|
10
|
+
schema do
|
11
|
+
required(:beneficiary_id).value(:string)
|
12
|
+
end
|
13
|
+
|
14
|
+
EXAMPLE = "
|
15
|
+
{
|
16
|
+
beneficiary_id: '981fee11-9969-4e80-9f5f-02af462cb51e'
|
17
|
+
}
|
18
|
+
"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-list-beneficiary
|
9
|
+
class ListBeneficiary < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class Filters < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
optional(:inn).value(:string)
|
14
|
+
optional(:is_active).value(:bool)
|
15
|
+
optional(:legal_type).value(:string)
|
16
|
+
optional(:nominal_account_code).value(:string)
|
17
|
+
optional(:nominal_account_bic).value(:string)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
schema do
|
22
|
+
optional(:page).value(:integer)
|
23
|
+
optional(:per_page).value(:integer)
|
24
|
+
optional(:filters).schema(
|
25
|
+
TochkaCyclopsApi::Schemas::Requests::ListBeneficiary::Filters.schema
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
EXAMPLE = "
|
30
|
+
{
|
31
|
+
page: 2,
|
32
|
+
per_page: 20,
|
33
|
+
filters: {
|
34
|
+
is_active: true,
|
35
|
+
legal_type: 'F',
|
36
|
+
nominal_account_code: '000000000000000000000',
|
37
|
+
nominal_account_bic: '0000000000',
|
38
|
+
}
|
39
|
+
}
|
40
|
+
"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-update-beneficiary-fl
|
9
|
+
class UpdateBeneficiaryFl < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class BeneficiaryData < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
required(:first_name).value(:string)
|
14
|
+
required(:last_name).value(:string)
|
15
|
+
required(:birth_date).value(:string)
|
16
|
+
required(:birth_place).value(:string)
|
17
|
+
required(:passport_number).value(:string)
|
18
|
+
required(:passport_date).value(:string)
|
19
|
+
required(:registration_address).value(:string)
|
20
|
+
|
21
|
+
optional(:passport_series).value(:string)
|
22
|
+
optional(:middle_name).value(:string)
|
23
|
+
optional(:resident).value(:bool)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
schema do
|
28
|
+
required(:beneficiary_id).value(:string)
|
29
|
+
required(:beneficiary_data).schema(
|
30
|
+
TochkaCyclopsApi::Schemas::Requests::UpdateBeneficiaryFl::BeneficiaryData.schema
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
EXAMPLE = "
|
35
|
+
{
|
36
|
+
beneficiary_id: '981fee11-9969-4e80-9f5f-02af462cb51e',
|
37
|
+
beneficiary_data: {
|
38
|
+
first_name: 'Иван',
|
39
|
+
last_name: 'Иванов',
|
40
|
+
birth_date: '1990-01-24',
|
41
|
+
birth_place: 'г. Свердловск',
|
42
|
+
passport_series: '6509',
|
43
|
+
passport_number: '123456',
|
44
|
+
passport_date: '2020-01-01',
|
45
|
+
registration_address: '683031, г. Петропавловск-Камчатский, пр-кт. Карла Маркса, д. 21/1, офис 305'
|
46
|
+
}
|
47
|
+
}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-update-beneficiary-ip
|
9
|
+
class UpdateBeneficiaryIp < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class BeneficiaryData < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
required(:first_name).value(:string)
|
14
|
+
required(:last_name).value(:string)
|
15
|
+
optional(:middle_name).value(:string)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
schema do
|
20
|
+
required(:beneficiary_id).value(:string)
|
21
|
+
required(:beneficiary_data).schema(
|
22
|
+
TochkaCyclopsApi::Schemas::Requests::UpdateBeneficiaryIp::BeneficiaryData.schema
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
EXAMPLE = "
|
27
|
+
{
|
28
|
+
beneficiary_id: 981fee11-9969-4e80-9f5f-02af462cb51e,
|
29
|
+
beneficiary_data: {
|
30
|
+
first_name: 'Иван',
|
31
|
+
middle_name: 'Иванович',
|
32
|
+
last_name: 'Иванов'
|
33
|
+
}
|
34
|
+
}
|
35
|
+
"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-validation'
|
4
|
+
|
5
|
+
module TochkaCyclopsApi
|
6
|
+
module Schemas
|
7
|
+
module Requests
|
8
|
+
# https://api.tochka.com/static/v1/tender-docs/cyclops/main/api_v2.html#api-v2-update-beneficiary-ul
|
9
|
+
class UpdateBeneficiaryUl < Dry::Validation::Contract
|
10
|
+
# Schema for beneficiary_data field of main schema
|
11
|
+
class BeneficiaryData < Dry::Validation::Contract
|
12
|
+
params do
|
13
|
+
required(:name).value(:string)
|
14
|
+
required(:kpp).value(:string)
|
15
|
+
optional(:ogrn).value(:string)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
schema do
|
20
|
+
required(:beneficiary_id).value(:string)
|
21
|
+
required(:beneficiary_data).schema(
|
22
|
+
TochkaCyclopsApi::Schemas::Requests::UpdateBeneficiaryUl::BeneficiaryData.schema
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
EXAMPLE = "
|
27
|
+
{
|
28
|
+
beneficiary_id: '981fee11-9969-4e80-9f5f-02af462cb51e',
|
29
|
+
beneficiary_data: {
|
30
|
+
name: 'ООО \"Рога и Копыта\"',
|
31
|
+
kpp: '246301001'
|
32
|
+
}
|
33
|
+
}
|
34
|
+
"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-struct'
|
4
|
+
|
5
|
+
module Types
|
6
|
+
include Dry.Types()
|
7
|
+
end
|
8
|
+
|
9
|
+
module TochkaCyclopsApi
|
10
|
+
module Schemas
|
11
|
+
module Responses
|
12
|
+
# Response schema for activate_beneficiary request
|
13
|
+
class ActivateBeneficicary < Dry::Struct
|
14
|
+
# Schema for beneficiary field of main response
|
15
|
+
class BeneficiaryData < Dry::Struct
|
16
|
+
attribute :inn, Types::Strict::String
|
17
|
+
attribute :id, Types::Strict::String
|
18
|
+
end
|
19
|
+
|
20
|
+
attribute :beneficiary, BeneficiaryData
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'dry-struct'
|
2
|
+
|
3
|
+
module Types
|
4
|
+
include Dry.Types()
|
5
|
+
end
|
6
|
+
|
7
|
+
module TochkaCyclopsApi
|
8
|
+
module Schemas
|
9
|
+
module Responses
|
10
|
+
# Response schema for create_beneficiary_fl request
|
11
|
+
class CreateBeneficiaryFl < Dry::Struct
|
12
|
+
# Schema for beneficiary field of main response
|
13
|
+
class BeneficiaryData < Dry::Struct
|
14
|
+
attribute :inn, Types::Strict::String
|
15
|
+
attribute :id, Types::Strict::String
|
16
|
+
attribute :nominal_account_code, Types::Strict::String.optional
|
17
|
+
attribute :nominal_account_bic, Types::Strict::String.optional
|
18
|
+
end
|
19
|
+
|
20
|
+
attribute :beneficiary, BeneficiaryData
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -5,8 +5,17 @@ require 'dry-struct'
|
|
5
5
|
module TochkaCyclopsApi
|
6
6
|
module Schemas
|
7
7
|
module Responses
|
8
|
-
# Response
|
8
|
+
# Response schema for create_beneficiary_ip request
|
9
9
|
class CreateBeneficiaryIp < Dry::Struct
|
10
|
+
# Schema for beneficiary field of main response
|
11
|
+
class BeneficiaryData < Dry::Struct
|
12
|
+
attribute :inn, Types::Strict::String
|
13
|
+
attribute :id, Types::Strict::String
|
14
|
+
attribute :nominal_account_code, Types::Strict::String.optional
|
15
|
+
attribute :nominal_account_bic, Types::Strict::String.optional
|
16
|
+
end
|
17
|
+
|
18
|
+
attribute :beneficiary, BeneficiaryData
|
10
19
|
end
|
11
20
|
end
|
12
21
|
end
|
@@ -9,16 +9,16 @@ end
|
|
9
9
|
module TochkaCyclopsApi
|
10
10
|
module Schemas
|
11
11
|
module Responses
|
12
|
-
#
|
13
|
-
class BeneficiaryData < Dry::Struct
|
14
|
-
attribute :inn, Types::Strict::String
|
15
|
-
attribute :id, Types::Strict::String
|
16
|
-
attribute :nominal_account_code, Types::Strict::String.optional
|
17
|
-
attribute :nominal_account_bic, Types::Strict::String.optional
|
18
|
-
end
|
19
|
-
|
20
|
-
# Response chema for create_beneficiary_ul request
|
12
|
+
# Response schema for create_beneficiary_ul request
|
21
13
|
class CreateBeneficiaryUl < Dry::Struct
|
14
|
+
# Schema for beneficiary field of main response
|
15
|
+
class BeneficiaryData < Dry::Struct
|
16
|
+
attribute :inn, Types::Strict::String
|
17
|
+
attribute :id, Types::Strict::String
|
18
|
+
attribute :nominal_account_code, Types::Strict::String.optional
|
19
|
+
attribute :nominal_account_bic, Types::Strict::String.optional
|
20
|
+
end
|
21
|
+
|
22
22
|
attribute :beneficiary, BeneficiaryData
|
23
23
|
end
|
24
24
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry-struct'
|
4
|
+
|
5
|
+
module Types
|
6
|
+
include Dry.Types()
|
7
|
+
end
|
8
|
+
|
9
|
+
module TochkaCyclopsApi
|
10
|
+
module Schemas
|
11
|
+
module Responses
|
12
|
+
# Response schema for deactivate_beneficiary request
|
13
|
+
class DeactivateBeneficicary < Dry::Struct
|
14
|
+
# Schema for beneficiary field of main response
|
15
|
+
class BeneficiaryData < Dry::Struct
|
16
|
+
attribute :inn, Types::Strict::String
|
17
|
+
attribute :id, Types::Strict::String
|
18
|
+
end
|
19
|
+
|
20
|
+
attribute :beneficiary, BeneficiaryData
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -5,11 +5,14 @@ require 'dry-struct'
|
|
5
5
|
module TochkaCyclopsApi
|
6
6
|
module Schemas
|
7
7
|
module Responses
|
8
|
-
|
8
|
+
module Types
|
9
|
+
include Dry.Types()
|
10
|
+
end
|
11
|
+
# Response schema for bank's api errors
|
9
12
|
class Error < Dry::Struct
|
10
13
|
attribute :code, Types::Strict::Integer
|
11
14
|
attribute :message, Types::Strict::String
|
12
|
-
attribute :meta, Types::Strict::Array
|
15
|
+
attribute :meta, Types::Strict::Array.optional
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|