class

Analyzer::Specification::Strapi

Inherits Analyzer::Specification::SchemaApiCommon < Analyzer::Specification::SpecificationEngine < Analyzer < FileHelper < Reference < Object

Strapi turns every content type into REST routes under /api: a collection type gets the five-verb CRUD shape on its plural name, a single type gets read/update/delete on its singular name.

Custom routes declared in src/api/<name>/routes/*.{ts,js} are read separately and mounted under the same /api prefix.

Constants

API_PREFIX = "/api"
ATTRIBUTE_TYPE_HINTS = {"string" => "string", "text" => "string", "richtext" => "string", "email" => "string", "password" => "string", "uid" => "string", "enumeration" => "string", "integer" => "int", "biginteger" => "int", "float" => "number", "decimal" => "number", "boolean" => "boolean", "date" => "datetime", "datetime" => "datetime", "time" => "datetime", "timestamp" => "datetime", "json" => "object"}
MAX_FILTER_PARAMS = 25
NON_SCALAR_TYPES = {"relation", "component", "dynamiczone", "media"}

Relations, components, dynamic zones and media are not scalar body fields - they take nested reference payloads rather than a value.

TAG_SOURCE = "strapi_analyzer"

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source