API Docs
ES
Referencia

Modelos de datos

Definiciones reutilizadas por solicitudes, respuestas, métricas y errores.

ApiProblemApiProblem
{
  "properties": {
    "code": {
      "description": "Stable machine-readable arText error code.",
      "title": "Code",
      "type": "string"
    },
    "detail": {
      "description": "Human-readable explanation for this occurrence.",
      "title": "Detail",
      "type": "string"
    },
    "errors": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Errors"
    },
    "instance": {
      "description": "Request path for this occurrence.",
      "title": "Instance",
      "type": "string"
    },
    "request_id": {
      "description": "Identifier to retain for support and tracing.",
      "title": "Request Id",
      "type": "string"
    },
    "retry_after_seconds": {
      "anyOf": [
        {
          "minimum": 1.0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Retry After Seconds"
    },
    "status": {
      "description": "HTTP status code.",
      "title": "Status",
      "type": "integer"
    },
    "title": {
      "description": "Short, stable problem title.",
      "title": "Title",
      "type": "string"
    },
    "type": {
      "description": "URI reference identifying the problem type.",
      "title": "Type",
      "type": "string"
    }
  },
  "required": [
    "type",
    "title",
    "status",
    "detail",
    "instance",
    "code",
    "request_id"
  ],
  "title": "ApiProblem",
  "type": "object"
}
GenreGenre the report was analyzed with. It names both coordinates because a text type slug is only unique inside its domain, and the pair is what determined the rules, the thresholds and the glossaries used. Resubmitting these two slugs reproduces the analysis.
{
  "description": "Genre the report was analyzed with.\n\nIt names both coordinates because a text type slug is only unique inside\nits domain, and the pair is what determined the rules, the thresholds and\nthe glossaries used. Resubmitting these two slugs reproduces the analysis.",
  "properties": {
    "domain": {
      "$ref": "#/components/schemas/TextDomain"
    },
    "text_type": {
      "$ref": "#/components/schemas/TextType"
    }
  },
  "required": [
    "domain",
    "text_type"
  ],
  "title": "Genre",
  "type": "object"
}
HTTPValidationErrorHTTPValidationError
{
  "properties": {
    "detail": {
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      },
      "title": "Detail",
      "type": "array"
    }
  },
  "title": "HTTPValidationError",
  "type": "object"
}
MeasurementMeasurement
{
  "properties": {
    "implementation_version": {
      "description": "Calculator version used for this report.",
      "title": "Implementation Version",
      "type": "string"
    },
    "metric_id": {
      "description": "Stable metric identifier documented by GET /v1/metrics/{metric_id}.",
      "title": "Metric Id",
      "type": "string"
    },
    "unit": {
      "description": "Semantic unit defined by the metric catalog.",
      "title": "Unit",
      "type": "string"
    },
    "value": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        }
      ],
      "description": "Calculated numeric value.",
      "title": "Value"
    }
  },
  "required": [
    "metric_id",
    "value",
    "unit",
    "implementation_version"
  ],
  "title": "Measurement",
  "type": "object"
}
MetricMetric
{
  "properties": {
    "analysis_language": {
      "title": "Analysis Language",
      "type": "string"
    },
    "availability_note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Localized explanation present only when available is false.",
      "title": "Availability Note"
    },
    "available": {
      "default": true,
      "description": "False when the variant can never produce output for analysis_language with the current linguistic runtime; see availability_note.",
      "title": "Available",
      "type": "boolean"
    },
    "category": {
      "title": "Category",
      "type": "string"
    },
    "documentation": {
      "$ref": "#/components/schemas/MetricDocumentation"
    },
    "documentation_language": {
      "description": "Language actually used by the returned documentation.",
      "title": "Documentation Language",
      "type": "string"
    },
    "enabled": {
      "description": "Whether reports for analysis_language currently evaluate this variant.",
      "title": "Enabled",
      "type": "boolean"
    },
    "example": {
      "additionalProperties": true,
      "description": "Example conforming to the public report contract.",
      "title": "Example",
      "type": "object"
    },
    "genre_scope": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MetricGenreScope"
        },
        {
          "type": "null"
        }
      ],
      "description": "Genre-specific status, present only when the request selects a genre."
    },
    "id": {
      "title": "Id",
      "type": "string"
    },
    "implementation_version": {
      "title": "Implementation Version",
      "type": "string"
    },
    "kind": {
      "enum": [
        "measurement",
        "suggestion"
      ],
      "title": "Kind",
      "type": "string"
    },
    "references": {
      "items": {
        "type": "string"
      },
      "title": "References",
      "type": "array"
    },
    "unit": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Unit"
    }
  },
  "required": [
    "id",
    "kind",
    "analysis_language",
    "enabled",
    "implementation_version",
    "category",
    "documentation_language",
    "documentation"
  ],
  "title": "Metric",
  "type": "object"
}
MetricCatalogMetricCatalog
{
  "properties": {
    "genre": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Genre"
        },
        {
          "type": "null"
        }
      ],
      "description": "Genre the genre_scope of every metric refers to, when one was requested."
    },
    "metrics": {
      "items": {
        "$ref": "#/components/schemas/Metric"
      },
      "title": "Metrics",
      "type": "array"
    }
  },
  "required": [
    "metrics"
  ],
  "title": "MetricCatalog",
  "type": "object"
}
MetricDocumentationMetricDocumentation
{
  "properties": {
    "interpretation": {
      "default": "",
      "title": "Interpretation",
      "type": "string"
    },
    "limitations": {
      "default": "",
      "title": "Limitations",
      "type": "string"
    },
    "methodology": {
      "default": "",
      "title": "Methodology",
      "type": "string"
    },
    "summary": {
      "default": "",
      "title": "Summary",
      "type": "string"
    },
    "title": {
      "default": "",
      "title": "Title",
      "type": "string"
    }
  },
  "title": "MetricDocumentation",
  "type": "object"
}
MetricGenreScopeHow a metric behaves for one genre. Present only when the request narrows the catalog with domain_slug and text_type_slug. `enabled` is the intersection of the language variant and the genre configuration: a variant enabled for the language still does not run unless the genre opts into it.
{
  "description": "How a metric behaves for one genre.\n\nPresent only when the request narrows the catalog with domain_slug and\ntext_type_slug. `enabled` is the intersection of the language variant and\nthe genre configuration: a variant enabled for the language still does not\nrun unless the genre opts into it.",
  "properties": {
    "enabled": {
      "description": "Whether reports for this genre evaluate the metric.",
      "title": "Enabled",
      "type": "boolean"
    },
    "params": {
      "additionalProperties": true,
      "description": "Thresholds this genre configures for the metric; empty means the defaults.",
      "title": "Params",
      "type": "object"
    }
  },
  "required": [
    "enabled"
  ],
  "title": "MetricGenreScope",
  "type": "object"
}
OccurrenceOccurrence
{
  "properties": {
    "alternatives": {
      "description": "Additional reviewed replacement candidates, excluding replacement.",
      "items": {
        "type": "string"
      },
      "title": "Alternatives",
      "type": "array"
    },
    "edits": {
      "description": "Validated edits for the preferred deterministic change, ordered from the highest offset to the lowest.",
      "items": {
        "$ref": "#/components/schemas/TextEdit"
      },
      "title": "Edits",
      "type": "array"
    },
    "end": {
      "anyOf": [
        {
          "minimum": 0.0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Exclusive offset in the original input text.",
      "title": "End"
    },
    "id": {
      "description": "Identifier unique within its parent suggestion.",
      "title": "Id",
      "type": "string"
    },
    "paragraph_index": {
      "anyOf": [
        {
          "minimum": 0.0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Zero-based paragraph index when available.",
      "title": "Paragraph Index"
    },
    "replacement": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Preferred direct replacement, or null when none is available.",
      "title": "Replacement"
    },
    "sentence_index": {
      "anyOf": [
        {
          "minimum": 0.0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Zero-based sentence index when available.",
      "title": "Sentence Index"
    },
    "start": {
      "anyOf": [
        {
          "minimum": 0.0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Inclusive offset in the original input text.",
      "title": "Start"
    },
    "text": {
      "description": "Fragment identified by the metric.",
      "title": "Text",
      "type": "string"
    }
  },
  "required": [
    "id",
    "text"
  ],
  "title": "Occurrence",
  "type": "object"
}
PublicPhraseologyPublicPhraseology
{
  "properties": {
    "value": {
      "description": "Suggested wording for the content it belongs to.",
      "title": "Value",
      "type": "string"
    }
  },
  "required": [
    "value"
  ],
  "title": "PublicPhraseology",
  "type": "object"
}
PublicTextContentPublicTextContent
{
  "properties": {
    "name": {
      "description": "Content the section is expected to cover.",
      "title": "Name",
      "type": "string"
    },
    "occurrence": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "How many times the content usually appears in the section, when the catalog states it.",
      "title": "Occurrence"
    },
    "phraseology": {
      "description": "Wordings the editorial team proposes for this content.",
      "items": {
        "$ref": "#/components/schemas/PublicPhraseology"
      },
      "title": "Phraseology",
      "type": "array"
    }
  },
  "required": [
    "name"
  ],
  "title": "PublicTextContent",
  "type": "object"
}
PublicTextDomainPublicTextDomain
{
  "properties": {
    "clear_language": {
      "default": false,
      "description": "True when the whole domain is plain-language.",
      "title": "Clear Language",
      "type": "boolean"
    },
    "name": {
      "description": "Domain name in the requested language.",
      "title": "Name",
      "type": "string"
    },
    "slug": {
      "description": "Domain identifier. Send it as domain_slug in POST /v1/reports.",
      "title": "Slug",
      "type": "string"
    },
    "text_types": {
      "description": "Genres available inside this domain.",
      "items": {
        "$ref": "#/components/schemas/PublicTextType"
      },
      "title": "Text Types",
      "type": "array"
    }
  },
  "required": [
    "slug",
    "name"
  ],
  "title": "PublicTextDomain",
  "type": "object"
}
PublicTextSectionPublicTextSection
{
  "properties": {
    "contents": {
      "items": {
        "$ref": "#/components/schemas/PublicTextContent"
      },
      "title": "Contents",
      "type": "array"
    },
    "name": {
      "description": "Section of the document, in reading order.",
      "title": "Name",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "title": "PublicTextSection",
  "type": "object"
}
PublicTextTypePublicTextType
{
  "properties": {
    "clear_language": {
      "default": false,
      "description": "True when the genre is written in plain language for the general public.",
      "title": "Clear Language",
      "type": "boolean"
    },
    "name": {
      "description": "Genre name in the requested language.",
      "title": "Name",
      "type": "string"
    },
    "slug": {
      "description": "Genre identifier. Send it as text_type_slug in POST /v1/reports.",
      "title": "Slug",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "name"
  ],
  "title": "PublicTextType",
  "type": "object"
}
PublicTextTypeCatalogPublicTextTypeCatalog
{
  "properties": {
    "domains": {
      "items": {
        "$ref": "#/components/schemas/PublicTextDomain"
      },
      "title": "Domains",
      "type": "array"
    },
    "language": {
      "description": "Language the catalog is returned in.",
      "title": "Language",
      "type": "string"
    }
  },
  "required": [
    "language",
    "domains"
  ],
  "title": "PublicTextTypeCatalog",
  "type": "object"
}
PublicTextTypeDetailPublicTextTypeDetail
{
  "properties": {
    "domain": {
      "$ref": "#/components/schemas/PublicTextDomain",
      "description": "Domain the genre belongs to, without its sibling genres."
    },
    "language": {
      "title": "Language",
      "type": "string"
    },
    "report_defaults": {
      "$ref": "#/components/schemas/ReportDefaults",
      "description": "Exact payload fragment to forward to POST /v1/reports."
    },
    "structure": {
      "description": "Sections and contents the editorial team recommends for this genre.",
      "items": {
        "$ref": "#/components/schemas/PublicTextSection"
      },
      "title": "Structure",
      "type": "array"
    },
    "text_type": {
      "$ref": "#/components/schemas/PublicTextType"
    }
  },
  "required": [
    "language",
    "domain",
    "text_type",
    "report_defaults"
  ],
  "title": "PublicTextTypeDetail",
  "type": "object"
}
ReportReport
{
  "properties": {
    "created_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "UTC acceptance timestamp.",
      "title": "Created At"
    },
    "error": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReportFailure"
        },
        {
          "type": "null"
        }
      ],
      "description": "Safe failure information, present only when failed."
    },
    "estimated_seconds": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Rough estimate of the analysis duration, derived from the text length when the report was accepted. Indicative only: it excludes queue wait and does not react to server load.",
      "title": "Estimated Seconds"
    },
    "external_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "External Id"
    },
    "finished_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "UTC terminal timestamp.",
      "title": "Finished At"
    },
    "phase": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReportPhase"
        },
        {
          "type": "null"
        }
      ],
      "description": "Pipeline stage while the report is running: `analyzing` (linguistic analysis, by far the longest part) or `building` (applying rules). Not a percentage: it marks what the server is doing, not how far along it is."
    },
    "position_in_queue": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Approximate queue position while waiting.",
      "title": "Position In Queue"
    },
    "report_id": {
      "title": "Report Id",
      "type": "string"
    },
    "result": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReportResult"
        },
        {
          "type": "null"
        }
      ],
      "description": "Analysis result, present only when completed."
    },
    "started_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "UTC processing start timestamp.",
      "title": "Started At"
    },
    "status": {
      "$ref": "#/components/schemas/ReportStatus"
    },
    "updated_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "UTC last-transition timestamp.",
      "title": "Updated At"
    }
  },
  "required": [
    "report_id",
    "status"
  ],
  "title": "Report",
  "type": "object"
}
ReportAcceptedReportAccepted
{
  "properties": {
    "estimated_seconds": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Rough estimate of how long the analysis will take, derived from the length of the submitted text. Indicative only: it excludes queue wait and does not react to server load.",
      "title": "Estimated Seconds"
    },
    "events_url": {
      "description": "Relative URL of the optional SSE status stream.",
      "title": "Events Url",
      "type": "string"
    },
    "external_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Caller-provided correlation identifier.",
      "title": "External Id"
    },
    "report_id": {
      "description": "Unique arText report identifier.",
      "title": "Report Id",
      "type": "string"
    },
    "status": {
      "$ref": "#/components/schemas/ReportStatus",
      "description": "Initial queue status; always queued for a newly accepted report."
    },
    "status_url": {
      "description": "Relative URL of the report status resource.",
      "title": "Status Url",
      "type": "string"
    }
  },
  "required": [
    "report_id",
    "status",
    "status_url",
    "events_url"
  ],
  "title": "ReportAccepted",
  "type": "object"
}
ReportDefaultsExact fields to forward to POST /v1/reports for this genre.
{
  "description": "Exact fields to forward to POST /v1/reports for this genre.",
  "properties": {
    "domain_slug": {
      "description": "Value for the domain_slug field of a report request.",
      "title": "Domain Slug",
      "type": "string"
    },
    "language": {
      "description": "Analysis language the slugs below belong to.",
      "title": "Language",
      "type": "string"
    },
    "text_type_slug": {
      "description": "Value for the text_type_slug field of a report request.",
      "title": "Text Type Slug",
      "type": "string"
    }
  },
  "required": [
    "language",
    "domain_slug",
    "text_type_slug"
  ],
  "title": "ReportDefaults",
  "type": "object"
}
ReportFailureReportFailure
{
  "properties": {
    "code": {
      "const": "analysis_failed",
      "default": "analysis_failed",
      "title": "Code",
      "type": "string"
    },
    "message": {
      "description": "Safe failure description suitable for API clients.",
      "title": "Message",
      "type": "string"
    }
  },
  "required": [
    "message"
  ],
  "title": "ReportFailure",
  "type": "object"
}
ReportPhasePunto de la tubería mientras el estado es `running`. No es un porcentaje y no debe presentarse como tal: `analyzing` se lleva el 94 % del tiempo (una única llamada a FreeLing, que no informa de su avance), así que una barra basada en esto se quedaría clavada casi todo el rato. Sirve para decir qué está pasando y que sigue vivo; para «cuánto queda» está `estimated_seconds`.
{
  "description": "Punto de la tuber\u00eda mientras el estado es `running`.\n\nNo es un porcentaje y no debe presentarse como tal: `analyzing` se lleva el\n94 % del tiempo (una \u00fanica llamada a FreeLing, que no informa de su avance),\nas\u00ed que una barra basada en esto se quedar\u00eda clavada casi todo el rato. Sirve\npara decir qu\u00e9 est\u00e1 pasando y que sigue vivo; para \u00abcu\u00e1nto queda\u00bb est\u00e1\n`estimated_seconds`.",
  "enum": [
    "analyzing",
    "building"
  ],
  "title": "ReportPhase",
  "type": "string"
}
ReportRequestStable input accepted from API integrations.
{
  "additionalProperties": false,
  "description": "Stable input accepted from API integrations.",
  "properties": {
    "domain_slug": {
      "description": "Text domain (\u00e1mbito) the genre belongs to, as listed by GET /v1/text-types.",
      "examples": [
        "lenguaje-claro"
      ],
      "minLength": 1,
      "title": "Domain Slug",
      "type": "string"
    },
    "external_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional caller-owned correlation identifier returned unchanged.",
      "title": "External Id"
    },
    "language": {
      "default": "es",
      "description": "Language used for analysis: es, ca or en.",
      "title": "Language",
      "type": "string"
    },
    "text": {
      "description": "Plain text to analyze.",
      "minLength": 1,
      "title": "Text",
      "type": "string"
    },
    "text_type_slug": {
      "description": "Text type (genre) inside domain_slug, as listed by GET /v1/text-types. The pair selects the rules, thresholds and glossaries applied to the text.",
      "examples": [
        "texto-juridico-administrativo-dirigido-a-la-ciudadania"
      ],
      "minLength": 1,
      "title": "Text Type Slug",
      "type": "string"
    }
  },
  "required": [
    "domain_slug",
    "text_type_slug",
    "text"
  ],
  "title": "ReportRequest",
  "type": "object"
}
ReportResultReportResult
{
  "properties": {
    "genre": {
      "$ref": "#/components/schemas/Genre"
    },
    "language": {
      "description": "Language actually used for analysis.",
      "title": "Language",
      "type": "string"
    },
    "measurements": {
      "items": {
        "$ref": "#/components/schemas/Measurement"
      },
      "title": "Measurements",
      "type": "array"
    },
    "offset_unit": {
      "const": "unicode_code_points",
      "default": "unicode_code_points",
      "description": "Unit used by every start and end offset in the result.",
      "title": "Offset Unit",
      "type": "string"
    },
    "schema_version": {
      "const": "1.0",
      "default": "1.0",
      "description": "Version of this public result contract.",
      "title": "Schema Version",
      "type": "string"
    },
    "suggestions": {
      "items": {
        "$ref": "#/components/schemas/Suggestion"
      },
      "title": "Suggestions",
      "type": "array"
    }
  },
  "required": [
    "language",
    "genre"
  ],
  "title": "ReportResult",
  "type": "object"
}
ReportStatusReportStatus
{
  "enum": [
    "queued",
    "running",
    "completed",
    "failed"
  ],
  "title": "ReportStatus",
  "type": "string"
}
SuggestionSuggestion
{
  "properties": {
    "category": {
      "description": "Stable linguistic category used by the metric catalog.",
      "title": "Category",
      "type": "string"
    },
    "examples": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional worked examples illustrating the recommendation, as plain text with meaningful line breaks. Editorial copy attached to the metric: it never quotes the analysed text and does not vary between reports. Null when the metric\u0027s copy has no examples.",
      "title": "Examples"
    },
    "explanation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional extended contextual explanation.",
      "title": "Explanation"
    },
    "id": {
      "description": "Identifier unique within this report.",
      "title": "Id",
      "type": "string"
    },
    "implementation_version": {
      "description": "Detector version used for this report.",
      "title": "Implementation Version",
      "type": "string"
    },
    "metric_id": {
      "description": "Stable metric identifier documented by GET /v1/metrics/{metric_id}.",
      "title": "Metric Id",
      "type": "string"
    },
    "metric_title": {
      "description": "Localized human-readable metric title captured for this report.",
      "title": "Metric Title",
      "type": "string"
    },
    "occurrences": {
      "description": "Concrete appearances of this issue in the submitted text.",
      "items": {
        "$ref": "#/components/schemas/Occurrence"
      },
      "title": "Occurrences",
      "type": "array"
    },
    "recommendations": {
      "description": "Human-readable review guidance.",
      "items": {
        "type": "string"
      },
      "title": "Recommendations",
      "type": "array"
    },
    "severity": {
      "description": "Review priority; it is not a confidence score.",
      "title": "Severity",
      "type": "string"
    },
    "summary": {
      "description": "Explanation of the issue found in this report.",
      "title": "Summary",
      "type": "string"
    }
  },
  "required": [
    "id",
    "metric_id",
    "implementation_version",
    "metric_title",
    "category",
    "severity",
    "summary"
  ],
  "title": "Suggestion",
  "type": "object"
}
TextDomainTextDomain
{
  "properties": {
    "name": {
      "description": "Localized text domain name.",
      "title": "Name",
      "type": "string"
    },
    "slug": {
      "description": "Stable text domain identifier accepted by POST /v1/reports.",
      "title": "Slug",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "name"
  ],
  "title": "TextDomain",
  "type": "object"
}
TextEditTextEdit
{
  "properties": {
    "end": {
      "description": "Exclusive offset in the original input text.",
      "minimum": 0.0,
      "title": "End",
      "type": "integer"
    },
    "start": {
      "description": "Inclusive offset in the original input text.",
      "minimum": 0.0,
      "title": "Start",
      "type": "integer"
    },
    "text": {
      "description": "Text to splice into the range. Empty text deletes it; start == end inserts text.",
      "title": "Text",
      "type": "string"
    }
  },
  "required": [
    "start",
    "end",
    "text"
  ],
  "title": "TextEdit",
  "type": "object"
}
TextTypeTextType
{
  "properties": {
    "name": {
      "description": "Localized text type name.",
      "title": "Name",
      "type": "string"
    },
    "slug": {
      "description": "Stable text type identifier accepted by POST /v1/reports.",
      "title": "Slug",
      "type": "string"
    }
  },
  "required": [
    "slug",
    "name"
  ],
  "title": "TextType",
  "type": "object"
}
ValidationErrorValidationError
{
  "properties": {
    "loc": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          }
        ]
      },
      "title": "Location",
      "type": "array"
    },
    "msg": {
      "title": "Message",
      "type": "string"
    },
    "type": {
      "title": "Error Type",
      "type": "string"
    }
  },
  "required": [
    "loc",
    "msg",
    "type"
  ],
  "title": "ValidationError",
  "type": "object"
}