@@ -17,6 +17,7 @@ import {
1717 DeleteObjectParams ,
1818 DeleteObjectsParams ,
1919 GetObjectsParams ,
20+ PatchObjectParam ,
2021} from "../models/index" ;
2122import { iteratePagedEndpoint , batched } from "../utilities" ;
2223import { callApi , AuthArgs } from "./apiFetch" ;
@@ -72,12 +73,12 @@ export async function getObjects({
7273 iTwinId,
7374 top,
7475 skip,
75- orderBy : kind ,
76+ orderBy,
7677 getAccessToken,
7778 baseUrl,
7879} : GetObjectsParams & AuthArgs ) : Promise < SceneObjectListResponse > {
7980 return callApi < SceneObjectListResponse > ( {
80- endpoint : `/${ sceneId } /objects?iTwinId=${ iTwinId } &$top=${ top } &$skip=${ skip } &orderBy=${ kind } ` ,
81+ endpoint : `/${ sceneId } /objects?iTwinId=${ iTwinId } &$top=${ top } &$skip=${ skip } &orderBy=${ orderBy } ` ,
8182 getAccessToken,
8283 baseUrl,
8384 postProcess : async ( response ) => {
@@ -208,6 +209,54 @@ export async function postObjects({
208209 } ;
209210}
210211
212+ /**
213+ * Updates a single scene object by its ID.
214+ * @param params - {@link PatchObjectParam}
215+ * @returns Updated scene object details.
216+ * @throws {ScenesApiError } If the API call fails or the response format is invalid.
217+ */
218+ export async function patchObject ( {
219+ sceneId,
220+ iTwinId,
221+ objectId,
222+ object,
223+ getAccessToken,
224+ baseUrl,
225+ } : PatchObjectParam & AuthArgs ) : Promise < SceneObjectResponse > {
226+ return callApi < SceneObjectResponse > ( {
227+ endpoint : `/${ sceneId } /objects/${ objectId } ?iTwinId=${ iTwinId } ` ,
228+ getAccessToken,
229+ baseUrl,
230+ postProcess : async ( response ) => {
231+ const responseJson = await response . json ( ) ;
232+ if ( ! response . ok ) {
233+ const err = responseJson . error as ScenesErrorResponse ;
234+ throw new ScenesApiError ( err , response . status ) ;
235+ }
236+ if ( ! isSceneObjectResponse ( responseJson ) ) {
237+ throw new ScenesApiError (
238+ {
239+ code : "InvalidResponse" , //@naron : this seemed repetitive
240+ message : "Error updating scene object: unexpected response format" ,
241+ } ,
242+ response . status ,
243+ ) ;
244+ }
245+ return responseJson ;
246+ } ,
247+ fetchOptions : {
248+ method : "PATCH" ,
249+ body : JSON . stringify ( object , ( _ , value ) =>
250+ value === undefined ? null : value ,
251+ ) ,
252+ } ,
253+ additionalHeaders : {
254+ Accept : "application/vnd.bentley.itwin-platform.v1+json" ,
255+ "Content-Type" : "application/json" ,
256+ } ,
257+ } ) ;
258+ }
259+
211260/**
212261 * Updates one or multiple scene objects.
213262 * @param params - {@link PatchObjectsParams}
0 commit comments