balena-sdk
Version:
The Balena JavaScript SDK
171 lines (170 loc) • 7 kB
TypeScript
import type { Organization, InjectedDependenciesParam, InjectedOptionsParam, OrganizationMembershipRole, BalenaModel } from '..';
import type { ODataOptionsWithoutCount } from 'pinejs-client-core';
export interface OrganizationInviteOptions {
invitee: string;
roleName?: OrganizationMembershipRole['Read']['name'];
message?: string;
}
declare const RESOURCE = "invitee__is_invited_to__organization";
type OrganizationInvite = BalenaModel[typeof RESOURCE];
declare const getOrganizationInviteModel: (deps: InjectedDependenciesParam, opts: InjectedOptionsParam, getOrganization: (handleOrId: string | number, options?: ODataOptionsWithoutCount<Organization["Read"]>) => Promise<Organization["Read"]>) => {
/**
* @summary Get all invites
* @name getAll
* @public
* @function
* @memberof balena.models.organization.invite
*
* @description
* This method returns all invites.
*
* @param {Object} [options={}] - extra pine options to use
* @fulfil {Object[]} - invites
* @returns {Promise}
*
* @example
* balena.models.organization.invite.getAll().then(function(invites) {
* console.log(invites);
* });
*/
getAll<T extends ODataOptionsWithoutCount<OrganizationInvite["Read"]>>(options?: T): Promise<NoInfer<import("pinejs-client-core").OptionsToResponse<{
invitee: {
__id: import("..").Invitee["Read"]["id"];
} | [import("..").Invitee["Read"]];
is_invited_to__organization: {
__id: Organization["Read"]["id"];
} | [Organization["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
organization_membership_role: {
__id: OrganizationMembershipRole["Read"]["id"];
} | [OrganizationMembershipRole["Read"]];
message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
is_created_by__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]] | [] | null;
organization: {
__id: Organization["Read"]["id"];
} | [Organization["Read"]];
}, T & {}, undefined>>>;
/**
* @summary Get all invites by organization
* @name getAllByOrganization
* @public
* @function
* @memberof balena.models.organization.invite
*
* @description
* This method returns all invites for a specific organization.
*
* @param {String|Number} handleOrId - organization handle (string), or id (number)
* @param {Object} [options={}] - extra pine options to use
* @fulfil {Object[]} - invites
* @returns {Promise}
*
* @example
* balena.models.organization.invite.getAllByOrganization('MyOrg').then(function(invites) {
* console.log(invites);
* });
*
* @example
* balena.models.organization.invite.getAllByOrganization(123).then(function(invites) {
* console.log(invites);
* });
*/
getAllByOrganization<T extends ODataOptionsWithoutCount<OrganizationInvite["Read"]>>(handleOrId: number | string, options?: T): Promise<NoInfer<import("pinejs-client-core").OptionsToResponse<{
invitee: {
__id: import("..").Invitee["Read"]["id"];
} | [import("..").Invitee["Read"]];
is_invited_to__organization: {
__id: Organization["Read"]["id"];
} | [Organization["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
organization_membership_role: {
__id: OrganizationMembershipRole["Read"]["id"];
} | [OrganizationMembershipRole["Read"]];
message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
is_created_by__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]] | [] | null;
organization: {
__id: Organization["Read"]["id"];
} | [Organization["Read"]];
}, import("../util").MergePineOptions<import("../util").AliasResourceRead, {
$filter: {
is_invited_to__organization: number;
};
}, T>, undefined>>>;
/**
* @summary Creates a new invite for an organization
* @name create
* @public
* @function
* @memberof balena.models.organization.invite
*
* @description This method invites a user by their email to an organization.
*
* @param {String|Number} handleOrId - organization handle (string), or id (number)
* @param {Object} options - invite creation parameters
* @param {String} options.invitee - the email of the invitee
* @param {String} [options.roleName="developer"] - the role name to be granted to the invitee
* @param {String} [message=null] - the message to send along with the invite
*
* @fulfil {String} - organization invite
* @returns {Promise}
*
* @example
* balena.models.organization.invite.create('MyOrg', { invitee: "invitee@example.org", roleName: "developer", message: "join my org" }).then(function(invite) {
* console.log(invite);
* });
*/
create(handleOrId: string | number, { invitee, roleName, message }: OrganizationInviteOptions): Promise<import("pinejs-client-core/node_modules/@balena/abstract-sql-to-typescript", { with: { "resolution-mode": "import" } }).PickDeferred<{
invitee: {
__id: import("..").Invitee["Read"]["id"];
} | [import("..").Invitee["Read"]];
is_invited_to__organization: {
__id: Organization["Read"]["id"];
} | [Organization["Read"]];
id: import("@balena/sbvr-types").Types["Integer"]["Read"];
organization_membership_role: {
__id: OrganizationMembershipRole["Read"]["id"];
} | [OrganizationMembershipRole["Read"]];
message: import("@balena/sbvr-types").Types["Text"]["Read"] | null;
is_created_by__user: {
__id: import("..").User["Read"]["id"];
} | [import("..").User["Read"]] | [] | null;
organization: {
__id: Organization["Read"]["id"];
} | [Organization["Read"]];
}>>;
/**
* @summary Revoke an invite
* @name revoke
* @public
* @function
* @memberof balena.models.organization.invite
*
* @param {Number} id - organization invite id
* @returns {Promise}
*
* @example
* balena.models.organization.invite.revoke(123);
*/
revoke(id: number): Promise<void>;
/**
* @summary Accepts an invite
* @name accept
* @public
* @function
* @memberof balena.models.organization.invite
*
* @description This method adds the calling user to the organization.
*
* @param {String} invitationToken - invite token
* @returns {Promise}
*
* @example
* balena.models.organization.invite.accept("qwerty-invitation-token");
*/
accept(invitationToken: string): Promise<void>;
};
export default getOrganizationInviteModel;