{
  "openapi": "3.0.1",
  "info": {
    "title": "Development Project Tenders & Procurement Notices Monitor",
    "description": "Invitations for bids, requests for expressions of interest and contract awards from the World Bank's open Procurement Notices dataset (CC BY 4.0) - filter by country (MENA included), notice type, method, keyword and dates; only new notices on a schedule. Not affiliated with the World Bank.",
    "version": "0.1",
    "x-build-id": "cbXPuezgCi3iePssg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abdulwhab95~development-tenders-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abdulwhab95-development-tenders-monitor",
        "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/abdulwhab95~development-tenders-monitor/runs": {
      "post": {
        "operationId": "runs-sync-abdulwhab95-development-tenders-monitor",
        "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/abdulwhab95~development-tenders-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-abdulwhab95-development-tenders-monitor",
        "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": {
          "countryCodes": {
            "title": "Country codes",
            "type": "array",
            "description": "World Bank project country codes, one per line (for example EG Egypt, JO Jordan, MA Morocco, LB Lebanon, TN Tunisia, IQ Iraq, DJ Djibouti, RY Yemen, GZ West Bank and Gaza, PK Pakistan). Note Yemen is RY and West Bank and Gaza is GZ. Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "World Bank regions. MENA notices are under 'Mid East, North Africa, Afghanistan, Pakistan'.",
            "items": {
              "type": "string",
              "enum": [
                "Mid East,North Africa,Afg,Pak",
                "Middle East And North Africa",
                "Eastern And Southern Africa",
                "Western And Central Africa",
                "South Asia",
                "Latin America And Caribbean",
                "Europe And Central Asia",
                "East Asia And Pacific"
              ],
              "enumTitles": [
                "Middle East, North Africa, Afghanistan, Pakistan",
                "Middle East and North Africa (older notices)",
                "Eastern and Southern Africa",
                "Western and Central Africa",
                "South Asia",
                "Latin America and Caribbean",
                "Europe and Central Asia",
                "East Asia and Pacific"
              ]
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "Invitation for Bids",
                "Request for Expression of Interest",
                "Contract Award",
                "General Procurement Notice",
                "Invitation for Prequalification"
              ]
            }
          },
          "procurementGroups": {
            "title": "Procurement groups",
            "type": "array",
            "description": "Goods, works, consultant services or non-consulting services. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "GO",
                "CW",
                "CS",
                "NC"
              ],
              "enumTitles": [
                "Goods",
                "Works",
                "Consultant services",
                "Non-consulting services"
              ]
            }
          },
          "procurementMethods": {
            "title": "Procurement method codes",
            "type": "array",
            "description": "Method codes, one per line - for example RFB (Request for Bids), RFQ (Request for Quotations), QCBS (Quality and Cost-Based Selection), CQS, LCS, INDV (Individual Consultant Selection), DIR (Direct Selection). Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Full-text search across the notice, for example 'solar' or 'water'."
          },
          "daysBack": {
            "title": "Published in the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Used when 'Published from' is empty. 0 means no date limit (newest first, up to the result and scan caps).",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "YYYY-MM-DD or 'today'. Overrides 'Published in the last N days'."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "YYYY-MM-DD or 'today'."
          },
          "deadlineFrom": {
            "title": "Deadline from",
            "type": "string",
            "description": "YYYY-MM-DD or 'today'. Set 'today' to keep only notices still open for submissions. Notices without a deadline (awards) are left out when a deadline filter is set."
          },
          "deadlineTo": {
            "title": "Deadline to",
            "type": "string",
            "description": "YYYY-MM-DD or 'today'."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after delivering this many notices.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include notice text",
            "type": "boolean",
            "description": "Plain-text notice body (first 2,000 characters), with e-mail addresses, phone numbers and the contact person's name removed. Contract award notices never carry it, because their text lists bidders who may be individuals.",
            "default": true
          },
          "onlyNew": {
            "title": "Only new notices since the last run",
            "type": "boolean",
            "description": "Deliver only notices not delivered before (changeType NEW), or re-published under a higher version (UPDATED). The first run delivers everything as NEW.",
            "default": false
          },
          "trackFieldChanges": {
            "title": "Also report deadline and status changes",
            "type": "boolean",
            "description": "With 'Only new notices': also deliver a known notice as UPDATED when its submission deadline or notice status changed, even if its version number did not. UPDATED rows then carry changedFields, previousDeadline, previousStatus and previousVersion. Notices delivered before this was turned on have no recorded deadline or status: their current values become the baseline and nothing is reported for them on that run.",
            "default": false
          },
          "stateStoreName": {
            "title": "State store name",
            "type": "string",
            "description": "Named key-value store that remembers delivered notice ids for 'Only new notices'. Use a different name for each separate monitor.",
            "default": "worldbank-procurement-state"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}