diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js index ee341403a..26efb0f3c 100644 --- a/lib/metadataTypes/ImportFile.js +++ b/lib/metadataTypes/ImportFile.js @@ -66,12 +66,12 @@ class ImportFile extends MetadataType { * @returns {Promise.} Promise */ static async retrieveAsTemplate(templateDir, name, templateVariables) { - const res = await this.client.rest.get( - '/automation/v1/imports/?$filter=name%20eq%20' + encodeURIComponent(name) - ); - if (Array.isArray(res?.items) && res?.items.length) { + // using '?$filter=name%20eq%20' + encodeURIComponent(name) would also work but that just retrieves more data for no reason + const cache = await this.retrieveForCache(null, null, 'name:' + name); + const metadataArr = Object.values(cache?.metadata); + if (Array.isArray(metadataArr) && metadataArr.length) { // eq-operator returns a similar, not exact match and hence might return more than 1 entry - const metadata = res.items.find((item) => item.name === name); + const metadata = metadataArr.find((item) => item.name === name); if (!metadata) { Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`); return; @@ -93,13 +93,13 @@ class ImportFile extends MetadataType { ); Util.logger.info(`- templated ${this.definition.type}: ${name}`); return { metadata: val, type: this.definition.type }; - } else if (res?.items) { + } else if (metadataArr) { Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`); } else { throw new Error( `Encountered unknown error when retrieveing ${ this.definition.typeName - } "${name}": ${JSON.stringify(res)}` + } "${name}": ${JSON.stringify(metadataArr)}` ); } } @@ -112,11 +112,17 @@ class ImportFile extends MetadataType { */ static async _getObjectIdForSingleRetrieve(key) { const response = await this.client.soap.retrieve('ImportDefinition', ['ObjectID'], { - filter: { - leftOperand: 'CustomerKey', - operator: 'equals', - rightOperand: key, - }, + filter: key.startsWith('name:') + ? { + leftOperand: 'Name', + operator: 'equals', + rightOperand: key.slice(5), + } + : { + leftOperand: 'CustomerKey', + operator: 'equals', + rightOperand: key, + }, }); return response?.Results?.length ? response.Results[0].ObjectID : null; } diff --git a/lib/metadataTypes/definitions/ImportFile.definition.js b/lib/metadataTypes/definitions/ImportFile.definition.js index 32fc1269b..0b3aa28a3 100644 --- a/lib/metadataTypes/definitions/ImportFile.definition.js +++ b/lib/metadataTypes/definitions/ImportFile.definition.js @@ -108,6 +108,7 @@ export default { template: true, }, encodingName: { + // only visible if retrieved with ID isCreateable: true, isUpdateable: true, retrieving: true,