Summarization Rule

Overview

Summarization Rules define automated summarization workflows for content stored in buckets. They provide configuration for content type filtering, summarization prompts, token limits, parallel processing, and retry logic to enable efficient and customizable content summarization across different document types and use cases.

Summarization Rules are managed via the View server API at [http|https]://[hostname]:[port]/v1.0/tenants/[tenant-guid]/summarizationrules and support comprehensive operations including rule creation, retrieval, updates, and deletion for optimal summarization workflow management.

Summarization Rule Object Structure

Summarization Rule objects contain comprehensive configuration for automated content summarization. Here's the complete structure:

{
  "GUID": "00000000-0000-0000-0000-000000000000",
  "TenantGUID": "00000000-0000-0000-0000-000000000000",
  "BucketGUID": "00000000-0000-0000-0000-000000000000",
  "OwnerGUID": "00000000-0000-0000-0000-000000000000",
  "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
  "Name": "Updated summarization rule-1",
  "ContentType": "*",
  "MaxContentLength": 134217728,
  "MinCellLength": 128,
  "Order": "BottomUp",
  "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
  "MaxSummaryTokens": 256,
  "MaxParallelTasks": 4,
  "MaxRetriesPerSummary": 3,
  "MaxRetries": 9,
  "TimeoutMs": 30000,
  "CreatedUtc": "2025-11-05T05:47:52.470591Z"
}

Field Descriptions

  • GUID (GUID): Globally unique identifier for the summarization rule object
  • TenantGUID (GUID): Globally unique identifier for the tenant
  • BucketGUID (GUID): Globally unique identifier for the bucket containing content to summarize
  • OwnerGUID (GUID): GUID of the user who created the rule
  • ModelProfileGUID (GUID): GUID of the model profile to use for summarization
  • Name (string): Display name for the summarization rule
  • ContentType (string): Content type filter (e.g., "*" for all types, "application/pdf", "text/plain")
  • MaxContentLength (number): Maximum content length in bytes to process
  • MinCellLength (number, Optional): Minimum cell length for processing (if applicable)
  • Order (string): Processing order (e.g., "BottomUp", "TopDown")
  • SummarizationPrompt (string): Prompt template for summarization
  • MaxSummaryTokens (number): Maximum number of tokens in the generated summary
  • MaxParallelTasks (number): Maximum number of parallel summarization tasks
  • MaxRetriesPerSummary (number): Maximum retry attempts per summary operation
  • MaxRetries (number): Maximum total retry attempts
  • TimeoutMs (number): Timeout in milliseconds for summarization operations
  • CreatedUtc (datetime): Timestamp when the rule was created

API Endpoints

Summarization Rules are managed via the View server API at [http|https]://[hostname]:[port]/v1.0/tenants/[tenant-guid]/summarizationrules

Supported HTTP Methods: GET, PUT, DELETE, HEAD

Important: All summarization rule operations require appropriate authentication tokens.

Supported Operations

  • Create: Create new summarization rule configurations
  • Read: Retrieve individual summarization rule configurations
  • Read All: List all summarization rules
  • Enumerate: List all summarization rules with pagination support
  • Update: Modify existing summarization rule configurations
  • Delete: Remove summarization rule configurations
  • Existence Check: Verify summarization rule presence without retrieving details

Create Summarization Rule

Creates a new summarization rule using PUT /v1.0/tenants/[tenant-guid]/summarizationrules. Creates a new rule configuration with the specified parameters.

Request Parameters

  • BucketGUID (GUID, Required): GUID of the bucket containing content to summarize
  • ModelProfileGUID (GUID, Required): GUID of the model profile to use for summarization
  • Name (string, Required): Display name for the summarization rule
  • ContentType (string, Required): Content type filter (e.g., "*" for all types)
  • Prefix (any, Optional): Prefix filter for content selection
  • Suffix (any, Optional): Suffix filter for content selection
  • MaxContentLength (number, Required): Maximum content length in bytes to process
  • Order (string, Required): Processing order (e.g., "BottomUp", "TopDown")
  • SummarizationPrompt (string, Required): Prompt template for summarization
  • MaxSummaryTokens (number, Required): Maximum number of tokens in the generated summary
  • MaxParallelTasks (number, Required): Maximum number of parallel summarization tasks

