{
  "openapi": "3.0.1",
  "info": {
    "title": "AI & PhD Researcher Dataset Filter — recruiting, GTM, research",
    "description": "Turn a raw JSON export of AI / PhD / researcher profiles into a precise, deduplicated, deliverable-grade shortlist in seconds. Built for recruiting teams, B2B growth/SDR teams, and research panels who need clean, targeted lists instead of raw scraping noise.\n\n🚀 22.5k records filtered in <6s.",
    "version": "0.3",
    "x-build-id": "L1F3MTXIgrv09FeL3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crystalbytes~phds/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crystalbytes-phds",
        "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/crystalbytes~phds/runs": {
      "post": {
        "operationId": "runs-sync-crystalbytes-phds",
        "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/crystalbytes~phds/run-sync": {
      "post": {
        "operationId": "run-sync-crystalbytes-phds",
        "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": {
          "sourceR2Bucket": {
            "title": "🪣 Optional — cloud bucket (operator / large files)",
            "type": "string",
            "description": "Set via API or task JSON if the publisher uses R2. Hidden from the default form. Leave **empty** for Apify Storage or the bundled local demo. Example: `acme-datasets`",
            "default": ""
          },
          "sourceR2Key": {
            "title": "🔑 Object key in that bucket",
            "type": "string",
            "description": "Object path when using R2. The Actor also reads `R2_KEY` or `R2_OBJECT_KEY` from the environment if this is left empty. Hidden from the default form.",
            "default": ""
          },
          "sourceR2Endpoint": {
            "title": "🌐 Custom R2 endpoint (optional)",
            "type": "string",
            "description": "Only if the Actor owner configured a non-default S3-compatible endpoint. Hidden from the default form; usually set in environment.",
            "default": ""
          },
          "inputJsonPath": {
            "title": "💻 Local file path (developers & local runs only)",
            "type": "string",
            "description": "Hidden in the default Console form. For local `apify run`, defaults to `data/demo_sample.json` in code when unset. Set manually in run input or API for custom paths relative to the project root.",
            "default": ""
          },
          "advertisedRecordCount": {
            "title": "📊 Advertised record count (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional public-facing count for the listing. Must not exceed the number of records in your file. When empty, the true file count is used."
          },
          "matchMode": {
            "title": "🧩 Match mode between filter groups",
            "enum": [
              "AND",
              "OR"
            ],
            "type": "string",
            "description": "Global combinator for filter **groups**. AND is the default and recommended for narrowing. Switch to OR to widen results without deleting filters.",
            "default": "AND"
          },
          "textMatchMode": {
            "title": "🔤 Text match mode",
            "enum": [
              "contains",
              "exact",
              "startsWith",
              "endsWith",
              "regex"
            ],
            "type": "string",
            "description": "Applies to free-text fields (name, job title, LinkedIn username, keywords, etc.).\n\n- `contains` — substring, most forgiving (default).\n- `exact` — whole-string equality after trim.\n- `startsWith` / `endsWith` — prefix / suffix match.\n- `regex` — JavaScript RegExp. Use `\\b`, `|`, `^` etc. Example: `^(chief|head)\\s`.\n\n⚠️ `regex` is powerful — invalid patterns will fail the run with a clear error.",
            "default": "contains"
          },
          "caseSensitive": {
            "title": "🔠 Case-sensitive matching",
            "type": "boolean",
            "description": "When enabled, text comparisons respect upper / lower case. Default **off** — useful because most of the dataset is stored lowercase.",
            "default": false
          },
          "exportFromIndex": {
            "title": "📌 Start at row (after filters & dedupe)",
            "minimum": 0,
            "type": "integer",
            "description": "0-based index into the **matched** list (after filters, dedupe, and optional random sample). `0` = first row. Only used when **Stop before row** is set; otherwise use *Skip first N* below.",
            "default": 0
          },
          "exportToExclusiveIndex": {
            "title": "🛑 Stop before row (exclusive end)",
            "minimum": 0,
            "type": "integer",
            "description": "**Optional.** When set, export only half-open range **[Start at row, Stop before row)** — same as a spreadsheet row slice. Example: start `0`, stop `1000` = first 1000 rows. Leave **empty** to use *Skip first N* + *Max records* instead. Must be ≥ *Start at row*."
          },
          "maxRecords": {
            "title": "🔢 Max records to output",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum rows written to the result. `0` = as many as your **current plan** allows, up to how many rows matched. **Not** used when *Stop before row* is set (use Start/Stop range or this + Skip — not both). Tip: about `500` while tuning filters.",
            "default": 0
          },
          "skipRecords": {
            "title": "⏭️ Skip first N records (offset)",
            "minimum": 0,
            "type": "integer",
            "description": "Pagination offset applied after filtering & dedupe. Use with *Max records* for chunked exports — e.g. page 2 of 1000 → skip `1000`, max `1000`.",
            "default": 0
          },
          "randomSample": {
            "title": "🎲 Random sample size (0 = disabled)",
            "minimum": 0,
            "type": "integer",
            "description": "If > 0, take a **random sample** of N records (Fisher–Yates shuffle) from the filtered set before pagination. Useful for A/B outreach tests and model training splits. Seeded by run date for loose reproducibility within the same day.",
            "default": 0
          },
          "countriesInclude": {
            "title": "🌍 Countries — include (any-of)",
            "type": "array",
            "description": "Keep only rows where `country` equals one of these (case-insensitive, exact). Examples: `united states`, `united kingdom`, `germany`, `turkey`.",
            "items": {
              "type": "string"
            }
          },
          "countriesExclude": {
            "title": "🚫 Countries — exclude",
            "type": "array",
            "description": "Drop rows whose `country` matches any value here. Applied **always** (even in OR mode). Use to blocklist markets you can't serve. Examples: `india`, `china`.",
            "items": {
              "type": "string"
            }
          },
          "regionsInclude": {
            "title": "🗺️ Regions — include (substring, any-of)",
            "type": "array",
            "description": "Keep rows where **any** value in `regions[]` contains **any** of these substrings. Good for state / province targeting: `new york`, `bavaria`, `greater london`.",
            "items": {
              "type": "string"
            }
          },
          "regionsExclude": {
            "title": "🚷 Regions — exclude",
            "type": "array",
            "description": "Drop rows where any `regions[]` entry contains any of these substrings. Always enforced.",
            "items": {
              "type": "string"
            }
          },
          "localityContains": {
            "title": "🏙️ City / locality contains (any-of)",
            "type": "array",
            "description": "Substring match across `location_names[]` and `street_addresses[].locality`. Case-insensitive. Examples: `new york`, `san francisco`, `berlin`.",
            "items": {
              "type": "string"
            }
          },
          "continentsInclude": {
            "title": "🌐 Continents — include",
            "type": "array",
            "description": "Keep rows where **any** continent in `location[].continent` or `street_addresses[].continent` is in this list. Valid values: `north america`, `south america`, `europe`, `asia`, `africa`, `oceania`.",
            "items": {
              "type": "string"
            }
          },
          "industriesInclude": {
            "title": "🏭 Industries — include (substring, any-of)",
            "type": "array",
            "description": "Keep rows where `industry` contains any of these substrings. Examples: `computer software`, `legal services`, `hospital & health care`.",
            "items": {
              "type": "string"
            }
          },
          "industriesExclude": {
            "title": "🧱 Industries — exclude",
            "type": "array",
            "description": "Drop rows where `industry` contains any of these substrings. Always enforced. Examples: `staffing`, `gambling`.",
            "items": {
              "type": "string"
            }
          },
          "jobTitleContains": {
            "title": "📝 Current job title — include (any-of)",
            "type": "array",
            "description": "Text match on `job_title` (and all `experience[].title.name`). Uses your **Text match mode** above (contains / exact / regex / …). Examples: `counsel`, `director`, `chief`.",
            "items": {
              "type": "string"
            }
          },
          "jobTitleExclude": {
            "title": "🙅 Current job title — exclude",
            "type": "array",
            "description": "Reject rows whose `job_title` matches any entry under the active Text match mode. Always enforced. Examples: `intern`, `assistant`.",
            "items": {
              "type": "string"
            }
          },
          "jobRolesInclude": {
            "title": "🧭 Job roles (functional area)",
            "uniqueItems": true,
            "type": "array",
            "description": "Taxonomy match against `experience[].title.role` **or** `job[].title_role`. Multi-select. Useful when titles vary wildly (e.g. all sales-flavored roles).",
            "items": {
              "type": "string",
              "enum": [
                "customer_service",
                "design",
                "education",
                "engineering",
                "finance",
                "health",
                "human_resources",
                "legal",
                "marketing",
                "media",
                "operations",
                "public_relations",
                "real_estate",
                "sales"
              ]
            }
          },
          "jobLevelsInclude": {
            "title": "🏅 Seniority levels",
            "uniqueItems": true,
            "type": "array",
            "description": "Taxonomy match against `experience[].title.levels[]`. Pick one or more. `cxo` covers CEO / CTO / CFO etc.; `training` = interns and residents.",
            "items": {
              "type": "string",
              "enum": [
                "cxo",
                "vp",
                "director",
                "partner",
                "owner",
                "senior",
                "manager",
                "entry",
                "training",
                "unpaid"
              ]
            }
          },
          "jobSubRolesContains": {
            "title": "🧪 Sub-roles — include (any-of)",
            "type": "array",
            "description": "Substring match on `experience[].title.sub_role`. Lets you reach into specialties like `lawyer`, `doctor`, `nursing`, `data`, `graphic_design`, `product`.",
            "items": {
              "type": "string"
            }
          },
          "minYearsExperience": {
            "title": "🧓 Min years of experience",
            "minimum": 0,
            "type": "integer",
            "description": "Require `inferred_years_experience` ≥ this value. `0` = no minimum. Great proxy for seniority when titles are messy.",
            "default": 0
          },
          "maxYearsExperience": {
            "title": "🧑 Max years of experience",
            "minimum": 0,
            "type": "integer",
            "description": "Require `inferred_years_experience` ≤ this value. `0` = no maximum.",
            "default": 0
          },
          "currentlyEmployed": {
            "title": "🟢 Currently employed (primary role open)",
            "type": "boolean",
            "description": "Keep rows where `experience[]` contains an `is_primary: true` entry with no `end_date` (i.e. still in that role).",
            "default": false
          },
          "companyNamesInclude": {
            "title": "🏢 Company — has worked at (any-of)",
            "type": "array",
            "description": "Keep rows whose `experience[].company.name` contains any of these substrings. Examples: `siemens`, `google`, `mckinsey`.",
            "items": {
              "type": "string"
            }
          },
          "companyNamesExclude": {
            "title": "🚯 Company — never worked at",
            "type": "array",
            "description": "Drop rows where any `experience[].company.name` contains any of these substrings. Always enforced. Useful to exclude competitors or blacklisted employers.",
            "items": {
              "type": "string"
            }
          },
          "currentCompanyContains": {
            "title": "📌 Current employer contains",
            "type": "array",
            "description": "Substring match on `job_company[].name` (the current employer). Use this when you don't care about history, only where they work *right now*.",
            "items": {
              "type": "string"
            }
          },
          "companyIndustriesInclude": {
            "title": "🏗️ Company industries (from experience)",
            "type": "array",
            "description": "Substring match on `experience[].company.industry`. Broader than the top-level `industry` because it covers every past employer too. Example: `electrical/electronic manufacturing`.",
            "items": {
              "type": "string"
            }
          },
          "companySizeMin": {
            "title": "👥 Min company size bucket",
            "enum": [
              "",
              "1-10",
              "11-50",
              "51-200",
              "201-500",
              "501-1000",
              "1001-5000",
              "5001-10000",
              "10001+"
            ],
            "type": "string",
            "description": "Lower bound of `experience[].company.size`. A row passes if they ever worked at a company with headcount ≥ this bucket.",
            "default": ""
          },
          "companySizeMax": {
            "title": "👤 Max company size bucket",
            "enum": [
              "",
              "1-10",
              "11-50",
              "51-200",
              "201-500",
              "501-1000",
              "1001-5000",
              "5001-10000",
              "10001+"
            ],
            "type": "string",
            "description": "Upper bound of `experience[].company.size`.",
            "default": ""
          },
          "minCompaniesWorked": {
            "title": "🧳 Minimum number of past employers",
            "minimum": 0,
            "type": "integer",
            "description": "Require `experience[].length` ≥ this value. Proxy for career breadth.",
            "default": 0
          },
          "schoolsInclude": {
            "title": "🎓 Schools — include (substring, any-of)",
            "type": "array",
            "description": "Keep rows who studied at any of these institutions. Substring match. Examples: `harvard`, `mit`, `hofstra`.",
            "items": {
              "type": "string"
            }
          },
          "degreesInclude": {
            "title": "🥇 Degrees — include (any-of)",
            "type": "array",
            "description": "Any token in `education[].degrees[]` must contain any of these strings. Common tokens: `bachelors`, `masters`, `doctorates`, `doctor of jurisprudence`, `master of business administration`.",
            "items": {
              "type": "string"
            }
          },
          "majorsInclude": {
            "title": "📚 Majors — include (any-of)",
            "type": "array",
            "description": "Substring match on `education[].majors[]`. Examples: `law`, `computer science`, `business`.",
            "items": {
              "type": "string"
            }
          },
          "minEducationLevel": {
            "title": "🏛️ Minimum education level",
            "enum": [
              "any",
              "associates",
              "bachelors",
              "masters",
              "doctorate"
            ],
            "type": "string",
            "description": "Require at least one education entry at this level or higher. Degree strings are matched heuristically (regex covers PhD, JD, MD, MBA, MSc, BSc, BA, LLB, associate, etc.).",
            "default": "any"
          },
          "languagesAnyOf": {
            "title": "🗣️ Languages — any of",
            "type": "array",
            "description": "Keep rows who speak at least one of these languages. Examples: `english`, `german`, `arabic`.",
            "items": {
              "type": "string"
            }
          },
          "languagesAllOf": {
            "title": "🈯 Languages — all of",
            "type": "array",
            "description": "Stricter: require **every** listed language to be present in `languages[]`. Example: `english` + `german` = bilingual.",
            "items": {
              "type": "string"
            }
          },
          "interestsInclude": {
            "title": "🎯 Interests contain (any-of)",
            "type": "array",
            "description": "Substring match on `interests[]`. Often qualitative — think `human rights`, `science and technology`, `education`.",
            "items": {
              "type": "string"
            }
          },
          "hasAnyCertification": {
            "title": "📜 Must have ≥ 1 certification",
            "type": "boolean",
            "description": "Drop rows where `certifications` is null / empty. Useful for regulated industries (legal, medical, finance).",
            "default": false
          },
          "certificationsInclude": {
            "title": "🏷️ Certifications contain (any-of)",
            "type": "array",
            "description": "Substring match on `certifications[].name` (or raw string). Examples: `pmp`, `bar exam`, `cpa`.",
            "items": {
              "type": "string"
            }
          },
          "genderInclude": {
            "title": "⚧️ Gender",
            "enum": [
              "any",
              "male",
              "female",
              "unspecified"
            ],
            "type": "string",
            "description": "Filter on `basic_info.gender`. Dataset currently stores `male` / `female`; rows with unspecified gender are passed through on *Any*.",
            "default": "any"
          },
          "nameContains": {
            "title": "👤 Full name contains (any-of)",
            "type": "array",
            "description": "Text match on `full_name` using the active *Text match mode*. With `regex`, a pattern like `^a[ln]` matches names starting with *al* or *an*.",
            "items": {
              "type": "string"
            }
          },
          "nameExclude": {
            "title": "🙈 Full name excludes",
            "type": "array",
            "description": "Reject rows whose `full_name` matches. Always enforced. Good for suppression lists or test / dummy rows.",
            "items": {
              "type": "string"
            }
          },
          "linkedinUsernameContains": {
            "title": "🔗 LinkedIn username contains",
            "type": "string",
            "description": "Text match on `linkedin_username` using the active *Text match mode*. Empty = off."
          },
          "linkedinRequired": {
            "title": "🔗 Require LinkedIn username present",
            "type": "boolean",
            "description": "Drop rows without a `linkedin_username` — handy when your downstream tool keys off LinkedIn URLs.",
            "default": false
          },
          "minConnections": {
            "title": "📈 Minimum connections",
            "minimum": 0,
            "type": "integer",
            "description": "Require `connections` ≥ this value. `0` = no minimum.",
            "default": 0
          },
          "maxConnections": {
            "title": "📉 Maximum connections",
            "minimum": 0,
            "type": "integer",
            "description": "Require `connections` ≤ this value. `0` = no maximum.",
            "default": 0
          },
          "requireAnyEmail": {
            "title": "✉️ Require at least one email (personal OR work)",
            "type": "boolean",
            "description": "Drop rows where both `email` and `work_email` are empty or null.",
            "default": false
          },
          "requireWorkEmail": {
            "title": "🧑‍💼 Require work email",
            "type": "boolean",
            "description": "Drop rows where `work_email` is missing **and** no `emails[]` entry has a professional-type token (`professional`, `current_professional`, `previous_professional`, `work`, or `business`). The Actor canonicalizes these to the same class before filtering.",
            "default": false
          },
          "requirePersonalEmail": {
            "title": "🏠 Require personal email",
            "type": "boolean",
            "description": "Drop rows where `email` is missing **and** no `emails[]` entry has `type = personal`.",
            "default": false
          },
          "requirePhone": {
            "title": "📞 Require phone number",
            "type": "boolean",
            "description": "Drop rows where `phone_numbers` is null or empty.",
            "default": false
          },
          "emailDomainsInclude": {
            "title": "🌐 Email domains — include (any-of)",
            "type": "array",
            "description": "Keep rows where **any** email (personal, work, or from `emails[]`) ends with one of these domains. Examples: `gmail.com`, `siemens.com`.",
            "items": {
              "type": "string"
            }
          },
          "emailDomainsExclude": {
            "title": "🛑 Email domains — exclude",
            "type": "array",
            "description": "Drop rows where any email ends with one of these domains. Always enforced. Common blocklist: `mailinator.com`, `guerrillamail.com`, `example.com`.",
            "items": {
              "type": "string"
            }
          },
          "globalKeywordsAny": {
            "title": "🔎 Smart keyword search — any-of",
            "type": "array",
            "description": "Keep rows where **any** of these keywords appears in **any** of the searched fields. Uses the active *Text match mode* (supports regex). Examples: `patent`, `intellectual property`.",
            "items": {
              "type": "string"
            }
          },
          "globalKeywordsExclude": {
            "title": "🧹 Smart keyword — exclude",
            "type": "array",
            "description": "Drop rows where any of these keywords appears in any searched field. Always enforced. Great for suppressing known irrelevant niches.",
            "items": {
              "type": "string"
            }
          },
          "dedupeByField": {
            "title": "♻️ Primary dedupe key",
            "enum": [
              "none",
              "linkedin_username",
              "email",
              "work_email",
              "id",
              "full_name",
              "phone"
            ],
            "type": "string",
            "description": "Pick the best unique identifier for your audience. `linkedin_username` is usually safest; `email` is great for deliverability lists.",
            "default": "none"
          },
          "secondaryDedupeField": {
            "title": "♻️ Secondary dedupe key (fallback)",
            "enum": [
              "none",
              "linkedin_username",
              "email",
              "work_email",
              "id",
              "full_name",
              "phone"
            ],
            "type": "string",
            "description": "When the primary key is missing or empty on a row, fall back to this key so you don't lose records that lack (e.g.) a LinkedIn handle but do have an email.",
            "default": "none"
          },
          "fieldsToKeep": {
            "title": "🧾 Fields to keep (allow-list)",
            "type": "array",
            "description": "If non-empty, only these top-level keys are emitted. Nested paths are **not** supported here — use *Fields to omit* for surgical removal. Example keys: `id`, `full_name`, `email`, `linkedin_username`, `country`, `job_title`.",
            "items": {
              "type": "string"
            }
          },
          "fieldsToOmit": {
            "title": "✂️ Fields to omit (deny-list)",
            "type": "array",
            "description": "Strip these top-level keys from every emitted record. Applied *after* `fieldsToKeep`. Example keys: `phone_numbers`, `street_addresses`.",
            "items": {
              "type": "string"
            }
          },
          "redactPii": {
            "title": "🛡️ Redact PII (emails & phones)",
            "type": "boolean",
            "description": "Masks emails as `j***@domain.com` and keeps only the last 4 digits of phone numbers. Useful when sharing samples with contractors or posting demos publicly. Does **not** affect filtering — only the output.",
            "default": false
          },
          "flattenNestedFields": {
            "title": "📐 Flatten nested fields",
            "type": "boolean",
            "description": "Expose the most-used nested bits at the top level: `first_name`, `last_name`, `gender`, `primary_city`, `primary_region`, `primary_continent`, `current_company_name`, `primary_email_domain`. Original nested objects remain, unless you also use *Fields to omit*.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}