{
  "type": "object",
  "required": [
    "need"
  ],
  "properties": {
    "action": {
      "type": "string",
      "enum": [
        "buy",
        "source",
        "quote",
        "verify",
        "lease",
        "license",
        "hire",
        "retrieve",
        "convert",
        "other"
      ],
      "description": "What you want done"
    },
    "need": {
      "type": "string",
      "maxLength": 2000,
      "description": "The requirement in your own words"
    },
    "specifications": {
      "type": "object",
      "properties": {
        "entity_type": {
          "type": "string",
          "enum": [
            "LLC",
            "C_CORPORATION",
            "S_CORPORATION_ELECTION",
            "NONPROFIT_CORPORATION",
            "LIMITED_PARTNERSHIP",
            "PROFESSIONAL_ENTITY",
            "OTHER"
          ],
          "description": "The kind of entity",
          "x-facet": "specification"
        },
        "formation_state": {
          "type": "string",
          "maxLength": 60,
          "description": "State or jurisdiction of formation",
          "x-facet": "geography"
        },
        "registration_states": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 60
          },
          "maxItems": 55,
          "description": "Other states where the company must register (foreign qualification)",
          "x-facet": "geography"
        },
        "services_needed": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "FORMATION_FILING",
              "REGISTERED_AGENT",
              "EIN",
              "OPERATING_AGREEMENT",
              "ANNUAL_REPORT",
              "FOREIGN_QUALIFICATION",
              "REINSTATEMENT",
              "DISSOLUTION"
            ]
          },
          "maxItems": 10,
          "description": "Which filings or services you need",
          "x-facet": "specification"
        },
        "owners": {
          "type": "integer",
          "minimum": 1,
          "description": "Number of owners or members",
          "x-facet": "quantity"
        },
        "existing_entity": {
          "type": "string",
          "maxLength": 200,
          "description": "Name or state file number of an existing entity, if the work is on one",
          "x-facet": "identifier"
        },
        "filing_deadline": {
          "type": "string",
          "maxLength": 40,
          "description": "Date by which the filing or service must be complete (YYYY-MM-DD)",
          "x-facet": "timing"
        }
      }
    },
    "quantity": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "unit": {
          "type": "string"
        },
        "per": {
          "type": "string"
        }
      }
    },
    "timing": {
      "type": "object",
      "properties": {
        "earliest": {
          "type": "string"
        },
        "latest": {
          "type": "string"
        },
        "recurrence": {
          "type": "string"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "geography": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        }
      }
    },
    "budget": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number"
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217, default USD"
        },
        "per": {
          "type": "string",
          "description": "total, unit, month, year, load, ..."
        }
      }
    },
    "requested_fields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 30,
      "description": "Result fields you need"
    },
    "contact": {
      "type": "object",
      "description": "Optional; stored apart and deleted after 180 days",
      "properties": {
        "email": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "organization": {
          "type": "string"
        }
      }
    }
  }
}