@contiva/sap-integration-suite-client
Version:
SAP Cloud Platform Integration API Client
467 lines (466 loc) • 18.6 kB
JavaScript
"use strict";
/**
* SAP Partner Directory Client
*
* This file contains a client class for interacting with the
* Partner Directory API of SAP Cloud Integration. This API allows management
* of partner information, parameters, and authorized users in B2B scenarios.
*
* @module sap-integration-suite-client/partner-directory
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.PartnerDirectoryClient = void 0;
const response_normalizer_1 = require("../utils/response-normalizer");
/**
* SAP Partner Directory Client
*
* Provides simplified access to the Partner Directory API.
*/
class PartnerDirectoryClient {
/**
* Creates a new PartnerDirectoryClient
*
* @param {PartnerDirectoryApi<unknown>} api - The underlying API instance
*/
constructor(api) {
this.api = api;
this.normalizer = new response_normalizer_1.ResponseNormalizer();
}
// --- Alternative Partners Methods ---
/**
* Retrieves all alternative partners.
*
* @param {Object} options Optional parameters for the request
* @param {number} [options.top] Maximum number of entries to return
* @param {number} [options.skip] Number of entries to skip
* @param {string} [options.filter] OData filter expression
* @returns {Promise<ComSapHciApiAlternativePartner[]>} Promise resolving to a list of alternative partners
*
* @example
* const altPartners = await client.getAlternativePartners({ top: 100 });
*/
async getAlternativePartners(options = {}) {
const response = await this.api.alternativePartners.alternativePartnersList({
$top: options.top,
$skip: options.skip,
$filter: options.filter,
});
return this.normalizer.normalizeArrayResponse(response.data, 'getAlternativePartners');
}
/**
* Retrieves a specific alternative partner by its composite key.
*
* @param {string} hexagency The hexadecimal agency value
* @param {string} hexscheme The hexadecimal scheme value
* @param {string} hexid The hexadecimal ID value
* @returns {Promise<ComSapHciApiAlternativePartner | undefined>} Promise resolving to the alternative partner
*
* @example
* const altPartner = await client.getAlternativePartnerById('agency', 'scheme', 'id');
*/
async getAlternativePartnerById(hexagency, hexscheme, hexid) {
const response = await this.api.alternativePartnersHexagencyHexagencyHexschemeHexschemeHexidHexid
.alternativePartnersHexagencyHexschemeHexidList(hexagency, hexscheme, hexid);
return this.normalizer.normalizeEntityResponse(response.data, 'getAlternativePartnerById');
}
/**
* Creates a new alternative partner.
*
* @param {ComSapHciApiAlternativePartnerCreate} partnerData The alternative partner data to create
* @returns {Promise<ComSapHciApiAlternativePartner>} Promise resolving to the created alternative partner
*
* @example
* const newPartner = await client.createAlternativePartner({
* Agency: 'MyAgency',
* Scheme: 'MyScheme',
* Id: 'MyId',
* Pid: 'PartnerId'
* });
*/
async createAlternativePartner(partnerData) {
const response = await this.api.alternativePartners.alternativePartnersCreate(partnerData);
return response.data;
}
/**
* Updates an existing alternative partner.
*
* @param {string} hexagency The hexadecimal agency value
* @param {string} hexscheme The hexadecimal scheme value
* @param {string} hexid The hexadecimal ID value
* @param {ComSapHciApiAlternativePartnerUpdate} partnerData The alternative partner data to update
* @returns {Promise<void>} Promise resolving when the update is complete
*
* @example
* await client.updateAlternativePartner('agency', 'scheme', 'id', {
* Pid: 'NewPartnerId'
* });
*/
async updateAlternativePartner(hexagency, hexscheme, hexid, partnerData) {
await this.api.alternativePartnersHexagencyHexagencyHexschemeHexschemeHexidHexid
.alternativePartnersHexagencyHexschemeHexidUpdate(hexagency, hexscheme, hexid, partnerData);
}
/**
* Deletes an alternative partner.
*
* @param {string} hexagency The hexadecimal agency value
* @param {string} hexscheme The hexadecimal scheme value
* @param {string} hexid The hexadecimal ID value
* @returns {Promise<void>} Promise resolving when the deletion is complete
*
* @example
* await client.deleteAlternativePartner('agency', 'scheme', 'id');
*/
async deleteAlternativePartner(hexagency, hexscheme, hexid) {
await this.api.alternativePartnersHexagencyHexagencyHexschemeHexschemeHexidHexid
.alternativePartnersHexagencyHexschemeHexidDelete(hexagency, hexscheme, hexid);
}
// --- Authorized Users Methods ---
/**
* Retrieves all authorized users.
*
* @param {Object} options Optional parameters for the request
* @param {number} [options.top] Maximum number of entries to return
* @param {number} [options.skip] Number of entries to skip
* @param {string} [options.filter] OData filter expression
* @returns {Promise<ComSapHciApiAuthorizedUser[]>} Promise resolving to a list of authorized users
*
* @example
* const users = await client.getAuthorizedUsers();
*/
async getAuthorizedUsers(options = {}) {
const response = await this.api.authorizedUsers.authorizedUsersList({
$top: options.top,
$skip: options.skip,
$filter: options.filter,
});
return this.normalizer.normalizeArrayResponse(response.data, 'getAuthorizedUsers');
}
/**
* Retrieves a specific authorized user by username.
*
* @param {string} user The username
* @returns {Promise<ComSapHciApiAuthorizedUser | undefined>} Promise resolving to the authorized user
*
* @example
* const user = await client.getAuthorizedUserById('username');
*/
async getAuthorizedUserById(user) {
const response = await this.api.authorizedUsersUser.authorizedUsersList(user);
return this.normalizer.normalizeEntityResponse(response.data, 'getAuthorizedUserById');
}
/**
* Creates a new authorized user.
*
* @param {ComSapHciApiAuthorizedUserCreate} userData The authorized user data to create
* @returns {Promise<ComSapHciApiAuthorizedUser>} Promise resolving to the created authorized user
*
* @example
* const newUser = await client.createAuthorizedUser({
* User: 'username',
* Type: 'User'
* });
*/
async createAuthorizedUser(userData) {
const response = await this.api.authorizedUsers.authorizedUsersCreate(userData);
return response.data;
}
/**
* Updates an existing authorized user.
*
* @param {string} user The username
* @param {ComSapHciApiAuthorizedUserUpdate} userData The authorized user data to update
* @returns {Promise<void>} Promise resolving when the update is complete
*
* @example
* await client.updateAuthorizedUser('username', {
* Type: 'Administrator'
* });
*/
async updateAuthorizedUser(user, userData) {
await this.api.authorizedUsersUser.authorizedUsersUpdate(user, userData);
}
/**
* Deletes an authorized user.
*
* @param {string} user The username
* @returns {Promise<void>} Promise resolving when the deletion is complete
*
* @example
* await client.deleteAuthorizedUser('username');
*/
async deleteAuthorizedUser(user) {
await this.api.authorizedUsersUser.authorizedUsersDelete(user);
}
// --- Partners Methods ---
/**
* Retrieves all partners.
*
* @returns {Promise<ComSapHciApiPartner[]>} Promise resolving to a list of partners
*
* @example
* const partners = await client.getPartners();
*/
async getPartners() {
const response = await this.api.partners.partnersList();
return this.normalizer.normalizeArrayResponse(response.data, 'getPartners');
}
/**
* Retrieves a specific partner by ID by filtering all partners.
*
* @param {string} pid The partner ID
* @returns {Promise<ComSapHciApiPartner | undefined>} Promise resolving to the partner
*
* @example
* const partner = await client.getPartnerById('partner-id');
*/
async getPartnerById(pid) {
const response = await this.api.partners.partnersList();
const partners = this.normalizer.normalizeArrayResponse(response.data, 'getPartnerById');
return partners.find((p) => p.Pid === pid);
}
/**
* Deletes a partner.
*
* @param {string} pid The partner ID
* @returns {Promise<void>} Promise resolving when the deletion is complete
*
* @example
* await client.deletePartner('partner-id');
*/
async deletePartner(pid) {
await this.api.partnersPid.partnersDelete(pid);
}
// --- String Parameters Methods ---
/**
* Retrieves all string parameters.
*
* @param {Object} options Optional parameters for the request
* @param {number} [options.top] Maximum number of entries to return
* @param {number} [options.skip] Number of entries to skip
* @param {string} [options.filter] OData filter expression
* @returns {Promise<ComSapHciApiStringParameter[]>} Promise resolving to a list of string parameters
*
* @example
* const params = await client.getStringParameters({ filter: "Pid eq 'partner-id'" });
*/
async getStringParameters(options = {}) {
const response = await this.api.stringParameters.stringParametersList({
$top: options.top,
$skip: options.skip,
$filter: options.filter,
});
return this.normalizer.normalizeArrayResponse(response.data, 'getStringParameters');
}
/**
* Retrieves a specific string parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @returns {Promise<ComSapHciApiStringParameter | undefined>} Promise resolving to the string parameter
*
* @example
* const param = await client.getStringParameterById('partner-id', 'param-id');
*/
async getStringParameterById(pid, id) {
const response = await this.api.stringParametersPidPidIdId.stringParametersPidIdList(pid, id);
return this.normalizer.normalizeEntityResponse(response.data, 'getStringParameterById');
}
/**
* Creates a new string parameter.
*
* @param {ComSapHciApiStringParameterCreate} paramData The string parameter data to create
* @returns {Promise<ComSapHciApiStringParameter>} Promise resolving to the created string parameter
*
* @example
* const newParam = await client.createStringParameter({
* Pid: 'partner-id',
* Id: 'param-id',
* Value: 'param-value'
* });
*/
async createStringParameter(paramData) {
const response = await this.api.stringParameters.stringParametersCreate(paramData);
return response.data;
}
/**
* Updates an existing string parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @param {ComSapHciApiStringParameterUpdate} paramData The string parameter data to update
* @returns {Promise<void>} Promise resolving when the update is complete
*
* @example
* await client.updateStringParameter('partner-id', 'param-id', {
* Value: 'new-value'
* });
*/
async updateStringParameter(pid, id, paramData) {
await this.api.stringParametersPidPidIdId.stringParametersPidIdUpdate(pid, id, paramData);
}
/**
* Deletes a string parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @returns {Promise<void>} Promise resolving when the deletion is complete
*
* @example
* await client.deleteStringParameter('partner-id', 'param-id');
*/
async deleteStringParameter(pid, id) {
await this.api.stringParametersPidPidIdId.stringParametersPidIdDelete(pid, id);
}
// --- Binary Parameters Methods ---
/**
* Retrieves all binary parameters.
*
* @param {Object} options Optional parameters for the request
* @param {number} [options.top] Maximum number of entries to return
* @param {number} [options.skip] Number of entries to skip
* @param {string} [options.filter] OData filter expression
* @returns {Promise<ComSapHciApiBinaryParameter[]>} Promise resolving to a list of binary parameters
*
* @example
* const params = await client.getBinaryParameters({ filter: "Pid eq 'partner-id'" });
*/
async getBinaryParameters(options = {}) {
const response = await this.api.binaryParameters.binaryParametersList({
$top: options.top,
$skip: options.skip,
$filter: options.filter,
});
return this.normalizer.normalizeArrayResponse(response.data, 'getBinaryParameters');
}
/**
* Retrieves a specific binary parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @returns {Promise<ComSapHciApiBinaryParameter | undefined>} Promise resolving to the binary parameter
*
* @example
* const param = await client.getBinaryParameterById('partner-id', 'param-id');
*/
async getBinaryParameterById(pid, id) {
const response = await this.api.binaryParametersPidPidIdId.binaryParametersPidIdList(pid, id);
return this.normalizer.normalizeEntityResponse(response.data, 'getBinaryParameterById');
}
/**
* Creates a new binary parameter.
*
* @param {ComSapHciApiBinaryParameterCreate} paramData The binary parameter data to create
* @returns {Promise<ComSapHciApiBinaryParameter>} Promise resolving to the created binary parameter
*
* @example
* const newParam = await client.createBinaryParameter({
* Pid: 'partner-id',
* Id: 'param-id',
* ContentType: 'application/octet-stream',
* Value: 'base64-encoded-content'
* });
*/
async createBinaryParameter(paramData) {
const response = await this.api.binaryParameters.binaryParametersCreate(paramData);
return response.data;
}
/**
* Updates an existing binary parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @param {ComSapHciApiBinaryParameterUpdate} paramData The binary parameter data to update
* @returns {Promise<void>} Promise resolving when the update is complete
*
* @example
* await client.updateBinaryParameter('partner-id', 'param-id', {
* Value: 'new-base64-encoded-content'
* });
*/
async updateBinaryParameter(pid, id, paramData) {
await this.api.binaryParametersPidPidIdId.binaryParametersPidIdUpdate(pid, id, paramData);
}
/**
* Deletes a binary parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @returns {Promise<void>} Promise resolving when the deletion is complete
*
* @example
* await client.deleteBinaryParameter('partner-id', 'param-id');
*/
async deleteBinaryParameter(pid, id) {
await this.api.binaryParametersPidPidIdId.binaryParametersPidIdDelete(pid, id);
}
// --- User Credential Parameters Methods ---
/**
* Retrieves all user credential parameters.
*
* @param {string} filter OData filter expression (required, e.g., "Pid eq 'partner-id'")
* @returns {Promise<ComSapHciApiUserCredentialParameter[]>} Promise resolving to a list of user credential parameters
*
* @example
* const params = await client.getUserCredentialParameters("Pid eq 'partner-id'");
*/
async getUserCredentialParameters(filter) {
const response = await this.api.userCredentialParameters.userCredentialParametersList({
$filter: filter,
});
return this.normalizer.normalizeArrayResponse(response.data, 'getUserCredentialParameters');
}
/**
* Retrieves a specific user credential parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @returns {Promise<ComSapHciApiUserCredentialParameter | undefined>} Promise resolving to the user credential parameter
*
* @example
* const param = await client.getUserCredentialParameterById('partner-id', 'param-id');
*/
async getUserCredentialParameterById(pid, id) {
const response = await this.api.userCredentialParametersPidPidIdId.userCredentialParametersPidIdList(pid, id, {});
return this.normalizer.normalizeEntityResponse(response.data, 'getUserCredentialParameterById');
}
/**
* Creates a new user credential parameter.
*
* @param {ComSapHciApiUserCredentialParameterCreate} paramData The user credential parameter data to create
* @returns {Promise<ComSapHciApiUserCredentialParameter>} Promise resolving to the created user credential parameter
*
* @example
* const newParam = await client.createUserCredentialParameter({
* Pid: 'partner-id',
* Id: 'param-id',
* User: 'username',
* Password: 'password'
* });
*/
async createUserCredentialParameter(paramData) {
const response = await this.api.userCredentialParameters.userCredentialParametersCreate(paramData);
return response.data;
}
/**
* Deletes a user credential parameter.
*
* @param {string} pid The partner ID
* @param {string} id The parameter ID
* @returns {Promise<void>} Promise resolving when the deletion is complete
*
* @example
* await client.deleteUserCredentialParameter('partner-id', 'param-id');
*/
async deleteUserCredentialParameter(pid, id) {
await this.api.userCredentialParametersPidPidIdId.userCredentialParametersPidIdDelete(pid, id);
}
/**
* Returns the underlying API instance for advanced usage.
*
* @returns {PartnerDirectoryApi<unknown>} The underlying API instance
*/
getApi() {
return this.api;
}
}
exports.PartnerDirectoryClient = PartnerDirectoryClient;