dc-management-sdk-js
Version:
Amplience Dynamic Content Management SDK
188 lines • 15.1 kB
JavaScript
import { HalResource } from '../hal/models/HalResource';
import { ContentItemsFacets } from './ContentItem';
import { ContentRepositoriesPage, } from './ContentRepository';
import { ContentType, ContentTypePage } from './ContentType';
import { ContentTypeSchema, ContentTypeSchemaPage } from './ContentTypeSchema';
import { EditionsPage } from './Edition';
import { Event, EventsPage } from './Event';
import { Page } from './Page';
import { SearchIndex, SearchIndexesPage } from './SearchIndex';
import { Settings } from './Settings';
import { Webhook, WebhooksPage } from './Webhook';
import { WorkflowState, WorkflowStatesPage } from './WorkflowState';
import { Extension, ExtensionsPage } from './Extension';
import { SnapshotResultList } from './SnapshotResultList';
/**
* Class representing the [Hub](https://amplience.com/docs/api/dynamic-content/management/#resources-hubs) resource.
* Hubs are containers for multiple repositories including media, content, content types.
*/
export class Hub extends HalResource {
constructor() {
super(...arguments);
/**
* Resources and actions related to a Hub
*/
this.related = {
contentTypeSchema: {
/**
* Creates a new Content Type Schema
* @param resource
*/
create: (resource) => this.createLinkedResource('create-content-type-schema', {}, resource, ContentTypeSchema),
/**
* Retrieves a list of Content Type Schemas associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('list-content-type-schemas', options, ContentTypeSchemaPage),
},
contentRepositories: {
/**
* Retrieves a list of Content Repositories associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('content-repositories', options, ContentRepositoriesPage),
/**
* Find all the Content Repositories that contain a feature
* @param options Options
*/
findByFeature: (feature, options) => this.client.fetchLinkedResource({
href: `hubs/${this.id}/content-repositories/search/findByFeaturesContaining?feature={feature}{&page,size,sort}`,
templated: true,
}, { feature, ...options }, ContentRepositoriesPage),
},
contentTypes: {
/**
* Retrieves a list of Content Types associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('content-types', options, ContentTypePage),
/**
* Register a Content Type on a hub so it can be enabled on a repository
*/
register: (resource) => this.createLinkedResource('register-content-type', {}, resource, ContentType),
/**
* Get a content type by its id
*/
get: (id) => this.client.fetchResource(`content-types/${id}`, ContentType),
},
contentItems: {
/**
* Facet content items and search by text. See [Text Search Query Syntax](https://amplience.com/docs/api/dynamic-content/management/#section/Text-Search-Query-Syntax) for a summary of the query syntax.
*/
facet: (facetQuery, options) => this.performActionThatReturnsResource('facet-content-items', options, facetQuery, ContentItemsFacets),
},
editions: {
/**
* Find editions by date associated with this Hub
* @param options FindByDate & Pageable & Sortable options
*/
findByDate: (options, projection) => this.fetchLinkedResource('search-editions', { projection, ...options }, EditionsPage),
},
events: {
/**
* Creates an Event inside this Hub
* @param resource
*/
create: (resource) => this.createLinkedResource('create-event', {}, resource, Event),
/**
* Retrieves a list of Events associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('events', options, EventsPage),
},
extensions: {
/**
* Creates an Extension inside this Hub
* @param resource
*/
create: (resource) => this.createLinkedResource('create-extension', {}, resource, Extension),
/**
* Get an Extension inside this Hub by its name
*/
getByName: (name) => this.fetchLinkedResource('extension-by-name', { name }, Extension),
/**
* Retrieves a list of Extension associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('extensions', options, ExtensionsPage),
},
searchIndexes: {
/**
* Create a search index for a given hub
* @param resource
*/
create: async (resource) => {
const createdSearchIndex = await this.createLinkedResource('create-algolia-search-index', {}, resource, SearchIndex);
// await for the settings - once the settings are present the index has been created
await createdSearchIndex.related.settings.get();
return createdSearchIndex;
},
/**
* Get a search index by its id
*/
get: (id) => this.client.fetchResource(`algolia-search/${this.id}/indexes/${id}`, SearchIndex),
/**
* Retrieves a list of search indexes associated with this Hub
*/
list: (parentId, projection, options) => this.fetchLinkedResource('algolia-search-indexes', { parentId, projection, ...options }, SearchIndexesPage),
},
settings: {
/**
* Updates this hub settings with the changes in the mutation parameter.
*/
update: (mutation) => this.updateLinkedResource('update-settings', {
method: 'PATCH',
}, mutation, Settings),
},
snapshots: {
/**
* Creates a Snapshot inside this Hub
* @param request
*/
create: (request) => this.performActionThatReturnsResource('batch-create-snapshots', {}, request, SnapshotResultList),
},
webhooks: {
/**
* Creates a Webhook inside this Hub
* @param resource
*/
create: (resource) => this.createLinkedResource('create-webhook', {}, resource, Webhook),
/**
* Get a Webhook inside this Hub by its id
*/
get: (id) => this.client.fetchResource(`hubs/${this.id}/webhooks/${id}`, Webhook),
/**
* Retrieves a list of Webhooks associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('webhooks', options, WebhooksPage),
},
workflowStates: {
/**
* Creates a Workflow State inside this Hub
* @param resource
*/
create: (resource) => this.createLinkedResource('create-workflow-state', {}, resource, WorkflowState),
/**
* Get a Webhook State insidee this Hub by its id
* @param id
*/
get: (id) => this.client.fetchResource(`workflow-states/${id}`, WorkflowState),
/**
* Retrieves a list of Workflow States associated with this Hub
* @param options Pagination options
*/
list: (options) => this.fetchLinkedResource('workflow-states', options, WorkflowStatesPage),
},
};
}
}
/**
* @hidden
*/
export class HubsPage extends Page {
constructor(data) {
super('hubs', Hub, data);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbC9IdWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBc0IsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUNMLHVCQUF1QixHQUV4QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzFEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxHQUFJLFNBQVEsV0FBVztJQUFwQzs7UUFtREU7O1dBRUc7UUFDYSxZQUFPLEdBQUc7WUFDeEIsaUJBQWlCLEVBQUU7Z0JBQ2pCOzs7bUJBR0c7Z0JBQ0gsTUFBTSxFQUFFLENBQUMsUUFBMkIsRUFBOEIsRUFBRSxDQUNsRSxJQUFJLENBQUMsb0JBQW9CLENBQ3ZCLDRCQUE0QixFQUM1QixFQUFFLEVBQ0YsUUFBUSxFQUNSLGlCQUFpQixDQUNsQjtnQkFFSDs7O21CQUdHO2dCQUNILElBQUksRUFBRSxDQUFDLE9BQWtCLEVBQW9DLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLG1CQUFtQixDQUN0QiwyQkFBMkIsRUFDM0IsT0FBTyxFQUNQLHFCQUFxQixDQUN0QjthQUNKO1lBRUQsbUJBQW1CLEVBQUU7Z0JBQ25COzs7bUJBR0c7Z0JBQ0gsSUFBSSxFQUFFLENBQUMsT0FBNkIsRUFBb0MsRUFBRSxDQUN4RSxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLHNCQUFzQixFQUN0QixPQUFPLEVBQ1AsdUJBQXVCLENBQ3hCO2dCQUVIOzs7bUJBR0c7Z0JBQ0gsYUFBYSxFQUFFLENBQ2IsT0FBZSxFQUNmLE9BQTZCLEVBQ0ssRUFBRSxDQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUM3QjtvQkFDRSxJQUFJLEVBQUUsUUFBUSxJQUFJLENBQUMsRUFBRSwwRkFBMEY7b0JBQy9HLFNBQVMsRUFBRSxJQUFJO2lCQUNoQixFQUNELEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLEVBQ3ZCLHVCQUF1QixDQUN4QjthQUNKO1lBQ0QsWUFBWSxFQUFFO2dCQUNaOzs7bUJBR0c7Z0JBQ0gsSUFBSSxFQUFFLENBQ0osT0FBZ0QsRUFDcEIsRUFBRSxDQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUM7Z0JBRXJFOzttQkFFRztnQkFDSCxRQUFRLEVBQUUsQ0FBQyxRQUFxQixFQUF3QixFQUFFLENBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FDdkIsdUJBQXVCLEVBQ3ZCLEVBQUUsRUFDRixRQUFRLEVBQ1IsV0FBVyxDQUNaO2dCQUVIOzttQkFFRztnQkFDSCxHQUFHLEVBQUUsQ0FBQyxFQUFVLEVBQXdCLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQzthQUNoRTtZQUVELFlBQVksRUFBRTtnQkFDWjs7bUJBRUc7Z0JBQ0gsS0FBSyxFQUFFLENBQ0wsVUFBc0IsRUFDdEIsT0FBaUQsRUFDSixFQUFFLENBQy9DLElBQUksQ0FBQyxnQ0FBZ0MsQ0FDbkMscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxVQUFVLEVBQ1Ysa0JBQWtCLENBQ25CO2FBQ0o7WUFFRCxRQUFRLEVBQUU7Z0JBQ1I7OzttQkFHRztnQkFDSCxVQUFVLEVBQUUsQ0FDVixPQUEwQyxFQUMxQyxVQUFtQixFQUNLLEVBQUUsQ0FDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUN0QixpQkFBaUIsRUFDakIsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFDMUIsWUFBWSxDQUNiO2FBQ0o7WUFFRCxNQUFNLEVBQUU7Z0JBQ047OzttQkFHRztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFlLEVBQWtCLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztnQkFFaEU7OzttQkFHRztnQkFDSCxJQUFJLEVBQUUsQ0FBQyxPQUE2QixFQUF3QixFQUFFLENBQzVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQzthQUMxRDtZQUVELFVBQVUsRUFBRTtnQkFDVjs7O21CQUdHO2dCQUNILE1BQU0sRUFBRSxDQUFDLFFBQW1CLEVBQXNCLEVBQUUsQ0FDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO2dCQUV4RTs7bUJBRUc7Z0JBQ0gsU0FBUyxFQUFFLENBQUMsSUFBWSxFQUFzQixFQUFFLENBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsQ0FBQztnQkFFcEU7OzttQkFHRztnQkFDSCxJQUFJLEVBQUUsQ0FBQyxPQUE2QixFQUE0QixFQUFFLENBQ2hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQzthQUNsRTtZQUVELGFBQWEsRUFBRTtnQkFDYjs7O21CQUdHO2dCQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBcUIsRUFBd0IsRUFBRTtvQkFDNUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FDeEQsNkJBQTZCLEVBQzdCLEVBQUUsRUFDRixRQUFRLEVBQ1IsV0FBVyxDQUNaLENBQUM7b0JBRUYsb0ZBQW9GO29CQUNwRixNQUFNLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBRWhELE9BQU8sa0JBQWtCLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQ7O21CQUVHO2dCQUNILEdBQUcsRUFBRSxDQUFDLEVBQVUsRUFBd0IsRUFBRSxDQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FDdkIsa0JBQWtCLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQ3pDLFdBQVcsQ0FDWjtnQkFFSDs7bUJBRUc7Z0JBQ0gsSUFBSSxFQUFFLENBQ0osUUFBaUIsRUFDakIsVUFBbUIsRUFDbkIsT0FBNkIsRUFDRCxFQUFFLENBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsd0JBQXdCLEVBQ3hCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUNwQyxpQkFBaUIsQ0FDbEI7YUFDSjtZQUVELFFBQVEsRUFBRTtnQkFDUjs7bUJBRUc7Z0JBQ0gsTUFBTSxFQUFFLENBQUMsUUFBa0IsRUFBcUIsRUFBRSxDQUNoRCxJQUFJLENBQUMsb0JBQW9CLENBQ3ZCLGlCQUFpQixFQUNqQjtvQkFDRSxNQUFNLEVBQUUsT0FBTztpQkFDaEIsRUFDRCxRQUFRLEVBQ1IsUUFBUSxDQUNUO2FBQ0o7WUFFRCxTQUFTLEVBQUU7Z0JBQ1Q7OzttQkFHRztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxPQUFtQixFQUErQixFQUFFLENBQzNELElBQUksQ0FBQyxnQ0FBZ0MsQ0FDbkMsd0JBQXdCLEVBQ3hCLEVBQUUsRUFDRixPQUFPLEVBQ1Asa0JBQWtCLENBQ25CO2FBQ0o7WUFFRCxRQUFRLEVBQUU7Z0JBQ1I7OzttQkFHRztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFpQixFQUFvQixFQUFFLENBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztnQkFFcEU7O21CQUVHO2dCQUNILEdBQUcsRUFBRSxDQUFDLEVBQVUsRUFBb0IsRUFBRSxDQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO2dCQUV0RTs7O21CQUdHO2dCQUNILElBQUksRUFBRSxDQUFDLE9BQTZCLEVBQTBCLEVBQUUsQ0FDOUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDO2FBQzlEO1lBRUQsY0FBYyxFQUFFO2dCQUNkOzs7bUJBR0c7Z0JBQ0gsTUFBTSxFQUFFLENBQUMsUUFBdUIsRUFBMEIsRUFBRSxDQUMxRCxJQUFJLENBQUMsb0JBQW9CLENBQ3ZCLHVCQUF1QixFQUN2QixFQUFFLEVBQ0YsUUFBUSxFQUNSLGFBQWEsQ0FDZDtnQkFFSDs7O21CQUdHO2dCQUNILEdBQUcsRUFBRSxDQUFDLEVBQVUsRUFBMEIsRUFBRSxDQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDO2dCQUVuRTs7O21CQUdHO2dCQUNILElBQUksRUFBRSxDQUFDLE9BQTZCLEVBQWdDLEVBQUUsQ0FDcEUsSUFBSSxDQUFDLG1CQUFtQixDQUN0QixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLGtCQUFrQixDQUNuQjthQUNKO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVMsU0FBUSxJQUFTO0lBQ3JDLFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YifQ==