Request Body

{
  "BucketGUID": "00000000-0000-0000-0000-000000000000",
  "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
  "Name": "PDF Summarization Rule",
  "ContentType": "application/pdf",
  "Prefix": null,
  "Suffix": null,
  "MaxContentLength": 134217728,
  "Order": "BottomUp",
  "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
  "MaxSummaryTokens": 256,
  "MaxParallelTasks": 4
}
curl --location --request PUT 'http://localhost:8000/v1.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules' \
--header 'content-type: application/json' \
--header 'Authorization: ••••••' \
--data '{
    "BucketGUID": "00000000-0000-0000-0000-000000000000",
    "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
    "Name": "PDF Summarization Rule",
    "ContentType": "application/pdf",
    "Prefix": null,
    "Suffix": null,
    "MaxContentLength": 134217728,
    "Order": "BottomUp",
    "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
    "MaxSummaryTokens": 256,
    "MaxParallelTasks": 4
}'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const createSummarizationRule = async () => {
  try {
    const response = await api.SummarizationRule.create({
      BucketGUID: "00000000-0000-0000-0000-000000000000",
      ModelProfileGUID: "00000000-0000-0000-0000-000000000000",
      Name: "PDF Summarization Rule",
      ContentType: "application/pdf",
      Prefix: null,
      Suffix: null,
      MaxContentLength: 134217728,
      Order: "BottomUp",
      SummarizationPrompt: "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
      MaxSummaryTokens: 256,
      MaxParallelTasks: 4
    });
    console.log(response, "Summarization rule created successfully");
  } catch (err) {
    console.log("Error creating summarization rule:", err);
  }
};

createSummarizationRule();

Response


Returns the created summarization rule object with all configuration details:

{
  "GUID": "00000000-0000-0000-0000-000000000000",
  "TenantGUID": "00000000-0000-0000-0000-000000000000",
  "BucketGUID": "00000000-0000-0000-0000-000000000000",
  "OwnerGUID": "00000000-0000-0000-0000-000000000000",
  "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
  "Name": "PDF Summarization Rule",
  "ContentType": "application/pdf",
  "MaxContentLength": 134217728,
  "Order": "BottomUp",
  "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
  "MaxSummaryTokens": 256,
  "MaxParallelTasks": 4,
  "MaxRetriesPerSummary": 3,
  "MaxRetries": 9,
  "TimeoutMs": 30000,
  "CreatedUtc": "2025-11-05T05:47:52.470591Z"
}

Read Summarization Rule

Retrieves a specific summarization rule by GUID using GET /v1.0/tenants/[tenant-guid]/summarizationrules/[rule-guid]. Returns the complete rule configuration including all settings.

Request Parameters

  • rule-guid (string, Path, Required): GUID of the summarization rule to retrieve
curl --location 'http://localhost:8000/v1.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules/00000000-0000-0000-0000-000000000000' \
--header 'Authorization: ••••••'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const readSummarizationRule = async () => {
  try {
    const response = await api.SummarizationRule.read("00000000-0000-0000-0000-000000000000");
    console.log(response, "Summarization rule fetched successfully");
  } catch (err) {
    console.log("Error fetching summarization rule:", err);
  }
};

readSummarizationRule();

Response

Returns the complete summarization rule configuration:

