Cavuno · Schema

JobSummary

Job Board SoftwareArtificial IntelligenceCommunity PlatformsMonetization

Properties

Name Type Description
id string Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`).
object string String representing the object's type. Objects of the same type share the same value.
title string The job title.
slug stringnull URL-friendly slug used in public board URLs, or `null` if no slug is set.
status string Current status of the job. One of `draft`, `published`, `expired`, `archived`, or `pending_approval`. A `pending_approval` job is waiting for an operator to approve it: approve with `POST /v1/jobs/:id
companyId stringnull Identifier of the company the job belongs to, or `null` if no company is attached.
employmentType stringnull Employment type of the role, or `null` if not specified. For a job with a custom employment type, this is the Google equivalent of the custom type.
customEmploymentType objectnull The board's custom employment type for this job (for example `Casual`), or `null` when the job uses a built-in type only. A deleted custom type reads back as `null` and the job shows its built-in `emp
remoteOption stringnull Whether the role is on-site, hybrid, or fully remote. `null` only on older jobs saved without one; create requires it and `PATCH` cannot clear it.
seniority stringnull Seniority level of the role, or `null` if not specified.
salaryMin numbernull Minimum salary in `salaryCurrency` units, or `null` if not specified.
salaryMax numbernull Maximum salary in `salaryCurrency` units, or `null` if not specified.
salaryCurrency stringnull Three-letter ISO 4217 currency code for the salary range, or `null` if no salary is specified.
salaryTimeframe stringnull Period the salary range is quoted against, or `null` if no salary is specified.
isFeatured boolean Whether the job appears in featured slots on the public board.
publishedAt stringnull Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime.
expiresAt stringnull Time at which the job expires as an ISO 8601 datetime. `null` can appear when the expiry requirement does not apply, including for drafts and sponsored jobs; ordinary published jobs always have an exp
createdAt string Time at which the job was created. ISO 8601 datetime.
updatedAt string Time at which the job was last updated. ISO 8601 datetime.
revision integer Monotonic Job lifecycle revision used to reconcile webhook events. Legacy rows are 0 until the rollout backfill runs.
skills array Canonical skill slugs assigned to the job.
categories array Canonical category slugs assigned to the job.
externalId stringnull External identifier supplied by the caller on create, used for deduplication via `GET /v1/jobs?externalId=...`. `null` when no external identifier was set.
customFieldValues object Board-defined custom-field values for this job, keyed by the field `key` (the definitions are published at `GET /v1/settings/job-form`). Each value is returned as stored: a string (`short_text` / `lon
collectionValues object Operator-facing collection record IDs keyed by job collection field. Always an object; values are arrays even for single-select fields. Fields whose collection is archived are omitted.
proposedCompany objectnull Present only while the job has no company: the company the job's source names, which isn't on your board yet. Read-only. Publishing the job (`POST /jobs/{id}/publish`) adds this company to your board,
companyLocked boolean `true` once an operator has changed the job's company (in the dashboard or with `companyId` on `PATCH /jobs/{id}`). A locked job keeps its company when the job's source refreshes or republishes it, ev
links object
View JSON Schema on GitHub

JSON Schema

cavuno-com-job-summary-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/cavuno-com/json-schema/cavuno-com-job-summary-schema.json",
  "title": "JobSummary",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cavuno-com-openapi.json#/components/schemas/JobSummary",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the object. Use this value as the `{id}` path parameter for the job endpoints (e.g. `GET /v1/jobs/{id}`)."
    },
    "object": {
      "type": "string",
      "enum": [
        "job"
      ],
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "title": {
      "type": "string",
      "description": "The job title."
    },
    "slug": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL-friendly slug used in public board URLs, or `null` if no slug is set."
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "published",
        "expired",
        "archived",
        "pending_approval"
      ],
      "description": "Current status of the job. One of `draft`, `published`, `expired`, `archived`, or `pending_approval`. A `pending_approval` job is waiting for an operator to approve it: approve with `POST /v1/jobs/:id/publish`, reject with `DELETE /v1/jobs/:id`. It is not public, like a draft."
    },
    "companyId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Identifier of the company the job belongs to, or `null` if no company is attached."
    },
    "employmentType": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "full_time",
        "part_time",
        "contract",
        "internship",
        "temporary",
        "volunteer",
        "other"
      ],
      "description": "Employment type of the role, or `null` if not specified. For a job with a custom employment type, this is the Google equivalent of the custom type."
    },
    "customEmploymentType": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "key": {
          "type": "string",
          "description": "Stable key of the custom employment type. Never changes."
        },
        "label": {
          "type": "string",
          "description": "Display name of the custom employment type, as configured."
        }
      },
      "required": [
        "key",
        "label"
      ],
      "description": "The board's custom employment type for this job (for example `Casual`), or `null` when the job uses a built-in type only. A deleted custom type reads back as `null` and the job shows its built-in `employmentType`."
    },
    "remoteOption": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "on_site",
        "hybrid",
        "remote"
      ],
      "description": "Whether the role is on-site, hybrid, or fully remote. `null` only on older jobs saved without one; create requires it and `PATCH` cannot clear it."
    },
    "seniority": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "entry_level",
        "associate",
        "mid_level",
        "senior",
        "lead",
        "principal",
        "director",
        "executive"
      ],
      "description": "Seniority level of the role, or `null` if not specified."
    },
    "salaryMin": {
      "type": [
        "number",
        "null"
      ],
      "description": "Minimum salary in `salaryCurrency` units, or `null` if not specified."
    },
    "salaryMax": {
      "type": [
        "number",
        "null"
      ],
      "description": "Maximum salary in `salaryCurrency` units, or `null` if not specified."
    },
    "salaryCurrency": {
      "type": [
        "string",
        "null"
      ],
      "description": "Three-letter ISO 4217 currency code for the salary range, or `null` if no salary is specified."
    },
    "salaryTimeframe": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "per_year",
        "per_month",
        "per_week",
        "per_day",
        "per_hour"
      ],
      "description": "Period the salary range is quoted against, or `null` if no salary is specified."
    },
    "isFeatured": {
      "type": "boolean",
      "description": "Whether the job appears in featured slots on the public board."
    },
    "publishedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "Time at which the job was first published, or `null` if not yet published. ISO 8601 datetime."
    },
    "expiresAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "Time at which the job expires as an ISO 8601 datetime. `null` can appear when the expiry requirement does not apply, including for drafts and sponsored jobs; ordinary published jobs always have an expiry."
    },
    "createdAt": {
      "type": "string",
      "description": "Time at which the job was created. ISO 8601 datetime."
    },
    "updatedAt": {
      "type": "string",
      "description": "Time at which the job was last updated. ISO 8601 datetime."
    },
    "revision": {
      "type": "integer",
      "minimum": 0,
      "description": "Monotonic Job lifecycle revision used to reconcile webhook events. Legacy rows are 0 until the rollout backfill runs."
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Canonical skill slugs assigned to the job."
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Canonical category slugs assigned to the job."
    },
    "externalId": {
      "type": [
        "string",
        "null"
      ],
      "description": "External identifier supplied by the caller on create, used for deduplication via `GET /v1/jobs?externalId=...`. `null` when no external identifier was set."
    },
    "customFieldValues": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "type": "boolean"
          },
          {
            "type": "number"
          }
        ]
      },
      "description": "Board-defined custom-field values for this job, keyed by the field `key` (the definitions are published at `GET /v1/settings/job-form`). Each value is returned as stored: a string (`short_text` / `long_text` / a `single_select` option key), a string array (`multi_select` option keys), a boolean, or a number. Always an object: `{}` when the job has no custom-field values, never `null` or a missing field. Only real values are stored, so this never contains `null` or empty values."
    },
    "collectionValues": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "maxItems": 100
      },
      "description": "Operator-facing collection record IDs keyed by job collection field. Always an object; values are arrays even for single-select fields. Fields whose collection is archived are omitted."
    },
    "proposedCompany": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the proposed company."
        },
        "website": {
          "type": [
            "string",
            "null"
          ],
          "description": "Website URL of the proposed company, or `null` if the source gives none."
        }
      },
      "required": [
        "name",
        "website"
      ],
      "description": "Present only while the job has no company: the company the job's source names, which isn't on your board yet. Read-only. Publishing the job (`POST /jobs/{id}/publish`) adds this company to your board, or uses an existing company with the same website. To publish under a different company, set `companyId` first with `PATCH /jobs/{id}`. `null` when the job has a company."
    },
    "companyLocked": {
      "type": "boolean",
      "description": "`true` once an operator has changed the job's company (in the dashboard or with `companyId` on `PATCH /jobs/{id}`). A locked job keeps its company when the job's source refreshes or republishes it, even when the source names another company. Read-only."
    },
    "links": {
      "$ref": "#/$defs/AdminOnlyResourceLinks"
    }
  },
  "required": [
    "id",
    "object",
    "title",
    "slug",
    "status",
    "companyId",
    "employmentType",
    "customEmploymentType",
    "remoteOption",
    "seniority",
    "salaryMin",
    "salaryMax",
    "salaryCurrency",
    "salaryTimeframe",
    "isFeatured",
    "publishedAt",
    "expiresAt",
    "createdAt",
    "updatedAt",
    "revision",
    "skills",
    "categories",
    "externalId",
    "customFieldValues",
    "collectionValues",
    "proposedCompany",
    "companyLocked",
    "links"
  ],
  "$defs": {
    "AdminOnlyResourceLinks": {
      "type": "object",
      "properties": {
        "admin": {
          "type": "string",
          "format": "uri",
          "description": "URL inside the Cavuno app where the authenticated owner can manage this resource."
        }
      },
      "required": [
        "admin"
      ],
      "description": "Links related to this resource. List responses carry the operator URL; detail responses may also carry the public URL."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/cavuno-com-job-summary"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.