Grepr · Schema

ReadJob

Attributes of the Grepr Job

CompanyObservabilityTelemetryAIAutomation

Properties

Name Type Description
createdAt string Time the job was accepted for creation
desiredState string Desired state of the job
editedBy string User who created this job version, in format 'Full Name (userId)' or 'system' for automated operations
endedAt string Time the job was ended
execution string Execution mode of the job
greprVersion string The version of Grepr used to create the job
id string Id of the job
jobGraph object
name string Name of the job
organizationId string Organization ID of the job
pipelineStatus object
processing string Processing method of the job
startedAt string Time the job was started
state string State of the job
tags object Custom tags attached to the job for ease of search
teamIds array The team IDs that this job is associated with.
updatedAt string Time the job was last updated
version integer Version of the job
View JSON Schema on GitHub

JSON Schema

grepr-read-job-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/grepr/json-schema/grepr-read-job-schema.json",
  "title": "ReadJob",
  "description": "Attributes of the Grepr Job",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/grepr-openapi.json#/components/schemas/ReadJob",
  "properties": {
    "createdAt": {
      "description": "Time the job was accepted for creation",
      "format": "date-time",
      "type": "string"
    },
    "desiredState": {
      "default": "RUNNING",
      "description": "Desired state of the job",
      "enum": [
        "CREATED",
        "PENDING",
        "INFRA_UPDATE",
        "INFRA_UPDATE_WAIT",
        "VERIFYING",
        "WAITING",
        "RUNNING",
        "STOPPED",
        "FINISHED",
        "FAILED",
        "CANCELLED",
        "DELETED",
        "UPDATING",
        "STARTING",
        "RESTARTING",
        "STOPPING",
        "ROLLING_BACK",
        "DELETING"
      ],
      "type": "string"
    },
    "editedBy": {
      "description": "User who created this job version, in format 'Full Name (userId)' or 'system' for automated operations",
      "type": "string"
    },
    "endedAt": {
      "description": "Time the job was ended",
      "format": "date-time",
      "type": "string"
    },
    "execution": {
      "default": "ASYNCHRONOUS",
      "description": "Execution mode of the job",
      "enum": [
        "SYNCHRONOUS",
        "ASYNCHRONOUS"
      ],
      "type": "string"
    },
    "greprVersion": {
      "description": "The version of Grepr used to create the job",
      "type": "string"
    },
    "id": {
      "description": "Id of the job",
      "type": "string"
    },
    "jobGraph": {
      "$ref": "#/$defs/GreprJobGraph"
    },
    "name": {
      "description": "Name of the job",
      "pattern": "[a-z0-9_]{1,128}",
      "type": "string"
    },
    "organizationId": {
      "description": "Organization ID of the job",
      "type": "string"
    },
    "pipelineStatus": {
      "$ref": "#/$defs/PipelineStatus"
    },
    "processing": {
      "default": "STREAMING",
      "description": "Processing method of the job",
      "enum": [
        "BATCH",
        "STREAMING"
      ],
      "type": "string"
    },
    "startedAt": {
      "description": "Time the job was started",
      "format": "date-time",
      "type": "string"
    },
    "state": {
      "default": "STARTING",
      "description": "State of the job",
      "enum": [
        "CREATED",
        "PENDING",
        "INFRA_UPDATE",
        "INFRA_UPDATE_WAIT",
        "VERIFYING",
        "WAITING",
        "RUNNING",
        "STOPPED",
        "FINISHED",
        "FAILED",
        "CANCELLED",
        "DELETED",
        "UPDATING",
        "STARTING",
        "RESTARTING",
        "STOPPING",
        "ROLLING_BACK",
        "DELETING"
      ],
      "type": "string"
    },
    "tags": {
      "additionalProperties": {
        "description": "Custom tags attached to the job for ease of search",
        "type": "string"
      },
      "default": {},
      "description": "Custom tags attached to the job for ease of search",
      "type": "object"
    },
    "teamIds": {
      "default": [],
      "description": "The team IDs that this job is associated with.",
      "items": {
        "description": "The team IDs that this job is associated with.",
        "type": "string"
      },
      "type": "array",
      "uniqueItems": true
    },
    "updatedAt": {
      "description": "Time the job was last updated",
      "format": "date-time",
      "type": "string"
    },
    "version": {
      "description": "Version of the job",
      "format": "int64",
      "type": "integer"
    }
  },
  "required": [
    "createdAt",
    "desiredState",
    "execution",
    "id",
    "jobGraph",
    "name",
    "organizationId",
    "processing",
    "state",
    "tags",
    "updatedAt",
    "version"
  ],
  "type": "object",
  "$defs": {
    "ActionRule": {
      "description": "Base class of all Action Rules",
      "oneOf": [
        {
          "$ref": "#/$defs/EventActionRule"
        },
        {
          "$ref": "#/$defs/JobActionRule"
        }
      ],
      "type": "object"
    },
    "AddToListAttributeAction": {
      "properties": {
        "order": {
          "default": 0,
          "description": "Action order. Lower is applied first.",
          "format": "int32",
          "type": "integer"
        },
        "targetPath": {
          "description": "The path to the list to add to.",
          "type": "string"
        },
        "type": {
          "description": "Add values to a list in event attributes. If the target list is not present, it is created. If the target is present and not a list, it's a no-op.",
          "enum": [
            "attribute-add-action"
          ],
          "type": "string"
        },
        "value": {
          "$ref": "#/$defs/Any"
        }
      },
      "required": [
        "targetPath",
        "type",
        "value"
      ],
      "type": "object"
    },
    "AgentLogProcessor": {
      "description": "Processes native agent-harness OTel logs into canonical agent LogEvents.",
      "properties": {
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "type": {
          "description": "Processes native agent-harness OTel logs.",
          "enum": [
            "agent-log-processor"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Transforms"
      ]
    },
    "AgentSessionAnalytics": {
      "properties": {
        "analysisJobId": {
          "type": "string"
        },
        "analysisVersion": {
          "type": "string"
        },
        "datasetId": {
          "type": "string"
        },
        "embeddingCapacity": {
          "format": "int32",
          "maximum": 64,
          "minimum": 1,
          "type": "integer"
        },
        "embeddingDimensions": {
          "format": "int32",
          "minimum": 1,
          "type": "integer"
        },
        "embeddingModel": {
          "type": "string"
        },
        "end": {
          "format": "date-time",
          "type": "string"
        },
        "labelModel": {
          "type": "string"
        },
        "maxRetries": {
          "format": "int32",
          "maximum": 5,
          "minimum": 0,
          "type": "integer"
        },
        "maximumNamedGroups": {
          "format": "int32",
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        },
        "modelIntegrationId": {
          "type": "string"
        },
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "query": {
          "$ref": "#/$defs/EventPredicate"
        },
        "requestTimeout": {
          "description": "Duration in ISO-8601 format (e.g., 'PT20.345S' for 20.345 seconds). ",
          "format": "ISO-8601",
          "type": "string"
        },
        "retainedAnalyticsMemoryLimitBytes": {
          "format": "int64",
          "minimum": 1,
          "type": "integer"
        },
        "sessionCap": {
          "format": "int32",
          "maximum": 100000,
          "minimum": 1,
          "type": "integer"
        },
        "start": {
          "format": "date-time",
          "type": "string"
        },
        "type": {
          "enum": [
            "agent-session-analytics"
          ],
          "type": "string"
        }
      },
      "required": [
        "analysisJobId",
        "analysisVersion",
        "datasetId",
        "embeddingModel",
        "end",
        "labelModel",
        "modelIntegrationId",
        "name",
        "query",
        "requestTimeout",
        "start",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Transforms"
      ]
    },
    "AgentSessionEventsIcebergTableSource": {
      "properties": {
        "datasetId": {
          "description": "The ID of the dataset to read data from.",
          "pattern": "[a-z0-9]{1,13}",
          "type": "string"
        },
        "end": {
          "description": "End of time interval to query data for.",
          "format": "date-time",
          "type": "string"
        },
        "limit": {
          "default": 2500,
          "description": "The maximum number of rows to process",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "offset": {
          "default": 0,
          "description": "Offset on the number of rows to process",
          "format": "int32",
          "minimum": 0,
          "type": "integer"
        },
        "query": {
          "$ref": "#/$defs/query"
        },
        "sortOrder": {
          "default": "ASCENDING",
          "description": "The order in which the rows should be sorted by",
          "enum": [
            "ASCENDING",
            "DESCENDING",
            "UNSORTED"
          ],
          "type": "string"
        },
        "start": {
          "description": "Start of time interval to query data for.",
          "format": "date-time",
          "type": "string"
        },
        "type": {
          "description": "Reads every event of the agent sessions whose events match the query.",
          "enum": [
            "agent-session-events-iceberg-table-source"
          ],
          "type": "string"
        },
        "variables": {
          "additionalProperties": {
            "$ref": "#/$defs/Any"
          },
          "default": {},
          "description": "Variables that can be used to modify the query while parsed",
          "type": "object"
        }
      },
      "required": [
        "datasetId",
        "end",
        "name",
        "query",
        "start",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Sources"
      ]
    },
    "AgentSessionsIcebergTableSource": {
      "properties": {
        "datasetId": {
          "description": "The ID of the dataset to read data from.",
          "pattern": "[a-z0-9]{1,13}",
          "type": "string"
        },
        "end": {
          "description": "End of time interval to query data for.",
          "format": "date-time",
          "type": "string"
        },
        "limit": {
          "default": 2500,
          "description": "The maximum number of rows to process",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "offset": {
          "default": 0,
          "description": "Offset on the number of rows to process",
          "format": "int32",
          "minimum": 0,
          "type": "integer"
        },
        "query": {
          "$ref": "#/$defs/query"
        },
        "sortOrder": {
          "default": "ASCENDING",
          "description": "The order in which the rows should be sorted by",
          "enum": [
            "ASCENDING",
            "DESCENDING",
            "UNSORTED"
          ],
          "type": "string"
        },
        "start": {
          "description": "Start of time interval to query data for.",
          "format": "date-time",
          "type": "string"
        },
        "type": {
          "description": "Selects grouped agent session summaries from the logs Iceberg table.",
          "enum": [
            "agent-sessions-iceberg-table-source"
          ],
          "type": "string"
        },
        "variables": {
          "additionalProperties": {
            "$ref": "#/$defs/Any"
          },
          "default": {},
          "description": "Variables that can be used to modify the query while parsed",
          "type": "object"
        }
      },
      "required": [
        "datasetId",
        "end",
        "name",
        "query",
        "start",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Sources"
      ]
    },
    "AgentSessionsSynchronousSink": {
      "properties": {
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "type": {
          "description": "Sink for returning agent session summaries to the caller.",
          "enum": [
            "agent-sessions-sync-sink"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Sinks"
      ]
    },
    "AgentSignalSink": {
      "description": "Emits a generic pipeline signal for each input log event.",
      "properties": {
        "context": {
          "description": "Optional author-provided context included with every emitted signal.",
          "maxLength": 4096,
          "minLength": 0,
          "type": "string"
        },
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "targetAgentIds": {
          "default": [],
          "description": "Agent ids that should investigate every signal emitted by this sink.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "type": {
          "description": "Emits generic pipeline signals to selected agents.",
          "enum": [
            "agent-signal-sink"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "targetAgentIds",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Sinks"
      ]
    },
    "AgentSpanProcessor": {
      "description": "Normalizes agent span attributes and projects observed transcript content as canonical agent LogEvents in one pass.",
      "properties": {
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "type": {
          "description": "Processes native agent-harness OTel spans.",
          "enum": [
            "agent-span-processor"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Transforms"
      ]
    },
    "AggType": {
      "description": "Aggregation function.",
      "enum": [
        "LATEST",
        "SUM",
        "AVG",
        "CUMULATIVE",
        "CUMULATIVE_UPDOWN",
        "DEFAULT",
        "PERCENTILE",
        "SLOPE",
        "MAX",
        "MIN"
      ],
      "type": "string"
    },
    "AggregationDecl": {
      "description": "One aggregation function declaration.",
      "properties": {
        "args": {
          "default": [],
          "description": "Function arguments. Heterogeneous; validated at pipeline construction. PERCENTILE accepts [rank], [rank, relativeAccuracy], or [rank, relativeAccuracy, maxNumBins].",
          "items": {
            "description": "Function arguments. Heterogeneous; validated at pipeline construction. PERCENTILE accepts [rank], [rank, relativeAccuracy], or [rank, relativeAccuracy, maxNumBins].",
            "type": "object"
          },
          "type": "array"
        },
        "as": {
          "description": "Output suffix. Omitted = preserve source metric name; in rule conditions the output is addressed as `<alias>.val` (at most one as-less aggregation per block).",
          "type": "string"
        },
        "fn": {
          "$ref": "#/$defs/AggType"
        }
      },
      "required": [
        "fn"
      ],
      "type": "object"
    },
    "AnalyticsOrderBy": {
      "default": [],
      "description": "Ordering applied to the analytical results.",
      "properties": {
        "direction": {
          "default": "ASC",
          "description": "Sort direction.",
          "enum": [
            "ASC",
            "DESC"
          ],
          "type": "string"
        },
        "expression": {
          "description": "Grepr SQL expression or projection alias to order by. The expression may reference projection aliases.",
          "maxLength": 4096,
          "minLength": 0,
          "type": "string"
        }
      },
      "required": [
        "expression"
      ],
      "type": "object"
    },
    "AnalyticsProjection": {
      "properties": {
        "alias": {
          "description": "Optional result column name.",
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "expression": {
          "description": "Grepr SQL expression to project.",
          "maxLength": 4096,
          "minLength": 0,
          "type": "string"
        }
      },
      "required": [
        "expression"
      ],
      "type": "object"
    },
    "AnalyticsQuery": {
      "description": "Complete analytical query to execute.",
      "oneOf": [
        {
          "$ref": "#/$defs/StructuredAnalyticsQuery"
        }
      ],
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "AnalyticsTableBinding": {
      "description": "Dataset tables available to the query under logical aliases.",
      "properties": {
        "alias": {
          "description": "Logical table name used by the analytical query.",
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "datasetId": {
          "description": "ID of the dataset that owns the table.",
          "pattern": "[a-z0-9]{1,13}",
          "type": "string"
        },
        "table": {
          "description": "Dataset-owned table exposed under the logical alias.",
          "enum": [
            "logs_raw",
            "logs_dedup",
            "logs_pattern_lookup",
            "metrics_raw",
            "metricdata_raw",
            "spans_raw",
            "spans_dedup"
          ],
          "type": "string"
        }
      },
      "required": [
        "alias",
        "datasetId",
        "table"
      ],
      "type": "object"
    },
    "AnalyticsTimeWindow": {
      "description": "Optional time window that buckets the results. Adds leading 'window_start' and 'window_end' result columns, which are always grouped.",
      "properties": {
        "kind": {
          "description": "Window layout: TUMBLING windows do not overlap; SLIDING windows start every 'slide'.",
          "enum": [
            "TUMBLING",
            "SLIDING"
          ],
          "type": "string"
        },
        "size": {
          "description": "Window length as an ISO-8601 duration, a whole number of milliseconds.",
          "format": "ISO-8601",
          "type": "string"
        },
        "slide": {
          "description": "Distance between consecutive SLIDING window starts as an ISO-8601 duration, a whole number of milliseconds dividing 'size'. Absent for TUMBLING windows.",
          "format": "ISO-8601",
          "type": "string"
        },
        "timestamp": {
          "default": "EVENT_TIMESTAMP",
          "description": "Which timestamp the windows bucket by.",
          "enum": [
            "EVENT_TIMESTAMP",
            "RECEIVED_TIMESTAMP"
          ],
          "type": "string"
        }
      },
      "required": [
        "kind",
        "size"
      ],
      "type": "object"
    },
    "AndEventPredicate": {
      "properties": {
        "queries": {
          "default": [],
          "description": "List of predicates that must all match for this predicate to match.",
          "items": {
            "$ref": "#/$defs/EventPredicate"
          },
          "maxItems": 2147483647,
          "minItems": 1,
          "title": "Child predicates",
          "type": "array"
        },
        "type": {
          "description": "A predicate that matches when every child predicate matches.",
          "enum": [
            "and-predicate"
          ],
          "type": "string"
        }
      },
      "required": [
        "queries",
        "type"
      ],
      "type": "object"
    },
    "AnomalyActions": {
      "description": "Actions applied when an object is flagged anomalous.",
      "properties": {
        "objectMetricsPassthrough": {
          "$ref": "#/$defs/ObjectMetricsPassthrough"
        }
      },
      "type": "object"
    },
    "AnomalyConfig": {
      "description": "One anomaly rule.",
      "properties": {
        "anomalyDuration": {
          "description": "START..END lifecycle window after the last triggering datapoint.",
          "format": "ISO-8601",
          "type": "string"
        },
        "condition": {
          "description": "Scalar SQL condition that fires the rule.",
          "type": "string"
        },
        "from": {
          "additionalProperties": {
            "$ref": "#/$defs/MetricAggregation"
          },
          "default": {},
          "description": "Alias → aggregation declaration.",
          "type": "object"
        },
        "joinOn": {
          "default": [],
          "description": "Join expressions linking aliases (Calcite-parsed SQL).",
          "items": {
            "description": "Join expressions linking aliases (Calcite-parsed SQL).",
            "type": "string"
          },
          "type": "array"
        },
        "name": {
          "description": "Unique rule name.",
          "type": "string"
        }
      },
      "required": [
        "anomalyDuration",
        "condition",
        "from",
        "name"
      ],
      "type": "object"
    },
    "Any": {
      "description": "A value that can be a primitive (String or number), a list, or a map."
    },
    "AthenaAgentSessionsSource": {
      "properties": {
        "datasetId": {
          "description": "The ID of the dataset to read data from.",
          "pattern": "[a-z0-9]{1,13}",
          "type": "string"
        },
        "end": {
          "description": "End of time interval to query data for.",
          "format": "date-time",
          "type": "string"
        },
        "limit": {
          "default": 2500,
          "description": "The maximum number of rows to process",
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "offset": {
          "default": 0,
          "description": "Offset on the number of rows to process",
          "format": "int32",
          "minimum": 0,
          "type": "integer"
        },
        "query": {
          "$ref": "#/$defs/query"
        },
        "sortOrder": {
          "default": "ASCENDING",
          "description": "The order in which the rows should be sorted by",
          "enum": [
            "ASCENDING",
            "DESCENDING",
            "UNSORTED"
          ],
          "type": "string"
        },
        "start": {
          "description": "Start of time interval to query data for.",
          "format": "date-time",
          "type": "string"
        },
        "type": {
          "description": "Returns grouped agent session summaries through Athena.",
          "enum": [
            "athena-agent-sessions-source"
          ],
          "type": "string"
        },
        "variables": {
          "additionalProperties": {
            "$ref": "#/$defs/Any"
          },
          "default": {},
          "description": "Variables that can be used to modify the query while parsed",
          "type": "object"
        }
      },
      "required": [
        "datasetId",
        "end",
        "name",
        "query",
        "start",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Sources"
      ]
    },
    "AthenaAnalyticsSource": {
      "properties": {
        "name": {
          "pattern": "[a-z0-9_]{1,128}",
          "type": "string"
        },
        "query": {
          "$ref": "#/$defs/AnalyticsQuery"
        },
        "scanBudgetBytes": {
          "default": 107374182400,
          "description": "Maximum number of bytes this query may scan.",
          "format": "int64",
          "minimum": 1,
          "type": "integer"
        },
        "tables": {
          "description": "Dataset tables available to the query under logical aliases.",
          "items": {
            "$ref": "#/$defs/AnalyticsTableBinding"
          },
          "maxItems": 2147483647,
          "minItems": 1,
          "type": "array"
        },
        "type": {
          "description": "Executes an analytical query against dataset tables using Athena.",
          "enum": [
            "athena-analytics-source"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "query",
        "tables",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Sources"
      ]
    },
    "AttributeMask": {
      "description": "Masks to apply to attribute values. Each entry names an attribute path (as a list of segments) and the masks to apply to the value at that path. Only string values at the exact path are masked; missing or non-string attributes are skipped. Paths must be unique. The same matching rules as messageMasks apply.",
      "properties": {
        "masks": {
          "additionalProperties": {
            "$ref": "#/$defs/Mask"
          },
          "description": "Masks to apply to the value at this path, as a map of label to mask. The same matching rules as messageMasks apply.",
          "type": "object"
        },
        "path": {
          "description": "Attribute path to mask, as a list of segments.",
          "items": {
            "description": "Attribute path to mask, as a list of segments.",
            "type": "string"
          },
          "maxItems": 2147483647,
          "minItems": 1,
          "type": "array"
        }
      },
      "required": [
        "masks",
        "path"
      ],
      "type": "object"
    },
    "AttributeRemappingRule": {
      "description": "List of attribute-to-attribute remapping rules. Each rule moves the value from a source attribute path to a target attribute path, removing the source unless the rule's preserveSource flag is set. An optional predicate filter controls when each rule is applied.",
      "properties": {
        "predicate": {
          "$ref": "#/$defs/EventPredicate"
        },
        "preserveSource": {
          "default": false,
          "description": "When true, the source attribute is preserved (copied) instead of being removed (moved). Defaults to false (source is removed after remapping).",
          "type": "boolean"
        },
        "source": {
          "description": "Source attribute path: a dotted string (\"resource.service\" is resource → service), or an array of literal keys ([\"http\", \"user.agent\"]).",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ]
        },
        "target": {
          "description": "Target attribute path: a dotted string, or an array of literal keys.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          ]
        }
      },
      "required": [
        "source",
        "target"
      ],
      "type": "object"
    },
    "AttributesMergeStrategy": {
      "default": {
        "type": "exact"
      },
      "description": "Default merge strategy to use for merging leaf-valued attributes. This is used when no specific merge strategy is defined for an attribute path.",
      "oneOf": [
        {
          "$ref": "#/$defs/ExactAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/SamplingAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/PreserveAllAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/SumAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/MinAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/MaxAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/AverageAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/CompositeAttributesMergeStrategy"
        },
        {
          "$ref": "#/$defs/IgnoreAttributesMergeStrategy"
        }
      ],
      "title": "Default attributes merge strategy",
      "type": "object"
    },
    "AttributesMergeStrategyEntry": {
      "description": "List of attribute paths and their corresponding merge strategies. If no strategy is defined for a path, the terminal merge strategy will be used.",
      "properties": {
        "attributePath": {
          "description": "The attribute path, represented as an array of strings (e.g., [\"user\", \"id\"]).",
          "items": {
            "description": "The attribute path, represented as an array of strings (e.g., [\"user\", \"id\"]).",
            "type": "string"
          },
          "type": "array"
        },
        "strategy": {
          "$ref": "#/$defs/AttributesMergeStrategy"
        }
      },
      "required": [
        "attributePath",
        "strategy"
      ],
      "title": "Attributes merge strategy entries",
      "type": "object"
    },
    "AverageAttributesMergeStrategy": {
      "properties": {
        "type": {
          "description": "AverageAttributesMergeStrategy: Computes the average of numeric attribute values.",
          "enum": [
            "avg"
          ],
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    },
    "BackfillJobAction": {
      "properties": {
        "backfillQuery": {
          "$ref": "#/$defs/backfillQuery"
        },
        "backfillTimespan": {
          "description": "The timespan for which to backfill data. This field is not required. If you do not specify it, you need to specify a duration in the trigger. For TraceSamplingTriggers, this can be specified in the traceDuration field. For others, you will need to specify a duration in the variables, e.g. __duration:PT1H",
          "format": "ISO-8601",
          "type": "string"
        },
        "datasetId": {
          "description": "The ID of the dataset to read data from",
          "pattern": "[a-z0-9]{1,13}",
          "type": "string"
        },
        "jobTags": {
          "additionalProperties": {
            "description": "The tags added to the backfill job, for ease of search.",
            "type": "string"
          },
          "description": "The tags added to the backfill job, for ease of search.",
          "type": "object"
        },
        "limit": {
          "default": 500000,
          "description": "Maximum number of logs to backfill. Default and max is 500,000.",
          "format": "int32",
          "maximum": 500000,
          "type": "integer"
        },
        "name": {
          "description": "The name of the backfill job.",
          "type": "string"
        },
        "order": {
          "description": "Action order. Lower is applied first.",
          "format": "int32",
          "type": "integer"
        },
        "sinkOperations": {
          "default": [],
          "description": "Specifies the sinks that should be used for the backfill job.",
          "items": {
            "$ref": "#/$defs/Operation"
          },
          "type": "array",
          "uniqueItems": true
        },
        "type": {
          "description": "Backfills data from the raw logs to the configured sink. This action runs an asynch batch job to backfill data from the raw logs table to the configured sink. The back-filled data is also added to the processed logs table to ensure that the same log is not backfilled twice leading to duplicates. The context on what needs to be backfilled is provided by the 'backfillQuery' which will filter logs that will be backfilled.",
          "enum": [
            "backfill-job-action"
          ],
          "type": "string"
        }
      },
      "required": [
        "backfillQuery",
        "datasetId",
        "jobTags",
        "name",
        "sinkOperations",
        "type"
      ],
      "type": "object",
      "x-tags": [
        "Job Actions"
      ]
    },
    "CloudTrailLogsFileSource": {
      "properties": {
        "accountIds": {
          "default": [],
          "description": "The list of account IDs from which to read logs.",
          "items": {
            "description": "The list of accou

# --- truncated at 32 KB (249 KB total) ---
# Full source: https://artifacts.apis.io/grepr/json-schema/grepr-read-job-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/grepr-read-job"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.