{
  "GUID": "00000000-0000-0000-0000-000000000000",
  "TenantGUID": "00000000-0000-0000-0000-000000000000",
  "BucketGUID": "00000000-0000-0000-0000-000000000000",
  "OwnerGUID": "00000000-0000-0000-0000-000000000000",
  "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
  "Name": "Updated summarization rule-1",
  "ContentType": "*",
  "MaxContentLength": 134217728,
  "MinCellLength": 128,
  "Order": "BottomUp",
  "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
  "MaxSummaryTokens": 256,
  "MaxParallelTasks": 4,
  "MaxRetriesPerSummary": 3,
  "MaxRetries": 9,
  "TimeoutMs": 30000,
  "CreatedUtc": "2025-11-05T05:47:52.470591Z"
}

Note: The HEAD method can be used as an alternative to simply check the existence of the object. HEAD requests return either a 200 OK if the object exists, or a 404 Not Found if not. No response body is returned with a HEAD request.

Read All Summarization Rules

Retrieves all summarization rules for a tenant using GET /v1.0/tenants/[tenant-guid]/summarizationrules. Returns an array of all summarization rule configurations.

Request Parameters

No additional parameters required beyond authentication.

curl --location 'http://localhost:8000/v1.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules' \
--header 'Authorization: ••••••'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const readAllSummarizationRules = async () => {
  try {
    const response = await api.SummarizationRule.readAll();
    console.log(response, "All summarization rules fetched successfully");
  } catch (err) {
    console.log("Error fetching summarization rules:", err);
  }
};

readAllSummarizationRules();

Response

Returns an array of all summarization rule objects:

[
  {
    "GUID": "00000000-0000-0000-0000-000000000000",
    "TenantGUID": "00000000-0000-0000-0000-000000000000",
    "BucketGUID": "00000000-0000-0000-0000-000000000000",
    "OwnerGUID": "00000000-0000-0000-0000-000000000000",
    "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
    "Name": "PDF Summarization Rule",
    "ContentType": "application/pdf",
    "MaxContentLength": 134217728,
    "Order": "BottomUp",
    "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
    "MaxSummaryTokens": 256,
    "MaxParallelTasks": 4,
    "MaxRetriesPerSummary": 3,
    "MaxRetries": 9,
    "TimeoutMs": 30000,
    "CreatedUtc": "2025-11-05T05:47:52.470591Z"
  }
]

Enumerate Summarization Rules

Retrieves a paginated list of all summarization rules in the tenant using GET /v2.0/tenants/[tenant-guid]/summarizationrules. This endpoint provides comprehensive enumeration with pagination support.

Request Parameters

No additional parameters required beyond authentication.

curl --location 'http://localhost:8000/v2.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules' \
--header 'Authorization: ••••••'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const enumerateSummarizationRules = async () => {
  try {
    const response = await api.SummarizationRule.enumerate();
    console.log(response, "Summarization rules enumerated successfully");
  } catch (err) {
    console.log("Error enumerating summarization rules:", err);
  }
};

enumerateSummarizationRules();

Response

Returns a paginated list of summarization rule objects:

{
  "Success": true,
  "Timestamp": {
    "Start": "2025-11-05T10:00:00.000000Z",
    "TotalMs": 15.23,
    "Messages": {}
  },
  "MaxResults": 10,
  "IterationsRequired": 1,
  "EndOfResults": true,
  "RecordsRemaining": 0,
  "Objects": [
    {
      "GUID": "00000000-0000-0000-0000-000000000000",
      "TenantGUID": "00000000-0000-0000-0000-000000000000",
      "BucketGUID": "00000000-0000-0000-0000-000000000000",
      "OwnerGUID": "00000000-0000-0000-0000-000000000000",
      "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
      "Name": "PDF Summarization Rule",
      "ContentType": "application/pdf",
      "MaxContentLength": 134217728,
      "Order": "BottomUp",
      "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
      "MaxSummaryTokens": 256,
      "MaxParallelTasks": 4,
      "MaxRetriesPerSummary": 3,
      "MaxRetries": 9,
      "TimeoutMs": 30000,
      "CreatedUtc": "2025-11-05T05:47:52.470591Z"
    }
  ],
  "ContinuationToken": null
}

