/** 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 {};