in packages/typespec-powershell/src/convertor/convertor.ts [342:380]
function createParameter(psContext: SdkContext, parameter: HttpOperationParameter, model: PwshModel): Parameter {
if (parameter.type === "query" && parameter.name === "api-version"
|| parameter.type === "path" && parameter.name === "subscriptionId") {
const matchParameters = (model.globalParameters || []).filter(p => p.language.default.serializedName === parameter.name);
if (matchParameters.length > 0) {
return matchParameters[0];
} else {
const paramSchema = parameter.name === "api-version" ? getSchemaForApiVersion(psContext, parameter.param.type) : (parameter.param.sourceProperty ? getSchemaForType(psContext, parameter.param.sourceProperty) : getSchemaForType(psContext, parameter.param));
const newParameter = new Parameter(pascalCase(deconstruct(parameter.name)), getDoc(psContext.program, parameter.param) || "", paramSchema);
if (newParameter.language.default.name === "ApiVersion") {
//to align with modelerfour
newParameter.language.default.name = "apiVersion";
}
newParameter.language.default.serializedName = parameter.name;
newParameter.protocol.http = newParameter.protocol.http ?? new Protocol();
newParameter.protocol.http.in = parameter.type;
newParameter.implementation = ImplementationLocation.Client;
newParameter.required = !parameter.param.optional;
model.globalParameters = model.globalParameters || [];
model.globalParameters.push(newParameter);
return newParameter;
}
} else {
// always create the parameter
const paramSchema = parameter.param.sourceProperty ? getSchemaForType(psContext, parameter.param.sourceProperty) : getSchemaForType(psContext, parameter.param);
const newParameter = new Parameter(parameter.name, getDoc(psContext.program, parameter.param) || "", paramSchema);
newParameter.language.default.serializedName = parameter.name;
newParameter.protocol.http = newParameter.protocol.http ?? new Protocol();
newParameter.protocol.http.in = parameter.type;
if ((<any>parameter).allowReserved) {
newParameter.extensions = newParameter.extensions || {};
newParameter.extensions["x-ms-skip-url-encoding"] = true;
}
// ToDo, we need to support x-ms-client is specified.
newParameter.implementation = ImplementationLocation.Method;
newParameter.required = !parameter.param.optional;
return newParameter;
}
}