Edits history of script submission #16161 for ' Query site events (gitbook)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Gitbook = {
      token: string;
    };
    /**
     * Query site events
     *
     */
    export async function main(
      auth: Gitbook,
      organizationId: string,
      siteId: string,
      body: {
        select?:
          | { column: "datetime"; interval?: "hour" | "day" | "week" | "month" }
          | { column: "url" }
          | { column: "eventType" }
          | { column: "eventsCount" }
          | { column: "sessionsCount" }
          | { column: "visitorsCount" }
          | { column: "siteSection" }
          | { column: "siteSpace" }
          | { column: "siteShareKey" }
          | { column: "page" }
          | { column: "visitorGeoCountry" }
          | { column: "visitorGeoPoint"; precision?: number }
          | { column: "visitorDevice" }
          | { column: "visitorBrowser" }
          | { column: "visitorOS" }
          | { column: "visitorBot" }
          | { column: "visitorLanguage" }
          | { column: "eventLinkTargetValue" }
          | { column: "eventLinkTargetKind" }
          | { column: "eventLinkTargetDomain" }
          | { column: "eventLinkPosition" }
          | { column: "eventAPIOperationPath" }
          | { column: "eventAPIOperationMethod" }
          | { column: "eventSearchQuery" }
          | { column: "eventPageFeedbackRating" }
          | { column: "eventPageFeedbackComment" }
          | { column: "eventAskResponseRating" }
          | { column: "pageFeedbackRating" }
          | { column: "askResponseRating" }
          | { column: "referrer" }
          | { column: "referrerDomain" }
          | { column: "utmSource" }
          | { column: "utmMedium" }
          | { column: "utmCampaign" }
          | { column: "utmTerm" }
          | { column: "utmContent" }
          | { column: "visitorClaimProperty" }
          | { column: "visitorClaim"; claim: string }
          | { column: "eventAdDomain" }
          | { column: "eventAdPlacement" }
          | { column: "eventTrademarkPlacement" }[];
        where?:
          | ({ column: "datetime"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "url"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventsCount"; values: number[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "sessionsCount"; values: number[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "visitorsCount"; values: number[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "eventType";
              values:
                | "page_view"
                | "search_open"
                | "search_type_query"
                | "search_open_result"
                | "page_post_feedback"
                | "page_post_feedback_comment"
                | "ask_question"
                | "ask_rate_response"
                | "link_click"
                | "api_client_open"
                | "api_client_request"
                | "ad_click"
                | "ad_display"
                | "trademark_click"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "visitorClaim"; claim: string; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "visitorClaimProperty"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "visitorBrowser";
              values:
                | "chrome"
                | "firefox"
                | "safari"
                | "edge"
                | "ie"
                | "opera"
                | "unknown"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "visitorDevice";
              values: "unknown" | "desktop" | "tablet" | "mobile"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "visitorOS";
              values:
                | "unknown"
                | "windows"
                | "macos"
                | "linux"
                | "android"
                | "ios"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "visitorBot";
              values:
                | ""
                | "unknown"
                | "googlebot"
                | "bingbot"
                | "duckduckbot"
                | "facebookbot"
                | "applebot"
                | "chatgpt"
                | "anthropic"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "eventLinkTargetValue";
              values:
                | { kind: "file"; file: string }
                | { kind: "url"; url: string }
                | { kind: "page"; page: string; space?: string }
                | { kind: "anchor"; anchor: string; space?: string; page?: string }
                | { kind: "user"; user: string }
                | { kind: "collection"; collection: string }
                | { kind: "space"; space: string }
                | {
                    kind: "reusable-content";
                    reusableContent: string;
                    space?: string;
                  }
                | { kind: "openapi"; spec: string }[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "eventLinkTargetKind";
              values:
                | "url"
                | "page"
                | "file"
                | "anchor"
                | "user"
                | "collection"
                | "space"
                | "reusable-content"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "eventLinkPosition";
              values:
                | "announcement"
                | "header"
                | "footer"
                | "sidebar"
                | "content"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "siteSection"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "siteSpace"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "siteShareKey"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "page"; values: { page: string; space: string }[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "visitorGeoCountry"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "visitorGeoPoint";
              values: { latitude: number; longitude: number; h3: string }[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "visitorLanguage"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventLinkTargetDomain"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventAPIOperationPath"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventAPIOperationMethod"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventSearchQuery"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "pageFeedbackRating";
              values: { ok: number; good: number; bad: number }[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "askResponseRating";
              values: { positive: number; negative: number }[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "eventPageFeedbackRating";
              values: "bad" | "ok" | "good"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventAskResponseRating"; values: number[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventPageFeedbackComment"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "referrer"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "referrerDomain"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "utmSource"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "utmMedium"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "utmCampaign"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "utmTerm"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "utmContent"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventAdDomain"; values: string[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({ column: "eventAdPlacement"; values: "aside"[] } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            })
          | ({
              column: "eventTrademarkPlacement";
              values: "footer" | "sidebar" | "ad" | "pdf"[];
            } & {
              operator?:
                | "in"
                | "notIn"
                | "greaterThan"
                | "greaterThanOrEqual"
                | "lessThan"
                | "lessThanOrEqual";
            }[]);
        groupBy?:
          | { column: "datetime"; interval?: "hour" | "day" | "week" | "month" }
          | { column: "url" }
          | { column: "eventType" }
          | { column: "eventsCount" }
          | { column: "sessionsCount" }
          | { column: "visitorsCount" }
          | { column: "siteSection" }
          | { column: "siteSpace" }
          | { column: "siteShareKey" }
          | { column: "page" }
          | { column: "visitorGeoCountry" }
          | { column: "visitorGeoPoint"; precision?: number }
          | { column: "visitorDevice" }
          | { column: "visitorBrowser" }
          | { column: "visitorOS" }
          | { column: "visitorBot" }
          | { column: "visitorLanguage" }
          | { column: "eventLinkTargetValue" }
          | { column: "eventLinkTargetKind" }
          | { column: "eventLinkTargetDomain" }
          | { column: "eventLinkPosition" }
          | { column: "eventAPIOperationPath" }
          | { column: "eventAPIOperationMethod" }
          | { column: "eventSearchQuery" }
          | { column: "eventPageFeedbackRating" }
          | { column: "eventPageFeedbackComment" }
          | { column: "eventAskResponseRating" }
          | { column: "pageFeedbackRating" }
          | { column: "askResponseRating" }
          | { column: "referrer" }
          | { column: "referrerDomain" }
          | { column: "utmSource" }
          | { column: "utmMedium" }
          | { column: "utmCampaign" }
          | { column: "utmTerm" }
          | { column: "utmContent" }
          | { column: "visitorClaimProperty" }
          | { column: "visitorClaim"; claim: string }
          | { column: "eventAdDomain" }
          | { column: "eventAdPlacement" }
          | { column: "eventTrademarkPlacement" }[];
        order?: {
          by:
            | { column: "datetime"; interval?: "hour" | "day" | "week" | "month" }
            | { column: "url" }
            | { column: "eventType" }
            | { column: "eventsCount" }
            | { column: "sessionsCount" }
            | { column: "visitorsCount" }
            | { column: "siteSection" }
            | { column: "siteSpace" }
            | { column: "siteShareKey" }
            | { column: "page" }
            | { column: "visitorGeoCountry" }
            | { column: "visitorGeoPoint"; precision?: number }
            | { column: "visitorDevice" }
            | { column: "visitorBrowser" }
            | { column: "visitorOS" }
            | { column: "visitorBot" }
            | { column: "visitorLanguage" }
            | { column: "eventLinkTargetValue" }
            | { column: "eventLinkTargetKind" }
            | { column: "eventLinkTargetDomain" }
            | { column: "eventLinkPosition" }
            | { column: "eventAPIOperationPath" }
            | { column: "eventAPIOperationMethod" }
            | { column: "eventSearchQuery" }
            | { column: "eventPageFeedbackRating" }
            | { column: "eventPageFeedbackComment" }
            | { column: "eventAskResponseRating" }
            | { column: "pageFeedbackRating" }
            | { column: "askResponseRating" }
            | { column: "referrer" }
            | { column: "referrerDomain" }
            | { column: "utmSource" }
            | { column: "utmMedium" }
            | { column: "utmCampaign" }
            | { column: "utmTerm" }
            | { column: "utmContent" }
            | { column: "visitorClaimProperty" }
            | { column: "visitorClaim"; claim: string }
            | { column: "eventAdDomain" }
            | { column: "eventAdPlacement" }
            | { column: "eventTrademarkPlacement" };
          direction: "asc" | "desc";
        };
        range:
          | "lastYear"
          | "last3Months"
          | "last30Days"
          | "last7Days"
          | "last24Hours"
          | { from: string; to: string };
        limit?: number;
      },
    ) {
      const url = new URL(
        `https://api.gitbook.com/v1/orgs/${organizationId}/sites/${siteId}/insights/events/aggregate`,
      );
    
      const response = await fetch(url, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Bearer " + auth.token,
        },
        body: JSON.stringify(body),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 235 days ago