Edits history of script submission #16159 for ' Publish an integration (gitbook)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Gitbook = {
      token: string;
    };
    /**
     * Publish an integration
     *
     */
    export async function main(
      auth: Gitbook,
      integrationName: string,
      body: {
        runtime?: "v1" | "v2";
        icon?: string;
        title: string;
        description: string;
        summary?: string;
        previewImages?: string[];
        visibility?: "public" | "private" | "unlisted";
        target?: "all" | "site" | "space" | "organization";
        scopes:
          | "space:views:read"
          | "space:content:read"
          | "space:content:write"
          | "space:metadata:read"
          | "space:metadata:write"
          | "space:script:inject"
          | "space:script:cookies"
          | "space:git:sync"
          | "space:visitor:auth"
          | "site:metadata:read"
          | "site:views:read"
          | "site:script:inject"
          | "site:script:cookies"
          | "site:visitor:auth"
          | "site:adaptive:read"
          | "site:adaptive:write"
          | "openapi:read"
          | "openapi:write"
          | "conversations:ingest"[];
        categories?:
          | "analytics"
          | "collaboration"
          | "content"
          | "gitsync"
          | "marketing"
          | "visitor-auth"
          | "other"[];
        blocks?: {
          id: string;
          title: string;
          description?: string;
          icon?: string;
          urlUnfurl?: string[];
          markdown?: { codeblock: string; body: string };
        }[];
        contentSources?: {
          id: string;
          title: string;
          description?: string;
          icon?: string;
          configuration: { componentId: string };
        }[];
        externalLinks?: { url: string; label: string }[];
        configurations?: {
          account?:
            | { properties: {}; required?: string[] }
            | { componentId: string };
          space?: { properties: {}; required?: string[] } | { componentId: string };
          site?: { properties: {}; required?: string[] } | { componentId: string };
        };
        script: string;
        organization: string;
        secrets?: {};
        contentSecurityPolicy?:
          | string
          | {
              "base-uri"?: string;
              "block-all-mixed-content"?: string;
              "child-src"?: string;
              "connect-src"?: string;
              "default-src"?: string;
              "font-src"?: string;
              "form-action"?: string;
              "frame-ancestors"?: string;
              "frame-src"?: string;
              "img-src"?: string;
              "manifest-src"?: string;
              "media-src"?: string;
              "navigate-to"?: string;
              "object-src"?: string;
              "plugin-types"?: string;
              "prefetch-src"?: string;
              referrer?: string;
              "report-to"?: string;
              "report-uri"?: string;
              "require-sri-for"?: string;
              "require-trusted-types-for"?: string;
              sandbox?: string;
              "script-src"?: string;
              "script-src-attr"?: string;
              "script-src-elem"?: string;
              "style-src"?: string;
              "style-src-attr"?: string;
              "style-src-elem"?: string;
              "trusted-types"?: string;
              "upgrade-insecure-requests"?: string;
              "worker-src"?: string;
            };
      },
    ) {
      const url = new URL(`https://api.gitbook.com/v1/integrations/${integrationName}`);
    
      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