mirror of
https://github.com/valitydev/swag-payments.git
synced 2024-11-06 09:35:22 +00:00
Add properties merge plugin
This commit is contained in:
parent
bc192e4275
commit
fe0083b954
35
scripts/plugins/x-merge-properties.js
Normal file
35
scripts/plugins/x-merge-properties.js
Normal file
@ -0,0 +1,35 @@
|
||||
var jpointer = require('json-pointer');
|
||||
var mergePatch = require('json-merge-patch');
|
||||
|
||||
module.exports = {
|
||||
pathExpression: '$..["x-merge-properties"]',
|
||||
init: function(swagger) {
|
||||
console.log('* x-merge-properties plugin');
|
||||
},
|
||||
process: function(parent, name, jsonpath, swagger) {
|
||||
console.log('jsonpath' + jsonpath);
|
||||
|
||||
var value = parent[name];
|
||||
if (!Array.isArray(value)) {
|
||||
throw Error('x-merge-properties argument should be array at ' + jsonpath);
|
||||
}
|
||||
let props = {};
|
||||
let required = [];
|
||||
value.forEach(function(obj) {
|
||||
if (typeof obj !== 'object') throw Error('Can\'t merge non-object values at ' + jsonpath);
|
||||
if (obj.$ref && (typeof obj.$ref === 'string')) {
|
||||
obj = jpointer.get(swagger, obj.$ref.substring(1));
|
||||
}
|
||||
if (!obj.properties) throw Error('Can\'t merge properties is undefiend ' + jsonpath);
|
||||
props = mergePatch.apply(props, obj.properties);
|
||||
required = required.concat(obj.required);
|
||||
});
|
||||
delete parent[name];
|
||||
Object.assign(parent.properties, props);
|
||||
let arr = parent.required.concat(required);
|
||||
Object.assign(parent.required, arr);
|
||||
},
|
||||
finish: function(swagger) {
|
||||
// TODO: cleanup unused $refs
|
||||
},
|
||||
}
|
@ -1,13 +1,13 @@
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: '#/definitions/CustomerBindingStatus'
|
||||
- type: object
|
||||
required:
|
||||
- id
|
||||
- paymentResource
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор привязки
|
||||
type: string
|
||||
paymentResource:
|
||||
$ref: '#/definitions/PaymentResource'
|
||||
required:
|
||||
- id
|
||||
- paymentResource
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор привязки
|
||||
type: string
|
||||
paymentResource:
|
||||
$ref: '#/definitions/PaymentResource'
|
||||
|
||||
x-merge-properties:
|
||||
- $ref: '#/definitions/CustomerBindingStatus'
|
@ -1,56 +1,56 @@
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: '#/definitions/InvoiceStatus'
|
||||
- type: object
|
||||
required:
|
||||
- id
|
||||
- shopID
|
||||
- createdAt
|
||||
- dueDate
|
||||
- amount
|
||||
- currency
|
||||
- product
|
||||
- metadata
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор инвойса
|
||||
type: string
|
||||
shopID:
|
||||
description: Идентификатор магазина
|
||||
type: string
|
||||
externalID:
|
||||
$ref: '#/definitions/ExternalID'
|
||||
createdAt:
|
||||
description: Дата и время создания
|
||||
type: string
|
||||
format: date-time
|
||||
dueDate:
|
||||
description: Дата и время окончания действия
|
||||
type: string
|
||||
format: date-time
|
||||
amount:
|
||||
description: |
|
||||
Стоимость предлагаемых товаров или услуг, в минорных денежных единицах,
|
||||
например в копейках в случае указания российских рублей в качестве валюты.
|
||||
type: integer
|
||||
format: int64
|
||||
minimum: 1
|
||||
currency:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/Currency'
|
||||
product:
|
||||
description: Наименование предлагаемых товаров или услуг
|
||||
type: string
|
||||
maxLength: 100
|
||||
description:
|
||||
description: Описание предлагаемых товаров или услуг
|
||||
type: string
|
||||
maxLength: 1000
|
||||
invoiceTemplateID:
|
||||
description: Идентификатор шаблона (для инвойсов, созданных по шаблону).
|
||||
type: string
|
||||
cart:
|
||||
$ref: '#/definitions/InvoiceCart'
|
||||
metadata:
|
||||
description: Связанные с инвойсом метаданные
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
- shopID
|
||||
- createdAt
|
||||
- dueDate
|
||||
- amount
|
||||
- currency
|
||||
- product
|
||||
- metadata
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор инвойса
|
||||
type: string
|
||||
shopID:
|
||||
description: Идентификатор магазина
|
||||
type: string
|
||||
externalID:
|
||||
$ref: '#/definitions/ExternalID'
|
||||
createdAt:
|
||||
description: Дата и время создания
|
||||
type: string
|
||||
format: date-time
|
||||
dueDate:
|
||||
description: Дата и время окончания действия
|
||||
type: string
|
||||
format: date-time
|
||||
amount:
|
||||
description: |
|
||||
Стоимость предлагаемых товаров или услуг, в минорных денежных единицах,
|
||||
например в копейках в случае указания российских рублей в качестве валюты.
|
||||
type: integer
|
||||
format: int64
|
||||
minimum: 1
|
||||
currency:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/Currency'
|
||||
product:
|
||||
description: Наименование предлагаемых товаров или услуг
|
||||
type: string
|
||||
maxLength: 100
|
||||
description:
|
||||
description: Описание предлагаемых товаров или услуг
|
||||
type: string
|
||||
maxLength: 1000
|
||||
invoiceTemplateID:
|
||||
description: Идентификатор шаблона (для инвойсов, созданных по шаблону).
|
||||
type: string
|
||||
cart:
|
||||
$ref: '#/definitions/InvoiceCart'
|
||||
metadata:
|
||||
description: Связанные с инвойсом метаданные
|
||||
type: object
|
||||
|
||||
x-merge-properties:
|
||||
- $ref: '#/definitions/InvoiceStatus'
|
@ -1,46 +1,42 @@
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: '#/definitions/PaymentStatus'
|
||||
- type: object
|
||||
required:
|
||||
- id
|
||||
- invoiceID
|
||||
- createdAt
|
||||
- amount
|
||||
- currency
|
||||
- flow
|
||||
- payer
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор платежа
|
||||
type: string
|
||||
externalID:
|
||||
$ref: '#/definitions/ExternalID'
|
||||
invoiceID:
|
||||
description: 'Идентификатор инвойса, в рамках которого был создан платеж'
|
||||
type: string
|
||||
createdAt:
|
||||
description: Дата и время создания
|
||||
type: string
|
||||
format: date-time
|
||||
amount:
|
||||
description: >
|
||||
Стоимость предлагаемых товаров или услуг, в минорных денежных
|
||||
единицах,
|
||||
required:
|
||||
- id
|
||||
- invoiceID
|
||||
- createdAt
|
||||
- amount
|
||||
- currency
|
||||
- payer
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор платежа
|
||||
type: string
|
||||
externalID:
|
||||
$ref: '#/definitions/ExternalID'
|
||||
invoiceID:
|
||||
description: 'Идентификатор инвойса, в рамках которого был создан платеж'
|
||||
type: string
|
||||
createdAt:
|
||||
description: Дата и время создания
|
||||
type: string
|
||||
format: date-time
|
||||
amount:
|
||||
description: >
|
||||
Стоимость предлагаемых товаров или услуг, в минорных денежных
|
||||
единицах,
|
||||
|
||||
например в копейках в случае указания российских рублей в качестве
|
||||
валюты.
|
||||
type: integer
|
||||
format: int64
|
||||
minimum: 1
|
||||
currency:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/Currency'
|
||||
flow:
|
||||
$ref: '#/definitions/PaymentFlow'
|
||||
payer:
|
||||
$ref: '#/definitions/Payer'
|
||||
makeRecurrent:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/PaymentMakeRecurrent'
|
||||
- readOnly: true
|
||||
например в копейках в случае указания российских рублей в качестве
|
||||
валюты.
|
||||
type: integer
|
||||
format: int64
|
||||
minimum: 1
|
||||
currency:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/Currency'
|
||||
payer:
|
||||
$ref: '#/definitions/Payer'
|
||||
makeRecurrent:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/PaymentMakeRecurrent'
|
||||
|
||||
x-merge-properties:
|
||||
- $ref: '#/definitions/PaymentStatus'
|
@ -1,31 +1,31 @@
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: '#/definitions/RefundStatus'
|
||||
- type: object
|
||||
required:
|
||||
- id
|
||||
- createdAt
|
||||
- amount
|
||||
- currency
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор возврата
|
||||
type: string
|
||||
createdAt:
|
||||
description: Дата и время осуществления
|
||||
type: string
|
||||
format: date-time
|
||||
amount:
|
||||
description: >
|
||||
Сумма возврата, в минорных денежных единицах,
|
||||
например в копейках в случае указания российских рублей в качестве
|
||||
валюты.
|
||||
type: integer
|
||||
format: int64
|
||||
minimum: 1
|
||||
currency:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/Currency'
|
||||
reason:
|
||||
description: Причина осуществления возврата
|
||||
type: string
|
||||
required:
|
||||
- id
|
||||
- createdAt
|
||||
- amount
|
||||
- currency
|
||||
properties:
|
||||
id:
|
||||
description: Идентификатор возврата
|
||||
type: string
|
||||
createdAt:
|
||||
description: Дата и время осуществления
|
||||
type: string
|
||||
format: date-time
|
||||
amount:
|
||||
description: >
|
||||
Сумма возврата, в минорных денежных единицах,
|
||||
например в копейках в случае указания российских рублей в качестве
|
||||
валюты.
|
||||
type: integer
|
||||
format: int64
|
||||
minimum: 1
|
||||
currency:
|
||||
x-rebillyMerge:
|
||||
- $ref: '#/definitions/Currency'
|
||||
reason:
|
||||
description: Причина осуществления возврата
|
||||
type: string
|
||||
|
||||
x-merge-properties:
|
||||
- $ref: '#/definitions/RefundStatus'
|
Loading…
Reference in New Issue
Block a user