Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions types/forge-apis/forge-apis-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,14 @@ import {
ItemsApi,
ObjectsApi,
ProjectsApi,
setDebug,
UserProfileApi,
VersionsApi,
} from "forge-apis";

// $ExpectType void
setDebug(true);

const authToken: AuthToken = {
access_token: "",
expires_in: 0,
Expand Down
5 changes: 5 additions & 0 deletions types/forge-apis/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@

/// <reference types="node" />

/**
* Optionally enable debugging, which sets `isDebugMode` on the shared `ApiClient` instance.
*/
export function setDebug(isDebug: boolean): void;

/**
* https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/scopes
*/
Expand Down
130 changes: 130 additions & 0 deletions types/sharetribe-flex-integration-sdk/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,80 @@ export interface Message {
relationships: MessageRelationships;
}

/**
* Lifecycle state of a file resource
*/
export type FileState = "pendingUpload" | "pendingVerification" | "available" | "verificationFailed";

/**
* A single automatic verification check performed on a file (e.g. `{ type: "malwareScan", result: "success" }`)
*/
export interface FileVerificationCheck {
type: string;
result: string;
}

/**
* File attributes
*/
export interface FileAttributes {
name: string;
size: number;
state: FileState;
verificationChecks: FileVerificationCheck[];
requiredVerificationChecks: string[];
createdAt: string;
stateUpdatedAt: string;
deleted: boolean;
}

/**
* File relationships
*/
export interface FileRelationships {
owner: {
data: ResourceReference;
};
marketplace: {
data: ResourceReference;
};
}

/**
* File resource
*/
export interface File {
id: UUID;
type: "file";
attributes: FileAttributes;
relationships: FileRelationships;
}

/**
* File attachment relationships. The `message` relationship is only present when the file is attached to a message.
*/
export interface FileAttachmentRelationships {
file: {
data: ResourceReference;
};
message?: {
data: ResourceReference;
};
}

/**
* File attachment resource (links a file to a transaction message)
*/
export interface FileAttachment {
id: UUID;
type: "fileAttachment";
attributes: {
scope: "public";
deleted: boolean;
};
relationships: FileAttachmentRelationships;
}

/**
* Event attributes
*/
Expand Down Expand Up @@ -527,6 +601,13 @@ export interface IntegrationSdk {
},
options?: PerRequestOptions,
) => Promise<MutationResponse<User>>;
/**
* Mark a user's email as verified. The email must match the user's primary email or pending email.
*/
verifyEmail: (
params: { id: UUID | string; email: string },
options?: PerRequestOptions,
) => Promise<MutationResponse<User>>;
};

listings: {
Expand Down Expand Up @@ -742,6 +823,55 @@ export interface IntegrationSdk {
show: (params: { id: UUID | string } & BaseQueryParams) => Promise<ShowResponse<StockReservation>>;
};

messages: {
/**
* Query messages. Either `transactionId` or `ids` must be provided.
*/
query: (
params:
& (
| { transactionId: UUID | string; ids?: Array<UUID | string> }
| { transactionId?: UUID | string; ids: Array<UUID | string> }
)
& PaginationParams
& BaseQueryParams,
) => Promise<QueryResponse<Message>>;
};

files: {
/**
* Query files
*/
query: (
params?:
& {
ids?: Array<UUID | string>;
messageId?: UUID | string;
ownerId?: UUID | string;
createdAtStart?: Date | string;
createdAtEnd?: Date | string;
}
& PaginationParams
& BaseQueryParams,
) => Promise<QueryResponse<File>>;
};

fileAttachments: {
/**
* Query file attachments
*/
query: (
params?:
& {
ids?: Array<UUID | string>;
fileIds?: Array<UUID | string>;
messageId?: UUID | string;
}
& PaginationParams
& BaseQueryParams,
) => Promise<QueryResponse<FileAttachment>>;
};

/**
* Revoke authentication token
*/
Expand Down
2 changes: 1 addition & 1 deletion types/sharetribe-flex-integration-sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@types/sharetribe-flex-integration-sdk",
"version": "1.11.9999",
"version": "1.13.9999",
"projects": [
"https://github.com/sharetribe/flex-integration-sdk-js"
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,5 +110,48 @@ sdk.stockAdjustments.create({
const adjustmentId: string = response.data.data.id.uuid;
});

// Mark a user's email as verified (added in integration-sdk 1.12)
sdk.users.verifyEmail({
id: "user-id",
email: "test@example.com",
}).then((response) => {
const userId: string = response.data.data.id.uuid;
});

// Query messages by transaction or by ids (added in integration-sdk 1.13)
sdk.messages.query({ transactionId: "transaction-id" }).then((response) => {
const firstMessage = response.data.data[0];
if (firstMessage) {
const content: string = firstMessage.attributes.content;
}
});
sdk.messages.query({ ids: ["message-id"], include: ["sender"] }).then((response) => {
const totalPages: number = response.data.meta.totalPages;
});

// Query files with the supported filters (added in integration-sdk 1.13)
sdk.files.query({
ownerId: "user-id",
messageId: "message-id",
ids: ["file-id"],
createdAtStart: new Date("2024-01-01T00:00:00.000Z"),
createdAtEnd: "2024-12-31T23:59:59.000Z",
include: ["owner"],
}).then((response) => {
const firstFile = response.data.data[0];
if (firstFile) {
const state: string = firstFile.attributes.state;
const ownerRef: string = firstFile.relationships.owner.data.id.uuid;
}
});

// Query file attachments by message or file ids (added in integration-sdk 1.13)
sdk.fileAttachments.query({ messageId: "message-id", fileIds: ["file-id"], include: ["file"] }).then((response) => {
const firstAttachment = response.data.data[0];
if (firstAttachment) {
const scope: "public" = firstAttachment.attributes.scope;
}
});

const rateLimiterConfig = util.prodQueryLimiterConfig;
const rateLimiter = util.createRateLimiter(rateLimiterConfig);
Loading