{
  "openapi": "3.0.1",
  "info": {
    "title": "TenderHer Procurement Intelligence",
    "description": "Evidence-backed procurement intelligence for African SMEs.",
    "version": "0.0",
    "x-build-id": "x6cibiuhq6JTcVzFE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/bitbychelle~tenderher-procurement-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-bitbychelle-tenderher-procurement-intelligence",
        "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/bitbychelle~tenderher-procurement-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-bitbychelle-tenderher-procurement-intelligence",
        "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/bitbychelle~tenderher-procurement-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-bitbychelle-tenderher-procurement-intelligence",
        "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",
        "properties": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Procurement sources to crawl. NOCOPO yields broad federal discovery; Ebonyi State e-Procurement yields document-rich state tenders with notice PDF text; Jigawa State Due Process Bureau yields open tenders with downloadable tender documents.",
            "items": {
              "type": "string",
              "enum": [
                "nocopo-bpp-ng",
                "ebonyi-egp",
                "jigawa-dp"
              ],
              "enumTitles": [
                "NOCOPO (Bureau of Public Procurement)",
                "Ebonyi State e-Procurement",
                "Jigawa State Due Process Bureau"
              ]
            },
            "default": [
              "nocopo-bpp-ng"
            ]
          },
          "sourceUrl": {
            "title": "Source URL",
            "type": "string",
            "description": "NOCOPO (Nigeria Bureau of Public Procurement) grid page to discover tenders from.",
            "default": "https://nocopo.bpp.gov.ng/noc/frmcitizendashboard3.aspx"
          },
          "maxTenders": {
            "title": "Max Tenders",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of tender records to collect across all pages.",
            "default": 15
          },
          "maxRequestsPerCrawl": {
            "title": "Max Requests per Crawl",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of requests that can be made by this crawler.",
            "default": 50
          },
          "ebonyiOnlyOpenTenders": {
            "title": "Ebonyi: Open Tenders Only",
            "type": "boolean",
            "description": "Only collect Ebonyi tenders whose deadline is still in the future. Disable to collect the most recently advertised Ebonyi tenders regardless of deadline, which is useful when verifying the notice PDF pipeline.",
            "default": true
          },
          "businessProfile": {
            "title": "Business Profile (optional)",
            "required": [],
            "type": "object",
            "description": "Optional business profile used to assess extracted requirements as MATCH, POTENTIAL_GAP, or UNKNOWN. Leave empty to keep every assessment UNKNOWN. Registration, tax status, and legal eligibility are never inferred.",
            "properties": {
              "industry": {
                "title": "Industry",
                "type": "string",
                "description": "Industry the business operates in, for example Technology or Construction."
              },
              "location": {
                "title": "Location",
                "type": "string",
                "description": "Business location, for example Lagos, Nigeria."
              },
              "services": {
                "title": "Services",
                "type": "array",
                "description": "Services the business can deliver, for example software development, cloud services.",
                "items": {
                  "type": "string"
                }
              },
              "businessSize": {
                "title": "Business Size",
                "type": "string",
                "description": "Business size classification, for example SME or Large."
              },
              "experienceYears": {
                "title": "Experience (years)",
                "type": "integer",
                "description": "Years of operating experience, compared only against explicit year requirements in the tender document.",
                "minimum": 0
              },
              "certifications": {
                "title": "Certifications",
                "type": "array",
                "description": "Certifications the business holds, for example ISO 9001. Only these listed certifications are treated as satisfied.",
                "items": {
                  "type": "string"
                }
              },
              "annualTurnover": {
                "title": "Annual Turnover",
                "type": "number",
                "description": "Annual turnover in Nigerian Naira, compared only against explicit turnover requirements in the tender document.",
                "minimum": 0
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}