{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Job Match + LinkedIn Jobs Scraper: scored to your CV",
    "description": "First 25 jobs free. AI job match for LinkedIn jobs: scrapes your search, drops reposts, agencies and duplicates free, scores each job 0-100 against your CV with a recruiter note. Pay per matched job, no start fee. Free demo on any plan; live search runs on your own Apify account.",
    "version": "0.3",
    "x-build-id": "m90ygRvuECUuAT1YG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rich_minds~linkedin-job-match-ai/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rich_minds-linkedin-job-match-ai",
        "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/rich_minds~linkedin-job-match-ai/runs": {
      "post": {
        "operationId": "runs-sync-rich_minds-linkedin-job-match-ai",
        "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/rich_minds~linkedin-job-match-ai/run-sync": {
      "post": {
        "operationId": "run-sync-rich_minds-linkedin-job-match-ai",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "sourceMode"
        ],
        "properties": {
          "sourceMode": {
            "title": "Where do the jobs come from?",
            "enum": [
              "actor",
              "dataset",
              "list"
            ],
            "type": "string",
            "description": "<b>Search LinkedIn</b> — runs <code>curious_coder/linkedin-jobs-scraper</code> on your account for the search terms below (about $0.002 per job scraped, billed by that Actor; needs an Apify plan that runs Store Actors — if yours cannot, the run stops at once and nothing is charged). <b>Existing dataset</b> — match the jobs of an earlier run (no new scraping cost). <b>Paste jobs</b> — the free demo: the sample jobs below, or your own list. An API call that names nothing to search (<code>{}</code>: no search terms, URLs or CV) runs the free demo on the sample jobs instead — nothing is charged and the source Actor is never started.",
            "default": "actor"
          },
          "searchKeywords": {
            "title": "Job search terms",
            "type": "array",
            "description": "One LinkedIn job search per term (job title, skill or both, e.g. <i>python developer</i>). Each search returns up to <b>Jobs per search</b> jobs.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country as you would type it on LinkedIn (e.g. <i>United States</i>, <i>London, United Kingdom</i>, <i>Remote</i>). Empty = worldwide.",
            "default": "United States"
          },
          "datePosted": {
            "title": "Posted within",
            "enum": [
              "anyTime",
              "past24Hours",
              "pastWeek",
              "pastMonth"
            ],
            "type": "string",
            "description": "Only jobs posted in this window. <b>Past 24 hours</b> is the daily-alert setting.",
            "default": "pastWeek"
          },
          "maxJobsPerSearch": {
            "title": "Jobs per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many jobs each search term scrapes (the source's <code>limitPerSource</code>, $0.002 each on your account). Cut automatically so all searches stay inside <b>Max source spend</b>.",
            "default": 40
          },
          "maxDiscoveryChargeUsd": {
            "title": "Max source spend (USD)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Hard cap on what the LinkedIn scraper may charge your account in <b>Search LinkedIn</b> mode — the form starts at $0.50, so your first real search can never cost more. An API or agent call that leaves it out is capped at $2 per run; raise it for bigger searches.",
            "default": 2
          },
          "candidateProfile": {
            "title": "Your CV / profile",
            "type": "string",
            "description": "Paste your CV summary or LinkedIn About: skills, years of experience, target roles, visa needs. The rules pull your skills from it and the AI scores every job against it. It is only sent to the model — never written to the dataset."
          },
          "candidateProfileUrl": {
            "title": "…or a link to your CV",
            "type": "string",
            "description": "Instead of pasting: a public link to your CV as PDF, DOCX or text — e.g. your LinkedIn profile saved as PDF (profile → <b>More → Save to PDF</b>) uploaded to an Apify key-value store on your account or any file host. Its text is read at the start of the run and added to <b>Your CV / profile</b>. A LinkedIn profile page itself needs a login and cannot be read."
          },
          "minScore": {
            "title": "Minimum match score (0–100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "The only field that changes what you pay: jobs whose final match score is below this are dropped and <b>not charged</b>. Raise it to pay only for the strongest matches, lower it to see more. 80+ = strong, 65+ = good, 50+ = stretch.",
            "default": 60
          },
          "needsVisaSponsorship": {
            "title": "I need visa sponsorship",
            "type": "boolean",
            "description": "Drop jobs whose description says the employer will not sponsor a visa (\"unable to sponsor\", \"no sponsorship\", \"U.S. citizens only\"); the sentence is kept as evidence. The AI also weighs it.",
            "default": false
          },
          "workplace": {
            "title": "Workplace",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "onsite"
            ],
            "type": "string",
            "description": "Keep only remote, hybrid or on-site jobs (from LinkedIn's workplace type; unknown ones are kept).",
            "default": "any"
          },
          "mustHaveSkills": {
            "title": "Must-have skills",
            "type": "array",
            "description": "Skills the job should ask for (word-boundary match: <i>Java</i> never matches <i>JavaScript</i>). They weigh most in the match score and fill <code>matchedSkills</code>.",
            "items": {
              "type": "string"
            }
          },
          "niceToHaveSkills": {
            "title": "Nice-to-have skills",
            "type": "array",
            "description": "Skills that raise the score when the job mentions them.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude jobs mentioning",
            "type": "array",
            "description": "Drop every job whose title or description mentions one of these (e.g. <i>unpaid</i>, <i>commission only</i>, <i>clearance</i>).",
            "items": {
              "type": "string"
            }
          },
          "targetSeniority": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only these LinkedIn seniority levels: <i>Internship</i>, <i>Entry level</i>, <i>Associate</i>, <i>Mid-Senior level</i>, <i>Director</i>, <i>Executive</i> (jobs without a level are kept). LinkedIn's new AI search no longer filters this reliably — this is the strict post-filter.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types: <i>Full-time</i>, <i>Part-time</i>, <i>Contract</i>, <i>Temporary</i>, <i>Internship</i> (jobs without one are kept).",
            "items": {
              "type": "string"
            }
          },
          "minSalary": {
            "title": "Salary floor",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs whose stated top salary is below this (in <b>Salary currency</b> per <b>Salary period</b>; hourly and yearly are converted at 2,080 hours). Jobs without a salary are kept unless you tick the box below. 0 = off.",
            "default": 0
          },
          "salaryCurrency": {
            "title": "Salary currency",
            "type": "string",
            "description": "ISO code of your salary floor, e.g. USD, EUR, GBP. Jobs paid in another currency are not compared.",
            "default": "USD"
          },
          "salaryPeriod": {
            "title": "Salary period",
            "enum": [
              "year",
              "month",
              "hour"
            ],
            "type": "string",
            "description": "The period of your salary floor.",
            "default": "year"
          },
          "dropJobsWithoutSalary": {
            "title": "Drop jobs without a stated salary",
            "type": "boolean",
            "description": "Only with a salary floor: also drop jobs that state no salary.",
            "default": false
          },
          "maxApplicants": {
            "title": "Max applicants",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs that already have more applicants than this. 0 = off.",
            "default": 0
          },
          "maxJobAgeDays": {
            "title": "Max job age (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs posted more than this many days ago. 0 = off.",
            "default": 0
          },
          "dropGhostJobs": {
            "title": "Drop likely ghost jobs",
            "type": "boolean",
            "description": "Drop postings with a <b>high</b> ghost-job risk — at least three points from: reposted under a new job id, open for 30+ days (60+ counts double), 200+ applicants, no named poster. Every delivered job carries <code>ghostJobRisk</code> (low / medium / high) and its reasons either way.",
            "default": false
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Company names to never show (your current employer, companies you already applied to).",
            "items": {
              "type": "string"
            }
          },
          "excludeStaffingAgencies": {
            "title": "Drop staffing agencies",
            "type": "boolean",
            "description": "Drop jobs posted by staffing / recruiting agencies (company name, industry or \"our client\" wording).",
            "default": true
          },
          "minCompanyEmployees": {
            "title": "Min company size (employees)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop companies smaller than this (when LinkedIn states the size). 0 = off.",
            "default": 0
          },
          "maxCompanyEmployees": {
            "title": "Max company size (employees)",
            "minimum": 0,
            "type": "integer",
            "description": "Drop companies larger than this (when LinkedIn states the size). 0 = off.",
            "default": 0
          },
          "enableAi": {
            "title": "AI match & recruiter note",
            "type": "boolean",
            "description": "Score each job against your CV with grounded reasons, extract its real requirements (years, must-haves, sponsorship with the quoted sentence) and draft a note to the poster plus a cover-letter hook for strong and good matches. Needs <b>Your CV / profile</b>. Off = rule-based score only (cheaper).",
            "default": true
          },
          "generateRecruiterNote": {
            "title": "Write the recruiter note and cover-letter hook",
            "type": "boolean",
            "description": "For strong and good matches only; greets the poster by name when LinkedIn shows one. Off = score and requirements only.",
            "default": true
          },
          "noteTone": {
            "title": "Note tone",
            "enum": [
              "professional",
              "friendly",
              "concise"
            ],
            "type": "string",
            "description": "How the recruiter note sounds.",
            "default": "professional"
          },
          "llmProvider": {
            "title": "AI model access",
            "enum": [
              "apify",
              "byok"
            ],
            "type": "string",
            "description": "<b>Apify (no keys)</b> — the AI runs through Apify's built-in OpenRouter proxy on plans that can run Store Actors; tokens are billed to your Apify account at OpenRouter's rates. <b>My own key</b> — use your OpenAI / Anthropic / Gemini / Groq key instead (works on every plan).",
            "default": "apify"
          },
          "llmApiKey": {
            "title": "Your API key (own-key mode only)",
            "type": "string",
            "description": "Required when <b>AI model access</b> is <i>My own API key</i>. Stored encrypted by Apify, never logged."
          },
          "maxQualified": {
            "title": "Max matched jobs to output",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on results (and therefore on what you pay for). The best matches are output first.",
            "default": 100
          },
          "candidates": {
            "title": "Several candidates (coaches, recruiters)",
            "type": "array",
            "description": "Score one search for a whole roster: a JSON array, one object per candidate with <code>name</code> and <code>candidateProfile</code> (or <code>candidateProfileUrl</code>), optionally their own <code>searchKeywords</code>, <code>mustHaveSkills</code>, <code>niceToHaveSkills</code>, <code>targetSeniority</code>, <code>workplace</code>, <code>minSalary</code>, <code>needsVisaSponsorship</code>, <code>minScore</code>, <code>maxQualified</code> … Every term is searched once for all; each candidate gets their own score, rows (<code>candidateName</code>), memory of jobs already received and DIGEST section. One matched-job event per job per candidate. Leave empty for your own search."
          },
          "dedupeAcrossRuns": {
            "title": "Only new jobs on every run",
            "type": "boolean",
            "description": "Remembers every job you received — by LinkedIn id and by company + title + location, so reposts are caught — in a named key-value store on your account for 60 days, and skips them next time. Keep it on for a daily schedule.",
            "default": true
          },
          "notifyEmail": {
            "title": "E-mail me the new jobs (optional)",
            "type": "string",
            "description": "After every run with at least one new matched job, the run's digest (how many are new, the top 10 with links and why they match, the market report) is e-mailed here through Apify's send-mail Actor. Schedule the run daily and the jobs come to your inbox — no Slack or Zapier needed. Never sent for the free demo."
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "Matched jobs are POSTed here as JSON (Zapier, Make, n8n, Slack, Notion, Airtable). For Google Sheets you can also use Apify's Integrations tab."
          },
          "webhookBatchSize": {
            "title": "Webhook batch size",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "1 = one POST per job the moment it is ready. Higher = one POST per N jobs.",
            "default": 1
          },
          "searchUrls": {
            "title": "LinkedIn search URLs",
            "type": "array",
            "description": "Public LinkedIn job-search URLs (open linkedin.com/jobs/search in a private window, set the filters, copy the URL). Searched in one extra run next to the search terms.",
            "items": {
              "type": "string"
            }
          },
          "geoId": {
            "title": "LinkedIn geoId",
            "type": "string",
            "description": "Precise location id from a LinkedIn search URL (<code>geoId=</code>). Overrides the free-text location when LinkedIn resolves it."
          },
          "distance": {
            "title": "Radius (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Search radius around the location. 0 = LinkedIn's default.",
            "default": 0
          },
          "companyIds": {
            "title": "Only these companies (LinkedIn ids)",
            "type": "array",
            "description": "LinkedIn numeric company ids (from a company URL or <code>f_C=</code> in a search URL), e.g. 1441 for Google.",
            "items": {
              "type": "string"
            }
          },
          "under10Applicants": {
            "title": "Only jobs with fewer than 10 applicants",
            "type": "boolean",
            "description": "Ask LinkedIn for early-bird jobs only.",
            "default": false
          },
          "splitByLocation": {
            "title": "Split the search by city",
            "type": "boolean",
            "description": "Gets past LinkedIn's 1,000-jobs-per-search cap by searching each city of <b>Split country</b> separately (more jobs, more source cost).",
            "default": false
          },
          "splitCountry": {
            "title": "Split country (ISO code)",
            "type": "string",
            "description": "Two-letter country code whose cities are searched, e.g. US, GB, DE. Only with <b>Split the search by city</b>."
          },
          "discoveryActorId": {
            "title": "Source Actor",
            "type": "string",
            "description": "Actor used in <b>Search LinkedIn</b> mode. Any Actor whose output has the fields listed in the README works.",
            "default": "curious_coder/linkedin-jobs-scraper"
          },
          "discoveryInput": {
            "title": "Extra source input (JSON)",
            "type": "object",
            "description": "Merged over the input built from the fields above and passed to the source Actor as-is — for options this form does not show. See the source Actor's input schema."
          },
          "itemsList": {
            "title": "Jobs to process",
            "type": "array",
            "description": "Only for <b>Paste jobs</b> mode. JSON array of jobs in the shape of <code>curious_coder/linkedin-jobs-scraper</code> (at least <code>title</code>; <code>id</code>, <code>link</code>, <code>companyName</code>, <code>descriptionText</code> … as in its output)."
          },
          "datasetId": {
            "title": "Dataset",
            "type": "string",
            "description": "Only for <b>Existing dataset</b> mode. Pick a dataset of an earlier <code>curious_coder/linkedin-jobs-scraper</code> run so the Actor is granted read access to it."
          },
          "llmModel": {
            "title": "AI model",
            "type": "string",
            "description": "Leave empty for the default (<code>anthropic/claude-haiku-4.5</code>). Apify mode takes an OpenRouter slug such as <code>openai/gpt-4.1-mini</code>; own-key mode takes <code>provider:model</code>, e.g. <code>anthropic:claude-haiku-4-5-20251001</code>."
          },
          "aiCandidateMultiplier": {
            "title": "AI candidate pool (× max matched)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many of the best rule-scored jobs get the AI pass, as a multiple of <b>Max matched jobs</b> (only jobs within 20 points of the minimum score). Higher = more thorough, slower, more tokens.",
            "default": 2
          },
          "targetFlags": {
            "title": "Only jobs with these flags (any of)",
            "type": "array",
            "description": "Only deliver jobs with at least one of these flags: <code>sponsorship_offered</code>, <code>no_sponsorship</code>, <code>clearance_required</code>, <code>relocation_offered</code>, <code>staffing_agency</code>, <code>language_required</code> (the camelCase output keys such as <code>sponsorshipOffered</code> work too). An unknown name stops the run at once with the list of valid ones.",
            "items": {
              "type": "string"
            }
          },
          "suppressionList": {
            "title": "Never show these jobs",
            "type": "array",
            "description": "LinkedIn job ids, job URLs or exact titles to never output. Skipped before any processing and never charged.",
            "items": {
              "type": "string"
            }
          },
          "maxToProcess": {
            "title": "Max jobs to process",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper bound on how many jobs pass the free filters and get scored in one run (controls run time). Default = 3 × max matched."
          },
          "dedupeStoreName": {
            "title": "Dedupe store name",
            "type": "string",
            "description": "Key-value store used for cross-run memory. Left at the default, the memory is kept per CV: another <code>candidateProfile</code> (another candidate) starts its own list, so one candidate never hides jobs from another. Type your own name to keep one memory across CV edits, or one per campaign.",
            "default": "linkedin-job-match-ai-seen"
          },
          "webhookHeaders": {
            "title": "Webhook headers",
            "type": "object",
            "description": "Extra HTTP headers for the webhook, e.g. <code>{\"Authorization\": \"Bearer …\"}</code>."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed: the source Actor handles LinkedIn's anti-blocking on its side."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}