CAPI-125: Impose reasonable limits and enforce specs on model props (#62)

* CAPI-125: Impose reasonable limits and enforce specs on model props

* CAPI-125: Accomodate for ipv6-mapped ipv4 addresses

* CAPI-125: Fix standard id

* CAPI-125: Refine phone number format
This commit is contained in:
Andrew Mayorov 2017-05-12 17:23:24 +03:00 committed by GitHub
parent 831a19e146
commit 19713fc464
31 changed files with 116 additions and 36 deletions

View File

@ -7,9 +7,13 @@ required:
properties: properties:
account: account:
type: string type: string
pattern: '^\d{20}$'
bankName: bankName:
type: string type: string
maxLength: 100
bankPostAccount: bankPostAccount:
type: string type: string
pattern: '^\d{20}$'
bankBik: bankBik:
type: string type: string
pattern: '^\d{9}$'

View File

@ -23,3 +23,4 @@ allOf:
cardHolder: cardHolder:
description: Имя держателя карты description: Имя держателя карты
type: string type: string
maxLength: 100

View File

@ -5,8 +5,10 @@ required:
properties: properties:
name: name:
type: string type: string
maxLength: 100
categoryID: categoryID:
type: integer type: integer
format: int32 format: int32
description: description:
type: string type: string
maxLength: 1000

View File

@ -7,3 +7,4 @@ allOf:
properties: properties:
reason: reason:
type: string type: string
maxLength: 1000

View File

@ -6,3 +6,4 @@ properties:
fingerprint: fingerprint:
description: Уникальный отпечаток user agent'а плательщика description: Уникальный отпечаток user agent'а плательщика
type: string type: string
maxLength: 1000

View File

@ -4,6 +4,11 @@ properties:
email: email:
description: Адрес электронной почты description: Адрес электронной почты
type: string type: string
format: email
maxLength: 100
phoneNumber: phoneNumber:
description: Номер мобильного телефона description: |
Номер мобильного телефона с международным префиксом согласно
[E.164](https://en.wikipedia.org/wiki/E.164).
type: string type: string
format: '^\+\d{4,15}$'

View File

@ -10,3 +10,4 @@ allOf:
format: date-time format: date-time
reason: reason:
type: string type: string
maxLength: 1000

View File

@ -37,14 +37,17 @@ allOf:
currency: currency:
description: | description: |
Валюта, символьный код согласно Валюта, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string type: string
pattern: '^[A-Z]{3}$'
metadata: metadata:
description: Связанные с инвойсом метаданные description: Связанные с инвойсом метаданные
type: object type: object
product: product:
description: Наименование предлагаемых товаров или услуг description: Наименование предлагаемых товаров или услуг
type: string type: string
maxLength: 100
description: description:
description: Описание предлагаемых товаров или услуг description: Описание предлагаемых товаров или услуг
type: string type: string
maxLength: 1000

View File

@ -21,8 +21,9 @@ properties:
currency: currency:
description: | description: |
Валюта, символьный код согласно Валюта, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string type: string
pattern: '^[A-Z]{3}$'
metadata: metadata:
description: 'Метаданные, которые необходимо связать с инвойсом' description: 'Метаданные, которые необходимо связать с инвойсом'
type: object type: object
@ -35,6 +36,8 @@ properties:
product: product:
description: Наименование предлагаемых товаров или услуг description: Наименование предлагаемых товаров или услуг
type: string type: string
maxLength: 100
description: description:
description: Описание предлагаемых товаров или услуг description: Описание предлагаемых товаров или услуг
type: string type: string
maxLength: 1000

View File

@ -40,14 +40,17 @@ allOf:
currency: currency:
description: | description: |
Валюта, символьный код согласно Валюта, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string type: string
pattern: '^[A-Z]{3}$'
metadata: metadata:
description: Связанные с инвойсом метаданные description: Связанные с инвойсом метаданные
type: object type: object
product: product:
description: Наименование предлагаемых товаров или услуг description: Наименование предлагаемых товаров или услуг
type: string type: string
maxLength: 100
description: description:
description: Описание предлагаемых товаров или услуг description: Описание предлагаемых товаров или услуг
type: string type: string
maxLength: 1000

View File

@ -14,3 +14,4 @@ properties:
reason: reason:
description: Причина отмены или погашения инвойса description: Причина отмены или погашения инвойса
type: string type: string
maxLength: 1000

View File

@ -36,23 +36,29 @@ allOf:
currency: currency:
description: | description: |
Валюта, символьный код согласно Валюта, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string
paymentSession:
description: Идентификатор платежной сессии
type: string type: string
pattern: '^[A-Z]{3}$'
contactInfo: contactInfo:
description: Контактные данные плательщика description: Контактные данные плательщика
allOf: allOf:
- $ref: '#/definitions/ContactInfo' - $ref: '#/definitions/ContactInfo'
paymentSession:
description: Идентификатор платежной сессии
type: string
maxLength: 1000
paymentToolToken: paymentToolToken:
description: 'Токен платежного средства, предоставленного плательщиком' description: 'Токен платежного средства, предоставленного плательщиком'
type: string type: string
maxLength: 1000
paymentToolDetails: paymentToolDetails:
$ref: '#/definitions/PaymentToolDetails' $ref: '#/definitions/PaymentToolDetails'
ip: ip:
description: IP-адрес плательщика description: IP-адрес плательщика
type: string type: string
format: ip-address
maxLength: 45
fingerprint: fingerprint:
description: Уникальный отпечаток user agent'а плательщика description: Уникальный отпечаток user agent'а плательщика
type: string type: string
maxLength: 1000

View File

@ -16,8 +16,9 @@ properties:
currency: currency:
description: | description: |
Валюта платежей, символьный код согласно Валюта платежей, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string type: string
pattern: '^[A-Z]{3}$'
profit: profit:
description: Прибыль магазина description: Прибыль магазина
type: integer type: integer

View File

@ -1,14 +1,16 @@
type: object type: object
required: required:
- paymentToolToken
- paymentSession
- contactInfo - contactInfo
- paymentSession
- paymentToolToken
properties: properties:
paymentToolToken: contactInfo:
description: Токен платежного средства, предоставленного плательщиком $ref: '#/definitions/ContactInfo'
type: string
paymentSession: paymentSession:
description: Идентификатор платежной сессии description: Идентификатор платежной сессии
type: string type: string
contactInfo: maxLength: 1000
$ref: '#/definitions/ContactInfo' paymentToolToken:
description: Токен платежного средства, предоставленного плательщиком
type: string
maxLength: 1000

View File

@ -11,8 +11,9 @@ properties:
currency: currency:
description: | description: |
Валюта платежей, символьный код согласно Валюта платежей, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string type: string
pattern: '^[A-Z]{3}$'
profit: profit:
description: Прибыль магазина description: Прибыль магазина
type: integer type: integer

View File

@ -24,35 +24,39 @@ allOf:
type: string type: string
format: date-time format: date-time
amount: amount:
description: > description: |
Стоимость предлагаемых товаров или услуг, в минорных денежных Стоимость предлагаемых товаров или услуг, в минорных денежных
единицах, единицах, например в копейках в случае указания российских рублей в
качестве валюты.
например в копейках в случае указания российских рублей в качестве
валюты.
type: integer type: integer
format: int64 format: int64
minimum: 1 minimum: 1
currency: currency:
description: | description: |
Валюта, символьный код согласно Валюта, символьный код согласно
[RFC 4217](http://www.iso.org/iso/home/standards/currency_codes.htm). [ISO 4217](http://www.iso.org/iso/home/standards/currency_codes.htm).
type: string
paymentSession:
description: Идентификатор платежной сессии
type: string type: string
pattern: '^[A-Z]{3}$'
contactInfo: contactInfo:
description: Контактные данные плательщика description: Контактные данные плательщика
allOf: allOf:
- $ref: '#/definitions/ContactInfo' - $ref: '#/definitions/ContactInfo'
paymentSession:
description: Идентификатор платежной сессии
type: string
maxLength: 1000
paymentToolToken: paymentToolToken:
description: 'Токен платежного средства, предоставленного плательщиком' description: 'Токен платежного средства, предоставленного плательщиком'
type: string type: string
maxLength: 1000
paymentToolDetails: paymentToolDetails:
$ref: '#/definitions/PaymentToolDetails' $ref: '#/definitions/PaymentToolDetails'
ip: ip:
description: IP-адрес плательщика description: IP-адрес плательщика
type: string type: string
format: ip-address
maxLength: 45
fingerprint: fingerprint:
description: Уникальный отпечаток user agent'а плательщика description: Уникальный отпечаток user agent'а плательщика
type: string type: string
maxLength: 1000

View File

@ -13,3 +13,4 @@ allOf:
paymentSystem: paymentSystem:
description: Платежная система description: Платежная система
type: string type: string
maxLength: 100

View File

@ -3,4 +3,6 @@ required:
- reason - reason
properties: properties:
reason: reason:
description: Причина совершения операции
type: string type: string
maxLength: 1000

View File

@ -14,17 +14,25 @@ allOf:
properties: properties:
registeredName: registeredName:
type: string type: string
maxLength: 100
registeredNumber: registeredNumber:
type: string type: string
pattern: '^(\d{13}|\d{15})$'
inn: inn:
type: string type: string
pattern: '^\d{10}$'
actualAddress: actualAddress:
type: string type: string
maxLength: 1000
postAddress: postAddress:
type: string type: string
maxLength: 1000
representativePosition: representativePosition:
type: string type: string
maxLength: 100
representativeFullName: representativeFullName:
type: string type: string
maxLength: 100
representativeDocument: representativeDocument:
type: string type: string
maxLength: 100

View File

@ -10,3 +10,4 @@ properties:
type: string type: string
currency: currency:
type: string type: string
format: '^[A-Z]{3}$'

View File

@ -4,7 +4,9 @@ required:
properties: properties:
name: name:
type: string type: string
maxLength: 100
description: description:
type: string type: string
maxLength: 1000
location: location:
$ref: '#/definitions/ShopLocation' $ref: '#/definitions/ShopLocation'

View File

@ -7,3 +7,5 @@ allOf:
properties: properties:
url: url:
type: string type: string
format: uri
maxLength: 1000

View File

@ -20,7 +20,8 @@ properties:
description: | description: |
URL, на который будут поступать оповещения о произошедших событиях URL, на который будут поступать оповещения о произошедших событиях
type: string type: string
format: url format: uri
maxLength: 1000
publicKey: publicKey:
description: | description: |
Содержимое публичного ключа, служащего для проверки авторитативности Содержимое публичного ключа, служащего для проверки авторитативности

View File

@ -10,4 +10,5 @@ properties:
description: | description: |
URL, на который будут поступать оповещения о произошедших событиях URL, на который будут поступать оповещения о произошедших событиях
type: string type: string
format: url format: uri
maxLength: 1000

View File

@ -37,26 +37,33 @@ get:
description: Идентификатор инвойса description: Идентификатор инвойса
required: false required: false
type: string type: string
maxLength: 40
- name: paymentID - name: paymentID
in: query in: query
description: Идентификатор платежа description: Идентификатор платежа
required: false required: false
type: string type: string
maxLength: 40
- name: payerEmail - name: payerEmail
in: query in: query
description: 'Email, указанный при оплате' description: 'Email, указанный при оплате'
required: false required: false
type: string type: string
format: email
maxLength: 100
- name: payerIP - name: payerIP
in: query in: query
description: IP-адрес плательщика description: IP-адрес плательщика
required: false required: false
type: string type: string
format: ip-address
maxLength: 45
- name: payerFingerprint - name: payerFingerprint
in: query in: query
description: Уникальный отпечаток user agent'а плательщика description: Уникальный отпечаток user agent'а плательщика
required: false required: false
type: string type: string
maxLength: 1000
- name: cardNumberMask - name: cardNumberMask
in: query in: query
description: Маскированый номер карты description: Маскированый номер карты

View File

@ -26,26 +26,33 @@ get:
description: Идентификатор инвойса description: Идентификатор инвойса
required: false required: false
type: string type: string
maxLength: 40
- name: paymentID - name: paymentID
in: query in: query
description: Идентификатор платежа description: Идентификатор платежа
required: false required: false
type: string type: string
maxLength: 40
- name: payerEmail - name: payerEmail
in: query in: query
description: 'Email, указанный при оплате' description: 'Email, указанный при оплате'
required: false required: false
type: string type: string
format: email
maxLength: 100
- name: payerIP - name: payerIP
in: query in: query
description: IP-адрес плательщика description: IP-адрес плательщика
required: false required: false
type: string type: string
format: ip-address
maxLength: 45
- name: payerFingerprint - name: payerFingerprint
in: query in: query
description: Уникальный отпечаток user agent'а плательщика description: Уникальный отпечаток user agent'а плательщика
required: false required: false
type: string type: string
maxLength: 1000
- name: cardNumberMask - name: cardNumberMask
in: query in: query
description: Маскированый номер карты description: Маскированый номер карты

View File

@ -10,6 +10,7 @@ get:
description: Account ID description: Account ID
required: true required: true
type: string type: string
maxLength: 40
responses: responses:
'200': '200':
description: Account found description: Account found

View File

@ -6,11 +6,7 @@ get:
parameters: parameters:
- $ref: '#/parameters/requestID' - $ref: '#/parameters/requestID'
- $ref: '#/parameters/invoiceID' - $ref: '#/parameters/invoiceID'
- name: paymentID - $ref: '#/parameters/paymentID'
in: path
description: Идентификатор платежа
required: true
type: string
responses: responses:
'200': '200':
description: Данные платежа description: Данные платежа

View File

@ -27,8 +27,10 @@ post:
token: token:
description: Созданный токен description: Созданный токен
type: string type: string
maxLength: 1000
session: session:
description: Идентификатор созданной платежной сессии description: Идентификатор созданной платежной сессии
type: string type: string
maxLength: 1000
'400': '400':
$ref: '#/responses/BadRequest' $ref: '#/responses/BadRequest'

View File

@ -1,7 +1,7 @@
put: put:
description: >- description: |
Приостановить действие магазина. Этот тип заявок обрабатывается платформой Приостановить действие магазина. Этот тип заявок обрабатывается платформой
автоматически и исполняется сразу же после отправки автоматически и исполняется сразу же после отправки.
operationId: suspendShop operationId: suspendShop
tags: tags:
- Shops - Shops

View File

@ -110,6 +110,14 @@ parameters:
description: Идентификатор инвойса description: Идентификатор инвойса
required: true required: true
type: string type: string
maxLength: 40
paymentID:
name: paymentID
in: path
description: Идентификатор платежа в рамках инвойса
required: true
type: string
maxLength: 40
contractID: contractID:
name: contractID name: contractID
in: path in: path
@ -123,6 +131,7 @@ parameters:
description: Идентификатор webhook'а description: Идентификатор webhook'а
required: true required: true
type: string type: string
maxLength: 40
fromTime: fromTime:
name: fromTime name: fromTime
in: query in: query
@ -162,10 +171,11 @@ parameters:
name: limit name: limit
in: query in: query
description: Лимит выборки description: Лимит выборки
required: false required: true
type: integer type: integer
format: int32 format: int32
minimum: 1 minimum: 1
maximum: 1000
offset: offset:
name: offset name: offset
in: query in: query