From 51e3dd4c3c0cf9bb4f167d28b2d138dcb1ee29b9 Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Thu, 10 Sep 2026 13:58:31 +0530 Subject: [PATCH 1/7] add share endpoint inside sdk --- packages/sdk/package.json | 2 +- packages/sdk/src/index.ts | 22 ++++++++++++++++++++++ packages/sdk/src/types.ts | 17 +++++++++++++++++ packages/sdk/src/urls.ts | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1788af3..cc1dc76 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@mermaidchart/sdk", - "version": "0.2.7", + "version": "0.2.8", "description": "Access the MermaidChart services with OAuth and type safety.", "browser": "dist/bundle.iife.js", "types": "dist/index.d.ts", diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 9200077..1b7e7d9 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -24,9 +24,13 @@ import type { RegenerateDiagramRequest, RegenerateDiagramResponse, AICreditsUsage, + ShareDiagramRequest, + ShareDiagramResponse, } from './types.js'; import { URLS } from './urls.js'; +export type { ShareDiagramAccess, ShareDiagramRequest, ShareDiagramResponse } from './types.js'; + const defaultBaseURL = 'https://www.mermaid.ai'; // "http://127.0.0.1:5174" const authorizationURLTimeout = 60_000; @@ -315,6 +319,24 @@ export class MermaidChart { return raw.data; } + /** + * Generates a copy-link style share URL for a diagram, so it can be shared + * with a colleague without opening the Mermaid Chart web app. + * + * @param documentID - The ID of the document to share. + * @param request - Optional access level to grant recipients (defaults to 'View'). + */ + public async shareDiagram( + documentID: MCDocument['documentID'], + request: ShareDiagramRequest = {}, + ): Promise { + const response = await this.axios.post( + URLS.rest.documents.pick({ documentID }).share, + request, + ); + return response.data; + } + /** * Repairs a broken Mermaid diagram using AI. * diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 1e95651..5e4fadf 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -188,6 +188,23 @@ export interface DiagramChatResponse { documentChatThreadID?: string; } +/** + * Access level to grant via a generated share link. + */ +export type ShareDiagramAccess = 'Edit' | 'Comment' | 'View'; + +export interface ShareDiagramRequest { + access?: ShareDiagramAccess; + emailAddresses?: string[]; +} + + +export interface ShareDiagramResponse { + shareUrl: string; + access: ShareDiagramAccess; + emailsSent?: string[]; +} + /** * Response from repairing a diagram. * Matches OpenAIGenerationResult from collab. diff --git a/packages/sdk/src/urls.ts b/packages/sdk/src/urls.ts index d525eac..588295f 100644 --- a/packages/sdk/src/urls.ts +++ b/packages/sdk/src/urls.ts @@ -23,6 +23,7 @@ export const URLS = { return { presentations: `${baseURL}/presentations`, self: baseURL, + share: `${baseURL}/share`, withVersion: `${baseURL}${queryParams}`, }; }, From a36a404573fb9ead3dc06d91c71f73cf897b94c3 Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Thu, 10 Sep 2026 15:02:33 +0530 Subject: [PATCH 2/7] updated test file --- packages/sdk/src/index.test.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/sdk/src/index.test.ts b/packages/sdk/src/index.test.ts index 20d24d8..d022ba7 100644 --- a/packages/sdk/src/index.test.ts +++ b/packages/sdk/src/index.test.ts @@ -222,4 +222,32 @@ describe('MermaidChart', () => { ).rejects.toThrow(AICreditsLimitExceededError); }); }); + + describe('#shareDiagram', () => { + beforeEach(async () => { + await client.setAccessToken('test-access-token'); + }); + + it('should POST to the document share endpoint with the request body and return response.data', async () => { + const jsonResponse = { + shareUrl: 'https://test.mermaidchart.invalid/app/projects/proj-1/diagrams/doc-123/share/invite/test-token', + access: 'View' as const, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const postSpy = vi.spyOn((client as any).axios, 'post').mockResolvedValue({ + data: jsonResponse, + }); + + const requestBody = { access: 'View' as const }; + + const result = await client.shareDiagram('doc-123', requestBody); + + expect(postSpy).toHaveBeenCalledWith( + URLS.rest.documents.pick({ documentID: 'doc-123' }).share, + requestBody, + ); + expect(result).toEqual(jsonResponse); + }); + }); }); From 265074c5cc68c047338e63fc9485d91a00200c3c Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Thu, 10 Sep 2026 15:07:30 +0530 Subject: [PATCH 3/7] updated changeset --- .changeset/fluffy-birds-vanish.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fluffy-birds-vanish.md diff --git a/.changeset/fluffy-birds-vanish.md b/.changeset/fluffy-birds-vanish.md new file mode 100644 index 0000000..4d53cd4 --- /dev/null +++ b/.changeset/fluffy-birds-vanish.md @@ -0,0 +1,5 @@ +--- +'@mermaidchart/sdk': patch +--- + +Added share diagram endpoint for mermaid commercial plugin From f8ebe90e7771933709c55ebec735dd7095ed74ff Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Thu, 10 Sep 2026 15:10:20 +0530 Subject: [PATCH 4/7] reverted the version bump --- packages/sdk/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/package.json b/packages/sdk/package.json index cc1dc76..1788af3 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@mermaidchart/sdk", - "version": "0.2.8", + "version": "0.2.7", "description": "Access the MermaidChart services with OAuth and type safety.", "browser": "dist/bundle.iife.js", "types": "dist/index.d.ts", From 86a8fc4b301ab99d550f9057a1025d288f85d837 Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Thu, 10 Sep 2026 15:17:37 +0530 Subject: [PATCH 5/7] resolve lint and copilot issues --- packages/sdk/src/index.test.ts | 24 +++++++++++++++++++++++- packages/sdk/src/types.ts | 1 - 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/index.test.ts b/packages/sdk/src/index.test.ts index d022ba7..cea1a9a 100644 --- a/packages/sdk/src/index.test.ts +++ b/packages/sdk/src/index.test.ts @@ -230,7 +230,8 @@ describe('MermaidChart', () => { it('should POST to the document share endpoint with the request body and return response.data', async () => { const jsonResponse = { - shareUrl: 'https://test.mermaidchart.invalid/app/projects/proj-1/diagrams/doc-123/share/invite/test-token', + shareUrl: + 'https://test.mermaidchart.invalid/app/projects/proj-1/diagrams/doc-123/share/invite/test-token', access: 'View' as const, }; @@ -249,5 +250,26 @@ describe('MermaidChart', () => { ); expect(result).toEqual(jsonResponse); }); + + it('should default to an empty request body when none is provided', async () => { + const jsonResponse = { + shareUrl: + 'https://test.mermaidchart.invalid/app/projects/proj-1/diagrams/doc-123/share/invite/test-token', + access: 'View' as const, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const postSpy = vi.spyOn((client as any).axios, 'post').mockResolvedValue({ + data: jsonResponse, + }); + + const result = await client.shareDiagram('doc-123'); + + expect(postSpy).toHaveBeenCalledWith( + URLS.rest.documents.pick({ documentID: 'doc-123' }).share, + {}, + ); + expect(result).toEqual(jsonResponse); + }); }); }); diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 5e4fadf..f3751c0 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -198,7 +198,6 @@ export interface ShareDiagramRequest { emailAddresses?: string[]; } - export interface ShareDiagramResponse { shareUrl: string; access: ShareDiagramAccess; From 8456bc16dd6885a1be08a6fae3d54852d426ebf0 Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Tue, 15 Sep 2026 13:35:09 +0530 Subject: [PATCH 6/7] updated share diagram reponse --- packages/sdk/src/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index f3751c0..6783d80 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -201,7 +201,6 @@ export interface ShareDiagramRequest { export interface ShareDiagramResponse { shareUrl: string; access: ShareDiagramAccess; - emailsSent?: string[]; } /** From 2ded606adef21ae3164b6818a8d984a289ce9e9b Mon Sep 17 00:00:00 2001 From: Prashant-7718 Date: Wed, 16 Sep 2026 12:09:10 +0530 Subject: [PATCH 7/7] updated schema --- packages/sdk/src/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 6783d80..d051cfb 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -196,6 +196,7 @@ export type ShareDiagramAccess = 'Edit' | 'Comment' | 'View'; export interface ShareDiagramRequest { access?: ShareDiagramAccess; emailAddresses?: string[]; + source?: string; } export interface ShareDiagramResponse {