/** Extended field that was found or created. */ export interface ExtendedField { /** * Extended field namespace. * * Extended fields created through by calling the Find Or Create Extended Field method * are automatically assigned to the `custom` namespace. * @readonly */ namespace?: string | null; /** * Extended field key. * * When accessing contact data, * extended field data is available at `extendedFields[key]`. * For example, if the key is "custom.notes", * the value can be accessed at `extendedFields["custom.notes"]`. * * `key` is generated when the extended field is created * and can't be modified, even if `displayName` changes. * @readonly */ key?: string; /** Display name shown in the contact list. */ displayName?: string; /** * Type of data the field holds. * @readonly */ dataType?: FieldDataType; /** * Indicates whether the extended field is a system field or custom field. * @readonly */ fieldType?: FieldType; /** * Date and time the field was created. * @readonly */ createdDate?: Date | null; /** * Date and time the field was last updated. * @readonly */ updatedDate?: Date | null; /** * Field description, if the field is a system field. * @readonly */ description?: string | null; } export declare enum FieldDataType { /** Accepts strings. */ TEXT = "TEXT", /** Accepts floats. */ NUMBER = "NUMBER", /** Accepts dates formatted as `YYYY-MM-DD`. */ DATE = "DATE", /** Accepts strings. Prepends `https://` if no protocol is included. */ URL = "URL" } export declare enum FieldType { /** Field is a system field managed by Wix. System fields can't be modified by calling the Update Extended Field method. */ SYSTEM = "SYSTEM", /** Field is a custom field and can be modified by calling the Update Extended Field method. */ USER_DEFINED = "USER_DEFINED" } /** Extended field filter options. */ export interface ListExtendedFieldsRequest { /** Filter for fields of the specified type. */ fieldType?: FieldType; /** * Filter for fields in the specified namespace. * Fields created by calling the Find Or Create Extended Field method * are automatically assigned to the `custom` namespace. */ namespace?: string | null; /** Filter for fields where `displayName` starts with the specified case-sensitive string. */ startsWith?: string | null; /** Sorting options. */ sort?: Sorting; /** Paging options. */ paging?: Paging; } 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 `100`. */ limit?: number | null; /** * Number of items to skip in the current sort order. * * Defaults to `0`. */ offset?: number | null; } /** List of extended fields. */ export interface ListExtendedFieldsResponse { /** List of extended fields. */ fields?: ExtendedField[]; /** 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; } /** Custom field to find or create. */ export interface FindOrCreateExtendedFieldRequest { /** * Display name to retrieve or create. * * If an existing custom field is an exact match * for the specified display name, * the existing field is returned. * If not, a new field is created and returned. */ displayName: string; /** * Type of data the field holds. * Ignored if an existing field is an exact match * for the specified display name. */ dataType?: FieldDataType; } /** Extended field that was found or created. */ export interface FindOrCreateExtendedFieldResponse { /** Extended field that was found or created. */ field?: ExtendedField; /** * Indicates whether the extended field was just created or already existed. * * Returns `true` if the field was just created. */ newField?: boolean; } export interface GetExtendedFieldRequest { /** * Extended field key. * * When accessing contact data, * extended field values are available at `info.extendedFields.items[key]`. * For example, if the key is "custom.patronus", * the value can be accessed at `info.extendedFields.items["custom.patronus"]`. * * `key` is generated when the extended field is created. * It can't be modified, even if `displayName` is updated. */ key: string; } /** The specified field. */ export interface GetExtendedFieldResponse { /** The specified field. */ field?: ExtendedField; } export interface GetExtendedFieldByLegacyIdRequest { /** Legacy ID of the extended field. */ legacyId?: string; } export interface GetExtendedFieldByLegacyIdResponse { /** The requested extended field. */ field?: ExtendedField; } export interface UpdateExtendedFieldRequest { /** Extended field to rename. */ field?: ExtendedField; } /** Updated extended field. */ export interface UpdateExtendedFieldResponse { /** Renamed extended field. */ field?: ExtendedField; } export interface DeleteExtendedFieldRequest { /** Extended field key. */ key: string; } export interface DeleteExtendedFieldResponse { } export interface PurgeRequest { /** Instance ID of the site. */ instanceId?: string; } export interface PurgeResponse { /** Number of items deleted. */ deletedItems?: number; } export interface GdprListRequest { /** Instance ID of the site. */ instanceId?: string; } export interface GdprListResponse { /** List of extended fields. */ fields?: ExtendedField[]; } export interface QueryExtendedFieldsRequest { /** Query options. */ query?: Query; } 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 extended fields](https://dev.wix.com/api/rest/contacts/extended-fields/sort-and-filter). * * Example: `{ "filter": { * "displayName": { * "$startsWith": "Referral" * } * } * }` */ filter?: Record | null; /** * Sorting options. Currently supports sorting on one field only. * * Example: `{ "sort": [{"fieldName": "displayName", "order": "DESC"}] }` */ sort?: Sorting[]; /** Pagination options. */ paging?: Paging; } export interface QueryExtendedFieldsResponse { /** List of extended fields. */ fields?: ExtendedField[]; /** 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 ExtendedFieldNonNullableFields { key: string; displayName: string; dataType: FieldDataType; fieldType: FieldType; } export interface FindOrCreateExtendedFieldResponseNonNullableFields { field?: ExtendedFieldNonNullableFields; newField: boolean; } export interface GetExtendedFieldResponseNonNullableFields { field?: ExtendedFieldNonNullableFields; } export interface UpdateExtendedFieldResponseNonNullableFields { field?: ExtendedFieldNonNullableFields; } export interface QueryExtendedFieldsResponseNonNullableFields { fields: ExtendedFieldNonNullableFields[]; } export {};