/** * >**Notes:** * > + Site owners may set that members are not permitted to create groups in the Wix Groups application settings. * > + In this situation, site members have to submit a Create Request to create a new group. * > + Create Requests can be approved or rejected by an admin. * > + After a Create Request has been approved, the new group is added to the Group List in the Wix Groups app home page. * > + See [Introduction](https://dev.wix.com/api/rest/wix-groups/groups/introduction#wix-groups_groups_introduction_terminology) for more details. */ export interface CreateRequest { /** * Create request ID * @readonly */ id?: string | null; /** Group requested for creation. */ group?: Group; /** * Status of request. * - `PENDING` - Pending request. * - `APPROVED` - Approved request. * - `REJECTED` - Rejected request. * - `CANCELED` - Canceled request. */ status?: RequestStatus; /** Request details. */ requestDetails?: RequestDetails; } export interface Group { /** * Group ID. * @readonly */ id?: string | null; /** A unique part of a group's URL, for example `https:/example.com/groups/slug`. */ slug?: string | null; /** * __Deprecated.__ Use `privacyStatus` instead. * This property will be removed on June 30, 2022. * @deprecated */ privacyLevel?: PrivacyStatus; /** Group privacy status. */ privacyStatus?: PrivacyStatus; /** * __Deprecated.__ Use `name` instead. * This property will be removed on June 30, 2022. * @deprecated */ title?: string | null; /** Group name. */ name?: string | null; /** Group description in DraftJS format. */ description?: string | null; /** Group teaser. */ teaser?: string | null; /** * __Deprecated.__ * For `details.logo`, use `coverImage` instead. * For `details.membersTitle`, `memberTitle` instead. * This property will be removed on June 30, 2022. * @deprecated */ details?: GroupDetails; /** What group members are called, for example `Coworkers`, `Friends`, or `Students`. */ memberTitle?: string | null; /** Cover image. You cannot upload your own cover image. */ coverImage?: CoverImage; /** Group specific settings. Available to the site owners under `Admin Tools` in the dashboard. */ settings?: GroupSettings; /** * Total count of current group members. * @readonly */ membersCount?: number | null; /** * __Deprecated.__ Use `ownerId` instead. * This property will be removed on June 30, 2022. * @readonly * @deprecated */ createdBy?: Identity; /** * Group owner. * @readonly */ ownerId?: string | null; /** * Group creation date and time. * @readonly */ createdDate?: Date | null; /** * Date and time of the latest group update. * @readonly */ updatedDate?: Date | null; /** * __Deprecated.__ Use `lastActivityDate` instead. * This property will be removed on June 30, 2022. * @readonly * @deprecated */ recentActivityDate?: Date | null; /** * Date and time of the most recent group activity, for example a post or comment. * @readonly */ lastActivityDate?: Date | null; } export declare enum Type { UNKNOWN = "UNKNOWN", ADMIN_APPROVAL = "ADMIN_APPROVAL", PAID_PLANS = "PAID_PLANS", EVENTS = "EVENTS" } export interface Events { eventIds?: string[]; } export interface Logo { /** Logo image ID (for internal use). */ mediaId?: string | null; /** Logo image width. */ width?: number | null; /** Logo image height. */ height?: number | null; } export interface GroupDetailsPosition { /** horizontal coordinate */ x?: number; /** vertical coordinate */ y?: number; } export interface Image { /** Image ID (for internal use). */ mediaId?: string | null; /** Image width. */ width?: number | null; /** Image height. */ height?: number | null; } export interface Position { /** horizontal coordinate */ x?: number; /** vertical coordinate */ y?: number; } export declare enum AllowPolicy { UNKNOWN = "UNKNOWN", OWNER_AND_ADMINS = "OWNER_AND_ADMINS", OWNER = "OWNER", ALL_MEMBERS = "ALL_MEMBERS" } export interface OnboardingStepSettings { stepKey?: StepKey; visible?: boolean; } export declare enum StepKey { UNKNOWN = "UNKNOWN", CREATE_POST = "CREATE_POST", REACT_TO_POST = "REACT_TO_POST", INVITE_MEMBERS = "INVITE_MEMBERS" } export declare enum PrivacyStatus { /** Undefined group privacy status. */ UNKNOWN = "UNKNOWN", /** Anyone can see the group and its content. Anyone can join the group. */ PUBLIC = "PUBLIC", /** Anyone can see the group, but only members can see its content. New members must submit a `Join Group Request`. */ PRIVATE = "PRIVATE", /** Only admins and members can see the group. New members can only be added by other members. */ SECRET = "SECRET" } export interface AccessRestriction extends AccessRestrictionDataOneOf { events?: Events; type?: Type; } /** @oneof */ export interface AccessRestrictionDataOneOf { events?: Events; } export interface GroupDetails { /** Group logo. You cannot upload your own logo. */ logo?: Logo; /** What group members are called, for example `Coworkers`, `Friends`, or `Students`. */ membersTitle?: string | null; } export interface CoverImage { /** Cover image. */ image?: Image; /** Position of the corner of the cover image (or logo). */ position?: Position; /** Position of the corner of the cover image (or logo) for mobile browser. */ mobilePosition?: Position; } export interface GroupSettings { /** * __Deprecated.__ Use `allowedToInviteMembers` instead. * Whether regular members are permitted to invite new members. * If `false`, only admins can invite members. Defaults to `true`. * @deprecated */ membersCanInvite?: boolean | null; /** * __Deprecated.__ Use `allowedToApproveJoinRequests` instead. * Whether all group members are permitted to approve join group requests. * If `false`, member approval is limited to the admins. * @deprecated */ membersCanApprove?: boolean | null; /** * __Deprecated.__ Use `welcomeMemberPostEnabled` instead. * This property will be removed on June 30, 2022. * @deprecated */ memberWelcomePostEnabled?: boolean | null; /** Whether a daily post about new members is enabled. */ welcomeMemberPostEnabled?: boolean | null; /** Whether an automatic post about changing the group details is enabled. */ groupDetailsChangedPostEnabled?: boolean | null; /** Whether all members can see the full member list. */ showMemberList?: boolean | null; } export interface Identity { /** Member ID of the group creator. See [Members API](https://dev.wix.com/api/rest/members/members/about-wix-members) for more details. */ id?: string | null; identityType?: IdentityType; } export declare enum IdentityType { USER = "USER", MEMBER = "MEMBER" } export declare enum RequestStatus { /** Undefined request status. */ UNKNOWN_STATUS = "UNKNOWN_STATUS", /** Pending group request. */ PENDING = "PENDING", /** Approved group request. */ APPROVED = "APPROVED", /** Rejected group request. */ REJECTED = "REJECTED", /** Cancelled group request. */ CANCELLED = "CANCELLED", /** Canceled group request. */ CANCELED = "CANCELED" } export interface RequestDetails { /** Reason the request has been rejected. */ rejectionReason?: string | null; } export interface SubmitCreateRequestRequest { /** Group submitted for creation. */ group?: Group; } export interface SubmitCreateRequestResponse { /** Submitted Create Request. */ createRequest?: CreateRequest; } export interface ApproveCreateRequestsRequest { /** Create Request IDs to approve. Limited to `100`. */ createRequestIds?: string[]; } export declare enum ItemsToUpdate { /** Take into account only items which are listed in the request. */ BY_ID = "BY_ID", /** Update all items. */ ALL_ITEMS = "ALL_ITEMS" } export interface ApproveCreateRequestsResponse { /** Approved Create Requests. */ createRequest?: CreateRequest[]; } export interface CreateRequestApproved { /** Approved create request. */ createRequest?: CreateRequest; } export interface RejectCreateRequestsRequest { /** Rejection data. */ rejections?: Rejection[]; } export interface Rejection { /** ID of the Create Request to reject. */ createRequestId?: string; /** Rejection reason. Free text displayed to the creator of the rejected Create Request. Limited to 1,000 characters. */ reason?: string | null; } export interface RejectCreateRequestsResponse { /** Rejected Create Requests. */ createRequest?: CreateRequest[]; } export interface CreateRequestRejected { /** Rejected create request. */ createRequest?: CreateRequest; } export interface CancelCreateRequestRequest { /** ID of the Create Request to cancel. */ createRequestId?: string; } export interface CancelCreateRequestResponse { /** Canceled Create Request. */ createRequest?: CreateRequest; } export interface ListCreateRequestsRequest { /** Number of items to load. Maximum `100`. */ limit?: number | null; /** Number of items to skip in the current sort order. */ offset?: number | null; } export declare enum OwnershipFilter { /** All items. */ ALL = "ALL", /** Items for the current site member. */ CURRENT_MEMBER = "CURRENT_MEMBER" } export interface ListCreateRequestsResponse { /** Create Requests. */ createRequests?: CreateRequest[]; metadata?: PagingMetadata; } export interface PagingMetadata { /** Number of items returned in the response. */ count?: number | null; /** Offset that was requested. */ offset?: number | null; /** Total number of items that match the query. */ total?: number | null; /** Flag that indicates the server failed to calculate the `total` field. */ tooManyToCount?: boolean | null; } export interface QueryCreateRequestsRequest { query?: Query; } export interface Query { /** * Filter object in the following format: * `"filter" : { * "fieldName1": "value1", * "fieldName2":{"$operator":"value2"} * }` * Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains` */ filter?: any; /** * Sort object in the following format: * `[{"fieldName":"sortField1","order":"ASC"},{"fieldName":"sortField2","order":"DESC"}]` */ sort?: Sorting[]; /** Paging options to limit and skip the number of items. */ paging?: Paging; /** Array of projected fields. A list of specific field names to return. If `fieldsets` are also specified, the union of `fieldsets` and `fields` is returned. */ fields?: string[]; /** Array of named, predefined sets of projected fields. A array of predefined named sets of fields to be returned. Specifying multiple `fieldsets` will return the union of fields from all sets. If `fields` are also specified, the union of `fieldsets` and `fields` is returned. */ fieldsets?: string[]; } export interface Sorting { /** Name of the field to sort by. */ fieldName?: string; /** Sort order. */ order?: SortOrder; } export declare enum SortOrder { ASC = "ASC", DESC = "DESC" } export interface Paging { /** Number of items to load. */ limit?: number | null; /** Number of items to skip in the current sort order. */ offset?: number | null; } export interface QueryCreateRequestsResponse { /** Retrieved Create Requests. */ createRequests?: CreateRequest[]; metadata?: PagingMetadata; } export interface DomainEvent extends DomainEventBodyOneOf { createdEvent?: EntityCreatedEvent; updatedEvent?: EntityUpdatedEvent; deletedEvent?: EntityDeletedEvent; actionEvent?: ActionEvent; /** * Unique event ID. * Allows clients to ignore duplicate webhooks. */ id?: string; /** * Assumes actions are also always typed to an entity_type * Example: wix.stores.catalog.product, wix.bookings.session, wix.payments.transaction */ entityFqdn?: string; /** * This is top level to ease client code dispatching of messages (switch on entity_fqdn+slug) * This is although the created/updated/deleted notion is duplication of the oneof types * Example: created/updated/deleted/started/completed/email_opened */ slug?: string; /** ID of the entity associated with the event. */ entityId?: string; /** Event timestamp in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format and UTC time. For example: 2020-04-26T13:57:50.699Z */ eventTime?: Date | null; /** * Whether the event was triggered as a result of a privacy regulation application * (for example, GDPR). */ triggeredByAnonymizeRequest?: boolean | null; /** If present, indicates the action that triggered the event. */ originatedFrom?: string | null; /** * A sequence number defining the order of updates to the underlying entity. * For example, given that some entity was updated at 16:00 and than again at 16:01, * it is guaranteed that the sequence number of the second update is strictly higher than the first. * As the consumer, you can use this value to ensure that you handle messages in the correct order. * To do so, you will need to persist this number on your end, and compare the sequence number from the * message against the one you have stored. Given that the stored number is higher, you should ignore the message. */ entityEventSequence?: string | null; } /** @oneof */ export interface DomainEventBodyOneOf { createdEvent?: EntityCreatedEvent; updatedEvent?: EntityUpdatedEvent; deletedEvent?: EntityDeletedEvent; actionEvent?: ActionEvent; } export interface EntityCreatedEvent { entityAsJson?: string; /** Indicates the event was triggered by a restore-from-trashbin operation for a previously deleted entity */ restoreInfo?: RestoreInfo; } export interface RestoreInfo { deletedDate?: Date | null; } export interface EntityUpdatedEvent { /** * Since platformized APIs only expose PATCH and not PUT we can't assume that the fields sent from the client are the actual diff. * This means that to generate a list of changed fields (as opposed to sent fields) one needs to traverse both objects. * We don't want to impose this on all developers and so we leave this traversal to the notification recipients which need it. */ currentEntityAsJson?: string; } export interface EntityDeletedEvent { /** Entity that was deleted */ deletedEntityAsJson?: string | null; } export interface ActionEvent { bodyAsJson?: string; } export interface MessageEnvelope { /** App instance ID. */ instanceId?: string | null; /** Event type. */ eventType?: string; /** The identification type and identity data. */ identity?: IdentificationData; /** Stringify payload. */ data?: string; } export interface IdentificationData extends IdentificationDataIdOneOf { /** ID of a site visitor that has not logged in to the site. */ anonymousVisitorId?: string; /** ID of a site visitor that has logged in to the site. */ memberId?: string; /** ID of a Wix user (site owner, contributor, etc.). */ wixUserId?: string; /** ID of an app. */ appId?: string; /** @readonly */ identityType?: WebhookIdentityType; } /** @oneof */ export interface IdentificationDataIdOneOf { /** ID of a site visitor that has not logged in to the site. */ anonymousVisitorId?: string; /** ID of a site visitor that has logged in to the site. */ memberId?: string; /** ID of a Wix user (site owner, contributor, etc.). */ wixUserId?: string; /** ID of an app. */ appId?: string; } export declare enum WebhookIdentityType { UNKNOWN = "UNKNOWN", ANONYMOUS_VISITOR = "ANONYMOUS_VISITOR", MEMBER = "MEMBER", WIX_USER = "WIX_USER", APP = "APP" } interface EventsNonNullableFields { eventIds: string[]; } interface AccessRestrictionNonNullableFields { events?: EventsNonNullableFields; type: Type; } interface GroupDetailsPositionNonNullableFields { x: number; y: number; } interface GroupDetailsNonNullableFields { logoPosition?: GroupDetailsPositionNonNullableFields; mobileLogoPosition?: GroupDetailsPositionNonNullableFields; } interface PositionNonNullableFields { x: number; y: number; } interface CoverImageNonNullableFields { position?: PositionNonNullableFields; mobilePosition?: PositionNonNullableFields; } interface OnboardingStepSettingsNonNullableFields { stepKey: StepKey; visible: boolean; } interface GroupSettingsNonNullableFields { allowedToInviteMembers: AllowPolicy; allowedToApproveJoinRequests: AllowPolicy; allowedToAddMembers: AllowPolicy; allowedToCreatePosts: AllowPolicy; allowedToCommentPosts: AllowPolicy; onboardingStepsSettings: OnboardingStepSettingsNonNullableFields[]; } interface IdentityNonNullableFields { identityType: IdentityType; } interface GroupNonNullableFields { privacyLevel: PrivacyStatus; privacyStatus: PrivacyStatus; accessRestriction?: AccessRestrictionNonNullableFields; details?: GroupDetailsNonNullableFields; coverImage?: CoverImageNonNullableFields; settings?: GroupSettingsNonNullableFields; createdBy?: IdentityNonNullableFields; } interface CreateRequestNonNullableFields { group?: GroupNonNullableFields; status: RequestStatus; } export interface ApproveCreateRequestsResponseNonNullableFields { createRequest: CreateRequestNonNullableFields[]; } export interface RejectCreateRequestsResponseNonNullableFields { createRequest: CreateRequestNonNullableFields[]; } export interface ListCreateRequestsResponseNonNullableFields { createRequests: CreateRequestNonNullableFields[]; } export interface QueryCreateRequestsResponseNonNullableFields { createRequests: CreateRequestNonNullableFields[]; } export {};