Update Summarization Rule

Updates an existing summarization rule configuration using PUT /v1.0/tenants/[tenant-guid]/summarizationrules/[rule-guid]. This endpoint allows you to modify rule parameters while preserving certain immutable fields.

Request Parameters

  • rule-guid (string, Path, Required): GUID of the summarization rule object to update

Updateable Fields

All configuration parameters can be updated except for:

  • GUID: Immutable identifier
  • TenantGUID: Immutable tenant association
  • OwnerGUID: Immutable owner association
  • CreatedUtc: Immutable creation timestamp

Important Notes

  • Field Preservation: Certain fields cannot be modified and will be preserved across updates
  • Complete Object: Provide a fully populated object in the request body
  • Configuration Validation: All updated parameters will be validated before applying changes
curl --location --request PUT 'http://localhost:8000/v1.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules/00000000-0000-0000-0000-000000000000' \
--header 'content-type: application/json' \
--header 'Authorization: ••••••' \
--data '{
    "GUID": "00000000-0000-0000-0000-000000000000",
    "TenantGUID": "00000000-0000-0000-0000-000000000000",
    "BucketGUID": "00000000-0000-0000-0000-000000000000",
    "OwnerGUID": "00000000-0000-0000-0000-000000000000",
    "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
    "Name": "Updated PDF Summarization Rule",
    "ContentType": "application/pdf",
    "MaxContentLength": 134217728,
    "Order": "TopDown",
    "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
    "MaxSummaryTokens": 512,
    "MaxParallelTasks": 8,
    "MaxRetriesPerSummary": 3,
    "MaxRetries": 9,
    "TimeoutMs": 60000
}'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const updateSummarizationRule = async () => {
  try {
    const response = await api.SummarizationRule.update({
      GUID: "00000000-0000-0000-0000-000000000000",
      TenantGUID: "00000000-0000-0000-0000-000000000000",
      BucketGUID: "00000000-0000-0000-0000-000000000000",
      OwnerGUID: "00000000-0000-0000-0000-000000000000",
      ModelProfileGUID: "00000000-0000-0000-0000-000000000000",
      Name: "Updated PDF Summarization Rule",
      ContentType: "application/pdf",
      MaxContentLength: 134217728,
      Order: "TopDown",
      SummarizationPrompt: "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
      MaxSummaryTokens: 512,
      MaxParallelTasks: 8,
      MaxRetriesPerSummary: 3,
      MaxRetries: 9,
      TimeoutMs: 60000,
      CreatedUtc: "2025-11-05T05:47:52.470591Z"
    });
    console.log(response, "Summarization rule updated successfully");
  } catch (err) {
    console.log("Error updating summarization rule:", err);
  }
};

updateSummarizationRule();

Response

Returns the updated summarization rule object with all configuration details:

{
  "GUID": "00000000-0000-0000-0000-000000000000",
  "TenantGUID": "00000000-0000-0000-0000-000000000000",
  "BucketGUID": "00000000-0000-0000-0000-000000000000",
  "OwnerGUID": "00000000-0000-0000-0000-000000000000",
  "ModelProfileGUID": "00000000-0000-0000-0000-000000000000",
  "Name": "Updated PDF Summarization Rule",
  "ContentType": "application/pdf",
  "MaxContentLength": 134217728,
  "Order": "TopDown",
  "SummarizationPrompt": "Task: Summarize the content below using the supplied context.\nGuidance: Incorporate relevant contextual information into the summary.\nLength: Maximum {tokens} tokens.\nOutput format: Summary text only, without introductory or concluding remarks.\n\n=== CONTENT ===\n{content}\n\n=== CONTEXT ===\n{context}",
  "MaxSummaryTokens": 512,
  "MaxParallelTasks": 8,
  "MaxRetriesPerSummary": 3,
  "MaxRetries": 9,
  "TimeoutMs": 60000,
  "CreatedUtc": "2025-11-05T05:47:52.470591Z"
}

