{
  "openapi": "3.0.1",
  "info": {
    "title": "CI Release Evidence Gate",
    "description": "Find missing test shards, skipped required jobs, wrong commits and artifact digest conflicts by joining a supplied release manifest to normalized CI exports. Traceable JSON, CSV and HTML. No repository access.",
    "version": "0.1",
    "x-build-id": "e6mC6qVtG9m462szE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/h_murdock~ci-release-evidence-gate/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-h_murdock-ci-release-evidence-gate",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/h_murdock~ci-release-evidence-gate/runs": {
      "post": {
        "operationId": "runs-sync-h_murdock-ci-release-evidence-gate",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/h_murdock~ci-release-evidence-gate/run-sync": {
      "post": {
        "operationId": "run-sync-h_murdock-ci-release-evidence-gate",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "releaseId",
          "commit",
          "runId",
          "asOf",
          "coverage"
        ],
        "properties": {
          "releaseId": {
            "title": "releaseId",
            "type": "string",
            "description": "Literal intended release identity. Preserve exact strings and leading zeros; no trimming or numeric conversion."
          },
          "commit": {
            "title": "commit",
            "type": "string",
            "description": "Literal intended release identity. Preserve exact strings and leading zeros; no trimming or numeric conversion."
          },
          "runId": {
            "title": "runId",
            "type": "string",
            "description": "Literal intended release identity. Preserve exact strings and leading zeros; no trimming or numeric conversion."
          },
          "asOf": {
            "title": "asOf",
            "type": "string",
            "description": "Reference time in strict UTC ISO format YYYY-MM-DDTHH:mm:ss[.sss]Z. Future evidence cannot satisfy a required identity."
          },
          "coverage": {
            "title": "Export coverage declarations",
            "type": "object",
            "description": "Required jobs, shards and artifacts fields, each complete, incomplete or unknown. Mark complete only when every record for this exact run attempt and scope was exported. Absent evidence with incomplete coverage stays unknown."
          },
          "maxEvidenceAgeMinutes": {
            "title": "Maximum evidence age in minutes",
            "minimum": 1,
            "maximum": 525600,
            "type": "integer",
            "description": "Optional review threshold measured back from asOf, not from wall-clock now. Equality is accepted. Omit to disable age threshold; future timestamps are always findings."
          },
          "expectedJobs": {
            "title": "expectedJobs",
            "minItems": 0,
            "type": "array",
            "description": "Supply this array, including [] when unused; validated by Actor. Unique literal identity; optional acceptedConclusions defaults to [success] and permits success or neutral only. Total input <=2 MB, <=500 combined expected identities and <=5,000 combined observed records. Unknown row fields are rejected."
          },
          "expectedShards": {
            "title": "expectedShards",
            "minItems": 0,
            "type": "array",
            "description": "Supply this array, including [] when unused; validated by Actor. Unique literal identity, jobIdentity matching an expected job, optional minimumTests (default 1). Skipped tests never count toward this minimum. Total input <=2 MB, <=500 combined expected identities and <=5,000 combined observed records. Unknown row fields are rejected."
          },
          "expectedArtifacts": {
            "title": "expectedArtifacts",
            "minItems": 0,
            "type": "array",
            "description": "Supply this array, including [] when unused; validated by Actor. Unique literal identity and optional sha256 as exactly 64 hex characters. Comparison uses bytes represented by normalized lowercase hex. Total input <=2 MB, <=500 combined expected identities and <=5,000 combined observed records. Unknown row fields are rejected."
          },
          "jobs": {
            "title": "jobs",
            "minItems": 0,
            "type": "array",
            "description": "Supply this array, including [] when unused; validated by Actor. Rows with evidenceId, identity, status (queued/in_progress/completed), optional conclusion, runId, commit and timestamp. Missing provenance is unknown, never success. Total input <=2 MB, <=500 combined expected identities and <=5,000 combined observed records. Unknown row fields are rejected."
          },
          "shards": {
            "title": "shards",
            "minItems": 0,
            "type": "array",
            "description": "Supply this array, including [] when unused; validated by Actor. Rows with evidenceId, identity, jobIdentity, total/passed/failed/skipped counts, optional runId, commit and timestamp. Counts are nonnegative safe integers and total must exactly equal passed+failed+skipped. Total input <=2 MB, <=500 combined expected identities and <=5,000 combined observed records. Unknown row fields are rejected."
          },
          "artifacts": {
            "title": "artifacts",
            "minItems": 0,
            "type": "array",
            "description": "Supply this array, including [] when unused; validated by Actor. Rows with evidenceId, identity, optional runId, commit, generatedAt, sha256. Missing provenance or expected digest is unknown. No artifact downloads. Total input <=2 MB, <=500 combined expected identities and <=5,000 combined observed records. Unknown row fields are rejected."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}