forge-server-utils
Version:
Tools for accessing Autodesk Forge APIs from Node.js apps and from browser.
215 lines • 9.82 kB
TypeScript
import { ForgeClient, IAuthOptions, Region } from './common';
/**
* Available webhook systems.
*/
export declare enum WebhookSystem {
Data = "data",
Derivative = "derivative",
RevitCloudWorksharing = "adsk.c4r",
FusionLifecycle = "adsk.flc.production"
}
/**
* Available webhook events.
* Note that only certain events can be used with specific systems, for example,
* `WebhookEvent.Data*` values can only be used with `WebhookSystem.Data`.
*/
export declare enum WebhookEvent {
DataVersionAdded = "dm.version.added",
DataVersionModified = "dm.version.modified",
DataVersionDeleted = "dm.version.deleted",
DataVersionMoved = "dm.version.moved",
DataVersionCopied = "dm.version.copied",
DataFolderAdded = "dm.folder.added",
DataFolderModified = "dm.folder.modified",
DataFolderDeleted = "dm.folder.deleted",
DataFolderMoved = "dm.folder.moved",
DataFolderCopied = "dm.folder.copied",
DerivativeExtractionFinished = "extraction.finished",
DerivativeExtractionUpdated = "extraction.updated",
RevitModelPublish = "model.publish",
RevitModelSync = "model.sync",
FusionItemClone = "item.clone",
FusionItemCreate = "item.create",
FusionItemLock = "item.lock",
FusionItemRelease = "item.release",
FusionItemUnlock = "item.unlock",
FusionItemUpdate = "item.update",
FusionWorkflowTransition = "workflow.transition"
}
/**
* Webhook status.
*/
export declare enum WebhookStatus {
Active = "active",
Inactive = "inactive"
}
export type WebhookScope = {
folder: string;
} | {
workflow: string;
} | {
workspace: string;
} | {
'workflow.transition': string;
};
/**
* List all event types available for specific webhook system.
* @param {WebhookSystem} system Webhook system (e.g. "data").
* @returns {WebhookEvent[]} List of webhook events.
*/
export declare function webhookSystemEvents(system: WebhookSystem): WebhookEvent[];
/**
* List all scope keys available for specific webhook event.
* @param {WebhookEvent} event Webhook event (e.g., "dm.folder.moved").
* @returns {string[]} List of scope names that can be used when creating or updating a webhook.
*/
export declare function webhookEventScopes(event: WebhookEvent): string[];
/**
* Webhook descriptor.
*/
export interface IWebhook {
hookId: string;
tenant: string;
callbackUrl: string;
createdBy: string;
event: string;
createdDate: string;
system: string;
creatorType: string;
status: WebhookStatus;
scope: WebhookScope;
urn: string;
}
/**
* Parameters when creating a webhook.
*/
export interface ICreateWebhookParams {
/**
* Callback URL registered for the webhook.
*/
callbackUrl: string;
/**
* An object that represents the extent to where the event is monitored.
* For example, if the scope is folder, the webhooks service generates a notification
* for the specified event occurring in any sub folder or item within that folder.
*/
scope: WebhookScope;
/**
* A user-defined JSON object, which you can use to store/set some custom information.
* The maximum size of the JSON object (content) should be less than 1KB.
*/
hookAttribute?: object;
/**
* JsonPath expression (for example, "$[?(@.ext=='txt')]") that can be used
* to filter the callbacks you receive.
*/
filter?: string;
}
/**
* Parameters when updating a webhook.
* Undefined properties are ignored, and null values
* can be used to clear the configuration property of webhook.
*/
export interface IUpdateWebhookParams {
/**
* Webhook status (can be either 'active' or 'inactive').
*/
status?: WebhookStatus;
/**
* JsonPath expression (for example, "$[?(@.ext=='txt')]") that can be used
* to filter the callbacks you receive.
*/
filter?: string | null;
/**
* A user-defined JSON object, which you can use to store/set some custom information.
* The maximum size of the JSON object (content) should be less than 1KB.
*/
hookAttribute?: object | null;
}
/**
* Client providing access to Autodesk Forge {@link https://forge.autodesk.com/en/docs/webhooks/v1/developers_guide/overview|webhooks APIs}.
* @tutorial webhooks
*/
export declare class WebhooksClient extends ForgeClient {
/**
* Initializes new client with specific authentication method.
* @param {IAuthOptions} auth Authentication object,
* containing either `client_id` and `client_secret` properties (for 2-legged authentication),
* or a single `token` property (for 2-legged or 3-legged authentication with pre-generated access token).
* @param {string} [host="https://developer.api.autodesk.com"] Forge API host.
* @param {Region} [region="US"] Forge availability region ("US" or "EMEA").
*/
constructor(auth: IAuthOptions, host?: string, region?: Region);
private _pager;
private _collect;
/**
* Iterates over all webhooks, webhooks for specific system, or webhooks for specific system and event
* ({@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/hooks-GET|docs},
* {@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-hooks-GET|docs},
* {@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-events-event-hooks-GET|docs}).
* @async
* @generator
* @param {WebhookSystem} [system] Optional webhook system (e.g., "data") to filter the results.
* @param {WebhookEvent} [event] Optional webhook event (e.g., "dm.version.copied") to filter the results.
* @yields {AsyncIterable<IWebhook[]>} Single page of webhooks.
* @throws Error when the request fails, for example, due to insufficient rights, or incorrect scopes.
*/
iterateHooks(system?: WebhookSystem, event?: WebhookEvent): AsyncIterable<IWebhook[]>;
/**
* Lists all webhooks, webhooks for specific system, or webhooks for specific system and event
* ({@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/hooks-GET|docs},
* {@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-hooks-GET|docs},
* {@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-events-event-hooks-GET|docs}).
* @async
* @param {WebhookSystem} [system] Optional webhook system (e.g., "data") to filter the results.
* @param {WebhookEvent} [event] Optional webhook event (e.g., "dm.version.copied") to filter the results.
* @returns {Promise<IWebhook[]>} List of all webhooks.
* @throws Error when the request fails, for example, due to insufficient rights, or incorrect scopes.
*/
listHooks(system?: WebhookSystem, event?: WebhookEvent): Promise<IWebhook[]>;
/**
* Provides details about a specific webhook
* ({@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-events-event-hooks-hook_id-GET|docs}).
* @async
* @param {WebhookSystem} system Webhook system (e.g., "data").
* @param {WebhookEvent} event Webhook event (e.g., "dm.version.copied").
* @param {string} id Webhook ID.
* @returns {Promise<IWebhook>} Webhook details.
* @throws Error when the request fails, for example, due to insufficient rights, or incorrect scopes.
*/
getHookDetails(system: WebhookSystem, event: WebhookEvent, id: string): Promise<IWebhook>;
/**
* Creates new webhook, either for entire webhook system, or for a specific event
* ({@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-hooks-POST|docs},
* {@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-events-event-hooks-POST|docs}).
* @param {WebhookSystem} system Webhook system (e.g., "data").
* @param {WebhookEvent | undefined} event Optional webhook event (e.g., "dm.version.copied").
* If undefined, the webhook will be defined for the entire webhook system.
* @param {ICreateWebhookParams} params Parameters of the new webhook.
* @returns {Promise<string | IWebhook[]>} Webhook ID (when both `system` and `event` parameters are provided).
* or a list of webhooks (when only `system` is specified).
* @throws Error when the request fails, for example, due to insufficient rights, or incorrect scopes.
*/
createHook(system: WebhookSystem, event: WebhookEvent | undefined, params: ICreateWebhookParams): Promise<string | IWebhook[]>;
/**
* Updates an existing webhook
* ({@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-events-event-hooks-hook_id-PATCH|docs}).
* @async
* @param {WebhookSystem} system Webhook system (e.g., "data").
* @param {WebhookEvent} event Webhook event (e.g., "dm.version.copied").
* @param {string} id Webhook ID.
* @param {IUpdateWebhookParams} params Parameters to update. Undefined properties are ignored,
* and "null" values can be used to clear the specific configuration of the webhook.
*/
updateHook(system: WebhookSystem, event: WebhookEvent, id: string, params: IUpdateWebhookParams): Promise<void>;
/**
* Deletes a webhook
* ({@link https://forge.autodesk.com/en/docs/webhooks/v1/reference/http/systems-system-events-event-hooks-hook_id-DELETE|docs}).
* @async
* @param {WebhookSystem} system Webhook system (e.g., "data").
* @param {WebhookEvent} event Webhook event (e.g., "dm.version.copied").
* @throws Error when the request fails, for example, due to insufficient rights, or incorrect scopes.
*/
deleteHook(system: WebhookSystem, event: WebhookEvent, id: string): Promise<void>;
}
//# sourceMappingURL=webhooks.d.ts.map