JSPM

umbraco-management-api-client

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q65895F
  • License MIT

TypeScript client for the Umbraco Management API (auto-generated by OpenAPI Generator)

Package Exports

  • umbraco-management-api-client
  • umbraco-management-api-client/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (umbraco-management-api-client) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Umbraco Management API Client

A TypeScript client for the Umbraco Management API, auto-generated using OpenAPI Generator.

Installation

npm install @umbraco/management-api-client

Usage

import { LanguageApi } from "@umbraco/management-api-client";

// Initialize the API with your configuration
const config = {
  basePath: "https://your-umbraco-site.com",
  accessToken: "your-access-token",
};

// Create an instance of the API
const api = new LanguageApi(config);

// Use the API
try {
  const languages = await api.getLanguage({ skip: 0, take: 10 });
  console.log("Languages:", languages);
} catch (error) {
  console.error("Error:", error);
}

Initialize API Client

import { Configuration } from './runtime';
import { LanguageApi } from './apis/LanguageApi';

const host = 'https://localhost:44372'; // Change to your host

class ApiClient {
  private token: string | null = null;
  private tokenExpiryTime: Date | null = null;

  async getToken(): Promise<string> {
    if (this.token && this.tokenExpiryTime && new Date() < this.tokenExpiryTime) {
      return this.token!;
    }

    const response = await fetch(`${host}/umbraco/management/api/v1/security/back-office/token`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      body: new URLSearchParams({
        'client_id': 'umbraco-back-office-testkey',
        'client_secret': 'wKtd*gyIa!oHOw#ZqPwzwMCIqe2*1NG$L',
        'grant_type': 'client_credentials'
      })
    });
    
    if (!response.ok) {
      throw new Error('Failed to obtain token');
    }

    const data = await response.json();
    if (!data.access_token) {
      throw new Error('No access token in response');
    }
    this.token = data.access_token;
    this.tokenExpiryTime = new Date(new Date().getTime() + data.expires_in * 1000);
    return this.token!;
  }
}

async function main() {
  const apiClient = new ApiClient();

  // Pass the token provider as accessToken
  const config = new Configuration({
    basePath: host,
    accessToken: async () => `Bearer ${await apiClient.getToken()}`
  });

  const languageApi = new LanguageApi(config);

  try {
    // Use the generated method to fetch languages
    const result = await languageApi.getLanguage({ skip: 0, take: 100 });
    console.log('Languages:', result.items);
  } catch (error) {
    console.error('API Error:', error);
  }
}

main();

Available APIs

The client includes TypeScript classes for all Umbraco Management API endpoints:

  • ContentApi
  • DataTypeApi
  • DictionaryApi
  • DocumentBlueprintApi
  • LanguageApi
  • MediaApi
  • MemberApi
  • UserApi
  • And many more...

Each API class provides strongly-typed methods for interacting with the corresponding Umbraco endpoints.

Configuration

The client can be configured with the following options:

{
  basePath: string;          // The base URL of your Umbraco installation
  accessToken?: string;      // OAuth access token for authentication
  username?: string;         // Basic auth username
  password?: string;         // Basic auth password
  apiKey?: string;          // API key for authentication
  headers?: object;         // Additional headers to include in requests
}

Error Handling

All API methods return promises that may reject with detailed error information:

try {
  await api.someMethod();
} catch (error) {
  if (error.status === 401) {
    console.error("Authentication failed");
  } else if (error.status === 404) {
    console.error("Resource not found");
  } else {
    console.error("An error occurred:", error);
  }
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.