in libs/logic-apps-shared/src/designer-client-services/lib/base/appService.ts [134:215]
private _addParameterInSchema(finalSchema: any, parameter: any) {
const schemaProperties = finalSchema.properties;
const { in: $in, name, required, schema } = parameter;
switch ($in) {
case 'header':
case 'query': {
const property = $in === 'header' ? 'headers' : 'queries';
this._setScalarParameterInSchema(finalSchema, property, parameter);
break;
}
case 'path': {
const pathProperty = 'pathParameters';
if (!finalSchema.properties[pathProperty]) {
// eslint-disable-next-line no-param-reassign
finalSchema.properties[pathProperty] = { type: 'object', properties: {}, required: [] };
finalSchema.required.push(pathProperty);
}
schemaProperties[pathProperty].properties[name] = {
'x-ms-url-encoding': 'single',
...parameter,
'x-ms-deserialization': { type: 'pathtemplateproperties', parameterReference: 'inputs.operationDetails.uri' },
};
if (required) {
schemaProperties[pathProperty].required.push(name);
}
break;
}
case 'formData': {
const formDataParameter = {
...parameter,
'x-ms-serialization': { property: { type: 'formdata', parameterReference: `formData.$.${name}` } },
};
if (parameter.type === 'file') {
if (!includes(name, '"') && !includes(name, '@')) {
const intl = getIntl();
const properties: Record<string, any> = {
$content: {
...parameter,
type: undefined,
'x-ms-summary': intl.formatMessage(
{ defaultMessage: '{fileContent} (content)', id: 'Rj/V1x', description: 'Title for file name parameter' },
{ fileContent: parameter['x-ms-summary'] ?? name }
),
'x-ms-serialization': { property: { type: 'formdata', parameterReference: `formData.$.${name}.$content` } },
name: undefined,
},
};
if (parameter.format !== 'contentonly') {
properties['$filename'] = {
...parameter,
type: 'string',
'x-ms-summary': intl.formatMessage(
{ defaultMessage: '{fileName} (file name)', id: 'UYRIS/', description: 'Title for file name parameter' },
{ fileName: parameter['x-ms-summary'] ?? name }
),
'x-ms-serialization': { property: { type: 'formdata', parameterReference: `formData.$.${name}.$filename` } },
name: undefined,
};
}
this._setScalarParameterInSchema(finalSchema, $in, {
...formDataParameter,
type: 'object',
properties,
required: required ? ['$content'] : [],
});
}
break;
}
this._setScalarParameterInSchema(finalSchema, $in, formDataParameter);
break;
}
default: {
// eslint-disable-next-line no-param-reassign
finalSchema.properties[$in] = schema;
break;
}
}
}