---
updatedAt: 2026-09-02T17:35:26.000Z
agentTools:
  projectIndex: https://docs.go.v7labs.com/llms.txt
---

# Get a property

Returns details of a project's property

**Note:** `project_id` is the same as `agent_id`

# OpenAPI definition

````json
{
  "components": {
    "schemas": {
      "Projects.DynamicSelectPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Dynamic select property configuration (hub_select or subject_select)",
        "properties": {
          "default_option": {
            "$ref": "#/components/schemas/Projects.SelectDefaultOption"
          },
          "dynamic_options": {
            "description": "Whether options are dynamically loaded",
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "max_selected": {
            "$ref": "#/components/schemas/Projects.SelectMaxSelectedWithDefault"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/Projects.SelectOptionResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "max_selected",
          "options",
          "default_option",
          "dynamic_options"
        ],
        "title": "Projects.DynamicSelectPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DynamicSelectPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.PropertyToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for AI tool behavior",
        "properties": {
          "auto_llm_config": {
            "$ref": "#/components/schemas/Projects.AutoLlmToolConfig"
          },
          "code_config": {
            "$ref": "#/components/schemas/Projects.CodeToolConfig"
          },
          "dependencies": {
            "deprecated": true,
            "description": "Deprecated: use code_config.dependencies instead",
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "go_agent_v2_config": {
            "$ref": "#/components/schemas/Projects.GoAgentV2ToolConfig"
          },
          "input_mode": {
            "default": "primary_and_extracted",
            "description": "How to handle input data: primary_only (default), extracted_only, primary_and_extracted",
            "enum": [
              "primary_only",
              "extracted_only",
              "primary_and_extracted"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "knowledge_graph_config": {
            "$ref": "#/components/schemas/Projects.KnowledgeGraphToolConfig"
          },
          "llm_config": {
            "$ref": "#/components/schemas/Projects.LlmToolConfig"
          },
          "thinking_effort": {
            "deprecated": true,
            "description": "Deprecated: use llm_config.thinking_effort instead",
            "enum": [
              "disabled",
              "minimal",
              "low",
              "medium",
              "high",
              "xhigh",
              "max",
              "auto"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "upsert_entity_config": {
            "$ref": "#/components/schemas/Projects.UpsertEntityToolConfig"
          }
        },
        "title": "Projects.PropertyToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyToolConfig",
        "x-validate": null
      },
      "Projects.SelectMaxSelected": {
        "description": "Maximum number of options that can be selected on any field.\n0 for unlimited.\n",
        "minimum": 0,
        "nullable": true,
        "title": "Projects.SelectMaxSelected",
        "type": "integer",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SelectMaxSelected",
        "x-validate": null
      },
      "Projects.PDFPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "PDF property configuration",
        "properties": {
          "splitter": {
            "enum": [
              "none",
              "page_split"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "subproject_config": {
            "$ref": "#/components/schemas/Projects.SubProjectPropertyConfigResponse"
          }
        },
        "required": [
          "splitter",
          "subproject_config"
        ],
        "title": "Projects.PDFPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PDFPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.HubFilters": {
        "additionalProperties": false,
        "description": "Optional filters applied when resolving hub-based inputs.",
        "nullable": true,
        "properties": {
          "full_path_starts_with": {
            "default": [],
            "description": "Only include hub files whose full_path starts with one of these values.",
            "items": {
              "minLength": 1,
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.HubFilters",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.HubFilters",
        "x-validate": null
      },
      "Projects.PDFSplitMode": {
        "description": "For manual file_collection properties only.\nAllows to pick how uploaded PDF files should be split into collection items:\n- `:single_image` - split by pages and create a collection item for each page as image\n- `:semantic` - split into smaller PDFs of size of at most `pdf_split_size`, but with AI controlling actual split points for optimal content extraction\n- `:fixed_size` - split into smaller PDFs of size requested by `pdf_split_size`\n",
        "enum": [
          "semantic",
          "fixed_size",
          "single_image"
        ],
        "title": "Projects.PDFSplitMode",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PDFSplitMode",
        "x-validate": null
      },
      "Projects.DocumentPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Response for generated document property configuration",
        "properties": {
          "document_type": {
            "enum": [
              "docs",
              "slides",
              "charts"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "document_type"
        ],
        "title": "Projects.DocumentPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DocumentPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.PropertyRemoteOutputResponse": {
        "additionalProperties": false,
        "description": "A property remote output",
        "properties": {
          "active": {
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "project_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "property_id",
          "project_id",
          "active"
        ],
        "title": "Projects.PropertyRemoteOutputResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyRemoteOutputResponse",
        "x-validate": null
      },
      "Projects.EnabledSkill": {
        "additionalProperties": false,
        "description": "A skill enabled for a property with optional argument overrides",
        "properties": {
          "argument_overrides": {
            "default": [],
            "description": "Argument overrides for this skill",
            "items": {
              "$ref": "#/components/schemas/Projects.SkillArgumentOverride"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "skill_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "skill_id"
        ],
        "title": "Projects.EnabledSkill",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.EnabledSkill",
        "x-validate": null
      },
      "FieldSelectOptionValue": {
        "additionalProperties": false,
        "description": "Filter entities based on field's select value",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyAllOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfString"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_select_option_value"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldSelectOptionValue",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldSelectOptionValue",
        "x-validate": null
      },
      "PropertyAnyOfFieldStatus": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are in the values specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.ListEntities.FieldStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyAnyOfFieldStatus",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldStatus.PropertyAnyOf",
        "x-validate": null
      },
      "FieldTextValue": {
        "additionalProperties": false,
        "description": "Filter entities based on field's text value",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsAnyOf"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsNoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_text_value"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldTextValue",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldTextValue",
        "x-validate": null
      },
      "EntityId": {
        "additionalProperties": false,
        "description": "Filter entities based on entity id",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EntityFilters.EntityId.AnyOf"
              },
              {
                "$ref": "#/components/schemas/EntityFilters.EntityId.NoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "entity_id"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "EntityId",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityId",
        "x-validate": null
      },
      "Projects.SingleSelectPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Select property configuration",
        "properties": {
          "default_option": {
            "$ref": "#/components/schemas/Projects.SelectDefaultOption"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/Projects.SelectOptionResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "options",
          "default_option"
        ],
        "title": "Projects.SingleSelectPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SingleSelectPropertyConfigResponse",
        "x-validate": null
      },
      "EntityFilters.ParentEntityId.NoneOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have none of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.ParentEntityId.NoneOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.ParentEntityId.NoneOf",
        "x-validate": null
      },
      "Projects.MultiSelectPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Select property configuration",
        "properties": {
          "default_option": {
            "$ref": "#/components/schemas/Projects.SelectDefaultOption"
          },
          "max_selected": {
            "$ref": "#/components/schemas/Projects.SelectMaxSelected"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/Projects.SelectOptionResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "options",
          "max_selected",
          "default_option"
        ],
        "title": "Projects.MultiSelectPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.MultiSelectPropertyConfigResponse",
        "x-validate": null
      },
      "EntityFilters.ActivateViewId.NoneOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have none of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.ActivateViewId.NoneOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.ActivateViewId.NoneOf",
        "x-validate": null
      },
      "Projects.ViaReferencePropertyInput": {
        "additionalProperties": false,
        "description": "An input property in project referenced by a reference property (`via_property_id`).\n",
        "properties": {
          "entities_filter": {
            "$ref": "#/components/schemas/EntityFilters.NullableFilter"
          },
          "hub_filters": {
            "$ref": "#/components/schemas/Projects.HubFilters"
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "target": {
            "$ref": "#/components/schemas/Projects.PropertyInputTarget"
          },
          "target_filter": {
            "$ref": "#/components/schemas/Projects.PropertyInputTargetFilter"
          },
          "via_property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "property_id",
          "via_property_id"
        ],
        "title": "Projects.ViaReferencePropertyInput",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ViaReferencePropertyInput",
        "x-validate": null
      },
      "PropertyContainsNoneOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject contains the one specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_contains_none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyContainsNoneOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldTextValue.PropertyContainsNoneOf",
        "x-validate": null
      },
      "ViewAllOfFieldStatuses": {
        "additionalProperties": false,
        "description": "Matches items in a view based on whether all of their field statuses are in the filter values",
        "properties": {
          "name": {
            "enum": [
              "view_all_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.ListEntities.FieldStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "view_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "name",
          "view_id",
          "values"
        ],
        "title": "ViewAllOfFieldStatuses",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityStatus.ViewAllOf",
        "x-validate": null
      },
      "Projects.SubProjectPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Sub-project property configuration",
        "properties": {
          "child_project_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "primary_property_id": {
            "$ref": "#/components/schemas/Common.NullableUUID"
          }
        },
        "required": [
          "child_project_id",
          "primary_property_id"
        ],
        "title": "Projects.SubProjectPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SubProjectPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.ThinkingEffort": {
        "description": "Level of thinking effort for AI tools",
        "enum": [
          "disabled",
          "minimal",
          "low",
          "medium",
          "high",
          "xhigh",
          "max",
          "auto"
        ],
        "title": "Projects.ThinkingEffort",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ThinkingEffort",
        "x-validate": null
      },
      "Projects.PropertyInputResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Projects.DirectHubInput"
          },
          {
            "$ref": "#/components/schemas/Projects.DataStoreInputResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.DirectFieldInput"
          },
          {
            "$ref": "#/components/schemas/Projects.ViaReferencePropertyInput"
          },
          {
            "$ref": "#/components/schemas/Projects.RelatedPropertyInput"
          }
        ],
        "title": "Projects.PropertyInputResponse",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyInputResponse",
        "x-validate": null
      },
      "PropertyAnyOfString": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are in the values specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyAnyOfString",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldSelectOptionValue.PropertyAnyOf",
        "x-validate": null
      },
      "Projects.DynamicArgumentOverrideFixed": {
        "additionalProperties": false,
        "description": "Override for a dynamic skill argument with fixed value",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "dynamic"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "description": "Any type allowed for dynamic fixed values",
            "x-struct": null,
            "x-validate": null
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_label": {
            "description": "Optional label for presentation/identification purposes. This is not part of the value in any way.",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value_type": {
            "enum": [
              "fixed"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.DynamicArgumentOverrideFixed",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DynamicArgumentOverrideFixed",
        "x-validate": null
      },
      "EntityFilters.GroupFilter": {
        "additionalProperties": false,
        "description": "Groups `simple` or `group filters` together with `or`, `and` operators. You have to specify at least one `filter`.",
        "properties": {
          "conjunction": {
            "$ref": "#/components/schemas/EntityFilters.Conjunction"
          },
          "filters": {
            "description": "List of `simple` or `group` filters",
            "items": {
              "$ref": "#/components/schemas/EntityFilters.Filter"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "conjunction",
          "filters"
        ],
        "title": "EntityFilters.GroupFilter",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.GroupFilter",
        "x-validate": null
      },
      "Projects.DataStoreInputResponse": {
        "additionalProperties": false,
        "description": "A workspace Data Store this property uses, and the access the property is granted over it. Data Store contents are an untracked external dependency: mutations do not change the calculation hash or automatically recalculate dependent fields. Request a new calculation when fresh Data Store data is required.",
        "properties": {
          "data_store_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "mode": {
            "description": "Whether the property may only read the store, or also write to it.",
            "enum": [
              "read_only",
              "read_write"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "data_store_id",
          "mode"
        ],
        "title": "Projects.DataStoreInputResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DataStoreInputResponse",
        "x-validate": null
      },
      "FieldNumberValue": {
        "additionalProperties": false,
        "description": "Filter entities based on field's number value.\nFor all matches except `property_any_of` and `property_none_of` matchers,\nthe value can contain a unit which will be used to pre-filter values, i.e.\n`100 EUR` will find all entities with a number value greater/equal/less than `100`\nbut only for values with unit `EUR`.\n",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOf"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOf"
              },
              {
                "$ref": "#/components/schemas/PropertyGreaterThan"
              },
              {
                "$ref": "#/components/schemas/PropertyLessThan"
              },
              {
                "$ref": "#/components/schemas/PropertyGreaterThanOrEqualTo"
              },
              {
                "$ref": "#/components/schemas/PropertyLessThanOrEqualTo"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_number_value"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldNumberValue",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldNumberValue",
        "x-validate": null
      },
      "Common.APIErrorDetails": {
        "description": "Additional structured error context. Shape varies by error code.\n\n- For conflict errors: contains a `conflicts` array with conflicting resources\n- For other errors: may contain arbitrary error-specific context",
        "nullable": true,
        "oneOf": [
          {
            "$ref": "#/components/schemas/Common.ConflictErrorDetails"
          },
          {
            "additionalProperties": true,
            "description": "Generic error details for non-conflict errors",
            "type": "object",
            "x-struct": null,
            "x-validate": null
          }
        ],
        "title": "Common.APIErrorDetails",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Common.APIErrorDetails",
        "x-validate": null
      },
      "Projects.FileListArgumentOverrideReference": {
        "additionalProperties": false,
        "description": "Override for a file list skill argument with input reference",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "file_list"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "$ref": "#/components/schemas/Projects.InputReference"
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "input_reference"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.FileListArgumentOverrideReference",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.FileListArgumentOverrideReference",
        "x-validate": null
      },
      "Projects.FileCollectionPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "File collection property configuration",
        "properties": {
          "max_rows": {
            "default": 0,
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          },
          "pdf_split_mode": {
            "$ref": "#/components/schemas/Projects.PDFSplitMode"
          },
          "pdf_split_size": {
            "default": 1,
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          },
          "properties": {
            "items": {
              "$ref": "#/components/schemas/Projects.CollectionPropertyResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "subproject_config": {
            "$ref": "#/components/schemas/Projects.SubProjectPropertyConfigResponse"
          }
        },
        "required": [
          "subproject_config",
          "properties",
          "max_rows",
          "pdf_split_mode",
          "pdf_split_size"
        ],
        "title": "Projects.FileCollectionPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.FileCollectionPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.PropertyResponse": {
        "additionalProperties": false,
        "description": "A property",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/Projects.PropertyConfigResponse"
          },
          "description": {
            "description": "Property description. Can contain input references in the format `@<input.reference_as>` or hub references in the format `@<hub.reference_as>`.\n\nThe `reference_as` field uniquely identifies an input or hub and follows these patterns:\n\n**Input References:**\n- `P<property_id>` - for value inputs from properties (target: value)\n- `P<property_id>:E<entity_id>` - for value inputs from library properties\n- `P<property_id>:T<input_target>` - for targeted inputs (e.g., metadata, sub-path extraction)\n- `P<property_id>:T<input_target>[key=val,...]` - for targeted inputs with dynamic filters\n- `P<property_id>:E<entity_id>:T<input_target>` - for targeted inputs from library properties\n\n**Sub-path Targets (for bundle properties):**\n- `:Tvalue.text` - extracts the text portion from a bundle as a text input\n- `:Tvalue.files` - extracts all files from a bundle as file inputs\n- `:Tvalue.files[category=output]` - extracts files filtered by category\n- `:Tvalue.files[filename=report.pdf]` - extracts files filtered by filename\n- `:Tvalue.files[category=output,filename=report.pdf]` - combined filter\n\n**Metadata Targets:**\n- `:Ttool_metadata.motivation` - extracts tool motivation metadata\n- `:Ttool_metadata.confidence` - extracts tool confidence metadata\n\n**Hub References:**\n- `H<hub_id>` - for direct hub references (static hubs, i.e. hubs not from hub select properties)\n- For hubs from hub select properties, use the property's `reference_as` (e.g., `P<property_id>`)\n\nExamples:\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f>` - reference to property value\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:E01i9w5n4-0g3b-5c6d-9f8e-2b3c4d5e6f7g>` - reference to library property value\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:Ttool_metadata.motivation>` - reference to property metadata\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:Tvalue.text>` - reference to bundle text extraction\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:Tvalue.files[category=output]>` - reference to filtered bundle files\n- `@<H01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f>` - direct reference to a static hub by its ID\n",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "effective_tool": {
            "deprecated": true,
            "description": "Deprecated: always set to `tool`",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "enabled_mcp_tools": {
            "default": [],
            "description": "List of MCP tools enabled for this property",
            "items": {
              "$ref": "#/components/schemas/Projects.EnabledMcpTool"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "enabled_skills": {
            "default": [],
            "description": "List of skills enabled for this property (only available for non-manual properties)",
            "items": {
              "$ref": "#/components/schemas/Projects.EnabledSkill"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "group": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "hash": {
            "nullable": false,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "incomplete_collection_input_rows_behaviour": {
            "enum": [
              "never",
              "drop_on_any_errors",
              "drop_any_incomplete",
              "drop_on_any_entity_errors"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "input_ids": {
            "deprecated": true,
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/Projects.PropertyInputResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "is_grounded": {
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "owner": {
            "enum": [
              "user",
              "system"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "parent_project_id": {
            "$ref": "#/components/schemas/Common.NullableUUID"
          },
          "parent_property_id": {
            "$ref": "#/components/schemas/Common.NullableUUID"
          },
          "remote_outputs": {
            "description": "List of all outputs for that property that are not located in current project.\n`active` field is set to true if that property fields will be recalculated or\nmarked as stale if fields of this property change. Generally, this should be almost\nalways the case, but sometimes you may see `active` set to false if property has\ntoo many dependencies.\n",
            "items": {
              "$ref": "#/components/schemas/Projects.PropertyRemoteOutputResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "restore_warnings": {
            "description": "Present only on successful restore when stored references to removed properties were omitted.",
            "items": {
              "$ref": "#/components/schemas/Projects.PropertyConfigurationRestoreWarning"
            },
            "nullable": true,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "reviewable": {
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "skip_behaviour": {
            "enum": [
              "never",
              "on_unsupported_input",
              "on_all_unsupported_inputs"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "slug": {
            "pattern": "^[a-z_-][a-z0-9_-]*$",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "supported_indices": {
            "items": {
              "enum": [
                "semantic"
              ],
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "tool": {
            "$ref": "#/components/schemas/Projects.Common.PropertyTool"
          },
          "tool_config": {
            "$ref": "#/components/schemas/Projects.PropertyToolConfig"
          },
          "tool_version": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "type": {
            "$ref": "#/components/schemas/Projects.Common.PropertyType"
          },
          "visible_in_entity_sidebar": {
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "id",
          "name",
          "slug",
          "description",
          "type",
          "tool",
          "is_grounded",
          "input_ids",
          "inputs",
          "owner",
          "hash",
          "skip_behaviour",
          "incomplete_collection_input_rows_behaviour",
          "tool_config",
          "visible_in_entity_sidebar",
          "reviewable",
          "remote_outputs",
          "enabled_skills",
          "enabled_mcp_tools"
        ],
        "title": "Projects.PropertyResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyResponse",
        "x-validate": null
      },
      "Projects.PropertyInputTargetFilter": {
        "additionalProperties": false,
        "description": "Dynamic filter for the input target. Only applicable when target is value.files. Allowed keys: category (string), filename (string).",
        "nullable": true,
        "properties": {
          "category": {
            "description": "Filter files by category",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "filename": {
            "description": "Filter files by filename",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.PropertyInputTargetFilter",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyInputTargetFilter",
        "x-validate": null
      },
      "FieldStatus": {
        "additionalProperties": false,
        "description": "Filter entities based on a fields status",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfFieldStatus"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfFieldStatus"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_status"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldStatus",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldStatus",
        "x-validate": null
      },
      "Projects.ReferenceEntityLimit": {
        "description": "Maximum number of matched entities to reference. 0 value will use default system limit (1000).",
        "maximum": 1000,
        "minimum": 0,
        "title": "Projects.ReferenceEntityLimit",
        "type": "integer",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ReferenceEntityLimit",
        "x-validate": null
      },
      "Projects.InputReference": {
        "description": "Input reference that can be used in property descriptions and skill argument overrides.\n\nCan contain input references in the format `@<input.reference_as>` or hub references in the format `@<hub.reference_as>`.\n\nThe `reference_as` field uniquely identifies an input or hub and follows these patterns:\n\n**Input References:**\n- `P<property_id>` - for value inputs from properties (target: value)\n- `P<property_id>:E<entity_id>` - for value inputs from library properties\n- `P<property_id>:T<input_target>` - for targeted inputs (e.g., metadata, sub-path extraction)\n- `P<property_id>:T<input_target>[key=val,...]` - for targeted inputs with dynamic filters\n- `P<property_id>:E<entity_id>:T<input_target>` - for targeted inputs from library properties\n\n**Sub-path Targets (for bundle properties):**\n- `:Tvalue.text` - extracts the text portion from a bundle as a text input\n- `:Tvalue.files` - extracts all files from a bundle as file inputs\n- `:Tvalue.files[category=output]` - extracts files filtered by category\n- `:Tvalue.files[filename=report.pdf]` - extracts files filtered by filename\n- `:Tvalue.files[category=output,filename=report.pdf]` - combined filter\n\n**Metadata Targets:**\n- `:Ttool_metadata.motivation` - extracts tool motivation metadata\n- `:Ttool_metadata.confidence` - extracts tool confidence metadata\n\n**Hub References:**\n- `H<hub_id>` - for direct hub references (static hubs, i.e. hubs not from hub select properties)\n- For hubs from hub select properties, use the property's `reference_as` (e.g., `P<property_id>`)\n\nExamples:\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f>` - reference to property value\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:E01i9w5n4-0g3b-5c6d-9f8e-2b3c4d5e6f7g>` - reference to library property value\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:Ttool_metadata.motivation>` - reference to property metadata\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:Tvalue.text>` - reference to bundle text extraction\n- `@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f:Tvalue.files[category=output]>` - reference to filtered bundle files\n- `@<H01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f>` - direct reference to a static hub by its ID\n",
        "example": "@<P01h8v4k3-9f2a-4b5c-8e7d-1a2b3c4d5e6f>",
        "pattern": "^@<[[:alnum:]_.:\\-\\[\\]=,]+>$",
        "title": "Projects.InputReference",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.InputReference",
        "x-validate": null
      },
      "EntityFilters.ActivateViewId.AnyOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have any of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.ActivateViewId.AnyOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.ActivateViewId.AnyOf",
        "x-validate": null
      },
      "Projects.CollectionPropertyResponse": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "type": {
            "enum": [
              "text",
              "json",
              "number"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "Projects.CollectionPropertyResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.CollectionPropertyResponse",
        "x-validate": null
      },
      "Projects.ClientCertConfigSchema": {
        "additionalProperties": false,
        "description": "Client certificate configuration for mTLS connections",
        "properties": {
          "cert_secret_name": {
            "description": "Secret name for the certificate PEM",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "domain": {
            "description": "Target domain for mTLS",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "key_secret_name": {
            "description": "Secret name for the private key PEM",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "passphrase_secret_name": {
            "description": "Secret name for the private key passphrase",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.ClientCertConfigSchema",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ClientCertConfigSchema",
        "x-validate": null
      },
      "PropertyNoneOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the none of the values in the filter exist in the subject",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyNoneOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldFileName.PropertyNoneOf",
        "x-validate": null
      },
      "EntityFilters.EntityReviewStatus.NoneOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have none of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.Common.FieldReviewStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.EntityReviewStatus.NoneOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityReviewStatus.NoneOf",
        "x-validate": null
      },
      "PropertyLessThan": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are less than the one specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "property_less_than"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "value"
        ],
        "title": "PropertyLessThan",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldNumberValue.PropertyLessThan",
        "x-validate": null
      },
      "ActivateViewId": {
        "additionalProperties": false,
        "description": "Filter entities based on active view id",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EntityFilters.ActivateViewId.AnyOf"
              },
              {
                "$ref": "#/components/schemas/EntityFilters.ActivateViewId.NoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "active_view_id"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "ActivateViewId",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.ActivateViewId",
        "x-validate": null
      },
      "Projects.ArgumentOverrideValueFormat": {
        "default": "default",
        "description": "Format for the value. Use :pipedream_raw to wrap the value in a PipedreamRawValue structure for Pipedream skills.",
        "enum": [
          "default",
          "pipedream_raw"
        ],
        "title": "Projects.ArgumentOverrideValueFormat",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ArgumentOverrideValueFormat",
        "x-validate": null
      },
      "PropertyNoneOfFieldStatus": {
        "additionalProperties": false,
        "description": "Matches items based on whether the none of the values in the filter exist in the subject",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.ListEntities.FieldStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyNoneOfFieldStatus",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldStatus.PropertyNoneOf",
        "x-validate": null
      },
      "EntityFilters.NullableOrEmptyObject": {
        "additionalProperties": false,
        "nullable": true,
        "properties": {},
        "title": "EntityFilters.NullableOrEmptyObject",
        "type": "object",
        "x-struct": null,
        "x-validate": null
      },
      "EntityStatus": {
        "additionalProperties": false,
        "description": "Filter entities based on their fields status",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ViewAnyOfFieldStatuses"
              },
              {
                "$ref": "#/components/schemas/ViewNoneOfFieldStatuses"
              },
              {
                "$ref": "#/components/schemas/ViewAllOfFieldStatuses"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "entity_status"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "EntityStatus",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityStatus",
        "x-validate": null
      },
      "FieldNumberUnit": {
        "additionalProperties": false,
        "description": "Filter entities based on field's number unit",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfString"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_number_unit"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldNumberUnit",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldNumberUnit",
        "x-validate": null
      },
      "Projects.TriggerPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Response for trigger property configuration (system-created reference subtype)",
        "properties": {
          "entity_limit": {
            "minimum": 0,
            "type": "integer",
            "x-struct": null,
            "x-validate": null
          },
          "inbound_trigger_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "project_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "inbound_trigger_id",
          "entity_limit",
          "project_id"
        ],
        "title": "Projects.TriggerPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.TriggerPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.GoAgentV2ToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for go_agent_v2",
        "properties": {
          "model": {
            "description": "Concrete model for go_agent_v2. Both current and legacy frontend selections are accepted during migration.",
            "enum": [
              "claude_5_5_opus",
              "claude_5_opus",
              "claude_5_sonnet",
              "claude_4_5_haiku",
              "gemini_3_5_flash_lite",
              "gpt_5_6_sol",
              "gemini_3_1_pro",
              "claude_4_6_sonnet",
              "gpt_5_6_terra",
              "gemini_3_8_flash",
              "gpt_5_6_luna",
              "gpt_6_astra",
              "gpt_6_sol",
              "gpt_6_1_sol",
              "gpt_6_luna",
              "gpt_5_5",
              "gpt_5_4_mini",
              "claude_4_8_opus",
              "gemini_3_flash"
            ],
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.GoAgentV2ToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.GoAgentV2ToolConfig",
        "x-validate": null
      },
      "Projects.DirectFieldInput": {
        "additionalProperties": false,
        "description": "A direct field input. Refers to specific field in chosen entity.",
        "properties": {
          "entity_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "target": {
            "$ref": "#/components/schemas/Projects.PropertyInputTarget"
          },
          "target_filter": {
            "$ref": "#/components/schemas/Projects.PropertyInputTargetFilter"
          }
        },
        "required": [
          "property_id",
          "entity_id"
        ],
        "title": "Projects.DirectFieldInput",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DirectFieldInput",
        "x-validate": null
      },
      "EntityFilters.EntityId.NoneOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have none of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.EntityId.NoneOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityId.NoneOf",
        "x-validate": null
      },
      "EntityFilters.EntityId.AnyOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have any of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.EntityId.AnyOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityId.AnyOf",
        "x-validate": null
      },
      "Projects.JsonPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "JSON property configuration with optional JSON Schema constraint",
        "properties": {
          "json_schema": {
            "description": "A JSON Schema object constraining the output, or null for unrestricted",
            "nullable": true,
            "type": "object",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "json_schema"
        ],
        "title": "Projects.JsonPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.JsonPropertyConfigResponse",
        "x-validate": null
      },
      "Common.APIError": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "example": "bad_request",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "details": {
            "$ref": "#/components/schemas/Common.APIErrorDetails"
          },
          "message": {
            "example": "Bad Request",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Common.APIError",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Common.APIError",
        "x-validate": null
      },
      "Projects.PropertyConfigurationRestoreWarning": {
        "additionalProperties": false,
        "description": "A warning surfaced when a configuration restore could not replay every stored reference.\n\n`code` discriminates the `data` payload:\n  * `missing_input_property` — an input property was removed from the project after the\n    snapshot was recorded. `data.property_id` is the omitted input.\n  * `missing_tool_config_property` — a `tool_config.upsert_entity_config` property\n    reference no longer exists. `data` carries `property_id` and `field`.\n",
        "properties": {
          "code": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "data": {
            "type": "object",
            "x-struct": null,
            "x-validate": null
          },
          "message": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "Projects.PropertyConfigurationRestoreWarning",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyConfigurationRestoreWarning",
        "x-validate": null
      },
      "PropertyNoneOfString": {
        "additionalProperties": false,
        "description": "Matches items based on whether the none of the values in the filter exist in the subject",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyNoneOfString",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldSelectOptionValue.PropertyNoneOf",
        "x-validate": null
      },
      "PropertyContainsAnyOfString": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject contains the one specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_contains_any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyContainsAnyOfString",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldMetadataFieldName.PropertyContainsAnyOf",
        "x-validate": null
      },
      "PropertyAnyOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are in the values specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyAnyOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldFileName.PropertyAnyOf",
        "x-validate": null
      },
      "Common.ConflictErrorDetails": {
        "additionalProperties": false,
        "description": "Details for conflict errors",
        "properties": {
          "conflicts": {
            "description": "List of conflicting resources",
            "items": {
              "additionalProperties": true,
              "type": "object",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "conflicts"
        ],
        "title": "Common.ConflictErrorDetails",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Common.ConflictErrorDetails",
        "x-validate": null
      },
      "Projects.EnabledMcpTool": {
        "additionalProperties": false,
        "description": "An MCP tool enabled for a property. Identifies a specific tool exposed by a\nuser-configured MCP integration.\n\n`template_slug` (when present) and `server_url` are portable matching keys for\ncloning/exporting properties across workspaces — `template_slug` is the\npreferred match (template-based connectors like \"linear\", \"notion\"), with\n`server_url` as the fallback for custom user-provided MCPs.\n\n`mcp_integration_id` is nullable: cloning carries every tool from the template\neven when the new owner has no matching integration in the target workspace\nyet. Direct property edits still require it to be set; the\n`mcp_compatibility` endpoint surfaces unresolved tools to the user.\n",
        "properties": {
          "mcp_integration_id": {
            "description": "ID of the user's MCP integration instance, or `null` if not yet resolved (e.g. just cloned)",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "run_as_user_id": {
            "description": "ID of the user whose credentials are used at runtime for this tool. Stamped from the integration owner.",
            "format": "uuid",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "server_url": {
            "description": "Universal identifier for the MCP server",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "template_slug": {
            "description": "Template slug when the integration came from a known MCP template (e.g. \"linear\", \"notion\"); nil for custom user-provided MCPs",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "tool_name": {
            "description": "Name of the specific tool exposed by the integration",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "tool_name",
          "server_url"
        ],
        "title": "Projects.EnabledMcpTool",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.EnabledMcpTool",
        "x-validate": null
      },
      "Projects.Common.PropertyType": {
        "enum": [
          "text",
          "file",
          "json",
          "collection",
          "url",
          "reference",
          "number",
          "datetime",
          "bundle",
          "single_select",
          "multi_select",
          "user_select",
          "hub_select",
          "subject_select",
          "data",
          "document",
          "slideshow",
          "file_action",
          "json_action",
          "trigger",
          "file_collection",
          "timeseries_collection"
        ],
        "title": "Projects.Common.PropertyType",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.Common.PropertyType",
        "x-validate": null
      },
      "FieldMetadataFieldName": {
        "additionalProperties": false,
        "description": "Filter entities based on field's custom field name",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsNoneOfString"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_metadata_field_name"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldMetadataFieldName",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldMetadataFieldName",
        "x-validate": null
      },
      "EntityFilters.ParentEntityId.AnyOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have any of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Common.UUID"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.ParentEntityId.AnyOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.ParentEntityId.AnyOf",
        "x-validate": null
      },
      "Projects.FileArgumentOverrideReference": {
        "additionalProperties": false,
        "description": "Override for a file skill argument with input reference",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "file"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "$ref": "#/components/schemas/Projects.InputReference"
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "input_reference"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.FileArgumentOverrideReference",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.FileArgumentOverrideReference",
        "x-validate": null
      },
      "Projects.KnowledgeGraphToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for knowledge-graph-backed tools (e.g. kg_document_extraction)",
        "properties": {
          "knowledge_graph_id": {
            "description": "Knowledge graph this property belongs to",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.KnowledgeGraphToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.KnowledgeGraphToolConfig",
        "x-validate": null
      },
      "PropertyGreaterThan": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are greater than the one specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "property_greater_than"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "value"
        ],
        "title": "PropertyGreaterThan",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldNumberValue.PropertyGreaterThan",
        "x-validate": null
      },
      "EntityFilters.EntityReviewStatus.AnyOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject have any of the values specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.Common.FieldReviewStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "values"
        ],
        "title": "EntityFilters.EntityReviewStatus.AnyOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityReviewStatus.AnyOf",
        "x-validate": null
      },
      "ParentEntityId": {
        "additionalProperties": false,
        "description": "Filter entities based on parent entity id",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EntityFilters.ParentEntityId.AnyOf"
              },
              {
                "$ref": "#/components/schemas/EntityFilters.ParentEntityId.NoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "parent_entity_id"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "ParentEntityId",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.ParentEntityId",
        "x-validate": null
      },
      "EntityReviewStatus": {
        "additionalProperties": false,
        "description": "Filter entities based on review status of their fields",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EntityFilters.EntityReviewStatus.AnyOf"
              },
              {
                "$ref": "#/components/schemas/EntityFilters.EntityReviewStatus.NoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "entity_review_status"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "EntityReviewStatus",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityReviewStatus",
        "x-validate": null
      },
      "Projects.LlmToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for LLM tools",
        "properties": {
          "stream_progress_updates": {
            "description": "Whether to stream progress updates during execution",
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "thinking_effort": {
            "$ref": "#/components/schemas/Projects.ThinkingEffort"
          }
        },
        "title": "Projects.LlmToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.LlmToolConfig",
        "x-validate": null
      },
      "TextValue": {
        "additionalProperties": false,
        "deprecated": true,
        "description": "DEPRECATED: Use FieldTextValue instead",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsAnyOf"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsNoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "text_value"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "TextValue",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.TextValue",
        "x-validate": null
      },
      "Projects.IntegrationArgumentOverrideTenant": {
        "additionalProperties": false,
        "description": "Override pinning a native integration to a stable Entra tenant GUID. Resolved to a concrete connection at calculation time.",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "integration"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "description": "Entra tenant GUID",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_label": {
            "description": "Optional human-friendly tenant name for presentation purposes.",
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value_type": {
            "enum": [
              "integration_tenant"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.IntegrationArgumentOverrideTenant",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.IntegrationArgumentOverrideTenant",
        "x-validate": null
      },
      "Id": {
        "additionalProperties": false,
        "deprecated": true,
        "description": "DEPRECATED: Use EntityId instead",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EntityFilters.EntityId.AnyOf"
              },
              {
                "$ref": "#/components/schemas/EntityFilters.EntityId.NoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "id"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "Id",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.Id",
        "x-validate": null
      },
      "ViewNoneOfFieldStatuses": {
        "additionalProperties": false,
        "description": "Matches items in a view based on whether none of their field statuses are in the filter values",
        "properties": {
          "name": {
            "enum": [
              "view_none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.ListEntities.FieldStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "view_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "name",
          "view_id",
          "values"
        ],
        "title": "ViewNoneOfFieldStatuses",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityStatus.ViewNoneOf",
        "x-validate": null
      },
      "Projects.CollectionPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Collection property configuration",
        "properties": {
          "properties": {
            "items": {
              "$ref": "#/components/schemas/Projects.CollectionPropertyResponse"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "subproject_config": {
            "$ref": "#/components/schemas/Projects.SubProjectPropertyConfigResponse"
          }
        },
        "required": [
          "subproject_config",
          "properties"
        ],
        "title": "Projects.CollectionPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.CollectionPropertyConfigResponse",
        "x-validate": null
      },
      "Status": {
        "additionalProperties": false,
        "deprecated": true,
        "description": "DEPRECATED: Use FieldStatus instead",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfFieldStatus"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfFieldStatus"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "status"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "Status",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.Status",
        "x-validate": null
      },
      "Projects.Common.PropertyTool": {
        "enum": [
          "manual",
          "dall_e_3",
          "imagen",
          "whisper",
          "brave_search",
          "exa_search",
          "jev",
          "apollo_search",
          "perplexity",
          "perplexity_search",
          "summary",
          "auto_llm",
          "kg_document_extraction",
          "ocr",
          "pdf_convert",
          "ask_pdf",
          "run_mcp_tool",
          "heic_convert",
          "askexcel",
          "askexcel_context",
          "legacy_excel_compat",
          "excel_formula_recalc",
          "file_split",
          "knowledge_graph_ledger_writer",
          "embedding",
          "reference_filter",
          "json_template",
          "url_scrape",
          "http",
          "code",
          "sandbox_agent",
          "agent_file_op",
          "go_agent_v2",
          "sandbox_chat",
          "subject_resolution",
          "upsert_entity",
          "aws_ocr",
          "gpt_4_1",
          "gpt_4_1_azure",
          "gpt_4_1_mini",
          "gpt_4_1_mini_azure",
          "gpt_4_1_nano",
          "gpt_4_1_nano_azure",
          "gpt_5",
          "gpt_5_mini",
          "gpt_5_nano",
          "gpt_5_1",
          "gpt_5_1_azure",
          "gpt_5_2",
          "gpt_5_2_azure",
          "gpt_5_4",
          "gpt_5_4_azure",
          "gpt_5_4_mini",
          "gpt_5_4_mini_azure",
          "gpt_5_5",
          "gpt_5_5_azure",
          "gpt_5_5_pro",
          "gpt_5_6_sol",
          "gpt_5_6_sol_azure",
          "gpt_5_6_terra",
          "gpt_5_6_terra_azure",
          "gpt_5_6_luna",
          "gpt_5_6_luna_azure",
          "gpt_6_astra",
          "gpt_6_astra_azure",
          "gpt_6_sol",
          "gpt_6_sol_azure",
          "gpt_6_1_sol",
          "gpt_6_1_sol_azure",
          "gpt_6_luna",
          "gpt_6_luna_azure",
          "gpt_5_azure",
          "gpt_5_mini_azure",
          "gpt_5_nano_azure",
          "gpt_4",
          "web_search",
          "gpt_4o",
          "gpt_4o_azure",
          "gpt_4o_mini",
          "gpt_4o_mini_azure",
          "o3",
          "o3_deep_research",
          "o3_mini",
          "o4_mini",
          "o4_mini_azure",
          "o4_mini_deep_research",
          "gpt_3_5",
          "gemini_2_5_pro",
          "gemini_2_5_flash",
          "gemini_2_5_flash_lite",
          "gemini_3_flash",
          "gemini_3_1_pro",
          "gemini_3_1_flash_lite",
          "gemini_3_5_flash",
          "gemini_3_5_flash_lite",
          "gemini_3_6_flash",
          "gemini_3_7_flash",
          "gemini_3_8_flash",
          "gemini_2_5_flash_image",
          "gemini_3_pro_image",
          "gemini_3_1_flash_image",
          "claude_4_sonnet",
          "claude_4_sonnet_vertex_ai",
          "claude_4_sonnet_aws_bedrock",
          "claude_4_opus",
          "claude_4_opus_vertex_ai",
          "claude_4_1_opus_aws_bedrock",
          "claude_4_5_opus",
          "claude_4_5_opus_vertex_ai",
          "claude_4_5_opus_aws_bedrock",
          "claude_4_6_opus",
          "claude_4_6_opus_vertex_ai",
          "claude_4_6_opus_aws_bedrock",
          "claude_4_7_opus",
          "claude_4_7_opus_vertex_ai",
          "claude_4_7_opus_aws_bedrock",
          "claude_4_8_opus",
          "claude_4_8_opus_vertex_ai",
          "claude_4_8_opus_aws_bedrock",
          "claude_5_opus",
          "claude_5_opus_vertex_ai",
          "claude_5_opus_aws_bedrock",
          "claude_5_5_opus",
          "claude_5_5_opus_vertex_ai",
          "claude_5_5_opus_aws_bedrock",
          "claude_4_5_haiku",
          "claude_4_5_haiku_vertex_ai",
          "claude_4_5_haiku_aws_bedrock",
          "claude_4_6_sonnet",
          "claude_4_6_sonnet_vertex_ai",
          "claude_4_6_sonnet_aws_bedrock",
          "claude_5_sonnet",
          "claude_5_sonnet_vertex_ai",
          "claude_5_sonnet_aws_bedrock",
          "claude_4_5_sonnet",
          "claude_4_5_sonnet_vertex_ai",
          "claude_4_5_sonnet_aws_bedrock",
          "qwen3_235b",
          "qwen3_next_80b_thinking",
          "deepseek_v3_2",
          "glm_5_2",
          "deepseek_v4_flash",
          "qwen_3_7_plus",
          "kimi_k3",
          "hub_search_py",
          "slides_py",
          "slides_preprocessing_py",
          "slides_generation_py",
          "auto_property_py",
          "agent_builder_py",
          "agent_fixer_py",
          "html_to_image",
          "skill_runner",
          "knowledge_graph_ledger_relationship_writer",
          "semantic_splitter",
          "semantic_indexer",
          "xlsx_to_xml",
          "claude_3_5_sonnet",
          "claude_3_5_sonnet_vertex_ai",
          "claude_3_5_sonnet_aws_bedrock",
          "gemini_pro",
          "gemini_pro_vision",
          "gemini_3_pro",
          "claude_3_opus",
          "claude_3_opus_vertex_ai",
          "claude_3_sonnet",
          "claude_3_sonnet_vertex_ai",
          "claude_3_haiku",
          "claude_3_haiku_vertex_ai",
          "o1",
          "o1_mini",
          "gemini_2_5_flash_thinking_genai",
          "gemini_2_5_flash_thinking",
          "claude_3_7_thinking",
          "claude_3_7_thinking_vertex_ai",
          "claude_4_sonnet_thinking",
          "claude_4_sonnet_thinking_vertex_ai",
          "slides_converter_import_py",
          "slides_converter_export_py",
          "gemini_2_5_pro_genai",
          "gemini_2_5_flash_genai",
          "gemini_2_5_flash_lite_genai",
          "gemini_2_0_flash_lite_genai",
          "gemini_2_0_flash",
          "gemini_2_0_flash_lite",
          "gpt_3_5_azure",
          "claude_3_5_haiku",
          "claude_3_5_haiku_aws_bedrock",
          "claude_3_5_haiku_vertex_ai",
          "claude_3_7_sonnet",
          "claude_3_7_sonnet_aws_bedrock",
          "claude_3_7_sonnet_vertex_ai",
          "gemini_1_5_flash",
          "gemini_1_5_pro"
        ],
        "title": "Projects.Common.PropertyTool",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.Common.PropertyTool",
        "x-validate": null
      },
      "EntityFilters.SimpleFilter": {
        "description": "Simple filter specifies rule that subject has to fulfill. Each simple filter consist of `subject` and `matcher`. Subject is name of property you want to filter on. For example if you want to filter by entity id you should specify {subject: 'entity_id'}. Next you have to specify matcher which defines how you would like to filer. If you are interested in any of entities within array of entity ids you should specify: {matcher: {name: 'any_of', values: [list of entity ids]}}",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ActivateViewId"
          },
          {
            "$ref": "#/components/schemas/EntityId"
          },
          {
            "$ref": "#/components/schemas/EntityStatus"
          },
          {
            "$ref": "#/components/schemas/FieldSelectOptionValue"
          },
          {
            "$ref": "#/components/schemas/FieldTextValue"
          },
          {
            "$ref": "#/components/schemas/ParentEntityId"
          },
          {
            "$ref": "#/components/schemas/EntityReviewStatus"
          },
          {
            "$ref": "#/components/schemas/FieldStatus"
          },
          {
            "$ref": "#/components/schemas/FieldFileName"
          },
          {
            "$ref": "#/components/schemas/FieldMetadataFieldName"
          },
          {
            "$ref": "#/components/schemas/FieldNumberValue"
          },
          {
            "$ref": "#/components/schemas/FieldDatetimeValue"
          },
          {
            "$ref": "#/components/schemas/FieldNumberUnit"
          },
          {
            "$ref": "#/components/schemas/Id"
          },
          {
            "$ref": "#/components/schemas/SelectOptionValue"
          },
          {
            "$ref": "#/components/schemas/TextValue"
          },
          {
            "$ref": "#/components/schemas/Status"
          }
        ],
        "title": "EntityFilters.SimpleFilter",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.SimpleFilter",
        "x-validate": null
      },
      "Projects.ReferencePropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Reference property configuration",
        "properties": {
          "entity_limit": {
            "$ref": "#/components/schemas/Projects.ReferenceEntityLimit"
          },
          "project_id": {
            "$ref": "#/components/schemas/Common.NullableUUID"
          }
        },
        "required": [
          "entity_limit",
          "project_id"
        ],
        "title": "Projects.ReferencePropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ReferencePropertyConfigResponse",
        "x-validate": null
      },
      "PropertyContainsAnyOf": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject contains the one specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_contains_any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyContainsAnyOf",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldTextValue.PropertyContainsAnyOf",
        "x-validate": null
      },
      "Projects.UpsertEntityToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for the upsert_entity tool.\n\nThis tool creates or updates entities in a target project. The decision between\ncreating a new entity vs updating an existing one is driven by the **reference input**\nspecified via `reference_source_property_id`. If that reference input resolves to an\nexisting entity, the tool updates it; otherwise (empty match or no reference), it creates\na new entity (when `allow_insert` is true).\n\n## How to configure\n\nEvery `upsert_entity` property needs at minimum:\n- `target_project_id` — the project to write entities into\n- `allow_insert` — whether creation of new entities is allowed\n\nThen, depending on the use case, you link source inputs via the config fields below.\nEach `*_property_id` field refers to a **source property** that must also be wired as\nan input on the property definition (via `inputs`).\n\n### Quick reference — config fields and their linked inputs\n\n```\n┌─────────────────────────────────────────┬──────────────────────────────┐\n│ Config field                            │ Expected input type          │\n├─────────────────────────────────────────┼──────────────────────────────┤\n│ reference_source_property_id            │ :reference (update selector) │\n│ json_input_property_id                  │ :json (free-form params)     │\n│ parent_entity_id_source_property_id     │ :reference (parent entity)   │\n│ property_mappings[].source_property_id  │ any typed (text, number, …)  │\n└─────────────────────────────────────────┴──────────────────────────────┘\n```\n\n## Scenario 1 — Create-only (no reference)\n\nUse case: always create a new entity in the target project. No reference input\nis needed — `reference_source_property_id` is null (or omitted) and there are no\nreference inputs wired. Every execution creates a fresh entity.\n\n```\nSource Project\n┌──────────────────────────────────────────────────┐\n│  Properties:                                     │\n│    [source_name]   type: text                    │\n│    [source_email]  type: text                    │\n│    [upsert_prop]   tool: upsert_entity           │\n│         inputs: [source_name, source_email]      │\n│         tool_config.upsert_entity_config:        │\n│           target_project_id: <TARGET_ID>         │\n│           allow_insert: true                     │\n│           reference_source_property_id: null      │\n│           property_mappings:                     │\n│             - target: <target_name.id>           │\n│               source: <source_name.id>           │\n│             - target: <target_email.id>          │\n│               source: <source_email.id>          │\n└──────────────────────────────────────────────────┘\n                     │\n                     ▼  always creates\nTarget Project\n┌──────────────────────────────────────────────────┐\n│  Properties:                                     │\n│    [target_name]   type: text                    │\n│    [target_email]  type: text                    │\n└──────────────────────────────────────────────────┘\n```\n\nInputs on the upsert_entity property:\n```json\n[\n  {\"property_id\": \"<source_name.id>\"},\n  {\"property_id\": \"<source_email.id>\"}\n]\n```\n\n## Scenario 2 — Update-only (no insert)\n\nUse case: sync field values into an existing entity matched by a reference.\n\n```\nSource Project (where the upsert_entity property lives)\n┌──────────────────────────────────────────────────┐\n│  Properties:                                     │\n│    [ref_to_target]  type: reference ──────────┐   │\n│    [source_name]    type: text                │   │\n│    [source_email]   type: text                │   │\n│    [upsert_prop]    tool: upsert_entity       │   │\n│         inputs: [ref_to_target,               │   │\n│                  source_name, source_email]    │   │\n│         tool_config.upsert_entity_config:     │   │\n│           target_project_id: <TARGET_ID>      │   │\n│           allow_insert: false                 │   │\n│           reference_source_property_id:       │   │\n│             <ref_to_target.id>  ◄── decides   │   │\n│                                    update/create  │\n│           property_mappings:                  │   │\n│             - target: <target_name.id>        │   │\n│               source: <source_name.id>        │   │\n│             - target: <target_email.id>       │   │\n│               source: <source_email.id>       │   │\n└──────────────────────────────────────┼────────┘   │\n                                       │            │\nTarget Project  ◄──────────────────────┘            │\n┌──────────────────────────────────────────────────┐\n│  Properties:                                     │\n│    [target_name]   type: text                    │\n│    [target_email]  type: text                    │\n└──────────────────────────────────────────────────┘\n```\n\nInputs on the upsert_entity property:\n```json\n[\n  {\"property_id\": \"<ref_to_target.id>\"},\n  {\"property_id\": \"<source_name.id>\"},\n  {\"property_id\": \"<source_email.id>\"}\n]\n```\n\n## Scenario 3 — Upsert (update if matched, create if not)\n\nSame as Scenario 2 but with `allow_insert: true`. When `reference_source_property_id`\nresolves to no entity, a new entity is created in the target project with the\nmapped field values.\n\n## Scenario 4 — Create into a collection sub-project\n\nUse case: create child entities under a parent entity in a collection.\n\n```\nParent Project\n┌──────────────────────────────────────────────────┐\n│  Properties:                                     │\n│    [ref_to_parent] type: reference ───┐           │\n│    [items_json]    type: json         │           │\n│    [upsert_prop]   tool: upsert_entity│           │\n│         inputs: [ref_to_parent,       │           │\n│                  items_json]           │           │\n│         tool_config.upsert_entity_config:         │\n│           target_project_id: <CHILD_PROJECT_ID>   │\n│           allow_insert: true                      │\n│           reference_source_property_id: null       │\n│             (no update, always create)             │\n│           json_input_property_id:                  │\n│             <items_json.id>                        │\n│           parent_entity_id_source_property_id:     │\n│             <ref_to_parent.id>  ◄── parent entity  │\n│           batch_entity_upsert: true                │\n└──────────────────────────────────────────────────┘\n          │                    │\n          ▼                    ▼\nParent Project (self-ref)    Child Sub-Project\n┌─────────────────┐          ┌─────────────────┐\n│  entity matched │          │  new entity      │\n│  by ref_to_parent│         │  created here    │\n│  becomes parent  │         │  with parent_id  │\n└─────────────────┘          └─────────────────┘\n```\n\n## Scenario 5 — Upsert into a collection sub-project\n\nCombines update-or-create with collection parenting:\n\n```\ntool_config.upsert_entity_config:\n  target_project_id: <CHILD_PROJECT_ID>\n  allow_insert: true\n  reference_source_property_id: <ref_to_child.id>\n  parent_entity_id_source_property_id: <ref_to_parent.id>\n  batch_entity_upsert: true\n  property_mappings:\n    - target: <child_name.id>, source: <source_name.id>\n```\n\nHere three reference inputs are needed:\n- `ref_to_child` → decides update vs create in the child project\n- `ref_to_parent` → supplies `parent_entity_id` for new child entities\n\n## Auto-discovery (fallback)\n\nWhen `reference_source_property_id` is null (not set), the tool falls back to\nauto-discovering the update reference by picking the first `:reference` input\nthat is not already consumed by `property_mappings`, `json_input_property_id`,\nor `parent_entity_id_source_property_id`. **For API integrations, explicit\nconfiguration via `reference_source_property_id` is strongly recommended** to\navoid ambiguity when multiple reference inputs exist.\n",
        "properties": {
          "allow_insert": {
            "description": "Whether to allow inserting new entities",
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "batch_entity_upsert": {
            "description": "When true, uses the batch entity creation path (AddEntities) instead of single (AddEntity). The batch path touches the parent collection hash after insert, which triggers recalculation of upstream properties that depend on the collection. Only has effect when parent_entity_id_source_property_id is also set.",
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "json_input_property_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Common.UUID"
              }
            ],
            "description": "Optional source property ID that provides free-form JSON params for upsert input",
            "nullable": true,
            "x-struct": null,
            "x-validate": null
          },
          "parent_entity_id_source_property_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Common.UUID"
              }
            ],
            "description": "Source property ID of a reference input whose matched entity ID is used as parent_entity_id when creating entities in collection sub-projects",
            "nullable": true,
            "x-struct": null,
            "x-validate": null
          },
          "property_mappings": {
            "description": "Maps target property IDs to source property IDs for field values",
            "items": {
              "properties": {
                "source_property_id": {
                  "$ref": "#/components/schemas/Common.UUID"
                },
                "target_property_id": {
                  "$ref": "#/components/schemas/Common.UUID"
                }
              },
              "required": [
                "target_property_id",
                "source_property_id"
              ],
              "type": "object",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "reference_source_property_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Common.UUID"
              }
            ],
            "description": "Source property ID of a reference input that decides whether to update or create. When the reference input resolves to a matched entity, that entity is updated; when it resolves to no entity (or is absent), a new entity is created (if allow_insert is true). When null, the tool auto-discovers the first non-consumed reference input.",
            "nullable": true,
            "x-struct": null,
            "x-validate": null
          },
          "target_project_id": {
            "$ref": "#/components/schemas/Common.NullableUUID"
          }
        },
        "title": "Projects.UpsertEntityToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.UpsertEntityToolConfig",
        "x-validate": null
      },
      "Projects.SelectOptionResponse": {
        "additionalProperties": false,
        "description": "Response for a select option",
        "properties": {
          "color": {
            "$ref": "#/components/schemas/Projects.SelectOptionColor"
          },
          "tool_fallback": {
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "value",
          "tool_fallback"
        ],
        "title": "Projects.SelectOptionResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SelectOptionResponse",
        "x-validate": null
      },
      "Projects.SelectOptionColor": {
        "maxLength": 32,
        "nullable": true,
        "title": "Projects.SelectOptionColor",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SelectOptionColor",
        "x-validate": null
      },
      "Projects.CodeToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for code tools",
        "properties": {
          "client_certs": {
            "description": "Client certificate configurations for mTLS connections",
            "items": {
              "$ref": "#/components/schemas/Projects.ClientCertConfigSchema"
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "dependencies": {
            "description": "List of code dependencies",
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "unsafe_allow_network": {
            "description": "Whether network access is allowed in code execution",
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.CodeToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.CodeToolConfig",
        "x-validate": null
      },
      "EntityFilters.Filter": {
        "description": "Filter can be `simple` or `group`. If you want to filter by one `subject` eg. `item name`. You can specify `simple filter` for given `subject` and `matcher`. For more details please see details of `item name filter` or other simple filters. If you want to to filter item by more than one filter You need to use `group filter` which gives possibility to join `filters` using `and`, `or` operators.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/EntityFilters.GroupFilter"
          },
          {
            "$ref": "#/components/schemas/EntityFilters.SimpleFilter"
          }
        ],
        "title": "EntityFilters.Filter",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.Filter",
        "x-validate": null
      },
      "PropertyContainsNoneOfString": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject contains the one specified in the filter",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_contains_none_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyContainsNoneOfString",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldMetadataFieldName.PropertyContainsNoneOf",
        "x-validate": null
      },
      "Projects.IntegrationArgumentOverrideReference": {
        "additionalProperties": false,
        "description": "Override for an integration skill argument with input reference",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "integration"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "$ref": "#/components/schemas/Projects.InputReference"
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "input_reference"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.IntegrationArgumentOverrideReference",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.IntegrationArgumentOverrideReference",
        "x-validate": null
      },
      "Projects.NumberPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Number property configuration",
        "properties": {
          "format": {
            "default": "auto",
            "enum": [
              "auto",
              "custom"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "format_custom": {
            "$ref": "#/components/schemas/Projects.NumberFormatCustomResponse"
          }
        },
        "required": [
          "format",
          "format_custom"
        ],
        "title": "Projects.NumberPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.NumberPropertyConfigResponse",
        "x-validate": null
      },
      "Projects.SelectMaxSelectedWithDefault": {
        "default": 0,
        "description": "Maximum number of options that can be selected on any field.\n0 for unlimited.\n",
        "minimum": 0,
        "nullable": true,
        "title": "Projects.SelectMaxSelectedWithDefault",
        "type": "integer",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SelectMaxSelectedWithDefault",
        "x-validate": null
      },
      "PropertyLessThanOrEqualTo": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are less than or equal to the one specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "property_less_than_or_equal_to"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "value"
        ],
        "title": "PropertyLessThanOrEqualTo",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldNumberValue.PropertyLessThanOrEqualTo",
        "x-validate": null
      },
      "Projects.DirectHubInput": {
        "additionalProperties": false,
        "description": "A direct reference to a Hub by its ID, optionally scoped to a specific file or folder.",
        "properties": {
          "direct_hub_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "hub_file_id": {
            "$ref": "#/components/schemas/Common.NullableUUID"
          },
          "hub_filters": {
            "$ref": "#/components/schemas/Projects.HubFilters"
          }
        },
        "required": [
          "direct_hub_id"
        ],
        "title": "Projects.DirectHubInput",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DirectHubInput",
        "x-validate": null
      },
      "Projects.SecretArgumentOverrideFixed": {
        "additionalProperties": false,
        "description": "Override for a secret skill argument with fixed value",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "secret"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "description": "Secret name (string only)",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "fixed"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.SecretArgumentOverrideFixed",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SecretArgumentOverrideFixed",
        "x-validate": null
      },
      "Projects.RelatedPropertyInput": {
        "additionalProperties": false,
        "description": "An input property in directly related project, like collection or simply current project.\n",
        "properties": {
          "entities_filter": {
            "$ref": "#/components/schemas/EntityFilters.NullableFilter"
          },
          "hub_filters": {
            "$ref": "#/components/schemas/Projects.HubFilters"
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "target": {
            "$ref": "#/components/schemas/Projects.PropertyInputTarget"
          },
          "target_filter": {
            "$ref": "#/components/schemas/Projects.PropertyInputTargetFilter"
          }
        },
        "required": [
          "property_id"
        ],
        "title": "Projects.RelatedPropertyInput",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.RelatedPropertyInput",
        "x-validate": null
      },
      "EntityFilters.NullableFilter": {
        "description": "Filter can be `simple` or `group`. If you want to filter by one `subject` eg. `item name`. You can specify `simple filter` for given `subject` and `matcher`. For more details please see details of `item name filter` or other simple filters. If you want to to filter item by more than one filter You need to use `group filter` which gives possibility to join `filters` using `and`, `or` operators.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/EntityFilters.GroupFilter"
          },
          {
            "$ref": "#/components/schemas/EntityFilters.SimpleFilter"
          },
          {
            "$ref": "#/components/schemas/EntityFilters.NullableOrEmptyObject"
          }
        ],
        "title": "EntityFilters.NullableFilter",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.NullableFilter",
        "x-validate": null
      },
      "Projects.SkillArgumentOverride": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Projects.DynamicArgumentOverrideFixed"
          },
          {
            "$ref": "#/components/schemas/Projects.DynamicArgumentOverrideReference"
          },
          {
            "$ref": "#/components/schemas/Projects.SecretArgumentOverrideFixed"
          },
          {
            "$ref": "#/components/schemas/Projects.SecretArgumentOverrideReference"
          },
          {
            "$ref": "#/components/schemas/Projects.IntegrationArgumentOverrideFixed"
          },
          {
            "$ref": "#/components/schemas/Projects.IntegrationArgumentOverrideReference"
          },
          {
            "$ref": "#/components/schemas/Projects.IntegrationArgumentOverrideTenant"
          },
          {
            "$ref": "#/components/schemas/Projects.FileArgumentOverrideReference"
          },
          {
            "$ref": "#/components/schemas/Projects.FileListArgumentOverrideReference"
          }
        ],
        "title": "Projects.SkillArgumentOverride",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SkillArgumentOverride",
        "x-validate": null
      },
      "Projects.SecretArgumentOverrideReference": {
        "additionalProperties": false,
        "description": "Override for a secret skill argument with input reference",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "secret"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "$ref": "#/components/schemas/Projects.InputReference"
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "input_reference"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.SecretArgumentOverrideReference",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SecretArgumentOverrideReference",
        "x-validate": null
      },
      "ViewAnyOfFieldStatuses": {
        "additionalProperties": false,
        "description": "Matches items in a view based on whether any of their field statuses are in the filter values",
        "properties": {
          "name": {
            "enum": [
              "view_any_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/Projects.ListEntities.FieldStatus"
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          },
          "view_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "name",
          "view_id",
          "values"
        ],
        "title": "ViewAnyOfFieldStatuses",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.EntityStatus.ViewAnyOf",
        "x-validate": null
      },
      "Projects.PropertyInputTarget": {
        "default": "value",
        "description": "What data to extract from the field - value (default) or specific metadata field",
        "enum": [
          "value",
          "value.text",
          "value.files",
          "tool_metadata.motivation",
          "tool_metadata.confidence",
          "tool_metadata.external_sources",
          "tool_metadata.skill_results",
          "tool_metadata.skill_errors"
        ],
        "title": "Projects.PropertyInputTarget",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyInputTarget",
        "x-validate": null
      },
      "Projects.AutoLlmToolConfig": {
        "additionalProperties": false,
        "description": "Configuration for auto_llm tool",
        "properties": {
          "mode": {
            "description": "Model selection mode: fast (speed/cost optimized), balanced (default), smart (maximum capability)",
            "enum": [
              "fast",
              "balanced",
              "smart"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "title": "Projects.AutoLlmToolConfig",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.AutoLlmToolConfig",
        "x-validate": null
      },
      "FieldDatetimeValue": {
        "additionalProperties": false,
        "description": "Filter entities based on field's datetime value. All matchers support optional granularity for date_trunc truncation (year, quarter, month, day, hour, minute, second).",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOf"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOf"
              },
              {
                "$ref": "#/components/schemas/PropertyGreaterThan"
              },
              {
                "$ref": "#/components/schemas/PropertyLessThan"
              },
              {
                "$ref": "#/components/schemas/PropertyGreaterThanOrEqualTo"
              },
              {
                "$ref": "#/components/schemas/PropertyLessThanOrEqualTo"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_datetime_value"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldDatetimeValue",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldDatetimeValue",
        "x-validate": null
      },
      "FieldFileName": {
        "additionalProperties": false,
        "description": "Filter entities based on field's file name",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOf"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOf"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsAnyOf"
              },
              {
                "$ref": "#/components/schemas/PropertyContainsNoneOf"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "field_file_name"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "FieldFileName",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldFileName",
        "x-validate": null
      },
      "Projects.PropertyIdOrSlug": {
        "description": "Property ID or slug",
        "example": "property-name",
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$|^[a-z_-][a-z0-9_-]*$",
        "title": "Projects.PropertyIdOrSlug",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyIdOrSlug",
        "x-validate": null
      },
      "Projects.IntegrationArgumentOverrideFixed": {
        "additionalProperties": false,
        "description": "Override for a Pipedream-authenticated integration skill argument with a fixed connection owner email. Not accepted for native integrations - pin those to an Entra tenant with the integration_tenant override instead.",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "integration"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "description": "Pipedream connection owner email (string only)",
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "fixed"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.IntegrationArgumentOverrideFixed",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.IntegrationArgumentOverrideFixed",
        "x-validate": null
      },
      "EntityFilters.Conjunction": {
        "description": "Use to join filters together. It is possible to join simple or group filters with `and`, `or` operators",
        "enum": [
          "and",
          "or"
        ],
        "title": "EntityFilters.Conjunction",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.Conjunction",
        "x-validate": null
      },
      "Projects.PropertyConfigResponse": {
        "nullable": true,
        "oneOf": [
          {
            "$ref": "#/components/schemas/Projects.SingleSelectPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.MultiSelectPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.DynamicSelectPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.PDFPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.CollectionPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.FileCollectionPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.ReferencePropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.NumberPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.DocumentPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.ActionPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.TriggerPropertyConfigResponse"
          },
          {
            "$ref": "#/components/schemas/Projects.JsonPropertyConfigResponse"
          }
        ],
        "title": "Projects.PropertyConfigResponse",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.PropertyConfigResponse",
        "x-validate": null
      },
      "PropertyAllOfString": {
        "additionalProperties": false,
        "description": "Matches items based on whether the all the values in the filter exist in the subject",
        "properties": {
          "case_sensitive": {
            "default": true,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "name": {
            "enum": [
              "property_all_of"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "values": {
            "items": {
              "type": "string",
              "x-struct": null,
              "x-validate": null
            },
            "minItems": 1,
            "type": "array",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "values"
        ],
        "title": "PropertyAllOfString",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldSelectOptionValue.PropertyAllOf",
        "x-validate": null
      },
      "PropertyGreaterThanOrEqualTo": {
        "additionalProperties": false,
        "description": "Matches items based on whether the values from the subject are greater than or equal to the one specified in the filter",
        "properties": {
          "name": {
            "enum": [
              "property_greater_than_or_equal_to"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "property_id": {
            "$ref": "#/components/schemas/Common.UUID"
          },
          "reference_support_via_property_id": {
            "nullable": true,
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "name",
          "property_id",
          "value"
        ],
        "title": "PropertyGreaterThanOrEqualTo",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.FieldNumberValue.PropertyGreaterThanOrEqualTo",
        "x-validate": null
      },
      "Projects.Common.FieldReviewStatus": {
        "enum": [
          "pending",
          "approved",
          "rejected"
        ],
        "title": "Projects.Common.FieldReviewStatus",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.Common.FieldReviewStatus",
        "x-validate": null
      },
      "SelectOptionValue": {
        "additionalProperties": false,
        "deprecated": true,
        "description": "DEPRECATED: Use FieldSelectOptionValue instead",
        "properties": {
          "matcher": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PropertyAnyOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyAllOfString"
              },
              {
                "$ref": "#/components/schemas/PropertyNoneOfString"
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "subject": {
            "enum": [
              "select_option_value"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "subject",
          "matcher"
        ],
        "title": "SelectOptionValue",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.EntityFilters.SelectOptionValue",
        "x-validate": null
      },
      "Projects.ActionPropertyConfigResponse": {
        "additionalProperties": false,
        "description": "Response for action property configuration",
        "properties": {
          "action_type": {
            "enum": [
              "skill",
              "skill_chain"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "entrypoint_id": {
            "$ref": "#/components/schemas/Common.UUID"
          }
        },
        "required": [
          "action_type",
          "entrypoint_id"
        ],
        "title": "Projects.ActionPropertyConfigResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ActionPropertyConfigResponse",
        "x-validate": null
      },
      "Common.NullableUUID": {
        "example": "e23ff3f3-8f77-4e78-9e81-fdb25abfb781",
        "format": "uuid",
        "nullable": true,
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
        "title": "Common.NullableUUID",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Common.NullableUUID",
        "x-validate": null
      },
      "Common.UUID": {
        "example": "e23ff3f3-8f77-4e78-9e81-fdb25abfb781",
        "format": "uuid",
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
        "title": "Common.UUID",
        "type": "string",
        "x-struct": null,
        "x-validate": null
      },
      "Projects.ListEntities.FieldStatus": {
        "enum": [
          "idle",
          "uploading",
          "waiting",
          "computing",
          "complete",
          "error",
          "skip"
        ],
        "title": "Projects.ListEntities.FieldStatus",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.ListEntities.FieldStatus",
        "x-validate": null
      },
      "Projects.NumberFormatCustomResponse": {
        "additionalProperties": false,
        "description": "Custom number format",
        "nullable": true,
        "properties": {
          "decimal_places": {
            "oneOf": [
              {
                "maximum": 20,
                "minimum": 0,
                "type": "integer",
                "x-struct": null,
                "x-validate": null
              },
              {
                "default": "auto",
                "enum": [
                  "auto"
                ],
                "type": "string",
                "x-struct": null,
                "x-validate": null
              }
            ],
            "x-struct": null,
            "x-validate": null
          },
          "negative_format": {
            "default": "minus",
            "enum": [
              "minus",
              "parentheses",
              "colored",
              "colored_parentheses"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "right_align": {
            "default": false,
            "type": "boolean",
            "x-struct": null,
            "x-validate": null
          },
          "thousand_separator": {
            "default": "none",
            "enum": [
              "comma",
              "none"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "decimal_places",
          "negative_format",
          "thousand_separator",
          "right_align"
        ],
        "title": "Projects.NumberFormatCustomResponse",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.NumberFormatCustomResponse",
        "x-validate": null
      },
      "Projects.DynamicArgumentOverrideReference": {
        "additionalProperties": false,
        "description": "Override for a dynamic skill argument with input reference",
        "properties": {
          "arg_name": {
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "arg_type": {
            "enum": [
              "dynamic"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          },
          "value": {
            "$ref": "#/components/schemas/Projects.InputReference"
          },
          "value_format": {
            "$ref": "#/components/schemas/Projects.ArgumentOverrideValueFormat"
          },
          "value_type": {
            "enum": [
              "input_reference"
            ],
            "type": "string",
            "x-struct": null,
            "x-validate": null
          }
        },
        "required": [
          "arg_name",
          "arg_type",
          "value_type",
          "value"
        ],
        "title": "Projects.DynamicArgumentOverrideReference",
        "type": "object",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.DynamicArgumentOverrideReference",
        "x-validate": null
      },
      "Projects.SelectDefaultOption": {
        "description": "Default select option.\nIf the value doesn't exist, it will be ignored.\n",
        "nullable": true,
        "title": "Projects.SelectDefaultOption",
        "type": "string",
        "x-struct": "Elixir.AgiDbWeb.Schemas.Projects.SelectDefaultOption",
        "x-validate": null
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "in": "header",
        "name": "X-API-KEY",
        "type": "apiKey"
      },
      "BearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "title": "V7 Go API",
    "version": "0.1.0"
  },
  "openapi": "3.0.0",
  "paths": {
    "/api/workspaces/{workspace_id}/projects/{project_id}/properties/{property_id_or_slug}": {
      "get": {
        "callbacks": {},
        "description": "Returns details of a project's property",
        "operationId": "project-get-property",
        "parameters": [
          {
            "description": "",
            "in": "path",
            "name": "workspace_id",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Common.UUID"
            }
          },
          {
            "description": "",
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Common.UUID"
            }
          },
          {
            "description": "Property ID or slug",
            "in": "path",
            "name": "property_id_or_slug",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Projects.PropertyIdOrSlug"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Projects.PropertyResponse"
                }
              }
            },
            "description": "Projects.PropertyResponse"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Common.APIError"
                }
              }
            },
            "description": "Common.APIError"
          }
        },
        "summary": "Get a property",
        "tags": [
          "Projects"
        ]
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    },
    {
      "ApiKeyAuth": []
    }
  ],
  "servers": [
    {
      "description": "EU",
      "url": "https://go.v7labs.com",
      "variables": {}
    },
    {
      "description": "US",
      "url": "https://go.us.v7labs.com",
      "variables": {}
    },
    {
      "description": "UAE",
      "url": "https://go.uae.v7labs.com",
      "variables": {}
    }
  ]
}
````