From b5486cf79672dd4a3fc898e1c7ce3ed025b80f6f Mon Sep 17 00:00:00 2001 From: Harun Gitundu Date: Tue, 21 Jan 2025 10:54:32 +0300 Subject: [PATCH 1/3] advanced filtering --- datamanagement/source/api/foldersApi.ts | 73 ++++++++++++------- .../custom-code/dataManagementClient.ts | 6 +- .../source/model/comparisonTypes.ts | 25 +++++++ datamanagement/source/model/index.ts | 1 + samples/datamanagement.ts | 24 +++--- samples/package-lock.json | 10 +-- samples/package.json | 2 +- 7 files changed, 96 insertions(+), 45 deletions(-) create mode 100644 datamanagement/source/model/comparisonTypes.ts diff --git a/datamanagement/source/api/foldersApi.ts b/datamanagement/source/api/foldersApi.ts index 1398d7e..ede648e 100644 --- a/datamanagement/source/api/foldersApi.ts +++ b/datamanagement/source/api/foldersApi.ts @@ -18,6 +18,7 @@ import { RelationshipLinks } from '../model'; import { RelationshipRefs } from '../model'; import { RelationshipRefsPayload } from '../model'; import { Search } from '../model'; +import { ComparisonTypes } from '../model'; /** * FoldersApi - axios parameter creator * @export @@ -487,46 +488,68 @@ export const FoldersApiAxiosParamCreator = function (apsConfiguration?: IApsConf * @param {*} [options] Override http request option. * @throws {RequiredError} */ - getFolderSearch: async (accessToken: string, projectId: string, folderId: string, filterFieldName?: string, filter?: Array, pageNumber?: number, options: ApsServiceRequestConfig = {}): Promise => { - // verify required parameter 'projectId' is not null or undefined - assertParamExists('getFolderSearch', 'projectId', projectId) - // verify required parameter 'folderId' is not null or undefined - assertParamExists('getFolderSearch', 'folderId', folderId) + getFolderSearch: async ( + accessToken: string, + projectId: string, + folderId: string, + filters?: { field: string; operator?: ComparisonTypes; value: string }[], // Operator is optional + pageNumber?: number, + options: ApsServiceRequestConfig = {} + ): Promise => { + // Verify required parameters + assertParamExists('getFolderSearch', 'projectId', projectId); + assertParamExists('getFolderSearch', 'folderId', folderId); + + // Construct the endpoint path const localVarPath = `/data/v1/projects/{project_id}/folders/{folder_id}/search` .replace(`{${"project_id"}}`, encodeURIComponent(String(projectId))) .replace(`{${"folder_id"}}`, encodeURIComponent(String(folderId))); const localVarUrlObj = new URL(localVarPath, apsConfiguration.baseAddress); + + // Base options let baseOptions; if (apsConfiguration) { baseOptions = apsConfiguration.baseOptions; } - - const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + + // Request options + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options }; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - - await setBearerAuthToObject(localVarHeaderParameter, accessToken) - - if (filter) { - localVarQueryParameter[`filter[${filterFieldName}]`] = filter; + + // Set Bearer Auth + await setBearerAuthToObject(localVarHeaderParameter, accessToken); + + // Process filters + if (filters && filters.length > 0) { + filters.forEach(filter => { + const operator = filter.operator || ComparisonTypes.EqualTo; // Default to 'eq' if no operator is provided + const filterKey = `filter[${filter.field}]-${operator}`; + localVarQueryParameter[filterKey] = filter.value; + }); } - + + // Page number if (pageNumber !== undefined) { localVarQueryParameter['page[number]'] = pageNumber; } - - - + + // Set headers localVarHeaderParameter['User-Agent'] = 'APS SDK/DATA-MANAGEMENT/TypeScript/1.0.0'; setSearchParams(localVarUrlObj, localVarQueryParameter); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - + const headersFromBaseOptions = baseOptions?.headers ?? {}; + localVarRequestOptions.headers = { + ...localVarHeaderParameter, + ...headersFromBaseOptions, + ...options.headers, + }; + + // Return request args return { url: toPathString(localVarUrlObj), options: localVarRequestOptions, }; - }, + }, /** * Renames, moves, hides, or unhides a folder. Marking a BIM 360 Docs folder as hidden effectively deletes it. You can restore it by changing its ``hidden`` attribute. You can also move BIM 360 Docs folders by changing their parent folder. You cannot permanently delete BIM 360 Docs folders. They are tagged as hidden folders and are removed from the BIM 360 Docs UI and from regular Data Management API responses. You can use the hidden filter (``filter[hidden]=true``) to get a list of deleted folders with the [List Folder Contents](/en/docs/data/v2/reference/http/projects-project_id-folders-folder_id-contents-GET/) operation. Before you use the Data Management API to access BIM 360 Docs folders, provision your app through the BIM 360 Account Administrator portal. For details, see the [Manage Access to Docs tutorial](/en/docs/bim360/v1/tutorials/getting-started/manage-access-to-docs/). **Note:** This operation supports Autodesk Construction Cloud (ACC) Projects. For more information, see the [ACC Platform API documentation](/en.docs.acc.v1/overview/introduction/). * @summary Modify a Folder @@ -717,8 +740,8 @@ export const FoldersApiFp = function(sdkManager?: SdkManager) { * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getFolderSearch(accessToken: string, projectId: string, folderId: string, filterFieldName?: string, filter?: Array, pageNumber?: number, options?: ApsServiceRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.getFolderSearch(accessToken, projectId, folderId, filterFieldName, filter, pageNumber, options); + async getFolderSearch(accessToken: string, projectId: string, folderId: string, filters?: { field: string; operator?: ComparisonTypes; value: string }[], pageNumber?: number, options?: ApsServiceRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.getFolderSearch(accessToken, projectId, folderId, filters, pageNumber, options); return createRequestFunction(localVarAxiosArgs, sdkManager); }, /** @@ -877,7 +900,7 @@ export interface FoldersApiInterface { * @throws {RequiredError} * @memberof FoldersApiInterface */ - getFolderSearch(accessToken: string,projectId: string, folderId: string, filterFieldName?: string, filter?: Array, pageNumber?: number, options?: ApsServiceRequestConfig): Promise; + getFolderSearch(accessToken: string,projectId: string, folderId: string, filters?: { field: string; operator?: ComparisonTypes; value: string }[], pageNumber?: number, options?: ApsServiceRequestConfig): Promise; /** * Renames, moves, hides, or unhides a folder. Marking a BIM 360 Docs folder as hidden effectively deletes it. You can restore it by changing its ``hidden`` attribute. You can also move BIM 360 Docs folders by changing their parent folder. You cannot permanently delete BIM 360 Docs folders. They are tagged as hidden folders and are removed from the BIM 360 Docs UI and from regular Data Management API responses. You can use the hidden filter (``filter[hidden]=true``) to get a list of deleted folders with the [List Folder Contents](/en/docs/data/v2/reference/http/projects-project_id-folders-folder_id-contents-GET/) operation. Before you use the Data Management API to access BIM 360 Docs folders, provision your app through the BIM 360 Account Administrator portal. For details, see the [Manage Access to Docs tutorial](/en/docs/bim360/v1/tutorials/getting-started/manage-access-to-docs/). **Note:** This operation supports Autodesk Construction Cloud (ACC) Projects. For more information, see the [ACC Platform API documentation](/en.docs.acc.v1/overview/introduction/). @@ -1180,10 +1203,10 @@ export class FoldersApi extends BaseApi implements FoldersApiInterface { * @throws {RequiredError} * @memberof FoldersApi */ - public async getFolderSearch(accessToken: string, projectId: string, folderId: string, filterFieldName?: string, filter?: Array, pageNumber?: number, options?: ApsServiceRequestConfig) { + public async getFolderSearch(accessToken: string, projectId: string, folderId: string, filters?: { field: string; operator?: ComparisonTypes; value: string }[], pageNumber?: number, options?: ApsServiceRequestConfig) { this.logger.logInfo("Entered into getFolderSearch "); try { - const request = await FoldersApiFp(this.sdkManager).getFolderSearch(accessToken, projectId, folderId, filterFieldName, filter, pageNumber, options); + const request = await FoldersApiFp(this.sdkManager).getFolderSearch(accessToken, projectId, folderId, filters, pageNumber, options); const response = await request(this.axios); this.logger.logInfo(`getFolderSearch Request completed successfully with status code: ${response.status}`); return new ApiResponse(response,response.data); diff --git a/datamanagement/source/custom-code/dataManagementClient.ts b/datamanagement/source/custom-code/dataManagementClient.ts index 51b3fc1..a78ca06 100644 --- a/datamanagement/source/custom-code/dataManagementClient.ts +++ b/datamanagement/source/custom-code/dataManagementClient.ts @@ -2,7 +2,7 @@ import { ApiResponse, ApsServiceRequestConfig, BaseClient, IAuthenticationProvid import { CommandsApi, HubsApi, ItemsApi, ProjectsApi, FoldersApi, VersionsApi } from "../api"; import { CreatedDownload, CreatedVersion, Download, DownloadFormats, DownloadPayload, Downloads, FilterType, FolderContents, FolderPayload, FolderRefs, Job, ModifyFolderPayload, ModifyVersionPayload, Project, Projects, Search, StoragePayload, TopFolders, Version, VersionPayload } from "../model"; import { Hub, Hubs } from "../model"; -import { CheckPermission, CheckPermissionPayload, Command, PublishModelJobPayload, CommandPayload, CreatedItem, FilterDirection, FilterRefType, FilterTypeVersion, Folder, Item, ItemPayload, ItemTip, JsonApiVersion, JsonApiVersionValue, ListItems, ListItemsPayload, ListRefs, ListRefsPayload, ModifyItemPayload, Refs, RelationshipLinks, RelationshipRefs, RelationshipRefsPayload, Versions, PublishWithoutLinksPayload, PublishWithoutLinks, PublishModel, PublishModelPayload } from "../model"; +import { CheckPermission, CheckPermissionPayload, Command, PublishModelJobPayload, CommandPayload, CreatedItem, FilterDirection, FilterRefType, FilterTypeVersion, Folder, Item, ItemPayload, ItemTip, JsonApiVersion, JsonApiVersionValue, ListItems, ListItemsPayload, ListRefs, ListRefsPayload, ModifyItemPayload, Refs, RelationshipLinks, RelationshipRefs, RelationshipRefsPayload, Versions, PublishWithoutLinksPayload, PublishWithoutLinks, PublishModel, PublishModelPayload, ComparisonTypes } from "../model"; export class DataManagementClient extends BaseClient { public commandsApi: CommandsApi; @@ -429,14 +429,14 @@ export class DataManagementClient extends BaseClient { * @param {*} [options] Override http request option. * @throws {RequiredError} */ - public async getFolderSearch(projectId: string, folderId: string, optionalArgs?:{filterFieldName?: string , filterValue?: Array, pageNumber?: number, accessToken?: string, options?: ApsServiceRequestConfig}): Promise { + public async getFolderSearch(projectId: string, folderId: string, optionalArgs?:{filters?: { field: string; operator?: ComparisonTypes; value: string }[], pageNumber?: number, accessToken?: string, options?: ApsServiceRequestConfig}): Promise { if (!optionalArgs?.accessToken && !this.authenticationProvider) { throw new Error("Please provide a valid access token or an authentication provider"); } else if (!optionalArgs?.accessToken) { (optionalArgs ??= {}).accessToken = await this.authenticationProvider.getAccessToken(); } - const response = await this.foldersApi.getFolderSearch(optionalArgs?.accessToken,projectId, folderId, optionalArgs?.filterFieldName, optionalArgs?.filterValue, optionalArgs?.pageNumber, optionalArgs?.options); + const response = await this.foldersApi.getFolderSearch(optionalArgs?.accessToken,projectId, folderId, optionalArgs?.filters, optionalArgs?.pageNumber, optionalArgs?.options); return response.content; } diff --git a/datamanagement/source/model/comparisonTypes.ts b/datamanagement/source/model/comparisonTypes.ts new file mode 100644 index 0000000..bc6838e --- /dev/null +++ b/datamanagement/source/model/comparisonTypes.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ +/* eslint-disable */ + + +/** + * The type of the resource. Possible values are ``lt``, ``le``, ``eq``, ``ge``, ``gt``, ``starts``, ``ends``, ``contains``. + * @export + * @enum {string} + */ + +export const ComparisonTypes = { + LessThan: 'lt', + LessThanOrEqualTo: 'le', + EqualTo: 'eq', + GreaterThanOrEqualTO: 'ge', + GreaterThan: 'gt', + StartsWith: 'starts', + EndsWith: 'ends', + Contains: 'contains' +} as const; + +export type ComparisonTypes = typeof ComparisonTypes[keyof typeof ComparisonTypes]; + + + diff --git a/datamanagement/source/model/index.ts b/datamanagement/source/model/index.ts index 36c9ab5..d74d54e 100644 --- a/datamanagement/source/model/index.ts +++ b/datamanagement/source/model/index.ts @@ -23,6 +23,7 @@ export * from './commandData'; export * from './commandExecutionStatus'; export * from './commandPayload'; export * from './commandPayloadData'; +export * from './comparisonTypes'; export * from './conformingStatus'; export * from './createdDownload'; export * from './createdDownloadData'; diff --git a/samples/datamanagement.ts b/samples/datamanagement.ts index 7e10f2f..0e1005a 100644 --- a/samples/datamanagement.ts +++ b/samples/datamanagement.ts @@ -1,12 +1,12 @@ import { ApiResponse, SdkManager, SdkManagerBuilder, StaticAuthenticationProvider } from "@aps_sdk/autodesk-sdkmanager" -import { BaseAttributesExtensionObjectWithoutSchemaLink, BaseAttributesExtensionObjectWithSchemaLink, BaseAttributesExtensionObjectWithSchemaLinkSchema, CreatedVersion, CreatedVersionData, DataManagementClient, DownloadFormats, DownloadFormatsData, Downloads, FilterType, FilterTypeVersion, Folder, FolderContents, FolderContentsData, FolderData, FolderPayload, FolderPayloadData, FolderPayloadDataAttributes, FolderPayloadDataAttributesExtension, FolderPayloadDataRelationships, FolderPayloadDataRelationshipsParent, FolderPayloadDataRelationshipsParentData, FolderRefs, Hub, HubData, HubDataAttributes, Hubs, Item, ItemData, ItemPayload, ItemPayloadData, ItemPayloadDataAttributes, ItemPayloadDataAttributesExtension, ItemPayloadDataRelationships, ItemTip, JsonApiVersion, JsonApiVersionValue, ModifyFolderPayload, ModifyFolderPayloadData, ModifyFolderPayloadDataAttributes, ModifyVersionPayload, ModifyVersionPayloadData, ModifyVersionPayloadDataAttributes, Refs, Region, RelationshipLinks, RelationshipRefs, RelationshipRefsPayload, RelationshipRefsPayloadData, RelationshipRefsPayloadDataMeta, Search, TypeEntity, TypeFolder, TypeItem, TypeObject, TypeVersion, Version, VersionData, VersionPayload, VersionPayloadData, VersionPayloadDataAttributes, VersionPayloadDataAttributesExtension, VersionPayloadDataRelationships, VersionPayloadDataRelationshipsItem, VersionPayloadDataRelationshipsItemData, VersionPayloadDataRelationshipsStorage, VersionPayloadDataRelationshipsStorageData, Versions } from "@aps_sdk/data-management"; +import { BaseAttributesExtensionObjectWithoutSchemaLink, BaseAttributesExtensionObjectWithSchemaLink, BaseAttributesExtensionObjectWithSchemaLinkSchema, CommandsApi, ComparisonTypes, CreatedVersion, CreatedVersionData, DataManagementClient, DownloadFormats, DownloadFormatsData, Downloads, FilterType, FilterTypeVersion, Folder, FolderContents, FolderContentsData, FolderData, FolderPayload, FolderPayloadData, FolderPayloadDataAttributes, FolderPayloadDataAttributesExtension, FolderPayloadDataRelationships, FolderPayloadDataRelationshipsParent, FolderPayloadDataRelationshipsParentData, FolderRefs, Hub, HubData, HubDataAttributes, Hubs, Item, ItemData, ItemPayload, ItemPayloadData, ItemPayloadDataAttributes, ItemPayloadDataAttributesExtension, ItemPayloadDataRelationships, ItemTip, JsonApiVersion, JsonApiVersionValue, ModifyFolderPayload, ModifyFolderPayloadData, ModifyFolderPayloadDataAttributes, ModifyVersionPayload, ModifyVersionPayloadData, ModifyVersionPayloadDataAttributes, Refs, RelationshipLinks, RelationshipRefs, RelationshipRefsPayload, RelationshipRefsPayloadData, RelationshipRefsPayloadDataMeta, Search, TypeEntity, TypeFolder, TypeItem, TypeObject, TypeVersion, Version, VersionData, VersionPayload, VersionPayloadData, VersionPayloadDataAttributes, VersionPayloadDataAttributesExtension, VersionPayloadDataRelationships, VersionPayloadDataRelationshipsItem, VersionPayloadDataRelationshipsItemData, VersionPayloadDataRelationshipsStorage, VersionPayloadDataRelationshipsStorageData, Versions } from "@aps_sdk/data-management"; import 'dotenv/config'; import { Project, Projects, ProjectDataAttributes, TopFolders, StoragePayload, TypeFolderItemsForStorage, DownloadPayload, TypeDownloads, CreatedDownload, Job, Download } from "@aps_sdk/data-management"; import { CheckPermission, CheckPermissionPayload, CheckPermissionPayloadAttributes, CheckPermissionPayloadAttributesExtension, CheckPermissionPayloadAttributesExtensionData, CheckPermissionPayloadRelationships, CheckPermissionPayloadRelationshipsResources, CreatedItem, FilterDirection, FilterRefType, ItemPayloadDataRelationshipsParent, ItemPayloadDataRelationshipsParentData, ItemPayloadDataRelationshipsTip, ItemPayloadDataRelationshipsTipData, ItemPayloadIncludedAttributes, ItemPayloadIncludedAttributesExtension, ListItems, ListItemsPayload, ListItemsPayloadAttributes, ListItemsPayloadAttributesExtension, ListItemsPayloadAttributesExtensionData, ListItemsPayloadRelationships, ListItemsPayloadRelationshipsResources, ListRefs, ListRefsPayload, ListRefsPayloadAttributes, ListRefsPayloadAttributesExtension, ListRefsPayloadRelationships, ListRefsPayloadRelationshipsResources, ModifyItemPayload, ModifyItemPayloadData, ModifyItemPayloadDataAttributes, PublishModel, PublishModelJobPayload, PublishModelJobPayloadAttributes, PublishModelJobPayloadAttributesExtension, PublishModelJobPayloadRelationships, PublishModelJobPayloadRelationshipsResources, PublishModelPayload, PublishModelPayloadAttributes, PublishModelPayloadAttributesExtension, PublishModelPayloadRelationships, PublishModelPayloadRelationshipsResources, PublishWithoutLinks, PublishWithoutLinksPayload, PublishWithoutLinksPayloadAttributes, PublishWithoutLinksPayloadAttributesExtension, TypeCommands, TypeCommandtypeCheckPermission, TypeCommandtypeGetPublishModelJob, TypeCommandtypeListItems, TypeCommandtypeListRefs, TypeCommandtypePublishmodel, TypeCommandtypePublishWithoutLinks } from "@aps_sdk/data-management"; import { PublishWithoutLinksPayloadRelationships } from "@aps_sdk/data-management"; import { PublishWithoutLinksPayloadRelationshipsResources } from "@aps_sdk/data-management"; -const token: string = process.env.accessToken; +const token: string = "eyJhbGciOiJSUzI1NiIsImtpZCI6IlhrUFpfSmhoXzlTYzNZS01oRERBZFBWeFowOF9SUzI1NiIsInBpLmF0bSI6ImFzc2MifQ.eyJzY29wZSI6WyJ2aWV3YWJsZXM6cmVhZCIsImRhdGE6cmVhZCIsImRhdGE6d3JpdGUiLCJkYXRhOmNyZWF0ZSIsImRhdGE6c2VhcmNoIiwiYnVja2V0OmNyZWF0ZSIsImJ1Y2tldDpyZWFkIiwiYnVja2V0OnVwZGF0ZSIsImJ1Y2tldDpkZWxldGUiXSwiY2xpZW50X2lkIjoiZVdyRHR1TnhWdUdseW13bDRVd2JlYlJUbHVubXdPOGciLCJpc3MiOiJodHRwczovL2RldmVsb3Blci5hcGkuYXV0b2Rlc2suY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRvZGVzay5jb20iLCJqdGkiOiJNTko0Y0dzTU5JdmNmWjJmVWhPcnZuQzlMYjFVWGlPRG5oS1pkUUdOMlp1QjBKRGY5Qnp2ZFVFWkFqN1IxSWcxIiwiZXhwIjoxNzM2OTIyNzY3LCJ1c2VyaWQiOiI0UTdDUlhVQzNUQlMifQ.O2qRHEX-onjm2a7ALtGljJ58GlJzI-nZsKWzc7JwMrHhiuCVyBQP3NsI_DD1uqL3-yInYgkZoPl5Dwqh67kvwLc4CXSr2atapnD6ZCr9LmGDHUnrlC4KqOk4y5iGeJsjFj6qm5SBPNdC46sq4d3-3neiL_sH6ofyfn2zdacqoOH67m98JoQtDSCB79v9zUs1bp-7jMZkYh1qqx3dZzixurKOQ5PCHOReJy-T3D2aLTvNXCFOuHazec9m083HIh52CmdYqy1YHv91Rvk4vFi7LkPF2Z7sNzMDO6uyWd2HDBB7Dg65AOkiBu3J-p18JATLAbJM2iSxl84CEXBKOqRgmw"; let hub_id: string = process.env.hubId; let project_id: string = process.env.projectId; let folder_id: string = process.env.folderId; @@ -18,7 +18,7 @@ const sdkmanager: SdkManager = SdkManagerBuilder .create() .build(); -const staticAuthenticationProvider = new StaticAuthenticationProvider(process.env.accessToken); +const staticAuthenticationProvider = new StaticAuthenticationProvider(token); let dataManagementClient: DataManagementClient = new DataManagementClient({ sdkManager: sdkmanager, authenticationProvider: staticAuthenticationProvider }); @@ -220,8 +220,10 @@ async function getFolderSearch() { project_id, folder_id, { - filterFieldName: "displayName", - filterValue: ["filter1", "filter2"] + filters: [ + {field: "displayName", operator: ComparisonTypes.EqualTo, value: "drawingmyt.rvt"} + ], + pageNumber: 0 } ); console.log(search); @@ -229,8 +231,8 @@ async function getFolderSearch() { const folderId: string = current.id; const folderType: string = current.type; - console.log(current.attributes); - console.log(folderType); + console.log(current.attributes.displayName); + console.log(folderId); }); } catch (err) { console.error(err.message); @@ -342,7 +344,7 @@ async function patchFolder() { // getFolderRefs(); // getFolderRelationshipsLinks(); // getFolderRelationshipsRefs(); -// getFolderSearch(); +getFolderSearch(); // createFolder(); // createFolderRelationshipsRef(); // patchFolder(); @@ -1047,19 +1049,19 @@ async function topFolderDetail() { const projectTopFolders: TopFolders = await dataManagementClient.getProjectTopFolders(hub_id, project_id, { excludeDeleted: true }); - projectTopFolders.data.forEach( current => { + projectTopFolders.data.forEach(current => { const attributes = current.attributes; // The extensions property is deprecated. Use extension instead const extensions = attributes.extensions; - + const extension = attributes.extension; console.log(extensions); console.log(extension); }) } -topFolderDetail(); +// topFolderDetail(); async function getHubProjects() { diff --git a/samples/package-lock.json b/samples/package-lock.json index d8c10f2..5f0f7d3 100644 --- a/samples/package-lock.json +++ b/samples/package-lock.json @@ -7,13 +7,13 @@ "": { "name": "samples", "version": "1.0.0", - "license": "ISC", + "license": "Apache-2.0", "dependencies": { "@aps_sdk/authentication": "^1.0.0", "@aps_sdk/autodesk-sdkmanager": "^1.0.0", "@aps_sdk/construction-account-admin": "^1.0.0", "@aps_sdk/construction-issues": "^1.0.0", - "@aps_sdk/data-management": "^1.0.0", + "@aps_sdk/data-management": "file:../datamanagement/source/aps_sdk-data-management-1.0.1.tgz", "@aps_sdk/model-derivative": "^1.0.0", "@aps_sdk/oss": "^1.0.0", "@aps_sdk/webhooks": "^1.0.0", @@ -65,9 +65,9 @@ } }, "node_modules/@aps_sdk/data-management": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@aps_sdk/data-management/-/data-management-1.0.0.tgz", - "integrity": "sha512-xKgslM4xFYXbD5nEMMQUN8On415GXUFcw6PH2IP6hBg5rTyU7v9MUxocb9bR9stBBqUq5MlPmNsmkEjrm+7PmA==", + "version": "1.0.1", + "resolved": "file:../datamanagement/source/aps_sdk-data-management-1.0.1.tgz", + "integrity": "sha512-CG695RIHbEGOLQe0qOj3YmSKy5qVCCF0E/MQLvAfrsAXRUHv46ILnFi+sq2YzLLs7bg6cfu4xSZf+W1c8ydLDQ==", "license": "Apache-2.0", "dependencies": { "@aps_sdk/autodesk-sdkmanager": "^1.0.0", diff --git a/samples/package.json b/samples/package.json index f3847cd..13ffd88 100644 --- a/samples/package.json +++ b/samples/package.json @@ -13,7 +13,7 @@ "@aps_sdk/autodesk-sdkmanager": "^1.0.0", "@aps_sdk/construction-account-admin": "^1.0.0", "@aps_sdk/construction-issues": "^1.0.0", - "@aps_sdk/data-management": "^1.0.1", + "@aps_sdk/data-management": "file:../datamanagement/source/aps_sdk-data-management-1.0.1.tgz", "@aps_sdk/model-derivative": "^1.0.0", "@aps_sdk/oss": "^1.0.0", "@aps_sdk/webhooks": "^1.0.0", From 96534fe127d0ec3aeda7140bc892172155134e82 Mon Sep 17 00:00:00 2001 From: Harun Gitundu Date: Mon, 10 Mar 2025 12:37:15 +0300 Subject: [PATCH 2/3] Add support for advanced filtering for DM --- samples/datamanagement.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/samples/datamanagement.ts b/samples/datamanagement.ts index 0e1005a..72f694b 100644 --- a/samples/datamanagement.ts +++ b/samples/datamanagement.ts @@ -1,12 +1,12 @@ import { ApiResponse, SdkManager, SdkManagerBuilder, StaticAuthenticationProvider } from "@aps_sdk/autodesk-sdkmanager" -import { BaseAttributesExtensionObjectWithoutSchemaLink, BaseAttributesExtensionObjectWithSchemaLink, BaseAttributesExtensionObjectWithSchemaLinkSchema, CommandsApi, ComparisonTypes, CreatedVersion, CreatedVersionData, DataManagementClient, DownloadFormats, DownloadFormatsData, Downloads, FilterType, FilterTypeVersion, Folder, FolderContents, FolderContentsData, FolderData, FolderPayload, FolderPayloadData, FolderPayloadDataAttributes, FolderPayloadDataAttributesExtension, FolderPayloadDataRelationships, FolderPayloadDataRelationshipsParent, FolderPayloadDataRelationshipsParentData, FolderRefs, Hub, HubData, HubDataAttributes, Hubs, Item, ItemData, ItemPayload, ItemPayloadData, ItemPayloadDataAttributes, ItemPayloadDataAttributesExtension, ItemPayloadDataRelationships, ItemTip, JsonApiVersion, JsonApiVersionValue, ModifyFolderPayload, ModifyFolderPayloadData, ModifyFolderPayloadDataAttributes, ModifyVersionPayload, ModifyVersionPayloadData, ModifyVersionPayloadDataAttributes, Refs, RelationshipLinks, RelationshipRefs, RelationshipRefsPayload, RelationshipRefsPayloadData, RelationshipRefsPayloadDataMeta, Search, TypeEntity, TypeFolder, TypeItem, TypeObject, TypeVersion, Version, VersionData, VersionPayload, VersionPayloadData, VersionPayloadDataAttributes, VersionPayloadDataAttributesExtension, VersionPayloadDataRelationships, VersionPayloadDataRelationshipsItem, VersionPayloadDataRelationshipsItemData, VersionPayloadDataRelationshipsStorage, VersionPayloadDataRelationshipsStorageData, Versions } from "@aps_sdk/data-management"; +import { BaseAttributesExtensionObjectWithoutSchemaLink, BaseAttributesExtensionObjectWithSchemaLink, BaseAttributesExtensionObjectWithSchemaLinkSchema, CommandsApi, ComparisonTypes, CreatedVersion, CreatedVersionData, DataManagementClient, DownloadFormats, DownloadFormatsData, Downloads, FilterType, FilterTypeVersion, Folder, FolderContents, FolderContentsData, FolderData, FolderPayload, FolderPayloadData, FolderPayloadDataAttributes, FolderPayloadDataAttributesExtension, FolderPayloadDataRelationships, FolderPayloadDataRelationshipsParent, FolderPayloadDataRelationshipsParentData, FolderRefs, Hub, HubData, HubDataAttributes, Hubs, Item, ItemData, ItemPayload, ItemPayloadData, ItemPayloadDataAttributes, ItemPayloadDataAttributesExtension, ItemPayloadDataRelationships, ItemTip, JsonApiVersion, JsonApiVersionValue, ModifyFolderPayload, ModifyFolderPayloadData, ModifyFolderPayloadDataAttributes, ModifyVersionPayload, ModifyVersionPayloadData, ModifyVersionPayloadDataAttributes, Refs, Region, RelationshipLinks, RelationshipRefs, RelationshipRefsPayload, RelationshipRefsPayloadData, RelationshipRefsPayloadDataMeta, Search, TypeEntity, TypeFolder, TypeItem, TypeObject, TypeVersion, Version, VersionData, VersionPayload, VersionPayloadData, VersionPayloadDataAttributes, VersionPayloadDataAttributesExtension, VersionPayloadDataRelationships, VersionPayloadDataRelationshipsItem, VersionPayloadDataRelationshipsItemData, VersionPayloadDataRelationshipsStorage, VersionPayloadDataRelationshipsStorageData, Versions } from "@aps_sdk/data-management"; import 'dotenv/config'; import { Project, Projects, ProjectDataAttributes, TopFolders, StoragePayload, TypeFolderItemsForStorage, DownloadPayload, TypeDownloads, CreatedDownload, Job, Download } from "@aps_sdk/data-management"; import { CheckPermission, CheckPermissionPayload, CheckPermissionPayloadAttributes, CheckPermissionPayloadAttributesExtension, CheckPermissionPayloadAttributesExtensionData, CheckPermissionPayloadRelationships, CheckPermissionPayloadRelationshipsResources, CreatedItem, FilterDirection, FilterRefType, ItemPayloadDataRelationshipsParent, ItemPayloadDataRelationshipsParentData, ItemPayloadDataRelationshipsTip, ItemPayloadDataRelationshipsTipData, ItemPayloadIncludedAttributes, ItemPayloadIncludedAttributesExtension, ListItems, ListItemsPayload, ListItemsPayloadAttributes, ListItemsPayloadAttributesExtension, ListItemsPayloadAttributesExtensionData, ListItemsPayloadRelationships, ListItemsPayloadRelationshipsResources, ListRefs, ListRefsPayload, ListRefsPayloadAttributes, ListRefsPayloadAttributesExtension, ListRefsPayloadRelationships, ListRefsPayloadRelationshipsResources, ModifyItemPayload, ModifyItemPayloadData, ModifyItemPayloadDataAttributes, PublishModel, PublishModelJobPayload, PublishModelJobPayloadAttributes, PublishModelJobPayloadAttributesExtension, PublishModelJobPayloadRelationships, PublishModelJobPayloadRelationshipsResources, PublishModelPayload, PublishModelPayloadAttributes, PublishModelPayloadAttributesExtension, PublishModelPayloadRelationships, PublishModelPayloadRelationshipsResources, PublishWithoutLinks, PublishWithoutLinksPayload, PublishWithoutLinksPayloadAttributes, PublishWithoutLinksPayloadAttributesExtension, TypeCommands, TypeCommandtypeCheckPermission, TypeCommandtypeGetPublishModelJob, TypeCommandtypeListItems, TypeCommandtypeListRefs, TypeCommandtypePublishmodel, TypeCommandtypePublishWithoutLinks } from "@aps_sdk/data-management"; import { PublishWithoutLinksPayloadRelationships } from "@aps_sdk/data-management"; import { PublishWithoutLinksPayloadRelationshipsResources } from "@aps_sdk/data-management"; -const token: string = "eyJhbGciOiJSUzI1NiIsImtpZCI6IlhrUFpfSmhoXzlTYzNZS01oRERBZFBWeFowOF9SUzI1NiIsInBpLmF0bSI6ImFzc2MifQ.eyJzY29wZSI6WyJ2aWV3YWJsZXM6cmVhZCIsImRhdGE6cmVhZCIsImRhdGE6d3JpdGUiLCJkYXRhOmNyZWF0ZSIsImRhdGE6c2VhcmNoIiwiYnVja2V0OmNyZWF0ZSIsImJ1Y2tldDpyZWFkIiwiYnVja2V0OnVwZGF0ZSIsImJ1Y2tldDpkZWxldGUiXSwiY2xpZW50X2lkIjoiZVdyRHR1TnhWdUdseW13bDRVd2JlYlJUbHVubXdPOGciLCJpc3MiOiJodHRwczovL2RldmVsb3Blci5hcGkuYXV0b2Rlc2suY29tIiwiYXVkIjoiaHR0cHM6Ly9hdXRvZGVzay5jb20iLCJqdGkiOiJNTko0Y0dzTU5JdmNmWjJmVWhPcnZuQzlMYjFVWGlPRG5oS1pkUUdOMlp1QjBKRGY5Qnp2ZFVFWkFqN1IxSWcxIiwiZXhwIjoxNzM2OTIyNzY3LCJ1c2VyaWQiOiI0UTdDUlhVQzNUQlMifQ.O2qRHEX-onjm2a7ALtGljJ58GlJzI-nZsKWzc7JwMrHhiuCVyBQP3NsI_DD1uqL3-yInYgkZoPl5Dwqh67kvwLc4CXSr2atapnD6ZCr9LmGDHUnrlC4KqOk4y5iGeJsjFj6qm5SBPNdC46sq4d3-3neiL_sH6ofyfn2zdacqoOH67m98JoQtDSCB79v9zUs1bp-7jMZkYh1qqx3dZzixurKOQ5PCHOReJy-T3D2aLTvNXCFOuHazec9m083HIh52CmdYqy1YHv91Rvk4vFi7LkPF2Z7sNzMDO6uyWd2HDBB7Dg65AOkiBu3J-p18JATLAbJM2iSxl84CEXBKOqRgmw"; +const token: string = process.env.accessToken; let hub_id: string = process.env.hubId; let project_id: string = process.env.projectId; let folder_id: string = process.env.folderId; @@ -221,18 +221,27 @@ async function getFolderSearch() { folder_id, { filters: [ - {field: "displayName", operator: ComparisonTypes.EqualTo, value: "drawingmyt.rvt"} + // {field: "attributes.displayName", operator: ComparisonTypes.EqualTo, value: "racadvancedsampleprojecttwo.rvt"}, + // { field: "id", operator: ComparisonTypes.EqualTo, value: "urn:adsk.wipprod:fs.file:vf.-LZeF3RbSOq-8TrrAF8tbQ?version=2" }, + // { field: "attributes.extension.type", value: "versions:autodesk.core:Deleted" }, + // { field: "attributes.extension.type", operator: ComparisonTypes.EqualTo, value: "versions:autodesk.core:Deleted" }, + // { field: "attributes.extension.schema.href", operator: ComparisonTypes.EqualTo, value: "https://developer.api.autodesk.com/schema/v1/versions/versions:autodesk.core:Deleted-1.0" }, + // { field: "attributes.createUserName", value: "Harun Gitundu" }, + { field: "attributes.displayName", value: "dc8c73c4-d412-40e4-9a7e-e78d6d6b3892" }, ], pageNumber: 0 } ); - console.log(search); search.data.forEach((current) => { const folderId: string = current.id; const folderType: string = current.type; + console.log(current.attributes.extension.type); + console.log(current.attributes.extension.schema.href); + console.log(current.attributes.createUserName); console.log(current.attributes.displayName); console.log(folderId); + console.log(folderType); }); } catch (err) { console.error(err.message); From b47222c7db49b6f297adca51890edf5d878e2074 Mon Sep 17 00:00:00 2001 From: Harun Gitundu Date: Mon, 10 Mar 2025 12:42:27 +0300 Subject: [PATCH 3/3] update package.json file --- samples/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/package.json b/samples/package.json index 13ffd88..f3847cd 100644 --- a/samples/package.json +++ b/samples/package.json @@ -13,7 +13,7 @@ "@aps_sdk/autodesk-sdkmanager": "^1.0.0", "@aps_sdk/construction-account-admin": "^1.0.0", "@aps_sdk/construction-issues": "^1.0.0", - "@aps_sdk/data-management": "file:../datamanagement/source/aps_sdk-data-management-1.0.1.tgz", + "@aps_sdk/data-management": "^1.0.1", "@aps_sdk/model-derivative": "^1.0.0", "@aps_sdk/oss": "^1.0.0", "@aps_sdk/webhooks": "^1.0.0",