API

/web_api/project/search

/web_api/project/search ​

This page is built from the JSON Schema snapshot in the documentation repository. The snapshot is updated by a separate command from the main app catalog and is not rewritten when the site is built.

Request ​

main-app://schemas/api_elements/project/search.request.json

REQUEST /web_api/project/search

NameTypeRequiredConstraint
filtersarray of objectNo-
optionsobjectNono other fields
responseanyNo-

Other top-level fields are not allowed.

filters[] ​

NameTypeRequiredConstraint
objectobjectYesno other fields
operatorenumYes"LIKE", "NOT_LIKE", "EQUAL", "NOT_EQUAL", "GT", "GTE", "LT", "LTE", "IN", "NOT_IN", "IS_NULL", "IS_NOT_NULL"
valueanyNo-

filters[].object ​

NameTypeRequiredConstraint
elementstringYes-
attributestringYes-

options ​

NameTypeRequiredConstraint
limitintegerNominimum 1
orderobjectNono other fields
addarray of enumNo-

options.order ​

NameTypeRequiredConstraint
attributeenumYes"project_id", "team_id", "project_name", "project_description", "project_status"
directionenumNo"ASC", "DESC"

Response ​

main-app://schemas/api_elements/project/search.response.json

RESPONSE /web_api/project/search

NameTypeRequiredConstraint
api_codeintegerYesconst 200
api_resultarray of object | booleanYes-
emptybooleanNo-

Other top-level fields are not allowed.

Source schema ​

The files below are copied from the snapshot unchanged. A $ref fragment is a separate block. The schemas are not merged.

Request: main-app://schemas/api_elements/project/search.request.json
json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "main-app://schemas/api_elements/project/search.request.json",
  "title": "REQUEST /web_api/project/search",
  "$comment": "Generated from the DB model structure_scheme. Edit the model, then run node fill-from-structure-scheme.mjs.",
  "type": "object",
  "additionalProperties": false,
  "description": "Empty result is api_result false, not []. project_id GT the last project_id, with options.order on project_id ASC, is the next page. Repeat the other filters. There is no offset.",
  "properties": {
    "filters": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "object",
          "operator"
        ],
        "additionalProperties": false,
        "properties": {
          "object": {
            "type": "object",
            "required": [
              "element",
              "attribute"
            ],
            "additionalProperties": false,
            "properties": {
              "element": {
                "type": "string"
              },
              "attribute": {
                "type": "string",
                "description": "Column of this element: project_id, team_id, project_name, project_description, project_status. A custom property filter uses object.element custom and object.attribute equal to the property key."
              }
            }
          },
          "operator": {
            "type": "string",
            "enum": [
              "LIKE",
              "NOT_LIKE",
              "EQUAL",
              "NOT_EQUAL",
              "GT",
              "GTE",
              "LT",
              "LTE",
              "IN",
              "NOT_IN",
              "IS_NULL",
              "IS_NOT_NULL"
            ]
          },
          "value": true
        }
      }
    },
    "options": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "limit": {
          "type": "integer",
          "minimum": 1
        },
        "order": {
          "type": "object",
          "required": [
            "attribute"
          ],
          "additionalProperties": false,
          "properties": {
            "attribute": {
              "type": "string",
              "enum": [
                "project_id",
                "team_id",
                "project_name",
                "project_description",
                "project_status"
              ]
            },
            "direction": {
              "type": "string",
              "enum": [
                "ASC",
                "DESC"
              ]
            }
          }
        },
        "add": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "autotest_manual_test_coverage",
              "object_repository_coverage",
              "projects",
              "summary"
            ]
          }
        }
      }
    },
    "response": true
  }
}
Response: main-app://schemas/api_elements/project/search.response.json
json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "main-app://schemas/api_elements/project/search.response.json",
  "title": "RESPONSE /web_api/project/search",
  "$comment": "Generated from the DB model structure_scheme. Edit the model, then run node fill-from-structure-scheme.mjs.",
  "allOf": [
    {
      "$ref": "main-app://schemas/_shared/envelope-success.json"
    },
    {
      "type": "object",
      "properties": {
        "api_result": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "$ref": "main-app://schemas/api_elements/project/row.json"
              }
            },
            {
              "const": false
            }
          ]
        }
      }
    }
  ]
}
Fragment: main-app://schemas/_shared/envelope-success.json
json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "main-app://schemas/_shared/envelope-success.json",
  "title": "Canonical success envelope",
  "type": "object",
  "required": ["api_code", "api_result"],
  "properties": {
    "api_code": { "const": 200 },
    "api_result": true,
    "empty": { "type": "boolean" }
  },
  "additionalProperties": false
}
Fragment: main-app://schemas/api_elements/project/row.json
json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "main-app://schemas/api_elements/project/row.json",
  "title": "Row project",
  "$comment": "Generated from the DB model structure_scheme. Edit the model, then run node fill-from-structure-scheme.mjs.",
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "project_id": {
      "type": "integer",
      "minimum": 0
    },
    "team_id": {
      "type": "integer",
      "minimum": 0
    },
    "project_name": {
      "type": "string",
      "maxLength": 500
    },
    "project_description": {
      "type": "string",
      "maxLength": 2500,
      "description": "HTML subset b, i, p, a, strong, ul, ol, li"
    },
    "project_status": {
      "type": "string",
      "enum": [
        "OPEN",
        "CLOSED"
      ]
    }
  }
}

Version 1.0.0 · Last updated 2026-10-07

Did this page help?