/** Label that was found or created. */ export interface ContactLabel { /** * Label namespace. * * Labels created by calling the Find Or Create Label method * are automatically assigned to the `custom` namespace. * @readonly */ namespace?: string | null; /** * Display name for the namespace, * used to organize the list of labels in the site dashboard. * @readonly */ namespaceDisplayName?: string | null; /** * Label key. * * `key` is generated when the label is created. * It can't be modified, even if `displayName` is updated. * @readonly */ key?: string; /** Label display name shown in the dashboard. */ displayName?: string; /** * Label type indicating how the label was created. * @readonly */ labelType?: LabelType; /** * Date and time the label was created. * @readonly */ createdDate?: Date | null; /** * Date and time the label was last updated. * @readonly */ updatedDate?: Date | null; } export declare enum LabelType { /** Default system label for the contact list. */ SYSTEM = "SYSTEM", /** Label created by calling the Find Or Create Label method. */ USER_DEFINED = "USER_DEFINED", /** Label created by an app built by Wix. */ WIX_APP_DEFINED = "WIX_APP_DEFINED" } /** Label filter options. */ export interface ListLabelsRequest { /** Filter for labels of the specified type. */ labelType?: LabelType; /** Filter for labels in the specified namespace. */ namespace?: string | null; /** Filter for labels where `displayName` starts with the specified case-sensitive string. */ startsWith?: string | null; /** Sorting options. */ sort?: Sorting; /** Paging options. */ paging?: Paging; language?: string | null; } export interface Sorting { /** Name of the field to sort by. */ fieldName?: string; /** * Sort order. * * Default: `ASC`. */ order?: SortOrder; } export declare enum SortOrder { /** Sort by ascending order. */ ASC = "ASC", /** Sort by descending order. */ DESC = "DESC" } export interface Paging { /** * Number of items to return. * * Defaults to `1000`.
* Maximum: `2000`. */ limit?: number | null; /** Number of items to skip in the current sort order. */ offset?: number | null; } /** List of labels. */ export interface ListLabelsResponse { /** List of labels. */ labels?: ContactLabel[]; /** Metadata for the page of results. */ metadata?: PagingMetadata; } export interface PagingMetadata { /** Number of items returned. */ count?: number | null; /** Requested offset. */ offset?: number | null; /** Number of items that matched the query. */ total?: number | null; /** * Indicates if `total` calculation timed out before the response was sent. * Typically this happens if there is a large set of results. */ tooManyToCount?: boolean | null; } /** Label to find or create. */ export interface FindOrCreateLabelRequest { /** * Display name to retrieve or create. * * If an existing label is an exact match * for the specified display name, * the existing label is returned. * If not, a new label is created and returned. */ displayName: string; /** * Language for localization. * 2-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format. */ language?: string | null; } /** Label that was found or created. */ export interface FindOrCreateLabelResponse { /** Label that was found or created. */ label?: ContactLabel; /** * Indicates whether the label was just created or already existed. * * Returns `true` if the label was just created. */ newLabel?: boolean; } export interface LabelsQuotaReached { /** The maximum number of labels allowed for the site. */ labelsQuota?: string | null; /** The current total number of labels on the site. */ labelsCurrentTotal?: string | null; } export interface ListLabelNamespacesRequest { /** Language for localization */ language?: string | null; } export interface ListLabelNamespacesResponse { /** List of namespaces */ namespaces?: ContactLabelNamespace[]; } export interface ContactLabelNamespace { /** * Namespace key * @readonly */ key?: string; /** * Namespace display name * @readonly */ displayName?: string | null; } export interface GetLabelRequest { /** * Label key. * * `key` is generated when the label is created. * It can't be modified, even if `displayName` is updated. */ key: string; /** * Language for localization. * 2-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format. */ language?: string | null; } /** The specified label. */ export interface GetLabelResponse { /** The specified label. */ label?: ContactLabel; } export interface GetLabelByLegacyIdRequest { /** Legacy id of the label */ legacyId?: string; /** Language for localization */ language?: string | null; } export interface GetLabelByLegacyIdResponse { /** Requested label */ label?: ContactLabel; } export interface UpdateLabelRequest { /** Label to rename. */ label?: ContactLabel; /** * Language for localization. * 2-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format. */ language?: string | null; } /** Updated label. */ export interface UpdateLabelResponse { /** Renamed label. */ label?: ContactLabel; } export interface DeleteLabelRequest { /** Label key to delete. */ key: string; } export interface DeleteLabelResponse { } export interface PurgeRequest { /** Contacts Instance ID of the site. */ instanceId?: string; /** Labels to exclude from the purge. */ exludingLabelKeys?: string[]; } export interface PurgeResponse { /** Number of deleted items */ deletedItems?: number; } export interface GdprListRequest { /** Contacts Instance ID of the site. */ instanceId?: string; } export interface GdprListResponse { /** List of labels */ labels?: ContactLabel[]; } export interface QueryLabelsRequest { /** Query options. */ query?: Query; /** * Language for localization. * 2-letter language code in [ISO 639-1 alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) format. */ language?: string | null; } export interface Query { /** * ilter object. * * Possible filters: `$eq`, `$gt`, `$gte`, `$in`, `$lt`, `$lte`, `$ne`, `$startsWith`. * * For a detailed list of supported filters, see [sorting and filtering for labels](https://dev.wix.com/api/rest/contacts/labels/sort-and-filter). * * Example: `{ "filter": { * "displayName": { * "$startsWith": "Referral" * } * } * }` */ filter?: Record | null; /** * Sorting options. For a list of fields that can be sorted, see [sorting and filtering for labels](https://dev.wix.com/api/rest/contacts/labels/sort-and-filter). * * Example: `{ "sort": [{"fieldName": "displayName", "order": "DESC"}] }` */ sort?: Sorting[]; /** Pagination options. */ paging?: Paging; } export interface QueryLabelsResponse { /** List of labels */ labels?: ContactLabel[]; /** Details on the paged set of results returned. */ pagingMetadata?: 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 ContactLabelNonNullableFields { key: string; displayName: string; labelType: LabelType; } export interface FindOrCreateLabelResponseNonNullableFields { label?: ContactLabelNonNullableFields; newLabel: boolean; } export interface GetLabelResponseNonNullableFields { label?: ContactLabelNonNullableFields; } export interface UpdateLabelResponseNonNullableFields { label?: ContactLabelNonNullableFields; } export interface QueryLabelsResponseNonNullableFields { labels: ContactLabelNonNullableFields[]; } export {};