Delete Summarization Rule

Deletes a summarization rule by GUID using DELETE /v1.0/tenants/[tenant-guid]/summarizationrules/[rule-guid]. This operation permanently removes the summarization rule configuration from the system.

Important Note: Ensure no active summarization workflows are using this rule before deletion, as this will break ongoing summarization operations.

Request Parameters

  • rule-guid (string, Path, Required): GUID of the summarization rule object to delete
curl --location --request DELETE 'http://localhost:8000/v1.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules/00000000-0000-0000-0000-000000000000' \
--header 'Authorization: ••••••'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const deleteSummarizationRule = async () => {
  try {
    const response = await api.SummarizationRule.delete("00000000-0000-0000-0000-000000000000");
    console.log(response, "Summarization rule deleted successfully");
  } catch (err) {
    console.log("Error deleting summarization rule:", err);
  }
};

deleteSummarizationRule();

Response

Returns 204 No Content on successful deletion. No response body is returned.

Check Summarization Rule Existence

Verifies if a summarization rule exists without retrieving its configuration using HEAD /v1.0/tenants/[tenant-guid]/summarizationrules/[rule-guid]. This is an efficient way to check rule presence before performing operations.

Request Parameters

  • rule-guid (string, Path, Required): GUID of the summarization rule object to check
curl --location --head 'http://localhost:8000/v1.0/tenants/00000000-0000-0000-0000-000000000000/summarizationrules/00000000-0000-0000-0000-000000000000' \
--header 'Authorization: ••••••'
import { ViewConfigurationSdk } from "view-sdk";

const api = new ViewConfigurationSdk(
  "http://localhost:8000/", //endpoint
  "00000000-0000-0000-0000-000000000000", //tenant Id
  "default" //access key
);

const existsSummarizationRule = async () => {
  try {
    const response = await api.SummarizationRule.exists("00000000-0000-0000-0000-000000000000");
    console.log(response, "Summarization rule exists");
  } catch (err) {
    console.log("Error checking summarization rule:", err);
  }
};

existsSummarizationRule();

Response

  • 200 OK: Summarization rule exists
  • 404 Not Found: Summarization rule does not exist
  • No response body: Only HTTP status code is returned

Note: HEAD requests do not return a response body, only the HTTP status code indicating whether the summarization rule exists.

Best Practices

When managing summarization rules in the View platform, consider the following recommendations for optimal summarization workflow configuration and performance:

  • Content Type Filtering: Use specific content types or "*" for all types based on your summarization needs
  • Prompt Design: Design effective summarization prompts with proper placeholders
  • Token Limits: Set appropriate MaxSummaryTokens based on your use case and model capabilities
  • Parallel Processing: Configure MaxParallelTasks based on your system resources and workload
  • Retry Logic: Set appropriate MaxRetriesPerSummary and MaxRetries for handling transient failures
  • Timeout Configuration: Configure TimeoutMs appropriately to balance between completion and resource usage
  • Processing Order: Choose appropriate Order (BottomUp/TopDown) based on your content structure
  • Bucket Association: Ensure buckets exist and are accessible before creating summarization rules
  • Model Profile Selection: Use appropriate model profiles that support summarization tasks
  • Rule Organization: Use descriptive names to clearly identify the purpose and scope of each rule

Next Steps

After successfully configuring summarization rules, you can:

  • Content Processing: Use configured rules to automatically summarize content in buckets
  • Workflow Integration: Integrate summarization rules with content processing pipelines
  • Performance Monitoring: Monitor summarization performance and adjust rule parameters as needed
  • Rule Optimization: Optimize prompts and parameters based on summarization quality and performance
  • Platform Integration: Integrate summarization rules with other View platform services for comprehensive content processing workflows