{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/thevicinityapp-com/json-schema/thevicinityapp-com-publish-intent-input-schema.json",
  "title": "PublishIntentInput",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/thevicinityapp-com-openapi.json#/components/schemas/PublishIntentInput",
  "type": "object",
  "required": [
    "kind",
    "title",
    "city"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "bonfire",
        "climbing_partner",
        "language_exchange",
        "lost_pet",
        "carpool",
        "yard_sale",
        "study_group",
        "dog_walk",
        "tool_borrow",
        "recommendation",
        "other"
      ]
    },
    "title": {
      "type": "string",
      "minLength": 4,
      "maxLength": 80
    },
    "body": {
      "type": "string",
      "maxLength": 500
    },
    "city": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9-]{1,40}$"
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 80
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "lat_precision_m": {
      "type": "integer",
      "minimum": 50,
      "maximum": 50000
    },
    "ttl_minutes": {
      "type": "integer",
      "minimum": 15,
      "maximum": 10080,
      "default": 240
    },
    "payment": {
      "type": "object",
      "description": "Optional. Inline payment proof for clients that cannot send the X-PAYMENT header (e.g. browser fetch without a service worker).",
      "additionalProperties": true
    }
  }
}