balena-sdk
Version:
The Balena JavaScript SDK
243 lines (242 loc) • 10 kB
TypeScript
import type { Application, InjectedDependenciesParam, BalenaModel, ApplicationMembershipRole } from '..';
import type { ODataOptionsWithoutCount, OptionsToResponse, ResourceAlternateKey } from 'pinejs-client-core';
declare const RESOURCE = "user_application_membership";
type ApplicationMembership = BalenaModel[typeof RESOURCE];
type ResourceKey = number | ResourceAlternateKey<Pick<ApplicationMembership['Read'], 'user' | 'is_member_of__application'>>;
export interface ApplicationMembershipCreationOptions {
application: string | number;
username: string;
roleName?: ApplicationMembershipRole['Read']['name'];
}
declare const getApplicationMembershipModel: (deps: InjectedDependenciesParam, getApplication: <T extends ODataOptionsWithoutCount<Application["Read"]>>(slugOrUuidOrId: string | number, options?: T) => Promise<OptionsToResponse<Application["Read"], T, undefined>[number]>) => {
/**
* @summary Get a single application membership
* @name get
* @public
* @function
* @memberof balena.models.application.membership
*
* @description
* This method returns a single application membership.
*
* @param {number|Object} membershipId - the id or an object with the unique `user` & `is_member_of__application` numeric pair of the membership
* @param {Object} [options={}] - extra pine options to use
* @fulfil {Object} - application membership
* @returns {Promise}
*
* @example
* balena.models.application.membership.get(5).then(function(memberships) {
* console.log(memberships);
* });
*/
get<T extends ODataOptionsWithoutCount<ApplicationMembership["Read"]>>(membershipId: ResourceKey, options?: T): Promise<NonNullable<OptionsToResponse<{
user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
is_member_of__application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
application_membership_role: {
__id: ApplicationMembershipRole["Read"]["id"];
} | [ApplicationMembershipRole["Read"]];
application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
includes__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
}, T & {}, ResourceKey>>>;
/**
* @summary Get all memberships by application
* @name getAllByApplication
* @public
* @function
* @memberof balena.models.application.membership
*
* @description
* This method returns all application memberships for a specific application.
*
* @param {String|Number} slugOrUuidOrId - application slug (string), uuid (string) or id (number)
* @param {Object} [options={}] - extra pine options to use
* @fulfil {Object[]} - application memberships
* @returns {Promise}
*
* @example
* balena.models.application.membership.getAllByApplication('myorganization/myapp').then(function(memberships) {
* console.log(memberships);
* });
*
* @example
* balena.models.application.membership.getAllByApplication(123).then(function(memberships) {
* console.log(memberships);
* });
*/
getAllByApplication<T extends ODataOptionsWithoutCount<ApplicationMembership["Read"]>>(slugOrUuidOrId: number | string, options?: T): Promise<NoInfer<OptionsToResponse<{
user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
is_member_of__application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
application_membership_role: {
__id: ApplicationMembershipRole["Read"]["id"];
} | [ApplicationMembershipRole["Read"]];
application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
includes__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
}, import("../util").MergePineOptions<import("../util").AliasResourceRead, {
$filter: {
is_member_of__application: number;
};
}, T>, undefined>>>;
/**
* @summary Get all memberships by user
* @name getAllByUser
* @public
* @function
* @memberof balena.models.application.membership
*
* @description
* This method returns all application memberships for a specific user.
*
* @param {String|Number} usernameOrId - the user's username (string) or id (number)
* @param {Object} [options={}] - extra pine options to use
* @fulfil {Object[]} - application memberships
* @returns {Promise}
*
* @example
* balena.models.application.membership.getAllByUser('balena_os').then(function(memberships) {
* console.log(memberships);
* });
*
* @example
* balena.models.application.membership.getAllByUser(123).then(function(memberships) {
* console.log(memberships);
* });
*/
getAllByUser<T extends ODataOptionsWithoutCount<ApplicationMembership["Read"]>>(usernameOrId: number | string, options?: T): Promise<NoInfer<OptionsToResponse<{
user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
is_member_of__application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
application_membership_role: {
__id: ApplicationMembershipRole["Read"]["id"];
} | [ApplicationMembershipRole["Read"]];
application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
includes__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
}, import("../util").MergePineOptions<import("../util").AliasResourceRead, {
$filter: {
user: number | {
$any: {
$alias: string;
$expr: {
u: {
username: string;
};
};
};
};
};
}, T>, undefined>>>;
/**
* @summary Creates a new membership for an application
* @name create
* @public
* @function
* @memberof balena.models.application.membership
*
* @description This method adds a user to an application by their username if they are a member of the organization.
*
* @param {Object} options - membership creation parameters
* @param {String|Number} options.application - application handle (string), or id (number)
* @param {String} options.username - the username of the balena user that will become a member
* @param {String} [options.roleName="member"] - the role name to be granted to the membership
*
* @fulfil {Object} - application membership
* @returns {Promise}
*
* @example
* balena.models.application.membership.create({ application: "myApp", username: "user123", roleName: "member" }).then(function(membership) {
* console.log(membership);
* });
*/
create({ application, username, roleName, }: ApplicationMembershipCreationOptions): Promise<import("pinejs-client-core/node_modules/@balena/abstract-sql-to-typescript", { with: { "resolution-mode": "import" } }).PickDeferred<{
user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
is_member_of__application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
application_membership_role: {
__id: ApplicationMembershipRole["Read"]["id"];
} | [ApplicationMembershipRole["Read"]];
application: {
__id: Application["Read"]["id"];
} | [Application["Read"]];
includes__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]];
}>>;
/**
* @summary Changes the role of an application member
* @name changeRole
* @public
* @function
* @memberof balena.models.application.membership
*
* @description This method changes the role of an application member.
*
* @param {Number|Object} idOrUniqueKey - the id or an object with the unique `user` & `is_member_of__application` numeric pair of the membership that will be changed
* @param {String} roleName - the role name to be granted to the membership
*
* @returns {Promise}
*
* @example
* balena.models.application.membership.changeRole(123, "member").then(function() {
* console.log('OK');
* });
*
* @example
* balena.models.application.membership.changeRole({
* user: 123,
* is_member_of__application: 125,
* }, "member").then(function() {
* console.log('OK');
* });
*/
changeRole(idOrUniqueKey: ResourceKey, roleName: ApplicationMembershipRole["Read"]["name"]): Promise<void>;
/**
* @summary Remove a membership
* @name remove
* @public
* @function
* @memberof balena.models.application.membership
*
* @param {Number|Object} idOrUniqueKey - the id or an object with the unique `user` & `is_member_of__application` numeric pair of the membership that will be removed
* @returns {Promise}
*
* @example
* balena.models.application.membership.remove(123);
*
* @example
* balena.models.application.membership.remove({
* user: 123,
* is_member_of__application: 125,
* });
*/
remove(idOrUniqueKey: ResourceKey): Promise<void>;
};
export default getApplicationMembershipModel;