UNPKG

17.2 kBTypeScriptView Raw
1import { IPrincipalInfo } from "../types.js";
2import { _Web } from "../webs/types.js";
3import { _File } from "../files/types.js";
4import { _Item } from "../items/types.js";
5import { _Folder } from "../folders/types.js";
6export declare type ShareableQueryable = _Web | _File | _Folder | _Item;
7/**
8 * Indicates the role of the sharing link
9 */
10export declare enum SharingRole {
11 None = 0,
12 View = 1,
13 Edit = 2,
14 Owner = 3
15}
16export declare enum SPSharedObjectType {
17 Unknown = 0,
18 File = 1,
19 Folder = 2,
20 Item = 3,
21 List = 4,
22 Web = 5,
23 Max = 6
24}
25export declare enum SharingDomainRestrictionMode {
26 None = 0,
27 AllowList = 1,
28 BlockList = 2
29}
30export declare enum SharingOperationStatusCode {
31 /**
32 * The share operation completed without errors.
33 */
34 CompletedSuccessfully = 0,
35 /**
36 * The share operation completed and generated requests for access.
37 */
38 AccessRequestsQueued = 1,
39 /**
40 * The share operation failed as there were no resolved users.
41 */
42 NoResolvedUsers = -1,
43 /**
44 * The share operation failed due to insufficient permissions.
45 */
46 AccessDenied = -2,
47 /**
48 * The share operation failed when attempting a cross site share, which is not supported.
49 */
50 CrossSiteRequestNotSupported = -3,
51 /**
52 * The sharing operation failed due to an unknown error.
53 */
54 UnknowError = -4,
55 /**
56 * The text you typed is too long. Please shorten it.
57 */
58 EmailBodyTooLong = -5,
59 /**
60 * The maximum number of unique scopes in the list has been exceeded.
61 */
62 ListUniqueScopesExceeded = -6,
63 /**
64 * The share operation failed because a sharing capability is disabled in the site.
65 */
66 CapabilityDisabled = -7,
67 /**
68 * The specified object for the share operation is not supported.
69 */
70 ObjectNotSupported = -8,
71 /**
72 * A SharePoint group cannot contain another SharePoint group.
73 */
74 NestedGroupsNotSupported = -9
75}
76export declare enum SharingLinkKind {
77 /**
78 * Uninitialized link
79 */
80 Uninitialized = 0,
81 /**
82 * Direct link to the object being shared
83 */
84 Direct = 1,
85 /**
86 * Organization-shareable link to the object being shared with view permissions
87 */
88 OrganizationView = 2,
89 /**
90 * Organization-shareable link to the object being shared with edit permissions
91 */
92 OrganizationEdit = 3,
93 /**
94 * View only anonymous link
95 */
96 AnonymousView = 4,
97 /**
98 * Read/Write anonymous link
99 */
100 AnonymousEdit = 5,
101 /**
102 * Flexible sharing Link where properties can change without affecting link URL
103 */
104 Flexible = 6
105}
106export interface ISharedFuncs {
107 /**
108 * Gets a link suitable for sharing for this item
109 *
110 * @param kind The type of link to share
111 * @param expiration The optional expiration date
112 */
113 getShareLink(kind: SharingLinkKind, expiration?: Date): Promise<IShareLinkResponse>;
114 /**
115 * Checks Permissions on the list of Users and returns back role the users have on the Item.
116 *
117 * @param recipients The array of Entities for which Permissions need to be checked.
118 */
119 checkSharingPermissions(recipients: ISharingRecipient[]): Promise<ISharingEntityPermission[]>;
120 /**
121 * Get Sharing Information.
122 *
123 * @param request The SharingInformationRequest Object.
124 * @param expands Expand more fields.
125 *
126 */
127 getSharingInformation(request?: ISharingInformationRequest, expands?: string[]): Promise<ISharingInformation>;
128 /**
129 * Gets the sharing settings of an item.
130 *
131 * @param useSimplifiedRoles Determines whether to use simplified roles.
132 */
133 getObjectSharingSettings(useSimplifiedRoles?: boolean): Promise<IObjectSharingSettings>;
134 /**
135 * Unshare this item
136 */
137 unshare(): Promise<ISharingResult>;
138 /**
139 * Deletes a sharing link by kind
140 *
141 * @param kind Deletes a sharing link by the kind of link
142 */
143 deleteSharingLinkByKind(kind: SharingLinkKind): Promise<void>;
144 /**
145 * Removes the specified link to the item.
146 *
147 * @param kind The kind of link to be deleted.
148 * @param shareId
149 */
150 unshareLink(kind: SharingLinkKind, shareId?: string): Promise<void>;
151}
152export interface IShareObjectOptions {
153 url?: string;
154 loginNames?: string | string[];
155 role: SharingRole;
156 emailData?: ISharingEmailData;
157 group?: RoleType;
158 propagateAcl?: boolean;
159 includeAnonymousLinkInEmail?: boolean;
160 useSimplifiedRoles?: boolean;
161}
162/**
163 * Represents email data.
164 */
165export interface ISharingEmailData {
166 /**
167 * The e-mail subject.
168 */
169 subject?: string;
170 /**
171 * The e-mail body.
172 */
173 body: string;
174}
175export interface IShareLinkSettings {
176 /**
177 * The optional unique identifier of an existing sharing link to be retrieved and updated if necessary.
178 */
179 shareId?: string;
180 /**
181 * The kind of the sharing link to be created.
182 */
183 linkKind: SharingLinkKind;
184 /**
185 * A date/time string for which the format conforms to the ISO 8601:2004(E) complete representation for calendar date and time of day and
186 * which represents the time and date of expiry for the anonymous link. Both the minutes and hour value must be specified for the
187 * difference between the local and UTC time. Midnight is represented as 00:00:00.
188 */
189 expiration?: string;
190 /**
191 * The role to be used for the sharing link. This is required for Flexible links, and ignored for legacy link kinds.
192 */
193 role?: SharingRole;
194 /**
195 * Indicates if the sharing link, should support anonymous access. This is required for Flexible links, and ignored for legacy link kinds.
196 */
197 allowAnonymousAccess?: boolean;
198}
199export interface IShareLinkRequest {
200 /**
201 * A string of JSON representing users in people picker format. Only needed if an e-mail notification should be sent.
202 */
203 peoplePickerInput?: string;
204 /**
205 * Whether to create the link or not if it doesn't exist yet.
206 */
207 createLink: boolean;
208 /**
209 * The e-mail data. Only needed if an e-mail notification should be sent.
210 */
211 emailData?: ISharingEmailData;
212 /**
213 * The settings for the sharing link to be created/updated
214 */
215 settings: IShareLinkSettings;
216}
217/**
218 * Represents a response for sharing a link
219 */
220export interface IShareLinkResponse {
221 /**
222 * A SharingLinkInfo that represents the sharing link. Will be populated if sharing operation is returning a sharing link.
223 */
224 sharingLinkInfo: ISharingLinkInfo;
225}
226export interface ISharingLinkInfo {
227 AllowsAnonymousAccess: boolean;
228 Created: string;
229 CreatedBy: IPrincipalInfo;
230 Expiration: string;
231 IsActive: boolean;
232 IsEditLink: boolean;
233 IsFormsLink: boolean;
234 IsUnhealthy: boolean;
235 LastModified: string;
236 LastModifiedBy: IPrincipalInfo;
237 LinkKind: SharingLinkKind;
238 ShareId: string;
239 Url: string;
240}
241export interface ISharingResult {
242 /**
243 * The relative URL of a page which can be navigated to, to show permissions.
244 */
245 PermissionsPageRelativeUrl?: string;
246 /**
247 * A collection of users which have new pending access requests as a result of sharing.
248 */
249 UsersWithAccessRequests?: any[];
250 /**
251 * An enumeration which summarizes the result of the sharing operation.
252 */
253 StatusCode?: SharingOperationStatusCode;
254 /**
255 * An error message about the failure if sharing was unsuccessful.
256 */
257 ErrorMessage?: string;
258 /**
259 * A list of UserSharingResults from attempting to share a securable with unique permissions.
260 */
261 UniquelyPermissionedUsers?: IUserSharingResult[];
262 /**
263 * Groups which were granted permissions.
264 */
265 GroupsSharedWith?: any[];
266 /**
267 * The SharePoint group users were added to, if any were added to a group.
268 */
269 GroupUsersAddedTo?: any;
270 /**
271 * A list of users being added to a SharePoint permissions goup
272 */
273 UsersAddedToGroup?: IUserSharingResult[];
274 /**
275 * A list of SPInvitationCreationResult for external users being invited to have access.
276 */
277 InvitedUsers?: IInvitationCreationResult[];
278 /**
279 * The name of the securable being shared.
280 */
281 Name?: string;
282 /**
283 * The url of the securable being shared.
284 */
285 Url?: string;
286 /**
287 * IconUrl
288 */
289 IconUrl?: string;
290}
291export interface IInvitationCreationResult {
292 Succeeded?: boolean;
293 Email?: string;
294 InvitationLink?: string;
295}
296export interface IUserSharingResult {
297 IsUserKnown?: boolean;
298 Status?: boolean;
299 Message?: string;
300 User?: string;
301 DisplayName?: string;
302 Email?: string;
303 CurrentRole?: SharingRole;
304 AllowedRoles?: SharingRole[];
305 InvitationLink?: string;
306}
307export interface ISharingRecipient {
308 email?: string;
309 alias?: string;
310}
311export interface ISharingEntityPermission {
312 /**
313 * The Input Entity provided to the Call.
314 */
315 inputEntity: string;
316 /**
317 * The Resolved Entity after resolving using PeoplePicker API.
318 */
319 resolvedEntity: string;
320 /**
321 * Does the Entity have Access to the Securable Object
322 */
323 hasAccess: boolean;
324 /**
325 * Role of the Entity on ListItem
326 */
327 role: SharingRole;
328}
329export interface ISharingInformationRequest {
330 /**
331 * Max Principal's to return.
332 */
333 maxPrincipalsToReturn: number;
334 /**
335 * Supported Features (For future use by Office Client).
336 */
337 clientSupportedFeatures: string;
338}
339export interface IObjectSharingSettings {
340 /**
341 * The URL pointing to the containing SPWeb object
342 */
343 WebUrl: string;
344 /**
345 * The unique ID of the parent list (if applicable)
346 */
347 ListId?: string;
348 /**
349 * The list item ID (if applicable)
350 */
351 ItemId?: string;
352 /**
353 * The object title
354 */
355 ItemName: string;
356 /**
357 * The server relative object URL
358 */
359 ItemUrl: string;
360 /**
361 * Contains information about the sharing state of a shareable object
362 */
363 ObjectSharingInformation: any;
364 /**
365 * Boolean indicating whether the sharing context operates under the access request mode
366 */
367 AccessRequestMode: boolean;
368 /**
369 * Boolean indicating whether the sharing context operates under the permissions only mode
370 * (i.e. adding to a group or hiding the groups dropdown in the SharePoint UI)
371 */
372 PermissionsOnlyMode: boolean;
373 /**
374 * URL of the site from which the shared object inherits permissions
375 */
376 InheritingWebLink: string;
377 /**
378 * Boolean flag denoting if guest users are enabled for the site collection
379 */
380 ShareByEmailEnabled: boolean;
381 /**
382 * Boolean indicating whether the current user is a guest user
383 */
384 IsGuestUser: boolean;
385 /**
386 * Boolean indicating whether the site has the standard "Editor" role
387 */
388 HasEditRole: boolean;
389 /**
390 * Boolean indicating whether the site has the standard "Reader" role
391 */
392 HasReadRole: boolean;
393 /**
394 * Boolean indicating whether the object to share is a picture library
395 */
396 IsPictureLibrary: boolean;
397 /**
398 * Boolean indicating whether the folder object can be shared
399 */
400 CanShareFolder: boolean;
401 /**
402 * Boolean indicating whether email invitations can be sent
403 */
404 CanSendEmail: boolean;
405 /**
406 * Default share link type
407 */
408 DefaultShareLinkType: SharingLinkKind;
409 /**
410 * Boolean indicating whether the object to share supports ACL propagation
411 */
412 SupportsAclPropagation: boolean;
413 /**
414 * Boolean indicating whether the current user can only share within the tenancy
415 */
416 CanCurrentUserShareInternally: boolean;
417 /**
418 * Boolean indicating whether the current user can share outside the tenancy, by inviting external users
419 */
420 CanCurrentUserShareExternally: boolean;
421 /**
422 * Boolean indicating whether the current user can retrieve an anonymous View link, if one has already been created
423 * If one has not been created, the user cannot create one
424 */
425 CanCurrentUserRetrieveReadonlyLink: boolean;
426 /**
427 * Boolean indicating whether the current user can create or disable an anonymous Edit link
428 */
429 CanCurrentUserManageReadonlyLink: boolean;
430 /**
431 * Boolean indicating whether the current user can retrieve an anonymous Edit link, if one has already been created
432 * If one has not been created, the user cannot create one
433 */
434 CanCurrentUserRetrieveReadWriteLink: boolean;
435 /**
436 * Boolean indicating whether the current user can create or disable an anonymous Edit link
437 */
438 CanCurrentUserManageReadWriteLink: boolean;
439 /**
440 * Boolean indicating whether the current user can retrieve an organization View link, if one has already been created
441 * If one has not been created, the user cannot create one
442 */
443 CanCurrentUserRetrieveOrganizationReadonlyLink: boolean;
444 /**
445 * Boolean indicating whether the current user can create or disable an organization Edit link
446 */
447 CanCurrentUserManageOrganizationReadonlyLink: boolean;
448 /**
449 * Boolean indicating whether the current user can retrieve an organization Edit link, if one has already been created
450 * If one has not been created, the user cannot create one
451 */
452 CanCurrentUserRetrieveOrganizationReadWriteLink: boolean;
453 /**
454 * Boolean indicating whether the current user can create or disable an organization Edit link
455 */
456 CanCurrentUserManageOrganizationReadWriteLink: boolean;
457 /**
458 * Boolean indicating whether the current user can make use of Share-By-Link
459 */
460 CanSendLink: boolean;
461 /**
462 * Boolean indicating whether the client logic should warn the user
463 * that they are about to share with external email addresses.
464 */
465 ShowExternalSharingWarning: boolean;
466 /**
467 * A list of SharingPermissionInformation objects that can be used to share
468 */
469 SharingPermissions: any[];
470 /**
471 * A dictionary object that lists the display name and the id of
472 * the SharePoint simplified roles (edit, view)
473 */
474 SimplifiedRoles: {
475 [key: string]: string;
476 };
477 /**
478 * A dictionary object that lists the display name and the id of the SharePoint groups
479 */
480 GroupsList: {
481 [key: string]: string;
482 };
483 /**
484 * A dictionary object that lists the display name and the id of the SharePoint regular roles
485 */
486 Roles: {
487 [key: string]: string;
488 };
489 /**
490 * An object containing the SharePoint UI specific sharing settings.
491 */
492 SharePointSettings: any;
493 /**
494 * Boolean indicating whether the current user is a site collection administrator
495 */
496 IsUserSiteAdmin: boolean;
497 /**
498 * A value that indicates number of days an anonymous link can be valid before it expires
499 */
500 RequiredAnonymousLinkExpirationInDays: number;
501}
502export interface ISharingInformation {
503 /**
504 * External Sharing.
505 */
506 canAddExternalPrincipal?: boolean;
507 /**
508 * Internal Sharing.
509 */
510 canAddInternalPrincipal?: boolean;
511 /**
512 * Can Send Email.
513 */
514 canSendEmail?: boolean;
515 /**
516 * Can Use Simplified Roles present in Roles Enum.
517 */
518 canUseSimplifiedRoles?: boolean;
519 /**
520 * Has Unique Permissions.
521 */
522 hasUniquePermissions?: boolean;
523 /**
524 * Current Users Role on the Item.
525 */
526 currentRole?: SharingRole;
527 /**
528 * Does the User+Item require Approval from Admin for Sharing.
529 */
530 requiresAccessApproval?: boolean;
531 /**
532 * (Owners only)Whether there are pending access requests for the securable object.
533 */
534 hasPendingAccessRequests?: boolean;
535 /**
536 * (Owners only)The link to the access requests page for the securable object, or an empty string if the link is not available.
537 */
538 pendingAccessRequestsLink?: string;
539 /**
540 * sharedObjectType
541 */
542 sharedObjectType?: SPSharedObjectType;
543 /**
544 * Url for the Securable Object (Encoded).
545 */
546 directUrl?: string;
547 /**
548 * Parent Web Url for the Securable Object (Encoded).
549 */
550 webUrl?: string;
551 /**
552 * Default SharingLinkKind.
553 */
554 defaultLinkKind?: SharingLinkKind;
555 /**
556 * Tenant's SharingDomainRestrictionMode.
557 */
558 domainRestrictionMode?: SharingDomainRestrictionMode;
559 /**
560 * Tenant's RestrictedDomains.
561 */
562 RestrictedDomains?: string;
563 /**
564 * Tenant's Anonymous Link Expiration Restriction in Days.
565 */
566 anonymousLinkExpirationRestrictionDays?: number;
567 /**
568 * The PermissionCollection that are on the Securable Object (Princpals & Links)
569 */
570 permissionsInformation?: any;
571 /**
572 * PickerSettings used by the PeoplePicker Control.
573 */
574 pickerSettings?: any;
575}
576export declare enum RoleType {
577 None = 0,
578 Guest = 1,
579 Reader = 2,
580 Contributor = 3,
581 WebDesigner = 4,
582 Administrator = 5
583}
584//# sourceMappingURL=types.d.ts.map
\No newline at end of file