@twinfinity/core
    Preparing search index...

    Interface BimCoreApiClient

    Implementing this interface allows the developer to customize where the container and IFC data is loaded from.

    interface BimCoreApiClient {
        id: string;
        layers: LayerApiClient;
        mapBox: MapBoxApiClient;
        get<T>(
            absoluteOrRelativeUrl: string | URL,
            converter: (r: Response) => TypedResponse<T>,
            init?: RequestInit,
        ): Promise<TypedResponse<T>>;
        getChanges<T extends BimChange = BimChange>(
            parent: BimChange | BimContainer | URL,
            query: BimChangeIdQuery<T> | BimChangeMetadataQuery<T>,
        ): Promise<TypedResponse<T[]>>;
        getContainers(id?: string): Promise<BimContainer[]>;
        getIfcChanges(
            parent: BimChange | BimContainer | URL,
        ): Promise<BimChangeIfc[]>;
    }

    Hierarchy (View Summary)

    Index

    Properties

    id: string

    Uniquely identifies the backend the client connects to. If the client connects to a REST API its probably the host name of the API.

    API to handle layer functionality. A Layer is a way to enrich an existing change in the database with extra data. This data will be versioned separately from the change the layer is attached to.

    API to access MapBox functionality.

    Methods

    • Issues an HTTP GET specified url.

      Type Parameters

      • T

        The type of data the specified converter will convert the HTTP response body to.

      Parameters

      • absoluteOrRelativeUrl: string | URL

        Url to issue HTTP GET to.

      • converter: (r: Response) => TypedResponse<T>

        Converter for response. See HttpResponseType for predefined converters.

      • Optionalinit: RequestInit

        Optional settings for to HTTP GET (fetch).

      Returns Promise<TypedResponse<T>>

      a TypedResponse containing the status code and the response value that resulted from using the specified converter.

      // Gets a JSON object and convert it to the MyObj interface.
      const myObjResponse = this.get<MyObj>("http://foo.com/jsonendpoint", HttpResponseType.json)
      const myObj = myObjResponse.status === 200 ? (await myObjResponse.value) : undefined;
      // Gets a binary ArrayBuffer.
      const myArrayBufferResponse = this.get("http://foo.com/jsonendpoint", HttpResponseType.arrayBuffer)
      const myArrayBuffer = myArrayBufferResponse.status === 200 ? (await myArrayBufferResponse.value) : undefined;
    • Retrieves all changes in and below a specified parent change and that matches a specific query. Use typescript type inference cast directly to a specific BimChange type if you know exactly which types the query will return

      Type Parameters

      Parameters

      Returns Promise<TypedResponse<T[]>>

      Changes in container that matched the filterQuery.

      const dwgChanges: BimChangeDwg[] = api.getChanges(container, {query: "dwg.status=Processed"});
      
      const ifcFailures = api.getChanges(container, PredefinedBimChangeMetadataQuery.ifc(BimChangeStatus.Failed));
      

      It is expensive to get all changes in a container. Use a query to filter out only the changes you are interested in. Getting everything is discouraged as there can be 100k+ changes in a container. Be specific. As it is expensive DO NOT use this method to get the changes for many/all containers in the system. There can be many containers and many changes (like 100k+) in each container.

    • Gets all containers (and workspaces) or just a specific one.

      Parameters

      • Optionalid: string

        If given, only container with specific id is returned. Otherwise all containers are returned.

      Returns Promise<BimContainer[]>

      List of containers. May be empty if no containers were found or matched the specified id.

    • Retrieves all (successfully processed) IFC changes located in and below a specified parent.

      Parameters

      Returns Promise<BimChangeIfc[]>

      All successfully processed IFC changes in the specified container.

      As it is expensive DO NOT use this method to get the IFC changes for many/all containers in the system. It is however reasonable to use this method to get the changes for a few specific containers.