import DraftField from 'type/draft-field'; import JsonEndpoint from 'endpoint/json'; import InstanceNode from 'type/instance-node'; import NodeParameters from 'type/node-parameters'; import CreateInstanceOperation from 'operation/create-instance'; interface Input { readonly fields: DraftField[]; } class JsonCreateInstanceEndpoint extends JsonEndpoint { protected async process(): Promise { const node_parameters = this.getNodeParameters(); const fields = this.getDraftFields(); const repository = this.getRepository(); const account = this.getAccount(); const operation = new CreateInstanceOperation({ node_parameters, fields, repository, account }); return operation.perform(); } private getNodeParameters(): NodeParameters { const type_id = this.getUrlParameter('type_id'); const id = this.getUrlParameter('id'); return { type_id, id }; } private getDraftFields(): DraftField[] { const request_body = this.getRequestBody(); return request_body.fields || []; } } export default JsonCreateInstanceEndpoint;