{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "SemmetAngularApiResource",
  "title": "Semmet Angular API Resource Options Schema",
  "type": "object",
  "description": "Generates typed Angular HTTP access without imposing authentication, backend fields, or runtime dependencies.",
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "description": "Resource name, usually plural.",
      "$default": {
        "$source": "argv",
        "index": 0
      },
      "x-prompt": "What API resource would you like to generate?"
    },
    "project": {
      "type": "string",
      "description": "The Angular project that receives the resource.",
      "$default": {
        "$source": "projectName"
      }
    },
    "path": {
      "type": "string",
      "format": "path",
      "$default": {
        "$source": "workingDirectory"
      },
      "description": "Destination directory, relative to the workspace root.",
      "visible": false
    },
    "entity": {
      "type": "string",
      "description": "Singular entity name. Uses a conservative singular form of name by default."
    },
    "baseUrl": {
      "type": "string",
      "description": "Editable API base URL. Defaults to /api/<resource>."
    },
    "operations": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": ["list", "get", "create", "update", "delete"]
      },
      "default": ["list", "get"],
      "minItems": 1,
      "uniqueItems": true,
      "description": "HTTP operations to generate."
    },
    "models": {
      "type": "boolean",
      "default": true,
      "description": "Generate separate application model and transport DTO contracts."
    },
    "mapper": {
      "type": "boolean",
      "default": true,
      "description": "Generate pure DTO/model mapping functions."
    },
    "force": {
      "type": "boolean",
      "default": false,
      "description": "Overwrite files owned by this schematic."
    }
  },
  "required": ["name", "project"]
}
