{
  "openapi": "3.0.1",
  "info": {
    "title": "Uruguay Open Data Scraper - CKAN Datos Abiertos",
    "description": "Scrape catalogodatos.gub.uy, Uruguay's national open data portal: 2,702 datasets over the CKAN API with full metadata, resources, live DataStore tables, publishers, themes, tags, formats, licences and link checks.",
    "version": "0.1",
    "x-build-id": "BEd9GLxKcBcbZKNdf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~uruguay-open-data-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-uruguay-open-data-scraper",
        "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/parseforge~uruguay-open-data-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-uruguay-open-data-scraper",
        "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/parseforge~uruguay-open-data-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-uruguay-open-data-scraper",
        "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": {
          "dataset": {
            "title": "Output",
            "enum": [
              "datasets",
              "resources",
              "datastore-tables",
              "contacts",
              "organizations",
              "categories",
              "tags",
              "formats",
              "licenses",
              "harvest-sources"
            ],
            "type": "string",
            "description": "What each row should be. Datasets is the full catalogue record with every file nested inside it. Resources gives one row per downloadable file. DataStore tables lists only the resources the portal will answer live queries about, with their real column names, types and row counts. Contacts deduplicates the people and units named on the datasets scanned. The remaining six are directories of the catalogue itself.",
            "default": "datasets"
          },
          "startUrls": {
            "title": "Dataset URLs or slugs",
            "uniqueItems": true,
            "type": "array",
            "description": "Target specific datasets instead of searching. Accepts portal URLs (https://catalogodatos.gub.uy/dataset/agesic-guia-de-tramites), bare slugs (agesic-guia-de-tramites) or dataset UUIDs, mixed freely. Leave empty to search the whole catalogue. Combines with the filters below.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free text searched across title, description, tags and publisher, exactly as the portal's own search box does. Spanish works best: the catalogue is in Spanish. Leave empty to take everything. Example: agua potable"
          },
          "titleContains": {
            "title": "Title contains",
            "type": "string",
            "description": "Narrow to datasets whose title matches this text. Measured: title:vivienda returns 110 of 2,702."
          },
          "descriptionContains": {
            "title": "Description contains",
            "type": "string",
            "description": "Narrow to datasets whose description matches this text. Measured: notes:\"agua potable\" returns 50 of 2,702."
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: limited to 10 items (preview). Paid users: up to 1,000,000. This is the hard ceiling on rows written and therefore on cost."
          },
          "organizations": {
            "title": "Publishing organizations",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter to one or more of the 73 publishing bodies. Multiple values are ORed. Counts are the datasets each held on 2026-08-27.",
            "items": {
              "type": "string",
              "enum": [
                "mides",
                "intendencia-montevideo",
                "ancap",
                "correo",
                "ose",
                "agesic",
                "miem",
                "parlamento-uruguayo",
                "udelar",
                "ursec",
                "banco-central-del-uruguay",
                "opp",
                "uaip",
                "dna",
                "centro_ceibal",
                "ministerio-de-turismo",
                "mgap",
                "ine",
                "corte-electoral",
                "data",
                "suprema-corte-de-justicia",
                "acce",
                "banco-de-la-republica-oriental-del-uruguay",
                "ide",
                "inia",
                "instituto-nacional-de-empleo-y-formacion-profesional",
                "tic-ministerio-del-interior",
                "idp",
                "ursea",
                "intendencia-de-durazno",
                "ministerio-de-transporte-y-obras-publicas",
                "ambiente",
                "fondo-nacional-de-recursos",
                "intendencia-de-rocha",
                "inumet",
                "junta-departamental-de-maldonado",
                "latu",
                "msp",
                "defensa-del-consumidor",
                "onsc",
                "caja-notarial",
                "dinacia",
                "jutep",
                "intendencia-de-canelones",
                "ministerio-de-educacion-y-cultura",
                "uruguay-atp",
                "direccion-nacional-de-catastro",
                "inau",
                "intendencia-de-san-jose",
                "secretaria-nacional-del-deporte",
                "unasev",
                "acau",
                "anep",
                "antel",
                "fiscalia-general-de-la-nacion",
                "instituto-nacional-de-colonizacion",
                "intendencia-de-florida",
                "sinae01",
                "cei",
                "creative-commons-uruguay",
                "facultad-de-psicologia",
                "junta-departamental-de-florida",
                "la-diaria",
                "ministerio-de-trabajo-y-seguridad-social-de-uruguay",
                "museo-nacional-de-artes-visuales",
                "presidencia-de-la-republica",
                "senaclaft",
                "urcdp",
                "archivo-general-de-la-nacion",
                "asse",
                "ces",
                "facultad-de-ciencias-economicas-y-de-administracion",
                "ute"
              ],
              "enumTitles": [
                "MIDES (1,875)",
                "Intendencia de Montevideo (154)",
                "ANCAP (60)",
                "Correo Uruguayo (43)",
                "OSE (28)",
                "AGESIC (27)",
                "Ministerio de Industria, Energia y Mineria (25)",
                "Parlamento del Uruguay (23)",
                "Universidad de la Republica (23)",
                "URSEC (23)",
                "Banco Central del Uruguay (21)",
                "Oficina de Planeamiento y Presupuesto (19)",
                "UAIP (19)",
                "DNA (18)",
                "Centro Ceibal (17)",
                "Ministerio de Turismo (17)",
                "MGAP (16)",
                "INE (15)",
                "Corte Electoral (14)",
                "Data Uruguay (14)",
                "Poder Judicial (14)",
                "ARCE (12)",
                "Banco de la Republica Oriental del Uruguay (12)",
                "IDE (12)",
                "INIA (11)",
                "Instituto Nacional de Empleo y Formacion Profesional (11)",
                "Ministerio del Interior (11)",
                "Intendencia de Paysandu (10)",
                "URSEA (10)",
                "Intendencia de Durazno (9)",
                "Ministerio de Transporte y Obras Publicas (9)",
                "Ministerio de Ambiente (8)",
                "Fondo Nacional de Recursos (8)",
                "Intendencia de Rocha (8)",
                "INUMET (7)",
                "Junta Departamental de Maldonado (7)",
                "LATU (7)",
                "Ministerio de Salud Publica (7)",
                "Defensa del Consumidor (6)",
                "ONSC (6)",
                "Caja Notarial (5)",
                "DINACIA (5)",
                "JUTEP (5)",
                "Intendencia de Canelones (4)",
                "Ministerio de Educacion y Cultura (4)",
                "Uruguay ATP (4)",
                "Direccion Nacional de Catastro (3)",
                "INAU (3)",
                "Intendencia de San Jose (3)",
                "Secretaria Nacional del Deporte (3)",
                "UNASEV (3)",
                "ACAU (2)",
                "ANEP (2)",
                "ANTEL (2)",
                "Fiscalia General de la Nacion (2)",
                "Instituto Nacional de Colonizacion (2)",
                "Intendencia de Florida (2)",
                "SINAE (2)",
                "Centro de Extensionismo Industrial (1)",
                "Creative Commons Uruguay (1)",
                "Facultad de Psicologia (1)",
                "Junta Departamental de Florida (1)",
                "La diaria (1)",
                "Ministerio de Trabajo y Seguridad Social (1)",
                "Museo Nacional de Artes Visuales (1)",
                "Presidencia de la Republica (1)",
                "SENACLAFT (1)",
                "URCDP (1)",
                "Archivo General de la Nacion (0)",
                "ASSE (0)",
                "CES (0)",
                "Facultad de Ciencias Economicas y de Administracion (0)",
                "UTE (0)"
              ]
            }
          },
          "categories": {
            "title": "Themes",
            "uniqueItems": true,
            "type": "array",
            "description": "The 22 themes the portal groups datasets under. Multiple values are ORed. Counts measured 2026-08-27.",
            "items": {
              "type": "string",
              "enum": [
                "estadisticos",
                "transparencia",
                "educacion",
                "salud",
                "desarrollo-social",
                "contexto-sociodemografico",
                "trabajo",
                "vivienda",
                "medio-ambiente",
                "economia",
                "violencia",
                "alimentacion",
                "geograficos",
                "industria",
                "infraestructura",
                "seguridad-ciudadana",
                "transporte",
                "turismo",
                "cultura",
                "agro",
                "justicia",
                "deporte"
              ],
              "enumTitles": [
                "Estadisticas / Statistics (495)",
                "Transparencia / Transparency (415)",
                "Educacion / Education (333)",
                "Salud / Health (276)",
                "Desarrollo Social / Social development (266)",
                "Soc.Demografico / Sociodemographic (265)",
                "Trabajo / Labour (234)",
                "Vivienda / Housing (177)",
                "Medio Ambiente / Environment (109)",
                "Economia / Economy (103)",
                "Violencia / Violence (55)",
                "Alimentacion / Food (53)",
                "Geograficos / Geospatial (52)",
                "Industria y energia / Industry and energy (37)",
                "Infraestructura / Infrastructure (31)",
                "Seguridad Ciudadana / Public safety (30)",
                "Transporte / Transport (30)",
                "Turismo / Tourism (22)",
                "Cultura / Culture (21)",
                "Agro / Agriculture (14)",
                "Justicia / Justice (6)",
                "Deporte / Sport (3)"
              ]
            }
          },
          "tags": {
            "title": "Tags",
            "uniqueItems": true,
            "type": "array",
            "description": "Keywords from the catalogue vocabulary, matched exactly as the portal stores them, accents and capitals included. 1,487 tags exist, which is too many for a dropdown, so run the Tags output first to see the real spellings. Multiple values are ORed. Example: Salud",
            "items": {
              "type": "string"
            }
          },
          "formats": {
            "title": "File formats",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only datasets carrying at least one file in these formats. Each canonical name expands to every raw spelling the publishers actually typed, so CSV also catches .csv, CSV ZIP and CSV, XML, JSON: 2,550 datasets instead of the 2,543 an exact match finds.",
            "items": {
              "type": "string",
              "enum": [
                "CSV",
                "JSON",
                "XML",
                "XLSX",
                "XLS",
                "ODS",
                "ODT",
                "PDF",
                "TXT",
                "TSV",
                "HTML",
                "DOCX",
                "ZIP",
                "RAR",
                "TGZ",
                "SHP",
                "GEOJSON",
                "GPKG",
                "KML",
                "KMZ",
                "GEOTIFF",
                "DXF",
                "ASC",
                "WFS",
                "RDF",
                "XSD",
                "SAV",
                "URL",
                "EBOOK",
                "BIN"
              ],
              "enumTitles": [
                "CSV (2,550)",
                "JSON (2,262)",
                "XML (2,216)",
                "XLSX (2,152)",
                "XLS (60)",
                "ODS (20)",
                "ODT (20)",
                "PDF (53)",
                "TXT (104)",
                "TSV (1)",
                "HTML (6)",
                "DOCX (1)",
                "ZIP archive (25)",
                "RAR (10)",
                "TGZ (1)",
                "SHP / Shape (58)",
                "GeoJSON (20)",
                "GPKG / Geopackage (4)",
                "KML (17)",
                "KMZ (2)",
                "GeoTIFF (2)",
                "DXF (1)",
                "ASC (1)",
                "WFS service (1)",
                "RDF (1)",
                "XSD (6)",
                "SAV / SPSS (4)",
                "URL link (9)",
                "eBook (3)",
                "BIN (3)"
              ]
            }
          },
          "excludeFormats": {
            "title": "Exclude formats",
            "uniqueItems": true,
            "type": "array",
            "description": "Drop any dataset that carries a file in one of these formats. Applied after the search, on the full row, so it costs nothing extra. Case insensitive. Example: PDF",
            "items": {
              "type": "string"
            }
          },
          "licenses": {
            "title": "Licences",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by the licence declared on the dataset. 2,649 of 2,702 carry the Uruguayan open government data licence, so this mostly matters when you want the handful that do not.",
            "items": {
              "type": "string",
              "enum": [
                "odc-uy",
                "CC0-1.0",
                "CC-BY-4.0",
                "notspecified",
                "CC-BY-SA-4.0",
                "CC-BY-NC-4.0",
                "other-open",
                "other"
              ],
              "enumTitles": [
                "Licencia de DAG de Uruguay (2,649)",
                "CC0 1.0 (14)",
                "Creative Commons Atribucion 4.0 (12)",
                "Licencia No Especificada (2)",
                "Creative Commons Atribucion Compartir-Igual 4.0 (1)",
                "Creative Commons Atribucion No Comercial 4.0 (1)",
                "Otra - Open (1)",
                "Otra (0)"
              ]
            }
          },
          "updateFrequencies": {
            "title": "Update cadence",
            "uniqueItems": true,
            "type": "array",
            "description": "The publisher's declared refresh interval, which this portal stores as a number of days. Multiple values are ORed. Counts measured 2026-08-27.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "7",
                "15",
                "30",
                "60",
                "90",
                "182",
                "365",
                "1826",
                "0",
                "-1"
              ],
              "enumTitles": [
                "Daily / Diaria (8)",
                "Weekly / Semanal (4)",
                "Fortnightly / Quincenal (5)",
                "Monthly / Mensual (60)",
                "Every two months / Bimestral (1)",
                "Quarterly / Trimestral (23)",
                "Twice a year / Semestral (45)",
                "Annual / Anual (173)",
                "Every five years / Quinquenal (26)",
                "One-off, not updated (213)",
                "Not stated (186)"
              ]
            }
          },
          "authorContains": {
            "title": "Author contains",
            "type": "string",
            "description": "Match the free-text author field on the dataset. Example: INE"
          },
          "maintainerContains": {
            "title": "Maintainer contains",
            "type": "string",
            "description": "Match the free-text maintainer field on the dataset. Example: AGESIC"
          },
          "minResources": {
            "title": "Minimum files",
            "minimum": 0,
            "type": "integer",
            "description": "Drop datasets with fewer than this many downloadable files. Measured: 125 datasets carry 5 or more."
          },
          "modifiedAfter": {
            "title": "Modified after",
            "type": "string",
            "description": "Only datasets whose metadata changed on or after this date. YYYY-MM-DD. Measured: 323 datasets changed since 2026-01-01."
          },
          "modifiedBefore": {
            "title": "Modified before",
            "type": "string",
            "description": "Only datasets whose metadata last changed on or before this date. YYYY-MM-DD."
          },
          "createdAfter": {
            "title": "Created after",
            "type": "string",
            "description": "Only datasets first published on or after this date. YYYY-MM-DD. Measured: 54 datasets were created during 2025."
          },
          "createdBefore": {
            "title": "Created before",
            "type": "string",
            "description": "Only datasets first published on or before this date. YYYY-MM-DD."
          },
          "onlyOpenLicence": {
            "title": "Open licences only",
            "type": "boolean",
            "description": "Keep only datasets the portal marks as openly licensed. 2,676 of 2,702 qualify, so this exists to exclude the 26 that do not rather than to narrow a search.",
            "default": false
          },
          "onlyWithDatastore": {
            "title": "Only datasets with queryable tables",
            "type": "boolean",
            "description": "Keep only datasets holding at least one resource loaded into the portal's DataStore, which means it can be queried live and filtered by column without downloading the file. No Solr field exposes this, so it is applied on the full row after the search and costs nothing extra.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "modified-desc",
              "modified-asc",
              "created-desc",
              "created-asc",
              "title-asc",
              "title-desc",
              "name-asc",
              "views-desc",
              "views-recent-desc",
              "relevance"
            ],
            "type": "string",
            "description": "Result order. Only the ten orders below were kept: an unknown sort field does not error on this portal, it silently falls back to relevance, so a typo would look like it worked.",
            "default": "modified-desc"
          },
          "filterQuery": {
            "title": "Filter query (advanced)",
            "type": "string",
            "description": "A raw Solr fq clause ANDed onto everything above, for filters this schema does not expose. Careful: an unknown field name returns zero rows on this portal instead of an error. Example: num_resources:[10 TO *]"
          },
          "checkResourceLinks": {
            "title": "Check that the files are still there",
            "type": "boolean",
            "description": "Optional, billed per file checked. Fetches every resource URL and reports HTTP status, content type, byte size, redirect target and latency. Worth it because the catalogue harvests six external portals and never re-verifies what it copied: of 90 URLs sampled on 2026-08-27, 8 were not retrievable. Applies to the Datasets and Resources outputs.",
            "default": false
          },
          "onlyLiveResources": {
            "title": "Drop rows whose files are all dead",
            "type": "boolean",
            "description": "Needs the link check above. Skips datasets where every checked file failed, and individual dead files on the Resources output. Rows dropped this way are not written and not billed as rows.",
            "default": false
          },
          "includeDatastoreSchema": {
            "title": "Read the real column schema",
            "type": "boolean",
            "description": "Optional, billed per table read. For every resource loaded into the portal's DataStore, returns its actual column names, PostgreSQL types, exact row count and table size, without downloading the file. Measured: one INUMET series reports 384,637 rows and 3 typed columns where the catalogue metadata says only CSV. Applies to the Datasets and Resources outputs.",
            "default": false
          },
          "includeDatastorePreview": {
            "title": "Include sample data rows",
            "type": "boolean",
            "description": "Optional, billed per table previewed. Returns the first rows of each DataStore table straight from the portal's query API, so you can see the data itself rather than its description. Works on the Datasets, Resources and DataStore tables outputs.",
            "default": false
          },
          "datastorePreviewRows": {
            "title": "Sample rows per table",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many rows the preview above returns per table, 1 to 100. One request either way, so a bigger sample does not cost more.",
            "default": 5
          },
          "includeViewStats": {
            "title": "Include page view counts",
            "type": "boolean",
            "description": "Optional, billed per dataset. Adds the portal's own view counters, total and recent, which is the only public signal of what Uruguayans actually use. Costs one extra request per dataset because the counters ride on package_show and cannot be read from the search index.",
            "default": false
          },
          "includeResourceViews": {
            "title": "Include configured visualizations",
            "type": "boolean",
            "description": "Optional, billed per resource. Lists the previews the portal has configured for each file: data explorer, map, chart, PDF or web page viewer. Applies to the Datasets and Resources outputs.",
            "default": false
          },
          "includeHarvestProvenance": {
            "title": "Include harvest provenance",
            "type": "boolean",
            "description": "Optional, billed per harvested dataset. Resolves where a copied dataset really came from: the upstream portal URL, its harvester type, its refresh frequency and whether it is still active. Only fires on datasets that were actually harvested.",
            "default": false
          },
          "includeOrganizationProfile": {
            "title": "Profile each organization",
            "type": "boolean",
            "description": "Optional, billed per organization profiled, and only on the Organizations output. One extra query per publisher returning what it actually publishes: its top themes, formats, tags and licences with counts.",
            "default": false
          },
          "includeRawExtras": {
            "title": "Include raw extras",
            "type": "boolean",
            "description": "Adds the untouched CKAN extras array to each dataset row, for the harvest identifiers and anything the portal adds later. Free, no extra request.",
            "default": false
          },
          "maxPages": {
            "title": "Max catalogue pages",
            "minimum": 1,
            "type": "integer",
            "description": "Each page bills one catalogue page event. A page holds up to 1,000 datasets, so 3 pages covers the entire catalogue; smaller runs use smaller pages and never fetch more than they need.",
            "default": 20
          },
          "directoryLimit": {
            "title": "Directory rows",
            "minimum": 1,
            "type": "integer",
            "description": "How many rows the Tags and Formats directories return. The tag vocabulary has 1,487 entries and its long tail is mostly one-off keywords.",
            "default": 500
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel requests, 1 to 10. Measured: 8 concurrent searches all returned HTTP 200 in 1.8 seconds with no throttling. The portal's robots.txt asks for a 10 second crawl delay on its HTML pages, so this stays modest by default out of courtesy to a public service.",
            "default": 5
          },
          "timeoutSecs": {
            "title": "Stop after (seconds)",
            "minimum": 20,
            "type": "integer",
            "description": "Soft wall-clock budget. The run stops issuing requests and flushes what it has. The platform's own run timeout still applies and whichever is nearer wins."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default and not needed: the CKAN API answers anonymous requests with no proxy, no cookie and no User-Agent. Turn it on only if you are sweeping the whole catalogue repeatedly on a schedule.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}