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
1 change: 1 addition & 0 deletions packages/sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

- Fixed `requestTimeout` option not being applied correctly to requests.
- Add `MermaidChart#getAICredits()` function to get users ai credit usage(Total and remaining credits)

## [0.2.2] - 2026-02-04

Expand Down
12 changes: 12 additions & 0 deletions packages/sdk/src/index.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,18 @@ describe('getUser', () => {
});
});

describe('getAICredits', () => {
it('should get AI credits information', async () => {
const aiCredits = await client.getAICredits();

expect(aiCredits).toHaveProperty('aiCredits');
expect(aiCredits.aiCredits).toHaveProperty('remaining');
expect(aiCredits.aiCredits).toHaveProperty('total');
expect(typeof aiCredits.aiCredits.remaining).toBe('number');
expect(typeof aiCredits.aiCredits.total).toBe('number');
});
});

const documentMatcher = expect.objectContaining({
documentID: expect.any(String),
major: expect.any(Number),
Expand Down
11 changes: 11 additions & 0 deletions packages/sdk/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import type {
MCUser,
RepairDiagramRequest,
RepairDiagramResponse,
AICreditsUsage,
} from './types.js';
import { URLS } from './urls.js';

Expand Down Expand Up @@ -197,6 +198,16 @@ export class MermaidChart {
return user.data;
}

/**
* Get AI credits information for the current user.
*
* @returns AI credits information including remaining credits and total limit.
*/
public async getAICredits(): Promise<AICreditsUsage> {
const response = await this.axios.get<AICreditsUsage>(URLS.rest.users.aiCreditUsage);
return response.data;
}

public async getProjects(): Promise<MCProject[]> {
const projects = await this.axios.get<MCProject[]>(URLS.rest.projects.list);
return projects.data;
Expand Down
7 changes: 7 additions & 0 deletions packages/sdk/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@ export interface MCUser {
emailAddress: string;
}

export interface AICreditsUsage {
aiCredits: {
remaining: number;
total: number;
};
}

export interface MCProject {
id: string;
title: string;
Expand Down
1 change: 1 addition & 0 deletions packages/sdk/src/urls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export const URLS = {
},
users: {
self: `/rest-api/users/me`,
aiCreditUsage: `/rest-api/users/me/ai-credit-usage`,
},
projects: {
list: `/rest-api/projects`,
Expand Down